Diffie-Hellman
STS協議中的相互認證
STS 協議是這樣的:
- $ A \rightarrow B:~ g^x $
- $ A \leftarrow B:~ g^y, E_K(S_B(g^y, g^x)) $
- $ A \rightarrow B:~ E_K(S_A(g^x, g^y)) $
我的問題是為什麼我們在 STS 中說我們有相互身份驗證?例如:
- $ A \rightarrow C: g^x $
- $ C \rightarrow B: g^x $
- $ C \leftarrow B: g^y, E_K(S_B(g^y, g^x)) $
- $ A \leftarrow C: g^y, E_K(S_B(g^y, g^x)) $
所以 A 將驗證 C 而不是 B!
這個問題的主要問題是C的作用。
這裡C除了傳輸數據之外沒有做任何事情。所以它在某種程度上就像一根電線。所以它不會被計入協議。
假設服務端,在伺服器-客戶端模型中,雙方都必須被辨識。在具有身份驗證的密鑰的身份驗證階段,客戶端 Ci 被辨識為 MACk 的評估 (IDCi, TCi, R, R),而伺服器的 MACk = (IDCi, TCi, L) 評估。攻擊者在不知道客戶端真實身份的情況下無法創建有效會話,併計算出常用計算值 R 和正確的 k = H3 (IDCi, TCi, R, R)。
抗去同步攻擊,
創建新的 AID 需要雙方進行現代計算。如果客戶端沒有收到來自伺服器的消息,它可能無法連接到它。因此,一個合理的假設是,使用密鑰交換協議的相互身份驗證只是會話的開始,然後是安全的消息交換。在此交換期間,發生了協議的一個重要過程。如果伺服器在相互認證後沒有收到消息,則伺服器將知道客戶端可能沒有收到消息並停止用新值更新 AID。