1. 程式人生 > >常用加密演算法概述

常用加密演算法概述

常見的加密演算法可以分成三類,對稱加密演算法,非對稱加密演算法和Hash演算法。

對稱加密

    指加密和解密使用相同金鑰的加密演算法。對稱加密演算法的優點在於加解密的高速度和使用長金鑰時的難破解性。假設兩個使用者需要使用對稱加密方法加密然後交換資料,則使用者最少需要2個金鑰並交換使用,如果企業內使用者有n個,則整個企業共需要n×(n-1) 個金鑰,金鑰的生成和分發將成為企業資訊部門的惡夢。對稱加密演算法的安全性取決於加密金鑰的儲存情況,但要求企業中每一個持有金鑰的人都保守祕密是不可能的,他們通常會有意無意的把金鑰洩漏出去——如果一個使用者使用的金鑰被入侵者所獲得,入侵者便可以讀取該使用者金鑰加密的所有文件,如果整個企業共用一個加密金鑰,那整個企業文件的保密性便無從談起。

常見的對稱加密演算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES

非對稱加密

    指加密和解密使用不同金鑰的加密演算法,也稱為公私鑰加密。假設兩個使用者要加密交換資料,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。如果企業中有n個使用者,企業需要生成n對金鑰,並分發n個公鑰。由於公鑰是可以公開的,使用者只要保管好自己的私鑰即可,因此加密金鑰的分發將變得十分簡單。同時,由於每個使用者的私鑰是唯一的,其他使用者除了可以可以通過資訊傳送者的公鑰來驗證資訊的來源是否真實,還可以確保傳送者無法否認曾傳送過該資訊。非對稱加密的缺點是加解密速度要遠遠慢於對稱加密,在某些極端情況下,甚至能比非對稱加密慢上1000倍。

常見的非對稱加密演算法:RSA、ECC(移動裝置用)、Diffie-Hellman、El Gamal、DSA(數字簽名用)

Hash演算法

    Hash演算法特別的地方在於它是一種單向演算法,使用者可以通過Hash演算法對目標資訊生成一段特定長度的唯一的Hash值,卻不能通過這個Hash值重新獲得目標資訊。因此Hash演算法常用在不可還原的密碼儲存、資訊完整性校驗等。

常見的Hash演算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

    加密演算法的效能通常可以按照演算法本身的複雜程度、金鑰長度(金鑰越長越安全)、加解密速度等來衡量。上述的演算法中,除了DES金鑰長度不夠、MD2速度較慢已逐漸被淘汰外,其他演算法仍在目前的加密系統產品中使用。

加密演算法的選擇

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

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

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

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

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

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

.          加密演算法介紹

對稱加密演算法

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

DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合。

3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高。

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

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和RSA相比,在許多方面都有對絕對的優勢,主要體現在以下方面:

抗攻擊性強。相同的金鑰長度,其抗攻擊性要強很多倍。

計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。

儲存空間佔用小。ECC的金鑰尺寸和系統引數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在IC卡上的應用具有特別重要的意義。

頻寬要求低。當對長訊息進行加解密時,三類密碼系統有相同的頻寬要求,但應用於短訊息時ECC頻寬要求卻低得多。頻寬要求低使ECC在無線網路領域具有廣泛的應用前景。

下面兩張表示是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

攻破時間(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速度比較

雜湊演算法

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

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

l         MD5(Message Digest Algorithm 5):是RSA資料安全公司開發的一種單向雜湊演算法,非可逆,相同的明文產生相同的密文。

l         SHA(Secure Hash Algorithm):可以對任意長度的資料運算生成一個160位的數值;

SHA-1與MD5的比較

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

l         對強行供給的安全性:最顯著和最重要的區別是SHA-1摘要比MD5摘要長32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD5是2128數量級的操作,而對SHA-1則是2160數量級的操作。這樣,SHA-1對強行攻擊有更大的強度。

l         對密碼分析的安全性:由於MD5的設計,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。

l         速度:在相同的硬體上,SHA-1的執行速度比MD5慢。

對稱與非對稱演算法比較

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

l         在管理方面:公鑰密碼演算法只需要較少的資源就可以實現目的,在金鑰的分配上,兩者之間相差一個指數級別(一個是n一個是n2)。所以私鑰密碼演算法不適應廣域網的使用,而且更重要的一點是它不支援數字簽名。

l         在安全方面:由於公鑰密碼演算法基於未解決的數學難題,在破解上幾乎不可能。對於私鑰密碼演算法,到了AES雖說從理論來說是不可能破解的,但從計算機的發展角度來看。公鑰更具有優越性。

l         從速度上來看:AES的軟體實現速度已經達到了每秒數兆或數十兆位元。是公鑰的100倍,如果用硬體來實現的話這個比值將擴大到1000倍。

三.            加密演算法的選擇

由於非對稱加密演算法的執行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的資料時,建議採用對稱加密演算法,提高加解密速度。

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

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

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

那採用多少位的金鑰呢? RSA建議採用1024位的數字,ECC建議採用160位,AES採用128為即可。

四.            密碼學在現代的應用

保密通訊:保密通訊是密碼學產生的動因。使用公私鑰密碼體制進行保密通訊時,資訊接收者只有知道對應的金鑰才可以解密該資訊。

數字簽名:數字簽名技術可以代替傳統的手寫簽名,而且從安全的角度考慮,數字簽名具有很好的防偽造功能。在政府機關、軍事領域、商業領域有廣泛的應用環境。

祕密共享:祕密共享技術是指將一個祕密資訊利用密碼技術分拆成n個稱為共享因子的資訊,分發給n個成員,只有k(k≤n)個合法成員的共享因子才可以恢復該祕密資訊,其中任何一個或m(m≤k)個成員合作都不知道該祕密資訊。利用祕密共享技術可以控制任何需要多個人共同控制的祕密資訊、命令等。

認證功能:在公開的通道上進行敏感資訊的傳輸,採用簽名技術實現對訊息的真實性、完整性進行驗證,通過驗證公鑰證書實現對通訊主體的身份驗證。

金鑰管理:金鑰是保密系統中更為脆弱而重要的環節,公鑰密碼體制是解決金鑰管理工作的有力工具;利用公鑰密碼體制進行金鑰協商和產生,保密通訊雙方不需要事先共享祕密資訊;利用公鑰密碼體制進行金鑰分發、保護、金鑰託管、金鑰恢復等。

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

一. AES對稱加密:


                                                      AES加密



                         分組

二. 分組密碼的填充


                                                   分組密碼的填充

e.g.:

                                                         PKCS#5填充方式

三. 流密碼:



 

四. 分組密碼加密中的四種模式:

3.1 ECB模式

優點:

1.簡單;

2.有利於平行計算;

3.誤差不會被傳送;

缺點:

1.不能隱藏明文的模式;

2.可能對明文進行主動攻擊;


3.2 CBC模式:

優點:

1.不容易主動攻擊,安全性好於ECB,適合傳輸長度長的報文,是SSL、IPSec的標準。

缺點:

1.不利於平行計算;

2.誤差傳遞;

3.需要初始化向量IV

3.3 CFB模式:


 優點:

1.隱藏了明文模式;

2.分組密碼轉化為流模式;

3.可以及時加密傳送小於分組的資料;

缺點:

1.不利於平行計算;

2.誤差傳送:一個明文單元損壞影響多個單元;

3.唯一的IV;

3.4 OFB模式:


 優點:

1.隱藏了明文模式;

2.分組密碼轉化為流模式;

3.可以及時加密傳送小於分組的資料;

缺點:

1.不利於平行計算;

2.對明文的主動攻擊是可能的;

3.誤差傳送:一個明文單元損壞影響多個單元;