Key-Exchange

在 SKEME 協議中,兩方如何將 AUTH 數據放在一起?

  • May 23, 2016

SKEMEInternet 密鑰交換 (IKE)中使用的密鑰交換協議。它包含三個階段: SHAREEXCHAUTH– 這些在連結的 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 $ ,事實上我們在談論組中的操作,而不是作為整數,被暗示。

引用自:https://crypto.stackexchange.com/questions/35386