- 功能型密码算法设计与分析
- 黄欣沂 赖建昌
- 1767字
- 2023-11-07 17:24:06
1.3 RSA公钥加密方案
本节首先给出标准RSA加密方案,然后给出修改后的RSA加密方案,使其能够抵抗选择明文攻击,记作RSA-CPA方案,并给出安全性分析。RSA加密算法由Ron Rivest、Adi Shamir和Leonard Adleman于1978年提出,方案的描述如下。
1.3.1 RSA加密方案
设GenPrime是大素数产生算法,λ为系统安全参数。
●SysGen:运行大素数产生算法得到两个素数p,q←GenPrime(λ),其中p和q秘密保存。
●KeyGen:输入p,q,计算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),计算密文c≡memod n。
●Decrypt:输入密文c,私钥(n,d),计算m≡cdmod n。
方案的正确性分析如下:由加密过程,可知c≡memod n,所以
cdmod n≡medmod n≡mkφ(n)+1mod n
分为下面两种情况:
1)若m与n互素,则由欧拉定理:mφ(n)≡1mod n,mkφ(n)≡1mod n,mkφ(n)+1≡mmod n。即cdmod n≡m。
2)若gcd(m,n)≠1,注意到n=pq,则意味着m是p的倍数或q的倍数,不妨设m=tp,其中t为一正整数。此时必有gcd{m,q}=1,否则m也是q的倍数,从而是pq的倍数,与m<n=pq矛盾。由gcd{m,q}=1及欧拉定理得mφ(q)≡1modq,所以mkφ(q)≡1modq,(mkφ(q))φ(p)≡1modq,mkφ(n)≡1modq,因此存在一个整数r,使得mkφ(n)=1+rq,两边同乘m=tp得,mkφ(n)+1=m+rtpq=m+rtn,即mkφ(n)+1≡mmod n,所以cdmod n≡m。
1.3.2 RSA-CPA方案描述
设GenPrime是大素数产生算法,λ为系统安全参数。
●SysGen:运行大素数产生算法得到两个素数p,q←GenPrime(λ),p,q秘密保存。
●KeyGen:输入p,q,计算n=pq,φ(n)=(p-1)(q-1),选取大整数1<e<φ(n),使得(φ(n),e)=1成立。接着计算d,满足d·e≡1modφ(n),输出公钥(n,e),私钥(n,d)。
●Encrypt:输入待加密的消息m,公钥(n,e),选取随机数,输出密文CT=(C1,C2)≡(remod n,H(r)⊕m)。
●Decrypt:输入密文CT,私钥(n,d),计算r≡mod n,计算明文m=H(r)⊕C2。
1.3.3 安全性分析
RSA-CPA方案的安全性基于RSA问题的难解性,我们首先给出RSA问题的定义。
RSA问题:已知大整数n,e,y∈,满足q<e<φ(n)且gcd(φ(n),e)=1,计算mod n。
RSA困难性假设:没有概率多项式时间的算法能够解决RSA问题。
定理1.1 设H是一个随机谕言机,如果RSA问题是难解的,那么RSA-CPA方案是IND-CPA安全的。
证明:假设在IND-CPA安全模型中,存在一个敌手A能以不可忽略的优势(概率)ε攻破RSA-CPA方案,那么可以构造一个模拟算法B,通过与A交互以不可忽略的优势(λ)≥2ε解决RSA问题。假设模拟算法B以一个RSA问题实例(n,e,y)为输入,目标是计算mod n。为描述方便,不妨设加密消息的长度为ℓ。
系统建立:模拟算法B随机选取字符串h*←{0,1}ℓ,设公钥pk=(n,e),并将pk发送给敌手A,其中H被看作由B控制的随机谕言机。
哈希询问:A可以适应性询问x的哈希值,B建立列表L(初始值为空),列表元素以二元组(x,h)形式存储,B按照如下方式应答:
●如果x已经在列表中,则以(x,h)中的h应答;
●如果xe≡ymod n,设H(x)=h*,以h*应答,将(x,h*)存入表中,并记下r*=x;
●否则随机选择h←{0,1}ℓ,设H(x)=h,以h应答,并将(x,h)存入表L中。
挑战:A输出两个等长的明文数据m0,m1,B随机选取比特b∈{0,1},设=y,=h*⊕mb,将作为挑战密文并发送给A。
猜测:A输出对b的猜测b′,若b=b′,B输出哈希询问阶段记下的r*=x作为RSA问题的解,并定义H表示事件——在模拟中A发出H(r*)询问,即H(r*)出现在L中。
断言1.1 在以上模拟过程中,B的模拟是完备的。
证明:在以上模拟中,A的视角与其在真实攻击中的视角是同分布、不可区分的。这是因为
1)A的H询问中的每一个值都是随机值,而在A对RSA-CPA的真实攻击中,A得到的是H的函数值,由于假定H是随机谕言机,因此A得到的H的函数值是均匀的。
2)h*⊕mb对A来说,为h*对mb做一次一密加密。由h*的随机性可知,h*⊕mb对A来说是随机的。所以两种视角不可区分。
断言1.2 在上述模拟攻击中Pr[H]≥2ε。
证明:根据断言1.1可知,在猜测阶段之前,模拟和真实攻击是不可区分的。即,当敌手A没有发出H(r*)询问时,敌手没有任何优势猜到正确的密文,有。根据假设,A能以不可忽略的优势ε攻破RSA-CPA方案,由断言1.1可知,模拟和真实攻击环境是不可区分的,则有,进一步有
又知Pr[b=b′]≥Pr[b=b′|﹁H]·Pr[﹁H]=,所以,即Pr[H]≥2ε。
由以上两个断言,在上述模拟过程中r*以至少2ε的概率出现在L中。若H发生,则B在哈希询问阶段可找到x满足xe≡ymod n,即x≡r*≡mod n,所以B成功的概率与H发生的概率相同。■