這里先普及一下數字加密的技術:
一、數字加密技術
1) 單鑰密碼體制/對稱密碼體制
指加密密鑰和解密密鑰為同一密鑰的密碼體制,因此通信雙方必須共同持有該密鑰。
DES、AES是一種對稱密碼體制
2) 雙鑰密碼體制/非對稱密碼體制/公開密鑰密碼體制
指加密密鑰和解密密鑰為兩個不同密鑰的密碼體制;這兩個密鑰之間存在着互相依存關系,即其中任一個密鑰加密的信息只能用另一個密鑰進行解密。
RSA、DSA是一種公鑰密碼體制。
3) 總結:
對稱密碼和公鑰密碼都需要保證密鑰的安全,不同之處在於密鑰的管理和分發上面。在對稱密碼中,必須要有一種可靠的手段將加密密鑰(同時也是解密密鑰)告訴給解密方;而在公鑰密碼體制中,這是不需要的。解密方只需要保證自己的私鑰的保密性即可,對於公鑰,無論是對加密方而言還是對密碼分析者而言都是公開的,故無需考慮采用可靠的通道進行密碼分發。這使得密鑰管理和密鑰分發的難度大大降低了。
4) 分清概念:加密和認證
加密是將數據資料加密,使得非法用戶即使取得加密過的資料,也無法獲取正確的資料內容。其重點在於數據的安全性。
身份認證是用來判斷某個身份的真實性,確認身份后,系統才可以依不同的身份給予不同的權限。其重點在於用戶的真實性。
兩者的側重點是不同的。
5) 摘要算法
摘要算法,又叫作Hash算法或散列算法,是一種將任意長度的輸入濃縮成固定長度的字符串的算法(不同算法散列值長度不一樣),注意是“濃縮”而不是“壓縮”,因為這個過程是不可逆的。它的特點是:
a) 不同內容的文件生成的散列值一定不同;相同內容的文件生成的散列值一定相同。由於這個特性,摘要算法又被形象地稱為文件的“數字指紋”。
b) 不管文件多小(例如只有一個字節)或多大(例如幾百GB),生成的散列值的長度都相同。
二、數字簽名與數字信封
公鑰密碼體制在實際應用中包含數字簽名和數字信封兩種方式
1) 數字簽名
指用戶用自己的【私鑰】對原始數據的哈希摘要進行加密所得的數據。數字簽名定義兩種互補的運算:一個用於簽名,另一個用於驗證。"私鑰簽名,公鑰驗證"
簽名:發送方用特殊的hash算法,由明文中產生固定長度的【摘要】,然后利用自己的私鑰對形成的摘要進行加密,這里加密后的數據就是數字簽名。
驗證:接受方利用發送方的公鑰解密被加密的摘要得到結果A,然后對明文也進行hash操作產生摘要B.最后,把A和B作比較。此方式既可以保證發送方的身份正確性,又可以保證數據在傳輸過程中不會被篡改。
數字簽名(Digital Signature)技術是不對稱加密算法的典型應用。保證信息傳輸的完整性、發送者的身份認證、防止交易中的抵賴發生。
2) 數字信封
數字信封的功能類似於普通信封。普通信封在法律的約束下保證只有收信人才能閱讀信的內容;數字信封則采用密碼技術保證了只有規定的接收人才能閱讀信息的內容。
數字信封中采用了單鑰加密體制和公鑰密碼體制。信息發送者首先利用隨機產生的【對稱密碼】加密信息(因為非對稱加密技術的速度比較慢),再利用接收方的【公鑰】加密對稱密碼,被公鑰加密后的對稱密鑰被稱之為數字信封。在傳遞信息時,信息接收方要解密信息時,必須先用自己的私鑰解密數字信封,得到對稱密碼,才能利用對稱密碼解密所得到的信息。
數字信封既發揮了對稱加密算法速度快、安全性好的優點,又發揮了非對稱加密算法密鑰管理方便的優點。
三、應用示例
- 為了保證信息傳送的真實性、完整性和不可否認性,需要對要傳送的信息進行數字加密和數字簽名。其傳送過程如下:
發送者A:
1) A准備要傳送的數字信息(明文)
2) A對數字信息(明文)進行哈希(hash)運算,得到一信息摘要。
3) A用自己的【私鑰(SK)】對信息摘要進行加密得到A的數字簽名,並將其附在數字信息上。(數字簽名)
4) A隨機產生一個加密鑰(DES密鑰),並用此密鑰對要發送的信息(明文)進行加密,形成密文。(對稱加密)
5) A用B的【公鑰(PK)】對剛才隨機產生的加密密鑰進行加密,將加密后的DES密鑰連同密文一起傳送給B。(數字信封)
接收者B:
1) B收到A傳送過來的密文和加過密的DES密鑰,先用自己的私鑰(SK)對加密的DES密鑰進行解密,得到DES密鑰。
2) B然后用DES密鑰對受到的密文進行解密,得到明文的數字信息,然后將DES密鑰拋棄(即DES密鑰作廢)。
3) B用A的公鑰(PK)對A的數字簽名進行解密,得到信息摘要。
4) B用相同的has算法對收到的明文再進行一次hash運算,得到一個新的信息摘要。
5) B將收到的信息摘要和新生成的信息摘要進行比較,如果一致,說明收到的信息沒有被修改過。