- 功能型密碼算法設計與分析
- 黃欣沂 賴建昌
- 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發生的概率相同。■