Abstract:文中對於公鑰密碼體制的研究與發展進行了介紹,其中着重介紹了幾個比較常用的公鑰密碼體制RSA,EIGamal
Keywords: 公鑰密碼體制,RSA,離散對數問題
1. 引言
公鑰密碼體制又稱公開密鑰密碼體系,公鑰密碼體制是現代密碼學的最重要的發明和進展,在1976年,Whitfield Diffie和Martin Hellman發表了“New directions in cryptography”這篇划時代的文章奠定了公鑰密碼系統的基礎。在公鑰密碼體制之中,加密密匙和解密密匙是不一樣的,無法通過加密密匙的反推得到解密密匙,所以加密密匙是可以公開的,並且不會危及密碼體制的安全性。因為對稱密鑰密碼體制有一個缺點是必須要在Alice和Bob之間首先在傳輸密文之前使用一個安全信道交換密鑰。實際上,這是很難達到的,而公鑰密碼體制改善了這一點,Alice可以利用公鑰加密規則發出一條加密的消息給Bob,Bob是唯一能夠運用解密規則對其解密的人,例如保險箱的傳遞,只有接收的人知道密碼並且能夠打開。【1】要在自從公鑰密碼的概念被提出以來,相繼提出了許多公鑰密碼方案,如RSA、ElGamal、基於離散對數問題的公鑰密碼體制等[2]。
2. 預備知識
公鑰密碼的理論基礎,在公鑰密碼中,加密密鑰和解密密鑰是不一樣的,加密密鑰為公鑰,解密密鑰為私鑰。一個問題是難解的,直觀上講,就是不存在一個計算該問題的有效算法,也可稱之為按照目前的計算能力,無法在一個相對的短時間內完成,即解決這個問題所付出的成本遠遠超過了解決之后得到的結果,計算應一個難解的問題所需要的時間一般是以輸入數據長度的指數函數形式遞增,所以隨着輸入數據的增多,復雜度會急劇的增大,對於一個問題,如果存在一個求其解的有效算法,則稱其為有效問題,否則為無效問題。在公鑰密碼機制之中,進行破譯已經加密后的密碼應該是一個難解問題。
公鑰密碼的理論基礎是陷門單向函數:
定義2.1:設f是一個函數,如果對於任意給定的x,計算y=f(x)是容易的,但對於任意給定的y,計算f(x)=y是難解的,則稱f是一個單向函數。
例子
定義2.2:設f是一個函數,t是與f有關的一個參數,對任意給定的x,計算y使得y=f(x)是容易的,如果當不知參數t時,計算f的逆函數是難解的,但當知道參數t時,計算f的逆函數是容易的,則稱f是一個陷門單向函數(trapdoor one-way function),參數t稱為陷門。
在公鑰密匙中,加密變換是一個陷門單向函數,只帶陷門的人可以容易的進行解密變換,而不知道陷門的人則無法有效的進行解密變換。
3. 公鑰密碼方案
3.1 RSA公鑰密碼
當前最著名、應用最廣泛的公鑰系統 RSA 是在 1978 年由美國麻省理工學院的 Rivest 、 Shamir 和 Adleman 提出的, 它是一個基於數論的非對稱密碼體制, 是一種分組密碼體制。 RSA 算法是第一個既能用於數據加密也能用於數字簽名的算法。公鑰加密算法中使用最廣的是RSA。
RSA使用一個公鑰,一個私鑰。公鑰加密,私鑰解密,密鑰長度從40到2048bit可變,加密時也把明文分成塊,塊的大小可變,但不能超過密鑰的長度,RSA算法把每一塊明文轉化為與密鑰長度相同的密文塊。密鑰越長,加密效果越好,但加密解密的開銷也大,所以要在安全與性能之間折衷考慮,一般64位是較合適的。RSA的一個比較知名的應用是SSL,在美國和加拿大SSL用128位RSA算法,由於出口限制,在其它地區(包括中國)通用的則是40位版本。
RSA的安全性基本大於大整數的因子分解,其基礎是數論中的歐拉定理。因子分解可以破解RSA密碼系統,但是目前尚無人證明RSA的解密一定需要分解因子。
RSA密鑰生成過程:1)選取兩個大素數p,q; 2)乘積 n = pq, Φ(n) = (p-1)(q-1),其中Φ(n)為n的歐拉函數;3)隨機選取整數e(1<e<Φ(n)),要求滿足與Φ(n)互素,即可用gcd(e, Φ(n))=1驗證;4)用擴展的歐幾里得算法計算私鑰d,d為e模Φ(n)的乘法逆,即d=e-1mod(Φ(n))。得到:公鑰e,n,私鑰p,q,d.
RSA加密過程:,明文先轉換為比特串分組,使每個分組對應的十進制數小於n,即分組長度小於n,即分組長度小於,然后對每個明文分組mi作加密運算,具體過程:1)獲取公鑰(e,n);2)把消息M分組長度為L(L<)的消息分組M=m1m2……mn;3)使用加密算法,計算出密文c.
RSA解密過程:將密文c按長度L分組得c=c1c2……ct1)使用私鑰d解密,計算出明文
RSA的理論基礎:
歐幾里得算法,中國剩余定理,Euler准則,Solovay-Strassen算法
RSA的安全性:1)共模攻擊:兩個用戶的公鑰中的模相同,雖然加密解密不同,但仍然是不安全的,可以通過擴展的歐幾里得算法計算出來自重的明文,所以,公鑰中每個實體的參數n不要相同。2)因子分解攻擊:如果能夠分解n得到p和q,Pollared p-1算法便可以得到Φ(n) = (p-1)(q-1)。
3.2 EIGamal公鑰密碼
ELGamal是一種較為常見的加密算法,基於1984年提出的公鑰密碼體制和橢圓曲線加密體系。ELGamal密碼體制基於的困難問題是群中的離散對數問題。離散對數問題是在密碼學中有着廣泛應用的問題。ELGamal密碼體制的構造方法可推廣到一般的循環群中,如基於有限域和橢圓曲線的ELGamal面加密方案。ELGamal的特點是加密是概率的,即不同的明文加密后具有不同的密文。
ELGamal加密其實是利用DH密鑰交換思想,產生隨機密鑰加密,然后傳遞生成隨機密鑰的“部件”,接收方利用該“部件”和自己的私鑰生成隨機密鑰進行解密。ELGamal密碼體制可以在任何離散對數問題難解的有限群中實現。
ElGamal公鑰密碼體制;設p是一個素數,使得(Z*p,*)上的離散對數問題是難處理的,令α∈Z*p是一個本原元,令p=Z*p,e=Z*p*Z*p,定義
P,α,β是公鑰,a是私鑰。
對於K= (P,α,a,β),以及一個隨機數K∈Zp-1,定義
其中
而
對y1,y2∈Z*p,定義
ElGamal算法的理論基礎:Shanks算法,Pollard p離散對數算法,Pohl,Hellman算法,z指數演算法,
ELGamal加密方案基於的安全問題 ELGamal加密方案的破解是指:給定(p,g,y=g4,c=m*yr),能夠得出m。如果能破解,則可以c/m來得到yr,於是在給定gd, gr的情況下,得到了gdr,從而解決了DHP。另一方面,如果能夠解決DHP,則可以在給定gd, gr的情況下,計算gdr,然后c/gdr來得到m,從而破解了DLP問題
基本的參數要求:前面提到加密不同消息必須使用不同的隨機數r。假如同一個r加密兩個消息m1,m2,結果為(c1,c3), (c2,c4)。由於c2/c4 = m1/m2。如果m1已知,則m2很容易計算出來。比特安全性,敵手能夠觀察到密文c = gr mod p和c3 = m*yr mod p。如果c是二次剩余。當且僅當r是偶數,因而敵手可以根據密文c來確定r的奇偶性。從公鑰y = gd mod p是否是二次剩余,可以確定d的奇偶性。從而可以計算rd的奇偶性。於是可以確定y = gdrmod p是否是二次剩余。加上可以確定c3是否為二次剩余,於是從c3 = m*yr mod p可以確定m是否為二次剩余。因此,ELGamal加密泄露了m是否為二次剩余這一信息。因此不是語義安全的。即明文m是否為二次剩余這一比特信息不安全。 【2】
求解離散對數問題 與RSA問題中因子分解攻擊方法類似,
ELGamal方案的破解的一個直接方法是求解離散對數問題。這是一種完全攻破,即給出公鑰gd,可以求私鑰d。
3.3 Rabin算法
大整數因子分解問題:給定一個正整數n,找到它的素因子分解,即將n寫為,這里pi是不同的素數,且ei>1。
密鑰的生成:機生成兩個大的素數p和q,滿足p=q=3mod4,計算n=p*q。n為公鑰,q ,p,作為私鑰。
加密算法:
解密算法:
由於p=q=3mod4,可容易地算出c在模p下是2個方程根
和c在模q下的兩個方程
兩兩組合聯立,可以得到4個方程組:
求得4個m,其中必有一個m為明文。
Rabin密碼體制的破解等價於大整數因子分解。由於大整數因子分解被公認是困難的,故Rabin密碼體制不能破解。因此它是第一個可證明安全的個月密碼體制。Rabin方案的可證明安全性:Rabin方案的攻破將會導致解決一個公認的困難問題。所謂“方案的攻破”,就是說給定Rabin方案密文,可得到明文。即擁有一個解密函數,給定y,返回y的4個平方根中的1個。
4. 總結
本文主要介紹了在信息安全發展過程之中的公鑰密碼體制的研究與發展,公鑰加密現今已經被廣泛的應用到如今的加密之中,並且較難破解,在金融與通信之中,較多的引用了ElGamal加密算法,公鑰加密體制減少了對於密鑰的傳播的不安全性,使得加密變得簡單,而只有擁有私鑰的人才可以進行解密,使密碼體制更加完善和簡潔,公鑰加密仍然在發展中,而且也有許多新的加密算法。
參考文獻
[1] 密碼學原理與實踐(第三版)Douglas著
[2] 公鑰密碼體制研究與進展 陳曉峰
[3] 公鑰加密體制的理論與實現論文