Elliptic-Curves

為什麼在 Dragonfly 中使用 Curve25519 會洩露資訊?

  • January 4, 2019

解釋 Dragonfly的答案(WPA3 中使用的一種密鑰交換形式)有一個有趣的腳註:

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

為什麼會這樣,如果使用沒有質數點的曲線會洩露什麼?

在橢圓曲線上的蜻蜓協議中,密碼映射到一個點 $ P $ ,然後雙方交換(除其他外)值 $ -mP, -m’P $ .

如果橢圓曲線有一個複合階,特別是有一個小的輔因子 $ h $ ,那麼很容易,給定一個值 $ P = xG $ (在哪裡 $ G $ 是一個生成器),找到值 $ m \pmod h $ ,即順序(mod $ h $ ) 的 $ P $ .

因此,如果攻擊者觀察到兩個合法方之間的交換,他可以測試潛在密碼的方法是將其映射到一個點 $ P’ $ , 併計算階數 (mod $ h $ ) 的 $ P’ $ , 和兩個觀測值 $ -mP, -m’P $ . 如果他猜的密碼是正確的,那麼 $ -mP, -m’P $ 將永遠是的倍數 $ P’ $ ; 如果不是,他就不可能猜出密碼,因此他可以將其從列表中刪除。

使用這種邏輯,攻擊者很可能能夠通過偵聽一個(或者在這種攻擊的稍微複雜的版本中可能是幾個)來消除大約一半的字典條目;這與 Dragonfly 的安全目標背道而馳。

此外,修改 HuntAndPeck 過程以避免此弱點將相當容易(只需將派生點乘以 $ h $ ); 但是 RFC 沒有指定…

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