Signature

使用普通的 Diffe-Hellman 進行具有已知公鑰的伺服器身份驗證

  • July 6, 2013

除了其他考慮之外,是否可以使用 DH 和已建立的公鑰(連同固定的 g、p、q)來安全地驗證伺服器而不是使用某些簽名算法?

換句話說,我們將替換 $ SIG_S(Data) $ 在這個方案的一些協議中。下面描述的步驟可以與使用的任何協議合併,因此不需要添加更多步驟。

客戶 $ C $ 知道 $ g $ , $ p $ , $ q $ 和 $ g^s $ .

  1. $ C \rightarrow S : { g^c } $
  2. 伺服器生成一個隨機值[Math Processing Error] $ N_S $ .
  3. $ K \leftarrow KDF(N_S, g^{cs}) $
  4. $ S \rightarrow C : { N_S, HMAC_K(Data) } $ 在哪裡 $ Data $ 是我們正在修改的協議中籤署的相關數據。
  5. $ C $ 結構體[Math Processing Error] $ K $ 並驗證 HMAC 計算是否匹配。

假設沒有一個[Math Processing Error] $ K $ ,[Math Processing Error] $ N_S $ ,[Math Processing Error] $ g^s $ 或者[Math Processing Error] $ g^c $ 曾經被回收用於任何其他用途(例如密鑰生成)。

我想知道的是,這是否可以替代使用 DSA/RSA/etc 進行簽名以證明此特定設置中的身份。

例子:

僅具有伺服器身份驗證的普通 STS

  1. $ C \rightarrow S: { g^x $ }
  2. $ S \rightarrow C: { g^y, S, { SIG_S(g^x, g^y) }_{K_s} } $

普通STS 修改

  1. $ C \rightarrow S: { g^x, g^c } $
  2. [Math Processing Error] $ S \rightarrow C: { g^y, S, { N_S, HMAC_K(g^x, g^y) }_{K_s} } $

僅帶有伺服器身份驗證的普通 SIGMA

  1. $ C \rightarrow S: { g^x $ }
  2. $ S \rightarrow C: { g^y, S, SIG_S(g^x, g^y), MAC_{K_m}(S) } $

普通SIGMA修改

  1. $ C \rightarrow S: { g^x, g^c } $
  2. [Math Processing Error] $ S \rightarrow C: { g^y, S, N_S, HMAC_K(g^x, g^y), MAC_{K_m}(S) } $

對手可以(反复)送出[Math Processing Error] $ h $ 作為[Math Processing Error] $ g^c $ 得到一個隨機的[Math Processing Error] $ N_s $ 這樣對手將

能夠以啟發式壓倒性的準確性進行測試,無論是否 $ : \operatorname{KDF}(N_s,h^s) = x ; $ .

攻擊者還可以通過在密鑰協商後向伺服器發送所謂的密文來

嘗試更多地了解伺服器獲得的會話密鑰 。 (特別是,對手可以在看到客戶的實際價值後做這些事情

$ g^c $ .)

展示針對此類攻擊的安全性而不展示

針對以下情況的安全性將是棘手的,對於每個 $ h $ 價值,對手將學習

$ \langle N_s,\operatorname{KDF}(N_s,h^s)\rangle: $ 對於隨機 $ N_s $ (在對手選擇後選擇 $ h $ )。

這樣的安全結果在某種程度上類似於 CCA2 安全;

如果這個類比會更好 $ N_s $ 每次都是一樣的。 $ ;; $ 與我之前提到的類似結構不同,我現在確信這將在[Math Processing Error] $ : $ KEA1 + KDF-is-a-random-oracle +計算-diffie-hellman[Math Processing Error] $ : $ .

在這三個假設下,密鑰協議對於可以選擇伺服器隨機數

的對手來說是安全的

[Math Processing Error] $ N_s $ ,包括使他們重複的能力。

您可能更喜歡上面的四種簽名算法是BLSBBECDSA

(這是四個,因為中間一個提供了一個使用隨機預言機的變體。) 但是, 只有已知且非常小的安全性降低才能獲得

潛在的效率改進 。 特別是,在您的四個範例中的三個範例中,它只會降低針對 活躍對手的安全性,儘管該對手與誠實的雙方都 沒有可靠的通信。 對於第一個範例和最後兩個範例,加密或 MAC 與

[Math Processing Error] $ K_s $ 或者[Math Processing Error] $ K_m $ 分別

將防禦一個對手

[Math Processing Error]$$ can modify a message in transit but will later

be unable to communicate with either $C$ or $S\hspace{.02 in}$ $$執行“弱錯誤綁定”。

(我使用“弱”一詞,因為無論使用什麼協議

,完全控制通信通道的對手 都必須這樣做。)

此外,對於第一個範例,加密不一定會

成功實現該目標,儘管我懷疑它啟發式地應該這樣做。

對於 STSsao,加密簽名將(也)阻止被動竊聽者

能夠證明伺服器執行了密鑰協議。

這些是使用的唯一原因 $ K_s $ 和 $ K_m $ .

如果拒絕使用相關密鑰,那麼顯然也不應該導出該密鑰。

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