RSA公鑰回密算法原理

一、公鑰密碼學概述。

  公開密鑰密碼算法的提出是整個密碼學歷史上最大的而且也許是最唯一真正的變革。從最初一直到現代,幾乎所有密碼系統都建立在基本的替代和置換工具的基礎 上。在用了數千年的本質上可以手算完成的算法之後,常規的密碼學隨着轉輪加密/解密機的發展纔出現了一個重大進步。機電式變碼旋轉軟件使得極其複雜的密碼 系統被研製出來。有了計算機後,更加複雜的系統被設計出來。但是不管是轉輪機還是後來的DES(數據加密標準),雖然代表了重要的進展,卻仍然依賴於替代 和置換這樣的基本工具。

  公鑰密碼學則與以前的所有方法都截然不同。一方面公開密鑰算法基於數學函數而不是替代和置換,更重要的是,公開密鑰密碼學是非對稱的,它用到兩個不同的密鑰,而對稱的常規加密則只使用一個密鑰。使用兩個密鑰對於保密通信,密鑰分配和鑑別等領域都有着深遠的影響。 

對於公鑰密碼加密有幾個誤解。

誤解一、公開密鑰加密在防範密碼分析上比常規加密更加安全。

[解釋] 事實上,任何加密方案的安全性都依賴於密鑰的長度和破譯密碼所包含的計算工作量。從抗擊密碼分析的角度講,無論常規還是公開密鑰加密原則上都沒有比對方優越的地方。

誤解二、公開密鑰加密是一個使得常規加密已經過時的通用技術。

[解釋] 事實上,由於當前公開密鑰加密在計算上的巨大開銷,在可以預見的未來常規加密並不會被拋棄。目前大家幾乎普遍接受的觀點是公開密鑰密碼算法只限於密鑰管理和數字簽名等應用。

誤解三、與使用常規加密時涉及密鑰分配中心的相當繁瑣的握手過程相比,使用公開密鑰加密後密鑰分配就變的非常簡單。

[解釋] 事實上,使用公開密鑰加密仍然需要某種形式的協議,一般這會涉及到一箇中心代理,而且整個過程比常規加密中的過程既不簡單也不更有效。

        

 

二、什麼是公鑰密碼算法

  目前存在兩種密鑰體制:對稱密鑰體制和非對稱密鑰體制。對稱密鑰體制就是加密和解密用同一個密鑰。這很好理解,相當於你用你家的鑰匙既可以鎖上你家的門, 也可以打開你家的門。非對稱密鑰體制就是加密和解密不是同一個密鑰。也就是說一個密鑰所加密的數據用另一個密鑰解密。舉個生活中的例子,類似於在機場、火 車站、超市以及很多其他公共場所看到的非對稱的存物箱。爲了安全存儲你的財物,你把它們放入存物箱並且投入錢幣鎖上它。就如同你的住宅鑰匙鎖上大門一樣, 錢幣鎖上了存物箱---在某種意義上,你的錢幣就是密鑰。鎖上門後,你得到另外一把鑰匙---也許是一把真正的鑰匙;也許只是一張寫有號碼的紙條。要開啓 存物箱,你就要使用該鑰匙或在鍵盤上輸入號碼。而這個時候,你投入多少錢幣也是打不開存物箱的。

  類似地,我們可以產生一個密碼算法,其中一個密鑰用來加密數據,另一個用來解密。這個模型的另一說法就是公鑰密碼學。要加密和解密數據,兩個密鑰都需要使 用,所以其中一個可以公開而不會危害安全性。這個密鑰就是公鑰。另一個則稱之爲私鑰。我們用公鑰加密數據,用私鑰解密數據。就好象例子中的任何人都知道用 錢幣(公鑰)鎖上存物箱,但仍然打不開存物箱。只有擁有鑰匙或寫有號碼的紙條(私鑰)的人才能打開存物箱。

  1976年後,提出了多種公開密鑰算法,其中許多是不安全的。而那些被視爲安全的算法,有許多卻不實用,要麼密鑰太大,要麼密文遠大於明文。只有少數幾個 算法既安全又實用。其中有三種算法可以很好的用於加密和數字簽名:RSA、ElGamal和Rabin。不過它們都很慢。它們加密和解密速度比對稱算法要 慢的多,通常是太慢以致無法用於許多快速數據加密。基於這點考慮,很多時候使用混合密碼系統。使用帶隨機會話密鑰的對稱算法來加密消息,使用公開密鑰算法 來加密隨機會話密鑰。

 

三、RSA公鑰密碼算法原理

  RSA算法是第一個比較完善的公開密鑰算法。它既能用於加密也能用於數字簽名。在已提出的公開密鑰算法中,RSA是最容易理解和實現的。RSA以它的三個 發明者Ron Rivest、Adi Shamir和Leonard Adleman的名字命名。該算法已經經受住了多年深入的密碼分析,雖然密碼分析者既不能證明也不能否認RSA的安全性,但這恰恰說明了該算法有一定的可 信度。

  RSA的安全基於大數分解的難度。其公開密鑰和私人密鑰是一對大素數(100到200個十進制數或更大)的函數。從一個公開密鑰和密文中恢復出明文的難度等價於分解兩個大素數之積。

  要了解RSA算法需要從瞭解一些數論的基本原理開始。

 

1.剩餘系

[定義1] 設m>0, Cr = {a | a=r+qm, q∈Z}(r=0,1,...,m-1), 則C0 ,C1 ,...,Cm-1 稱爲模數m的剩餘系。在C0 ,C1 ,...,Cm-1 中各取一數aj∈Cj ,j=0,1,...,m-1,此m個數a0 ,a1 ,...,am-1 稱爲模數m的一組完全剩餘系。特別地,完全剩餘系0,1,...,m-1稱爲模數m的非負最小完全剩餘系。如果Cj 裏面的數與m互素,稱Cj 爲與模數m互素的剩餘類。在與m互素的全部剩餘類中,各取一數所組成的集合就稱爲模數m的一組既約剩餘系。

 

2.歐拉函數和歐拉定理

[定義2] 歐拉函數Φ(n)是一個定義在正整數集合上的函數,Φ(n)的值等於序列0,1,...,n-1中與n互素的數的個數。

由定義得Φ(1)=1,Φ(2)=1,Φ(3)=2,...。當p是素數時,Φ(p)=p-1。

 

性質:

  • 模數m的一組既約剩餘系含Φ(m)個數。

  • Φ(m)個數作成模數m的一組既約剩餘系的充分必要條件是兩兩對模數m不同餘且都與m互素。

  • gcd(m1 ,m2 )=1時,Φ(m1 ,m2 )=Φ(m1 )Φ(m2 )。

  • p爲素數,k爲正整數時,Φ(pk )=pk -pk-1 =pk-1 (p-1)。

(歐拉定理) 若gcd(a,m)=1, 則aΦ(m)≡1(mod m)。

當m=p爲素數時,即得到費馬小定理。

 

(費馬小定理) 若p爲素數,則ap≡a(mod p)。

 

 

 

3.RSA算法

 

RSA公鑰密碼體制描述如下:

<1>. 選取兩個大素數p,q。

<2>. 計算n=pq, Φ(n)=(p-1)(q-1)。

<3>. 隨機選取正整數e, 1Φ(n), 滿足gcd(e,Φ(n)) = 1。

<4>. 計算d,滿足de≡1(mod Φ(n))。p,q,Φ(n), d是保密的,丟棄p,q,Φ(n);只保留d,則n,d 爲私鑰;n,e是公開,爲公鑰。

<5>.  加密變換:對明文m, 1e (mod n)。

<6>.  解密變換:對密文c, 1d (mod n)。

 

證明:

由於de≡1(mod Φ(n)),所以存在正整數t,使得de = 1 + tΦ(n))。 對於任意明文m, 1

  • 當gcd(m,n)=1時,根據歐拉定理有cd≡(me )d≡(mΦ(n) )t m≡1t m≡m(mod n);

  • 當gcd(m,n)≠1時,因爲n=pq且p,q是兩個素數,所以gcd(m,n)=p或q。不妨設gcd(m,n)=p,則m=bp, 1≤bq-1≡1(mod q),從而mtΦ(n) =(mq-1 )t(p-1)≡1(mod q),於是存在一個整數s, 使得mtΦ(n) =1 + sq, 此式兩端用m=bp同乘,就得到mtΦ(n)+1 =m+bsn, 從而cd≡mtΦ(n)+1≡m(mod n)。

證畢。

 

舉例:如果p=47,q=71,那麼n=pq=3337,Φ(n)=(p-1)(q-1)=3220 。加密密鑰e滿足gcd(e,Φ(n))=1,則隨機選取e,如79,那麼  d=e-1 (mod Φ(n))=79-1 (mod 3220)=1019。這時獲得:

公鑰:e,n 即79,3337


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章