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

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

保密性:數據加密解密。linux

完整性:防止數據被篡改。git

身份驗證:確認數據源的身份identity。算法

 

1、保密性:加密算法

密鑰:對明文進行加密過程用到的保密的比特序列。安全

對稱加密算法:就一個密鑰ide

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

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

 

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

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

密碼散列函數crytographic hash function:該函數接受任意長度的輸入並給出固定長度的輸出(通常稱爲摘要digest),如SHA-256.code

散列函數看起來不錯,但若是有人能夠同時篡改消息及其摘要,那麼消息發送仍然是不安全的。咱們須要將哈希與加密算法結合起來。在對稱加密算法領域,咱們有消息認證碼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),相同才能證實驗籤成功

 

3、彙總

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

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

 

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

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加密/解密和簽名/驗簽過程理解

相關文章
相關標籤/搜索