Diffie-Hellman
站到站協議問題
基本站到站協議,如果 Bob 和 Alice 安全地共享了他們的長期非對稱公鑰,則對他們進行身份驗證。
- 愛麗絲向鮑勃發送她的公鑰 $ A_K $
- 鮑勃收到 $ A_K $ 併計算共享密鑰 $ K $
- Bob 用他的長期密鑰簽名 $ S_B(\mathit{B_K, A_K}) $ 並加密 $ E(S_B(B_K,A_K), K) $ 使用 AES 128 GCM
- Bob 發送 Alice $ B_K, E(S_B(B_K,A_K), K) $
- 愛麗絲計算 $ K $ , 解密 $ E(S_B(B_K,A_K), K) $ 並驗證簽名。使用 Bob 的長期公鑰
- 愛麗絲標誌 $ S_A(\mathit{A_K, B_K}) $ , 加密 $ E(S_A(A_K,B_K), K) $ 並發送結果密文
- 鮑勃解密 $ E(S_A(A_K,B_K), K) $ 並驗證 sig。 $ S_A(\mathit{A_K, B_K}) $ 使用她的長期公鑰
我有三個問題。
- 在 Bob 計算之前 $ S_B(\mathit{B_K, A_K}) $ 他是否散列 $ B_K $ 和 $ A_K $ 使用 $ SHA256 $ 例如,愛麗絲可以自己散列並比較散列?
- Bob 是否使用普通的 $ K $ 用於加密還是他使用密鑰派生功能,例如 $ HKDF $ ?
- 如果鮑勃使用 $ HKDF $ 他可以在他發送給愛麗絲的數據的末尾包含鹽嗎?
1. 在 Bob 計算之前 $ S_B(\mathit{B_K, A_K}) $ 他是否散列 $ B_K $ 和 $ A_K $ 使用 $ SHA256 $ 例如,愛麗絲可以自己散列並比較散列?
通常簽名生成函式已經包含一個雜湊操作(可能是 SHA-256),因此不需要單獨的雜湊步驟;它應該配置為簽名生成功能。
如果您不想在協議的早期涉及私鑰,則可以使用單獨的雜湊 - 但這是我能想到的唯一原因。
2. Bob 是否使用普通的 $ K $ 用於加密還是他使用密鑰派生功能,例如 $ HKDF $ ?
要看。
通常,密鑰協議(您的協議似乎完全缺失)將生成一個共享密鑰。但是這個秘密可能沒有很好地分佈和/或可能太大。所以在這種情況下,需要一個單獨的 KDF。
請注意,有時KDF 已在密鑰協商協議中配置,因此在這種情況下不需要單獨的KDF - 就像簽名生成算法的散列函式一樣。當然,如果您的協議需要,您仍然可以使用單獨的 KDF 來派生更多密鑰或具有不同大小的密鑰。
3. 如果 Bob 使用 $ HKDF $ 他可以在他發送給愛麗絲的數據的末尾包含鹽嗎?
當然,或者鹽可以完全省略。但是 HKDF 確實提到添加鹽是實現高安全性的首選。