
我們所說的密鑰其實分為很多種類,下面我們來整理一下。
對稱密碼的密鑰與公鑰密碼的密鑰
在對稱密碼中,加密和解密使用同一個密鑰。由於發送者和接收者之間需要共享密鑰,因此對稱密碼又稱為共享密鑰密碼。對稱密碼中所使用的密鑰必須對發送者和接收者以外的人保密,否則第三方就能夠解密密文了。
在公鑰密碼中,加密和解密使用的是不同的密鑰。用於加密的密鑰稱為公鑰,顧名思義它是可以被公開的;用於解密的密鑰稱為私鑰,只有需要進行解密的接收者才持有私鑰,私鑰也稱為秘密密鑰。相對應的公鑰和私鑰之間具有深刻的數學關係,因此也稱為密鑰對。
消息認證碼的密鑰與數字簽名的密鑰
在消息認證碼中,發送者和接收者使用共享的密鑰來進行認證。消息認證碼只能由持有合法密鑰的人計算出來。將消息認證碼附加在通信報文後面,就可以識別通信內容是否被篡改或偽裝。由於“持有合法的密鑰”就是發送者和接收者合法身份的證明,因此消息認證碼的密鑰必須對發送者和接收者以外的人保密,否則就會產生篡改和偽裝的風險。
在數字簽名中,簽名的生成和驗證使用不同的密鑰。只有持有私鑰的本人才能夠生成簽名,但由於驗證簽名使用的是公鑰,因此任何人都能夠驗證簽名。
用於確保機密性的密鑰與用於認證的密鑰
對稱密碼和公鑰密碼的密鑰都是用於確保機密性的密鑰。如果不知道用於解密的合法密鑰,就無法得知明文的內容。
相對地,消息認證碼和數字簽名所使用的密鑰,則是用於認證的密鑰。如果不知道合法的密鑰,就無法篡改數據,也無法偽裝本人的身份。
會話密鑰與主密鑰
當我們訪問以htps開頭的網頁時,Web服務器和瀏覽器之間會進行基於 SSL/TLS的加密通信。在這樣的通信中所使用的密鑰是僅限於本次通信的一次性密鑰,下次通信時就不能使用了。像這樣每次通信只能使用一次的密鑰稱為會話密鑰。
只能一次性使用的密鑰有哪些好處呢?由於會話密鑰只在本次通信中有效,萬一竊聽者獲取了本次通信的會話密鑰,也只能破譯本次通信的內容。由於在下次通信中會使用新的密鑰,因此其他通信的機密性不會受到破壞。
雖然每次通信都會更換會話密鑰,但如果用來生成密鑰的偽隨機數生成器品質不好,竊聽
者就有可能預測出下次生成的會話密鑰,這樣就會產生通信內容被破譯的風險。
相對於每次通信都更換的會話密鑰,不断被重複使用的密鑰稱為主密鑰( master key)。
用於加密內容的密鑰與用於加密密鑰的密鑰
加密的對象是用戶直接使用的信息(內容),這樣的情況下所使用的密鑰稱為CEK( Contents Encrypting Key,內容加密密鑰);相對地,用於加密密鑰的密鑰則稱為KEK( Key Encrypting Key,密鑰加密密鑰)。
將密鑰進行加密好像有點奇怪,但可以減少需要保管的密鑰數量。在很多情況下,之前提到的會話密鑰都是被作為CEK使用的,而主密鑰則是被作為KEK使用的。
