Keys
術語“pre-master secret”、“master secret”、“private key”和“shared secret”之間的區別?
crypto.SE和security.SE都有關於 TLS 如何生成會話密鑰的優秀問答(我在底部連結了一些)。
在閱讀這些執行緒時,我遇到了術語問題,因為以下術語似乎與重疊的上下文一起使用,儘管它們顯然是不同的概念。閱讀定義只是部分有用,因為它們沒有顯示它們用法之間的差異。
- 預主秘密
- 主秘
- 私鑰
- 共享密鑰/會話密鑰
據我了解,預主密鑰與私鑰有關,但與算法無關,主密鑰(通常?)用作會話密鑰。但我確信這些定義還有更多細微差別。
相關問題:
- SSL/TLS 如何工作? $$ security.SE $$
- 預主密鑰有什麼意義? $$ security.SE $$
- SSL/TLS 中預主密鑰的目的是什麼? $$ crypto.SE $$
- 長期密鑰和會話密鑰有什麼區別? $$ crypto.SE $$
本書 中的簡化 SSLv3/TLS注意, $ R_{(Alice|Bob)} $ 是分別由 Alice 或 Bob 選擇的隨機數,並且 $ {S}_{Bob} $ 是用 Bob 的公鑰加密。
預主秘密
如您連結到的答案之一所述,“premaster secret 的目的是在 TLS 密碼套件之間提供更大的一致性。”
在上圖中,premaster secret 是 $ S $ (在消息 3 中)。在這種情況下,它是隨機生成的。它可能來自 diffie-hellman 交換或其他方法,具體取決於商定的密碼套件。
它並不是真正“與私鑰相關”,但它的生成/同意方式取決於圖中第二條消息中選擇的密碼套件。
主秘
在上圖中,主密鑰是 $ K $ . 從側面顯示,它是前主密鑰和前兩條消息中發送的兩個隨機值的函式。
私鑰
我不確定這是從哪裡來的。它可以引用 Bob 在消息 2 中發送的證書的私鑰。它還可以引用在 diffie-hellman 密鑰交換中使用的私鑰。如果進行客戶端身份驗證,它可以引用與其證書關聯的客戶端私鑰。
共享密鑰/會話密鑰
這就是圖中最後一步所指的內容。會話密鑰被稱為“從 K 派生的密鑰”。許多密鑰實際上是從 K 派生的。這可能是加密密鑰、完整性保護密鑰(例如 HMAC)、密碼的 IV 等。而且,它通常是每個方向的不同集合。