常見的密碼編譯演算法可以分成三類,對稱式加密演算法,非對稱式加密演算法和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為即可。