"對稱/非對稱密鑰"加密算法

由於"摘要"算法加密的數據僅僅能作爲一種身份驗證的憑據使用,如果我們要對整個文檔數據進行加密,則不能採用這種"不可逆"的算法,因此"密鑰"算法(Key Encoding)的概念被提出。此類算法通過一個被稱爲"密鑰"的憑據進行數據加密處理,接收方通過加密時使用的"密鑰"字符串進行解密,即雙方持有的"密鑰"相同(對稱)。如果接收方不能提供正確的"密鑰",則解密出來的就不是原來的數據。

以上是"對稱密鑰"的概念,"非對稱密鑰"就是加密和解密文件的密鑰不一樣。用於加密的是"公鑰"(Public Key),而用於解密的是"私鑰"(Private Key),公鑰是可以公開的,而私鑰則不能公開。這種算法規定,對方給你發送數據前,可以用你的"公鑰"加密後再發給你,但是這個"公鑰"也無法解開它自己加密的數據,即加密過程是單向的,這樣即使數據被中途攔截,入侵者也無法對其進行破解。當文件到達自己的計算機後,可以用自己的"私鑰"解密,而且只有對應的私鑰纔可以解密用相應用戶的公鑰加密的文件。這就是"非對稱密鑰"加密算法,也稱爲"公共密鑰算法",這兩者均建立在PKI驗證體系結構上。

基於"對稱密鑰"的加密算法有DES、TripleDES、RC2、RC4、RC5和Blowfish等;基於"非對稱密鑰"的加密算法有RSA、Diffie-Hellman等。

1.DES算法

DES(Data Encryption Standard,數據加密標準)是最早、最著名的保密密鑰或對稱密鑰加密算法。它是由IBM公司在20世紀70年代發展起來的,美國國家標準局於1977年公佈把它作爲非機要部門使用的數據加密標準。30多年來,它一直活躍在國際保密通信的舞臺上,扮演了十分重要的角色。

目前在國內,隨着三金工程尤其是金卡工程的啓動,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收費站等領域被廣泛應用,以此來實現關鍵數據的保密,如信用卡持卡人的PIN的加密傳輸、IC卡與POS間的雙向認證、金融交易數據包的MAC校驗等,均用到DES算法。

DES是一個分組加密算法,它以64位爲分組對數據加密。同時DES也是一個對稱算法:加密和解密用的是同一個算法。它的密匙長度是56位(因爲每個字節的第8位都用作奇偶校驗),密鑰可以是任意的56位的數,而且可以任意時候改變。其中有極少量的數被認爲是弱密鑰,但是很容易避開他們,所以其保密性依賴於密鑰。

DES算法具有極高的安全性,到目前爲止,除了用窮舉搜索法對DES算法進行攻擊外,還沒有發現更有效的辦法。而56位長的密鑰的窮舉空間爲256,這意味着如果一臺計算機的速度是每秒鐘檢測一百萬個密鑰,則它搜索完全部密鑰就需要將近2285年的時間,可見這是難以實現的。當然,隨着科學技術的發展,當出現超高速計算機後,還可以考慮把DES密鑰的長度再增長一些,以此來達到更高的保密程度。

DES算法的入口參數有3個:Key、Data、Mode。其中Key爲8個字節,共64位,是DES算法的工作密鑰;Data也爲8個字節,64位,是要被加密或被解密的數據;Mode爲DES的工作方式,有兩種:加密或解密。如Mode爲加密,則用Key 去對數據Data進行加密,生成Data的密碼形式(64位)作爲DES的輸出結果;如Mode爲解密,則用Key去把密碼形式的數據Data解密,還原爲Data的明碼形式(64位)作爲DES的輸出結果。在通信網絡的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然後以密碼形式在公共通信網(如電話網)中傳輸到通信網絡的終點,數據到達目的地後,用同樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣,便保證了核心數據在公共通信網中傳輸的安全性和可靠性。通過定期在通信網絡的源端和目的端同時改用新的Key,便能更進一步提高數據的保密性,這正是現在金融交易網絡的流行做法。

DES算法的工作原理爲:DES對64位的明文分組進行操作,通過一個初始置換將明文分成左半部分和右半部分,然後進行16輪完全相同的運算,最後經過一個末置換便得到64位密文。每一輪的運算包含擴展置換、S盒代換、P盒置換和兩次異或運算,另外每一輪中還有一個輪密鑰(子密鑰)。具體過程如下:DES對一個64位的明文分組(m)進行加密操作,m經過一個初始的P置換成m0,將m0明文分成左半部分和右半部分m0=(L0,R0),各32位長。然後進行16輪完全相同的運算,這些運算被稱爲函數f,在運算過程中數據與密匙結合。在每一輪中,密匙位移位,然後再從密匙的56位中選出48位。通過一個擴展置換將數據的右半部分擴展成48位,並通過一個異或操作替代成新的32位數據。這4步運算構成了函數f。然後,通過另一個異或運算,函數f的輸出與左半部分結合,其結果成爲新的右半部分,原來的右半部分成爲新的左半部分,這就是S盒代換。經過16輪這樣的轉換後,左、右半部分再合在一起經過一個末置換,這樣就完成了整個加密過程。

DES加密和解密唯一的不同是密匙的次序相反。如果各輪加密密匙分別是K1、K2、K3…K16,那麼解密密匙就是K16、K15、K14…K1。

目前在DES算法中,採用最多的還是更復雜、更安全的3DES(TripleDES),是DES加密算法的一種模式。3DES使用3條64位的密鑰對數據進行3次加密,密碼強度是168位(3×56)。3DES是DES向AES過渡的加密算法(1999年,NIST將3DES指定爲過渡的加密標準)。它以DES爲基本模塊,通過組合分組方法設計出分組加密算法。

2.RC算法

RC系列算法是由大名鼎鼎的RSA三人組設計的密鑰長度可變的流加密算法,其中最流行的是RC4算法。RC系列算法可以使用2048位的密鑰,但該算法的速度卻可以達到DES加密的10倍左右,所以受到用戶的廣泛歡迎和普遍採用。

RC4算法的原理包括初始化算法和僞隨機子密碼生成算法兩大部分。在初始化的過程中,密鑰的主要功能是將一個256字節的初始數簇進行隨機攪亂,不同的數簇在經過僞隨機子密碼生成算法的處理後可以得到不同的子密鑰序列,得到的子密鑰序列和明文進行異或運算(XOR)後,得到密文。

由於RC4算法加密採用的是異或,所以一旦子密鑰序列出現了重複,密文就有可能被破解。

3.RSA算法

RSA算法也是RSA三人設計組設計的,是目前最流行的公鑰密碼算法。它使用長度可以變化的密鑰,是第一個既能用於數據加密,也能用於數字簽名的算法。

RSA算法的原理如下:

(1)隨機選擇兩個大質數p和q,p不等於q,計算N=pq。

(2)選擇一個大於1、小於N的自然數e,e必須與(p-1)(q-1)互素。

(3)用公式d×e = 1(mod(p-1)(q-1))計算出d。

(4)銷燬p和q。

最終得到的N就是"公鑰",d就是"私鑰",發送方使用N去加密數據,接收方只有使用d才能解開數據內容。

RSA的安全性依賴於大數分解,小於1024位的N已經被證明是不安全的。而且由於RSA算法進行的都是大數計算,使得RSA最快的情況也比DES慢一倍以上,這是RSA最大的缺陷。因此,通常只能用於加密少量數據或者加密密鑰,但RSA仍然不失爲一種高強度的算法。


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/maxiaoqiang1/archive/2010/11/18/6017627.aspx

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