為什麼蜻蜓密鑰交換需要狩獵和啄食?
蜻蜓密鑰交換方案(WPA3 使用的)受到批評,因為它選擇橢圓曲線組(“狩獵和啄食”)的生成器的方式是一種非恆定時間算法,使其容易受到側通道攻擊。
我的問題是:為什麼要使用狩獵和啄食?
假設有一個已知的生成器 $ G $ 對於一組素數大小,則 $ G^P $ 也將是同一組的生成器(如果 $ P $ 不是組大小的倍數)。和 $ P $ 作為一個密碼派生的數字(就像蜻蜓計劃一樣),這樣可以獲得一個生成器,就像狩獵和啄食一樣隨機和不可預測,不是嗎?
這種推理的錯誤在哪裡?
這種推理的錯誤在哪裡?
問題是這將允許攻擊者使用相同的交換測試多個密碼,從而失去我們試圖實現的 PAKE 屬性。
與蜻蜓,誠實的一面選擇了一個秘密的價值觀 $ p, m $ , 並輸出值 $ s = p+m $ 和 $ P = -m \cdot SKE $ , 在哪裡 $ SKE $ 是’秘密關鍵元素’,即你建議派生的那個 $ SKE = [password]G $ (我用加法表示,因為只有在使用橢圓曲線時,狩獵和啄食才會在 Dragonfly 中發揮作用)。
然後,誠實的一方獲得價值 $ s’ $ 和 $ P’ $ 從另一方(對手),然後計算密鑰:
$$ H( p( P’ + s’ \cdot SKE )) $$
然後根據該密鑰發送加密消息(也就是說,如果對手以某種方式獲得對同一密鑰的猜測,他可以解密該消息,從而驗證密鑰)。
有了你的提議,攻擊者就會知道任何 SKE 的離散對數,即值 $ x $ 英石 $ xG = SKE $ . 那麼,攻擊者可以做什麼(在收到誠實的同伴的 $ s, P $ values) 是任意選擇 $ s’, P’ $ 值(他知道的離散對數 $ P’ = p’G $ ) 並發送這些,然後根據誠實方計算的值接收加密密碼。
然後,對於他字典中的每個密碼,計算相應的 $ SKE $ 和 $ xG = SKE $ 然後計算:
$$ H( (p’+s’x)(sG + x^{-1}P)) $$
如果對 SKE 的猜測是正確的,那麼這就是誠實方計算的相同密鑰,並且可以驗證。
這可以看作是相同的,因為如果 SKE 是誠實方使用的值,那麼 $ pG = sG + x^{-1}P $ 和 $ p’ + s’x $ 是的離散對數 $ P’ + s’ \cdot SKE $
攻擊者可以對他字典中的每個密碼執行所有這些計算,因此他可以測試每個密碼作為單次交換的結果。
現在,DragonFly 不必使用狩獵和啄食;還有其他已知的雜湊到曲線轉換,它們以您無法計算離散日誌的方式將密碼轉換為 EC 點。但是,蜻蜓需要使用一些這樣的方法……