SSL常見加密算法

原文鏈接:http://www.willrey.com/support/ssl_DES.html

密碼學簡介

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

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

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

保密性:防止用戶的標識或數據被讀取。

數據完整性:防止數據被更改。

身份驗證:確保數據發自特定的一方。

加密算法介紹

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

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

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

對稱加密算法

對稱加密算法用來對敏感數據等信息進行加密,常用的算法包括:

DESData Encryption Standard):數據加密標準,速度較快,適用於加密大量數據的場合。

3DESTriple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。

AESAdvanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高;

AES

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

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

算法原理

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

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

AES3DES的比較

算法名稱

算法類型

密鑰長度

速度

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

資源消耗

AES

對稱block密碼

128192256

1490000億年

3DES

對稱feistel密碼

112位或168

46億年

非對稱算法

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

RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的;

DSADigital Signature Algorithm):數字簽名算法,是一種標準的 DSS(數字簽名標準);

ECCElliptic Curves Cryptography):橢圓曲線密碼編碼學。

ECC

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

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

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

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

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

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

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

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

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

K=kG  [其中 KGEp(a,b)上的點,k爲小於nn是點G的階)的整數]

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

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

ECC與RSA的比較

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

  1. Ø  抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。
  2. Ø  計算量小,處理速度快。ECC總的速度比RSADSA要快得多。
  3. Ø  存儲空間佔用小。ECC的密鑰尺寸和系統參數與RSADSA相比要小得多,意味着它所佔的存貯空間要小得多。這對於加密算法在IC卡上的應用具有特別重要的意義。
  4. Ø  帶寬要求低。當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網絡領域具有廣泛的應用前景。

 

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

下面兩張表示是RSAECC的安全性和速度的比較:

 

攻破時間

(MIPS)

RSA/DSA

(密鑰長度)

ECC

密鑰長度

RSA/ECC

密鑰長度比

104

512

106

51

108

768

132

61

1011

1024

160

71

1020

2048

210

101

1078

21000

600

351

RSAECC安全模長得比較

 

 功能

Security Builder 1.2

BSAFE 3.0

163ECC(ms)

1,023RSA(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

RSAECC速度比

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

單向散列函數一般用於產生消息摘要,密鑰加密等,常見的有:

  1. Ø MD5Message Digest Algorithm 5):是RSA數據安全公司開發的一種單向散列算法。
  2. Ø SHASecure Hash Algorithm):可以對任意長度的數據運算生成一個160位的數值;

SHA-1

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

算法原理

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

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

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

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

MAC (信息認證代碼)就是一個散列結果,其中部分輸入信息是密碼,只有知道這個密碼的參與者才能再次計算和驗證MAC碼的合法性。

 

SHA-1MD5的比較

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

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

  

對稱與非對稱算法比較

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

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

.          加密算法的選擇

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

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

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

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

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

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


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