“對稱/非對稱密鑰”加密算法

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

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

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

1.DES算法

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

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

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

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

DES算法的入口參數(shù)有3個:Key、Data、Mode。其中Key為8個字節(jié),共64位,是DES算法的工作密鑰;Data也為8個字節(jié),64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或解密。如Mode為加密,則用Key 去對數(shù)據(jù)Data進行加密,生成Data的密碼形式(64位)作為DES的輸出結(jié)果;如Mode為解密,則用Key去把密碼形式的數(shù)據(jù)Data解密,還原為Data的明碼形式(64位)作為DES的輸出結(jié)果。在通信網(wǎng)絡的兩端,雙方約定一致的Key,在通信的源點用Key對核心數(shù)據(jù)進行DES加密,然后以密碼形式在公共通信網(wǎng)(如電話網(wǎng))中傳輸?shù)酵ㄐ啪W(wǎng)絡的終點,數(shù)據(jù)到達目的地后,用同樣的Key對密碼數(shù)據(jù)進行解密,便再現(xiàn)了明碼形式的核心數(shù)據(jù)。這樣,便保證了核心數(shù)據(jù)在公共通信網(wǎng)中傳輸?shù)陌踩院涂煽啃?。通過定期在通信網(wǎng)絡的源端和目的端同時改用新的Key,便能更進一步提高數(shù)據(jù)的保密性,這正是現(xiàn)在金融交易網(wǎng)絡的流行做法。

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

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

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

2.RC算法

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

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

由于RC4算法加密采用的是異或,所以一旦子密鑰序列出現(xiàn)了重復,密文就有可能被破解。

3.RSA算法

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

RSA算法的原理如下:

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

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

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

(4)銷毀p和q。

最終得到的N就是"公鑰",d就是"私鑰",發(fā)送方使用N去加密數(shù)據(jù),接收方只有使用d才能解開數(shù)據(jù)內(nèi)容。

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