保密性、完整性和身份驗證是必須了解的三大特性
保密性:數據加密解密。
完整性:防止數據被篡改。
身份驗證:確認數據源的身份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. 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),相同才能證明驗簽成功
三、匯總
加密與簽字結合時,兩套公私鑰是不同的。
用公鑰加密,私鑰解密。稱之為加密解密。用私鑰加密,公鑰解密,稱之為簽名驗簽。
對加密/解密和簽名/驗簽完整過程詳細理解: