1. 程式人生 > >加密和驗籤:保密性、完整性和身份認證

加密和驗籤:保密性、完整性和身份認證

保密性、完整性和身份驗證是必須瞭解的三大特性

保密性:資料加密解密。

完整性:防止資料被篡改。

身份驗證:確認資料來源的身份identity。

 

一、保密性:加密演算法

金鑰:對明文進行加密過程用到的保密的位元序列。

對稱加密演算法:就一個金鑰

非對稱加密演算法:有公鑰和私鑰,如RSA。

加解密過程簡述:A和B進行通訊加密,B要先生成一對RSA金鑰,B自己持有私鑰,給A公鑰 --->A使用B的公鑰加密要傳送的內容,然後B接收到密文後通過自己的私鑰解密內容。

 

二、完整性和身份驗證:簽名

對稱加密演算法領域的完整性和身份認證

密碼雜湊函式crytographic hash function:該函式接受任意長度的輸入並給出固定長度的輸出(一般稱為摘要digest),如SHA-256.

雜湊函式看起來不錯,但如果有人可以同時篡改訊息及其摘要,那麼訊息傳送仍然是不安全的。我們需要將雜湊與加密演算法結合起來。在對稱加密演算法領域,我們有訊息認證碼message authentication codes(MAC)技術。MAC 有多種形式,但雜湊訊息認證碼hash message authentication codes(HMAC) 這類是基於雜湊的。HMAC 使用雜湊函式 H 處理金鑰 K、訊息 M,公式為 H(K + H(K + M)),其中 + 代表連線concatenation。

非對稱加密演算法領域:

有數字簽名digital signatures技術。如果使用 RSA,使用公鑰加密的內容只能通過私鑰解密,反過來也是如此;這種機制可用於建立一種簽名。如果只有我持有私鑰並用其加密文件,那麼只有我的公鑰可以用於解密,那麼大家潛在的承認文件是我寫的:這是一種身份驗證。事實上,我們無需加密整個文件。如果生成文件的摘要,只要對這個指紋加密即可。

 

簽名驗簽過程簡述:

A給B傳送訊息,A先計算出訊息的訊息摘要,然後使用自己的私鑰加密訊息摘要,被加密的訊息摘要就是簽名.(A用自己的私鑰給訊息摘要加密成為簽名)。

B收到訊息後,也會使用和A相同的方法提取訊息摘要,然後用A的公鑰解密簽名,並與自己計算出來的訊息摘要進行比較-->如果相同則說明訊息是A傳送給B的,同時,A也無法否認自己傳送訊息給B的事實.(B使用A的公鑰解密簽名檔案的過程,叫做"驗籤").

 

簽名過程:

1. A計算訊息m的訊息摘要,記為 h(m) 2. A使用私鑰(n,d)對h(m)加密,生成簽名s, s滿足:s=(h(m))^d mod n; 由於A是用自己的私鑰對訊息摘要加密,所以只用使用s的公鑰才能解密該訊息摘要,這樣A就不可否認自己傳送了該訊息給B
3. A傳送訊息和簽名(m,s)給B
驗簽過程:

1. B計算訊息m的訊息摘要(計算方式和A相同),記為h(m)
2. B使用A的公鑰(n,e)解密s,得到 H(m), H(m) = s^e mod n
3. B比較H(m)與h(m),相同才能證明驗籤成功

 

三、彙總

加密與簽字結合時,兩套公私鑰是不同的

用公鑰加密,私鑰解密。稱之為加密解密。用私鑰加密,公鑰解密,稱之為簽名驗籤。

 

對加密/解密和簽名/驗簽完整過程詳細理解:

A->B: 1. A提取訊息m的訊息摘要h(m),並使用自己的私鑰對摘要h(m)進行加密,生成簽名s 2. A將簽名s和訊息m一起,使用B的公鑰進行加密,生成密文c,傳送給B B: 1. B接收到密文c,使用自己的私鑰解密c得到明文m和數字簽名s 2. B使用A的公鑰解密數字簽名s解密得到H(m) 3. B使用相同的方法提取訊息m的訊息摘要h(m) 4. B比較兩個訊息摘要。相同則驗證成功;不同則驗證失敗

密碼學及公鑰基礎設施入門

公鑰基礎設施和密碼學中的私鑰的角色

RSA加密/解密和簽名/驗簽過程理解