1.3 RSA公钥加密方案

本节首先给出标准RSA加密方案,然后给出修改后的RSA加密方案,使其能够抵抗选择明文攻击,记作RSA-CPA方案,并给出安全性分析。RSA加密算法由Ron Rivest、Adi Shamir和Leonard Adleman于1978年提出,方案的描述如下。

1.3.1 RSA加密方案

设GenPrime是大素数产生算法,λ为系统安全参数。

SysGen:运行大素数产生算法得到两个素数p,q←GenPrime(λ),其中pq秘密保存。

KeyGen:输入pq,计算n=pqφ(n)=(p-1)(q-1),选取大整数1<e<φ(n),使得gcd(φ(n),e)=1成立,其中φ(n)为n的欧拉函数。接着计算d,满足d·e≡1modφ(n),输出公钥(n,e),私钥(n,d)。

Encrypt:输入待加密的消息m,公钥(n,e),计算密文cmemod n

Decrypt:输入密文c,私钥(n,d),计算mcdmod n

方案的正确性分析如下:由加密过程,可知cmemod n,所以

cdmod nmedmod nm(n)+1mod n

分为下面两种情况:

1)若mn互素,则由欧拉定理:mφ(n)≡1mod nm(n)≡1mod nm(n)+1mmod n。即cdmod nm

2)若gcd(mn)≠1,注意到n=pq,则意味着mp的倍数或q的倍数,不妨设m=tp,其中t为一正整数。此时必有gcd{m,q}=1,否则m也是q的倍数,从而是pq的倍数,与mn=pq矛盾。由gcd{m,q}=1及欧拉定理得mφq≡1modq,所以mq≡1modq,(mqφp≡1modqmn≡1modq,因此存在一个整数r,使得mn=1+rq,两边同乘m=tp得,mn)+1=m+rtpq=m+rtn,即mn)+1mmod n,所以cdmod nm

1.3.2 RSA-CPA方案描述

设GenPrime是大素数产生算法,λ为系统安全参数。

SysGen:运行大素数产生算法得到两个素数p,q←GenPrime(λ),p,q秘密保存。

KeyGen:输入pq,计算n=pqφ(n)=(p-1)(q-1),选取大整数1<e<φ(n),使得(φ(n),e)=1成立。接着计算d,满足d·e≡1modφ(n),输出公钥(n,e),私钥(n,d)。

Encrypt:输入待加密的消息m,公钥(ne),选取随机数,输出密文CT=(C1C2)≡(remod nHr)⊕m)。

Decrypt:输入密文CT,私钥(nd),计算rmod n,计算明文m=Hr)⊕C2

1.3.3 安全性分析

RSA-CPA方案的安全性基于RSA问题的难解性,我们首先给出RSA问题的定义。

RSA问题:已知大整数ney,满足qeφn)且gcd(φn),e)=1,计算mod n

RSA困难性假设:没有概率多项式时间的算法能够解决RSA问题。

定理1.1H是一个随机谕言机,如果RSA问题是难解的,那么RSA-CPA方案是IND-CPA安全的。

证明:假设在IND-CPA安全模型中,存在一个敌手A能以不可忽略的优势(概率)ε攻破RSA-CPA方案,那么可以构造一个模拟算法B,通过与A交互以不可忽略的优势λ)≥2ε解决RSA问题。假设模拟算法B以一个RSA问题实例(ney)为输入,目标是计算mod n。为描述方便,不妨设加密消息的长度为

系统建立:模拟算法B随机选取字符串h*←{0,1},设公钥pk=(ne),并将pk发送给敌手A,其中H被看作由B控制的随机谕言机。

哈希询问A可以适应性询问x的哈希值,B建立列表L(初始值为空),列表元素以二元组(xh)形式存储,B按照如下方式应答:

●如果x已经在列表中,则以(x,h)中的h应答;

●如果xeymod n,设H(x)=h*,以h*应答,将(x,h*)存入表中,并记下r*=x

●否则随机选择h←{0,1},设Hx)=h,以h应答,并将(xh)存入表L中。

挑战A输出两个等长的明文数据m0m1B随机选取比特b∈{0,1},设=y=h*mb,将作为挑战密文并发送给A

猜测A输出对b的猜测b′,若b=b′,B输出哈希询问阶段记下的r*=x作为RSA问题的解,并定义H表示事件——在模拟中A发出Hr*)询问,即Hr*)出现在L中。

断言1.1 在以上模拟过程中,B的模拟是完备的。

证明:在以上模拟中,A的视角与其在真实攻击中的视角是同分布、不可区分的。这是因为

1)AH询问中的每一个值都是随机值,而在A对RSA-CPA的真实攻击中,A得到的是H的函数值,由于假定H是随机谕言机,因此A得到的H的函数值是均匀的。

2)h*mbA来说,为h*mb做一次一密加密。由h*的随机性可知,h*mbA来说是随机的。所以两种视角不可区分。

断言1.2 在上述模拟攻击中Pr[H]≥2ε

证明:根据断言1.1可知,在猜测阶段之前,模拟和真实攻击是不可区分的。即,当敌手A没有发出Hr*)询问时,敌手没有任何优势猜到正确的密文,有。根据假设,A能以不可忽略的优势ε攻破RSA-CPA方案,由断言1.1可知,模拟和真实攻击环境是不可区分的,则有,进一步有

又知Pr[b=b′]≥Pr[b=b′|﹁H]·Pr[﹁H]=,所以,即Pr[H]≥2ε

由以上两个断言,在上述模拟过程中r*以至少2ε的概率出现在L中。若H发生,则B在哈希询问阶段可找到x满足xeymod n,即xr*mod n,所以B成功的概率与H发生的概率相同。■