PKI基礎內容介紹(2)
PKI基礎之單鑰密碼算法(加密)
單鑰密碼算法,又稱對稱密碼算法,是指加密密鑰和解密密鑰為同一密鑰的密碼算法。因此,信息的發送者和信息的接收者在進行信息的傳輸與處理時,必須共同持有該密碼(稱為對稱密碼)。在對稱密鑰密碼算法中,加密運算與解密運算使用同樣的密鑰。通常,使用的加密算法比較簡便高效,密鑰簡短,破譯極其困難;由于系統的保密性主要取決于密鑰的安全性,所以,在公開的計算機網絡上安全地傳送和保管密鑰是一個嚴峻的問題。最典型的是DES(Data Encryption Standard)算法。
DES(Data Encryption Standard,數據加密標準)算法,它是一個分組加密算法,它以64 bit位(8 byte)為分組對數據加密,其中有8 bit奇偶校驗,有效密鑰長度為56 bit。64位一組的明文從算法的一端輸入,64位的密文從另一端輸出。DES是一個對稱算法,加密和解密用的是同一算法。DES的安全性依賴于所用的密鑰。
密鑰的長度為56位。(密鑰通常表示為64位的數,但每個第8位都用作奇偶校驗,可以忽略。)密鑰可以是任意的56位的數,且可以在任意的時候改變。其中極少量的數被認為是弱密鑰,但能容易地避開它們。所有的保密性依賴于密鑰。簡單地說,算法只不過是加密的兩個基本技術--混亂和擴散的組合。
DES基本組建分組是這些技術的一個組合(先代替后置換),它基于密鑰作用于明文,這是眾所周知的輪(round)。DES有16輪,這意味著要在明文分組上16次實施相同的組合技術。此算法只使用了標準的算術和邏輯運算,而其作用的數也最多只有64位。
DES對64位的明文分組進行操作,通過一個初始置換,將明文分組分成左半部分和右半部分,各32位長。然后進行16輪完全相同的運算,這些運算被稱為函數f,在運算過程中數據與密鑰結合。經過16輪后,左、右半部分合在一起經過一個末置換(初始置換的逆置換),這樣該算法就完成了。在每一輪中,密鑰位移位,然后再叢密鑰的56位中選出48位。通過一個擴展置換將數據的右半部分擴展成48位,并通過一個異或操作與48位密鑰結合,通過8個s盒將這48位替代成新的32位數據,再將其置換一次。這四步運算構成了函數f。然后,通過另一個異或運算,函數f輸出與左半部分結合,其結果即成為新的右半部分,原來的右半部分成為新的左半部分。將該操作重復16次,便實現了DES的16輪運算。
假設Bi是第i次迭代的結果,Li和Ri是Bi的左半部分和右半部分,Ki是第i輪的48位密鑰,且f是實現代替、置換及密鑰異或等運算的函數,那么每一輪就是:
PKI基礎之雙鑰密碼算法(加密、簽名)
雙鑰密碼算法,又稱公鑰密碼算法:是指加密密鑰和解密密鑰為兩個不同密鑰的密碼算法。公鑰密碼算法不同于單鑰密碼算法,它使用了一對密鑰:一個用于加密信息,另一個則用于解密信息,通信雙方無需事先交換密鑰就可進行保密通信。其中加密密鑰不同于解密密鑰,加密密鑰公之于眾,誰都可以用;解密密鑰只有解密人自己知道。這兩個密鑰之間存在著相互依存關系:即用其中任一個密鑰加密的信息只能用另一個密鑰進行解密。若以公鑰作為加密密鑰,以用戶專用密鑰(私鑰)作為解密密鑰,則可實現多個用戶加密的信息只能由一個用戶解讀;反之,以用戶私鑰作為加密密鑰而以公鑰作為解密密鑰,則可實現由一個用戶加密的信息而多個用戶解讀。前者可用于數字加密,后者可用于數字簽名。
在通過網絡傳輸信息時,公鑰密碼算法體現出了單密鑰加密算法不可替代的優越性。對于參加電子交易的商戶來說,希望通過公開網絡與成千上萬的客戶進行交易。若使用對稱密碼,則每個客戶都需要由商戶直接分配一個密碼,并且密碼的傳輸必須通過一個單獨的安全通道。相反,在公鑰密碼算法中,同一個商戶只需自己產生一對密鑰,并且將公開鑰對外公開。客戶只需用商戶的公開鑰加密信息,就可以保證將信息安全地傳送給商戶。
公鑰密碼算法中的密鑰依據性質劃分,可分為公鑰和私鑰兩種。用戶產生一對密鑰,將其中的一個向外界公開,稱為公鑰;另一個則自己保留,稱為私鑰。凡是獲悉用戶公鑰的任何人若想向用戶傳送信息,只需用用戶的公鑰對信息加密,將信息密文傳送給用戶便可。因為公鑰與私鑰之間存在的依存關系,在用戶安全保存私鑰的前提下,只有用戶本身才能解密該信息,任何未受用戶授權的人包括信息的發送者都無法將此信息解密。
RSA公鑰密碼算法是一種公認十分安全的公鑰密碼算法。它的命名取自三個創始人:Rivest、Shamir和Adelman。RSA公鑰密碼算法是目前網絡上進行保密通信和數字簽名的最有效的安全算法。RSA算法的安全性基于數論中大素數分解的困難性,所以,RSA需采用足夠大的整數。因子分解越困難,密碼就越難以破譯,加密強度就越高。
RSA既能用于加密又能用于數字簽名,在已提出的公開密鑰算法中,RSA最容易理解和實現的,這個算法也是最流行的。RSA的安全基于大數分解的難度。其公開密鑰和私人密鑰是一對大素數(100到200個十進制數或更大)的函數。從一個公開密鑰和密文中恢復出明文的難度等價于分解兩個大素數之積。為了產生兩個密鑰,選取兩個大素數,p和q。為了獲得最大程度的安全性,兩數的長度一樣。計算乘積: ,然后隨機選取加密密鑰e,使e和(p-1)(q-1)互素。最后用歐幾里得擴展算法計算解密密鑰d,以滿足
則,注意:d和n也互素。e和n是公開密鑰,d是私人密鑰。兩個素數p和q不再需要,它們應該被舍棄,但絕不可泄露。
加密消息m時,首先將它分成比n小的數據分組(采用二進制數,選取小于n的2的最大次冪),也就是說,p和q為100位的素數,那么n將有200位,每個消息分組 應小于200位長。加密后的密文c,將由相同長度的分組 組成。加密公式簡化為
解密消息時,取每一個加密后的分組ci并計算:
由于: ,全部(mod n)這個公式能恢復出明文。
公開密鑰 n:兩素數p和q的乘積(p和q必須保密) e:與(p-1)(q-1)互素
私人密鑰
加密
解密
【編輯推薦】