Key-Exchange

在非白皮書條款中,Dragonfly 密鑰交換如何工作?

  • February 3, 2021

我試圖了解 WPA3,其同時驗證 Equals 應該類似於Dragonfly Key Exchange

Dragonfly 可以抵抗字典攻擊,這意味著攻擊者不能通過被動計算辨識字典中密碼的使用,而是被迫與其中一方互動以進行猜測。

我無法理解連結中對 Dragonfly 的描述,這是我能找到的唯一一個。蜻蜓的特性是如何從算術中產生的?只有非攻擊者方可以執行計算,是不是“狩獵和啄食”的某些特性?

Dragonfly 可以抵抗字典攻擊,這意味著攻擊者不能通過被動計算辨識字典中密碼的使用,而是被迫與其中一方互動以進行猜測。

實際上,目標遠不止於此。即使您有一個活躍的攻擊者,可以修改正在進行的交換,或者可以冒充端點之一(並嘗試與知道密碼的人協商),他們能做到的最好 $ N $ 交流是為了測試 $ N $ 他們的字典中的條目。

我們知道這樣的對手至少可以做到這麼多;通過單個交換,他們可以從字典中獲取一個條目,並且(假設該條目是密碼)與有效端點誠實地執行交換,並查看交換是否失敗。PAKE(例如 Dragonfly)的目標是他們無法比通用攻擊做得更好。

蜻蜓的特性是如何從算術中產生的?只有非攻擊者方可以執行計算,是不是“狩獵和啄食”的某些特性?

不,狩獵和啄食過程 $ P = \text{HuntAndPeck}(\text{Password}) $ 是將密碼映射到“組元素”的公共方法,以便:

  • 組元素 $ P $ 生成一個素數大小的子群;即(使用有限域術語)值 $ P^x \bmod p $ (對於各種值 $ x $ ) 可以完全佔用 $ q $ 值(其中 $ q $ 是一個大素數)。
  • 對於兩個不同的密碼 $ \text{Password1} $ 和 $ \text{Password2} $ , 兩個值 $ P1 = \text{HuntAndPeck}(\text{Password1}) $ 和 $ P2 = \text{HuntAndPeck}(\text{Password2}) $ 不相關;也就是說,沒有人知道它的價值 $ x $ 為此 $ P1^x \equiv P2 \pmod p $ .

相反,PAKE 屬性來自實際協議。

RFC 格式是描述密碼學的一種可怕的方式,所以這裡是在誠實的情況下簡而言之的協議(仍然使用有限域術語,並消除雙方執行的健全性測試):

Alice 和 Bob 執行 Hunt-and-Peck 程序以將他們的密碼轉換為組成員 $ P $ (因為這是誠實的情況,我們假設他們有相同的密碼)。然後,Alice 選擇隨機值 $ p, m $ ,並傳輸值 $ s = p + m \bmod q $ 和 $ E = P^{-m} $ ,並將這些發送給 Bob。Bob 還選擇值 $ p’, m’ $ 並發送 $ s’ = p’ + m’ \bmod q $ 和 $ E’ = P^{-m’} $ 給愛麗絲。

然後 Alice 計算 $ (E’ \times P^{s’})^p $ ; 這是 $ (P^{-m’} \times P^{p’ + m’})^p = P^{p p’} $ . Bob 做同樣的計算,得到 $ P^{p’ p} $ ,這是相同的值,所以我們有我們的共享秘密。

現在,為什麼這是安全的?攻擊者可以送出任何 $ s’, E’ $ 它想要給 Alice 的值(取決於 Alice 執行的健全性測試);但是(由於狩獵和啄食過程的工作原理),他不知道值 $ E’ $ 他知道價值觀的地方 $ x, y $ 為了 $ E’ = P1^x $ 和 $ E’ = P2^y $ 兩個不同的密碼;因此,如果他可以預測價值 $ (E’ \times P1^{s’})^p $ 為了 $ P1 $ , 他不知道值 $ (E’ \times P2^{s;})^p $ ,因此他實際上僅限於測試一個密碼(我們知道他可以做到)。

最後一點:查看 Dragonfly RFC,我發現如果您在沒有素數點的橢圓曲線上執行(即有一個輔因子),它會(如書面)洩漏一些資訊 $ h > 1 $ )。如果您使用(比如說)NIST 曲線,那不是問題;如果您嘗試使其適應(例如)Curve25519,則需要解決…

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