什麼是數字簽名?什麼是數字信封?他們如何使用

Franson發表於2016-05-23

這裡先普及一下數字加密的技術:

一、數字加密技術

1)         單鑰密碼體制/對稱密碼體制

指加密金鑰和解密金鑰為同一金鑰的密碼體制,因此通訊雙方必須共同持有該金鑰。

DES、AES是一種對稱密碼體制

2)         雙鑰密碼體制/非對稱密碼體制/公開金鑰密碼體制

指加密金鑰和解密金鑰為兩個不同金鑰的密碼體制;這兩個金鑰之間存在著互相依存關係,即其中任一個金鑰加密的資訊只能用另一個金鑰進行解密。

RSA、DSA是一種公鑰密碼體制。

3)         總結:

對稱密碼和公鑰密碼都需要保證金鑰的安全,不同之處在於金鑰的管理和分發上面。在對稱密碼中,必須要有一種可靠的手段將加密金鑰(同時也是解密金鑰)告訴給解密方;而在公鑰密碼體制中,這是不需要的。解密方只需要保證自己的私鑰的保密性即可,對於公鑰,無論是對加密方而言還是對密碼分析者而言都是公開的,故無需考慮採用可靠的通道進行密碼分發。這使得金鑰管理和金鑰分發的難度大大降低了。

4)         分清概念:加密和認證

加密是將資料資料加密,使得非法使用者即使取得加密過的資料,也無法獲取正確的資料內容。其重點在於資料的安全性。

身份認證是用來判斷某個身份的真實性,確認身份後,系統才可以依不同的身份給予不同的許可權。其重點在於使用者的真實性。

兩者的側重點是不同的。

5)         摘要演算法

摘要演算法,又叫作Hash演算法或雜湊演算法,是一種將任意長度的輸入濃縮成固定長度的字串的演算法(不同演算法雜湊值長度不一樣),注意是“濃縮”而不是“壓縮”,因為這個過程是不可逆的。它的特點是:

a)         不同內容的檔案生成的雜湊值一定不同;相同內容的檔案生成的雜湊值一定相同。由於這個特性,摘要演算法又被形象地稱為檔案的“數字指紋”。

b)         不管檔案多小(例如只有一個位元組)或多大(例如幾百GB),生成的雜湊值的長度都相同。

 

二、數字簽名與數字信封

公鑰密碼體制在實際應用中包含數字簽名和數字信封兩種方式

1)         數字簽名

使用者用自己的【私鑰】對原始資料的雜湊摘要進行加密所得的資料。數字簽名定義兩種互補的運算:一個用於簽名,另一個用於驗證。"私鑰簽名,公鑰驗證"

簽名:傳送方用特殊的hash演算法,由明文中產生固定長度的【摘要】,然後利用自己的私鑰對形成的摘要進行加密,這裡加密後的資料就是數字簽名

驗證:接受方利用傳送方的公鑰解密被加密的摘要得到結果A,然後對明文也進行hash操作產生摘要B.最後,把A和B作比較。此方式既可以保證傳送方的身份正確性,又可以保證資料在傳輸過程中不會被篡改。

數字簽名(Digital Signature)技術是不對稱加密演算法的典型應用。保證資訊傳輸的完整性、傳送者的身份認證、防止交易中的抵賴發生。

2)         數字信封

數字信封的功能類似於普通訊封。普通訊封在法律的約束下保證只有收信人才能閱讀信的內容;數字信封則採用密碼技術保證了只有規定的接收人才能閱讀資訊的內容。

數字信封中採用了單鑰加密體制和公鑰密碼體制。資訊傳送者首先利用隨機產生的【對稱密碼】加密資訊(因為非對稱加密技術的速度比較慢),再利用接收方的【公鑰】加密對稱密碼,被公鑰加密後的對稱金鑰被稱之為數字信封。在傳遞資訊時,資訊接收方要解密資訊時,必須先用自己的私鑰解密數字信封,得到對稱密碼,才能利用對稱密碼解密所得到的資訊。

數字信封既發揮了對稱加密演算法速度快、安全性好的優點,又發揮了非對稱加密演算法金鑰管理方便的優點。

三、應用示例

  1. 為了保證資訊傳送的真實性、完整性和不可否認性,需要對要傳送的資訊進行數字加密和數字簽名。其傳送過程如下:

傳送者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將收到的資訊摘要和新生成的資訊摘要進行比較,如果一致,說明收到的資訊沒有被修改過。

 

相關文章