1. 程式人生 > >加密演算法詳解

加密演算法詳解

 一、密碼學簡介

       據記載,公元前400年,古希臘人發明了置換密碼。1881年世界上的第一個電話保密專利出現。在第二次世界大戰期間,德國軍方啟用“恩尼格瑪”密碼機,密碼學在戰爭中起著非常重要的作用。

       隨著資訊化和數字化社會的發展,人們對資訊保安和保密的重要性認識不斷提高,於是在1997年,美國國家標準局公佈實施了“美國資料加密標準(DES)”,民間力量開始全面介入密碼學的研究和應用中,採用的加密演算法有DES、RSA、SHA等。隨著對加密強度需求的不斷提高,近期又出現了AES、ECC等。

       我認為加密就是對明文進行重新排列、置換、組合。

       使用密碼學可以達到以下目的:

  • 保密性:防止使用者的標識或資料被讀取。
  • 資料完整性:防止資料被更改。
  • 身份驗證:確保資料發自特定的一方。

二、加密演算法介紹

       根據金鑰型別不同將現代密碼技術分為兩類:對稱加密演算法(祕金鑰匙加密)和非對稱加密演算法(公開金鑰加密)。

       對稱鑰匙加密系統是加密和解密均採用同一把祕金鑰匙,而且通訊雙方都必須獲得這把鑰匙,並保持鑰匙的祕密。

       非對稱金鑰加密系統採用的加金鑰匙(公鑰)和解金鑰匙(私鑰)是不同的。

對稱加密演算法

       對稱加密演算法用來對敏感資料等資訊進行加密,常用的演算法包括:

  • DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合。
  • 3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高。
  • AES(Advanced Encryption Standard):高階加密標準,是下一代的加密演算法標準,速度快,安全級別高;

AES

       2000年10月,NIST(美國國家標準和技術協會)宣佈通過從15種侯選演算法中選出的一項新的密匙加密標準。Rijndael被選中成為將來的AES。 Rijndael是在 1999 年下半年,由研究員 Joan Daemen 和 Vincent Rijmen 建立的。AES 正日益成為加密各種形式的電子資料的實際標準。

       美國標準與技術研究院 (NIST) 於 2002 年 5 月 26 日製定了新的高階加密標準 (AES) 規範。

演算法原理

       AES 演算法基於排列和置換運算。排列是對資料重新進行安排置換是將一個數據單元替換為另一個。AES 使用幾種不同的方法來執行排列和置換運算。

       AES 是一個迭代的、對稱金鑰分組的密碼,它可以使用128、192 和 256 位金鑰,並且用 128 位(16位元組)分組加密和解密資料。與公共金鑰密碼使用金鑰對不同,對稱金鑰密碼使用相同的金鑰加密和解密資料。通過分組密碼返回的加密資料的位數與輸入資料相同。迭代加密使用一個迴圈結構,在該迴圈中重複置換和替換輸入資料。

AES與3DES的比較

演算法名稱

演算法型別

金鑰長度

速度

解密時間(建設機器每秒嘗試255個金鑰)

資源消耗

AES

對稱block密碼

128、192、256位

1490000億年

3DES

對稱feistel密碼

112位或168位

46億年

非對稱演算法

       常見的非對稱加密演算法如下:

  • RSA:由 RSA 公司發明,是一個支援變長金鑰的公共金鑰演算法,需要加密的檔案塊的長度也是可變的;
  • DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標準);
  • ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。

ECC

       在1976年,由於對稱加密演算法已經不能滿足需要,Diffie 和Hellman發表了一篇叫《密碼學新動向》的文章,介紹了公匙加密的概念,由Rivet、Shamir、Adelman提出了RSA演算法。

       隨著分解大整數方法的進步及完善、計算機速度的提高以及計算機網路的發展,為了保障資料的安全,RSA的金鑰需要不斷增加,但是,金鑰長度的增加導致了其加解密的速度大為降低,硬體實現也變得越來越難以忍受,這對使用RSA的應用帶來了很重的負擔,因此需要一種新的演算法來代替RSA。

       1985年N.Koblitz和Miller提出將橢圓曲線用於密碼演算法,根據是有限域上的橢圓曲線上的點群中的離散對數問題ECDLP。ECDLP是比因子分解問題更難的問題,它是指數級的難度。

原理——橢圓曲線上的難題

       橢圓曲線上離散對數問題ECDLP定義如下:給定素數p和橢圓曲線E,對Q=kP,在已知P,Q 的情況下求出小於p的正整數k。可以證明由k和P計算Q比較容易,而由Q和P計算k則比較困難。

       將橢圓曲線中的加法運算與離散對數中的模乘運算相對應,將橢圓曲線中的乘法運算與離散對數中的模冪運算相對應,我們就可以建立基於橢圓曲線的對應的密碼體制。

       例如,對應Diffie-Hellman公鑰系統,我們可以通過如下方式在橢圓曲線上予以實現:在E上選取生成元P,要求由P產生的群元素足夠多,通訊雙方A和B分別選取a和b,a和b 予以保密,但將aP和bP公開,A和B間通訊用的金鑰為abP,這是第三者無法得知的。

       對應ELGamal密碼系統可以採用如下的方式在橢圓曲線上予以實現:

       將明文m嵌入到E上Pm點,選一點B∈E,每一使用者都選一整數a,0<a<N,N為階數已知,a保密,aB公開。欲向A送m,可送去下面一對數偶:[kB,Pm+k(aAB)],k是隨機產生的整數。A可以從kB求得k(aAB)。通過:Pm+k(aAB)- k(aAB)=Pm恢復Pm。同樣對應DSA,考慮如下等式:

       K=kG  [其中 K,G為Ep(a,b)上的點,k為小於n(n是點G的階)的整數]

       不難發現,給定k和G,根據加法法則,計算K很容易;但給定K和G,求k就相對困難了。

       這就是橢圓曲線加密演算法採用的難題。我們把點G稱為基點(base point),k(k<n,n為基點G的階)稱為私有金鑰(privte key),K稱為公開金鑰(public key)。

ECC與RSA的比較

       ECC和RSA相比,在許多方面都有對絕對的優勢,主要體現在以下方面:

  • 抗攻擊性強。相同的金鑰長度,其抗攻擊性要強很多倍。
  • 計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。
  • 儲存空間佔用小。ECC的金鑰尺寸和系統引數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在IC卡上的應用具有特別重要的意義。
  • 頻寬要求低。當對長訊息進行加解密時,三類密碼系統有相同的頻寬要求,但應用於短訊息時ECC頻寬要求卻低得多。頻寬要求低使ECC在無線網路領域具有廣泛的應用前景。

       ECC的這些特點使它必將取代RSA,成為通用的公鑰加密演算法。比如SET協議的制定者已把它作為下一代SET協議中預設的公鑰密碼演算法。

      下面兩張表示是RSA和ECC的安全性和速度的比較。

攻破時間(MIPS年)

 

RSA/DSA(金鑰長度)

 

ECC金鑰長度

 

RSA/ECC金鑰長度比

 

104

512

106

5:1

108

768

132

6:1

1011

1024

160

7:1

1020

2048

210

10:1

1078

21000

600

35:1

                                                                               RSA和ECC安全模長得比較

功能

Security Builder 1.2

BSAFE 3.0

163位ECC(ms)

1,023位RSA(ms)

金鑰對生成

3.8

4,708.3

簽名

2.1(ECNRA)

228.4

3.0(ECDSA)

認證

9.9(ECNRA)

12.7

10.7(ECDSA)

Diffie—Hellman金鑰交換

7.3

1,654.0

                                                                                  RSA和ECC速度比較

雜湊演算法

      雜湊是資訊的提煉(資訊對映),通常其長度要比資訊小得多,且為一個固定長度。加密性強的雜湊一定是不可逆的,這就意味著通過雜湊結果,無法推出任何部分的原始資訊。任何輸入資訊的變化,哪怕僅一位,都將導致雜湊結果的明顯變化,這稱之為雪崩效應。雜湊還應該是防衝突的,即找不出具有相同雜湊結果的兩條資訊。具有這些特性的雜湊結果就可以用於驗證資訊是否被修改。

       單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有:

  • MD5(Message Digest Algorithm 5):是RSA資料安全公司開發的一種單向雜湊演算法。
  • SHA(Secure Hash Algorithm):可以對任意長度的資料運算生成一個160位的數值;

SHA-1

       在1993年,安全雜湊演算法(SHA)由美國國家標準和技術協會(NIST)提出,並作為聯邦資訊處理標準(FIPS PUB 180)公佈;1995年又釋出了一個修訂版FIPS PUB 180-1,通常稱之為SHA-1。SHA-1是基於MD4演算法的,並且它的設計在很大程度上是模仿MD4的。現在已成為公認的最安全的雜湊演算法之一,並被廣泛使用。

原理

       SHA-1是一種資料加密演算法,該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預對映或資訊),並把它們轉化為長度較短、位數固定的輸出序列即雜湊值(也稱為資訊摘要或資訊認證程式碼)的過程。

       單向雜湊函式的安全性在於其產生雜湊值的操作過程具有較強的單向性。如果在輸入序列中嵌入密碼,那麼任何人在不知道密碼的情況下都不能產生正確的雜湊值,從而保證了其安全性。SHA將輸入流按照每塊512位(64個位元組)進行分塊,併產生20個位元組的被稱為資訊認證程式碼或資訊摘要的輸出。

       該演算法輸入報文的最大長度不超過264位,產生的輸出是一個160位的報文摘要。輸入是按512 位的分組進行處理的。SHA-1是不可逆的、防衝突,並具有良好的雪崩效應。

       通過雜湊演算法可實現數字簽名實現,數字簽名的原理是將要傳送的明文通過一種函式運算(Hash)轉換成報文摘要(不同的明文對應不同的報文摘要),報文摘要加密後與明文一起傳送給接受方,接受方將接受的明文產生新的報文摘要與傳送方的發來報文摘要解密比較,比較結果一致表示明文未被改動,如果不一致表示明文已被篡改。

       MAC (資訊認證程式碼)就是一個雜湊結果,其中部分輸入資訊是密碼,只有知道這個密碼的參與者才能再次計算和驗證MAC碼的合法性。MAC的產生參見下圖。

輸入資訊

密碼

雜湊函式

資訊認證程式碼

SHA-1與MD5的比較

       因為二者均由MD4匯出,SHA-1和MD5彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:

  • 對強行供給的安全性:最顯著和最重要的區別是SHA-1摘要比MD5摘要長32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD5是2128數量級的操作,而對SHA-1則是2160數量級的操作。這樣,SHA-1對強行攻擊有更大的強度。
  • 對密碼分析的安全性:由於MD5的設計,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。
  • 速度:在相同的硬體上,SHA-1的執行速度比MD5慢。

對稱與非對稱演算法比較

       以上綜述了兩種加密方法的原理,總體來說主要有下面幾個方面的不同:

  • 在管理方面:公鑰密碼演算法只需要較少的資源就可以實現目的,在金鑰的分配上,兩者之間相差一個指數級別(一個是n一個是n2)。所以私鑰密碼演算法不適應廣域網的使用,而且更重要的一點是它不支援數字簽名。
  • 在安全方面:由於公鑰密碼演算法基於未解決的數學難題,在破解上幾乎不可能。對於私鑰密碼演算法,到了AES雖說從理論來說是不可能破解的,但從計算機的發展角度來看。公鑰更具有優越性。
  • 從速度上來看:AES的軟體實現速度已經達到了每秒數兆或數十兆位元。是公鑰的100倍,如果用硬體來實現的話這個比值將擴大到1000倍。

三、加密演算法的選擇

       前面的章節已經介紹了對稱解密演算法和非對稱加密演算法,有很多人疑惑:那我們在實際使用的過程中究竟該使用哪一種比較好呢?

       我們應該根據自己的使用特點來確定,由於非對稱加密演算法的執行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的資料時,建議採用對稱加密演算法,提高加解密速度

       對稱加密演算法不能實現簽名,因此簽名只能非對稱演算法。

       由於對稱加密演算法的金鑰管理是一個複雜的過程,金鑰的管理直接決定著他的安全性,因此當資料量很小時,我們可以考慮採用非對稱加密演算法。

       在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的金鑰,然後用對稱加密演算法加密資料,這樣我們就集成了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理金鑰的優點。

       如果在選定了加密演算法後,那採用多少位的金鑰呢?一般來說,金鑰越長,執行的速度就越慢,應該根據的我們實際需要的安全級別來選擇,一般來說,RSA建議採用1024位的數字,ECC建議採用160位,AES採用128為即可

四、密碼學在現代的應用

       隨著密碼學商業應用的普及,公鑰密碼學受到前所未有的重視。除傳統的密碼應用系統外,PKI系統以公鑰密碼技術為主,提供加密、簽名、認證、金鑰管理、分配等功能。

  • 保密通訊:保密通訊是密碼學產生的動因。使用公私鑰密碼體制進行保密通訊時,資訊接收者只有知道對應的金鑰才可以解密該資訊。
  • 數字簽名:數字簽名技術可以代替傳統的手寫簽名,而且從安全的角度考慮,數字簽名具有很好的防偽造功能。在政府機關、軍事領域、商業領域有廣泛的應用環境。
  • 祕密共享:祕密共享技術是指將一個祕密資訊利用密碼技術分拆成n個稱為共享因子的資訊,分發給n個成員,只有k(k≤n)個合法成員的共享因子才可以恢復該祕密資訊,其中任何一個或m(m≤k)個成員合作都不知道該祕密資訊。利用祕密共享技術可以控制任何需要多個人共同控制的祕密資訊、命令等。
  • 認證功能:在公開的通道上進行敏感資訊的傳輸,採用簽名技術實現對訊息的真實性、完整性進行驗證,通過驗證公鑰證書實現對通訊主體的身份驗證。
  • 金鑰管理:金鑰是保密系統中更為脆弱而重要的環節,公鑰密碼體制是解決金鑰管理工作的有力工具;利用公鑰密碼體制進行金鑰協商和產生,保密通訊雙方不需要事先共享祕密資訊;利用公鑰密碼體制進行金鑰分發、保護、金鑰託管、金鑰恢復等。

       基於公鑰密碼體制可以實現以上通用功能以外,還可以設計實現以下的系統:安全電子商務系統、電子現金系統、電子選舉系統、電子招投標系統、電子彩票系統等。

       公鑰密碼體制的產生是密碼學由傳統的政府、軍事等應用領域走向商用、民用的基礎,同時網際網路、電子商務的發展為密碼學的發展開闢了更為廣闊的前景。

五、加密演算法的未來

       隨著計算方法的改進,計算機執行速度的加快,網路的發展,越來越多的演算法被破解。

       在2004年國際密碼學會議(Crypto’2004)上,來自中國山東大學的王小云教授做的破譯MD5、HAVAL-128、MD4和RIPEMD演算法的報告,令在場的國際頂尖密碼學專家都為之震驚,意味著這些演算法將從應用中淘汰。隨後,SHA-1也被宣告被破解。

       歷史上有三次對DES有影響的攻擊實驗。1997年,利用當時各國 7萬臺計算機,歷時96天破解了DES的金鑰。1998年,電子邊境基金會(EFF)用25萬美元製造的專用計算機,用56小時破解了DES的金鑰。1999年,EFF用22小時15分完成了破解工作。因此。曾經有過卓越貢獻的DES也不能滿足我們日益增長的需求了。

       最近,一組研究人員成功的把一個512位的整數分解因子,宣告了RSA的破解。

       我們說資料的安全是相對的,可以說在一定時期一定條件下是安全的,隨著硬體和網路的發展,或者是另一個王小云的出現,目前的常用加密演算法都有可能在短時間內被破解,那時我們不得不使用更長的金鑰或更加先進的演算法,才能保證資料的安全,因此加密演算法依然需要不斷髮展和完善,提供更高的加密安全強度和運算速度。

       縱觀這兩種演算法一個從DES到3DES再到AES,一個從RSA到ECC。其發展角度無不是從金鑰的簡單性,成本的低廉性,管理的簡易性,演算法的複雜性,保密的安全性以及計算的快速性這幾個方面去考慮。因此,未來演算法的發展也必定是從這幾個角度出發的,而且在實際操作中往往把這兩種演算法結合起來,也需將來一種集兩種演算法優點於一身的新型演算法將會出現,到那個時候,電子商務的實現必將更加的快捷和安全。