在 SKEME 協議中,兩方如何將 AUTH 數據放在一起?
SKEME是Internet 密鑰交換 (IKE)中使用的密鑰交換協議。它包含三個階段:
SHARE
、EXCH
和AUTH
– 這些在連結的 SKEME 文件的第 3.2 節中定義。我試圖了解關於 SKEME 的 AUTH 階段的一個令人困惑的部分(至少對我而言)。在我回答我的實際問題之前,有一點背景需要介紹,請多多包涵……
SHARE
Phase SHARE 旨在建立一個密鑰 $ K_0 $ 之間 $ A $ 和 $ B $
在 SHARE 中,雙方交換在彼此的公鑰下加密的“半密鑰”,然後通過雜湊函式組合半密鑰以產生 $ K_0 $
但是,如果雙方使用預共享密鑰而不是公鑰,則整個階段都將被跳過。這是在這裡定義的:
3.3.2 預共享密鑰和 PFS
在這種模式下,協議假設各方已經共享一個秘密密鑰,並且他們使用這個密鑰來派生一個新的和新鮮的密鑰
在這種 SKEME 模式下,可以跳過 SHARE 階段,將預共享密鑰用作 $ K_0 $
這就是我關心的 SKEME 模式,所以我們從表面上看 $ A $ 和 $ B $ 有預共享密鑰 $ K_0 $
EXCH
下一階段,EXCH,用於交換 Diffie-Hellman 指數。請注意,此階段獨立於 SHARE。
交易所:
$ A $ –> $ B $ : $ g^x $ $ mod $ $ p $
$ B $ –> $ A $ : $ g^y $ $ mod $ $ p $
標準 Diffie-Hellman 交換,這裡沒什麼複雜的。雙方現在都有 DH 共享密鑰。
AUTH
此 Diffie-Hellman 交換的身份驗證在以下階段 AUTH 中完成,該階段使用共享密鑰 $ K_0 $ 從 SHARE 驗證 Diffie-Hellman 指數。
授權:
$ A $ –> $ B $ : $ F_{K_0} $ ( $ g^y $ ; $ g^x $ ; $ id_A $ ; $ id_B $ )
$ B $ –> $ A $ : $ F_{K_0} $ ( $ g^x $ ; $ g^y $ ; $ id_B $ ; $ id_A $ )
請注意,關鍵 $ K_0 $ 在 SHARE 階段共享的只有 A 和 B 知道…… $ g^x $ 在第一條消息中用於驗證(到 $ B $ ) 那 $ g^x $ 來自 $ A $ ; 價值 $ g^y $ 在同一消息中用於證明 $ B $ 此消息的新鮮度(假設 $ g^y $ 剛被選中 $ B $ );
這就是我感到困惑的地方。
我知道 $ A $ 放計算 $ g^x $ ,並且可以理解如何 $ A $ 知道這個值。但據我了解, $ B $ 計算出來的 $ g^y $ , 並且隻共享 $ g^y $ $ mod $ $ p $ .
因此,**如何 $ A $ 知道 $ g^y $ 包括在上面的公式中?**同樣,如何 $ B $ 知道 $ g^x $ 計算相同的 $ F_{K_0} $ 驗證提供的值 $ A $ ?
如何 $ A $ 知道 $ g^y $ 包括在上面的公式中?
事實上,他們的意思是,事實上, $ g^y \bmod p $ ; 也就是說,該值 $ A $ 已收到。插入文字值是行不通的 $ g^x $ 和 $ g^y $ ; 除了事實上 $ A $ 不知道第二個,還有一個實際的困難,因為 $ x $ 和 $ y $ 是(也許)256 位隨機值,位表示 $ g^x $ 和 $ g^y $ 可能包括大約 $ 2^{256} $ 比特長度;處理時間太長。
一般來說,當我們所在的團隊被理解時,我們通常會寫 $ g^y $ ,事實上我們在談論組中的操作,而不是作為整數,被暗示。