トンボの鍵交換に狩猟とつつく必要があるのはなぜですか?

Aug 19 2020

トンボの鍵交換スキーム(WPA3で使用)は、楕円曲線グループのジェネレーターを選択する方法(「ハンティングとペッキング」)が非一定の時間アルゴリズムであり、サイドチャネル攻撃に対して脆弱であるため、批判を受けました。

私の質問は、なぜハンティングとペッキングがまったく使われないのかということです。

既知のジェネレーターがあると仮定します $G$ 素数のグループの場合、 $G^P$ 同じグループのジェネレーターにもなります( $P$グループサイズの倍数ではありません)。と$P$ パスワードから派生した番号であるため(トンボのスキームのように)、この方法では、ハンティングやペッキングの場合と同じようにランダムで予測不可能なジェネレーターを取得します。

その推論の間違いはどこにありますか?

回答

2 poncho Aug 19 2020 at 19:09

その推論の間違いはどこにありますか?

問題は、攻撃者が同じ交換で複数のパスワードをテストできるようになるため、達成しようとしていた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$ st $xG = SKE$。だから、攻撃者ができること(正直な仲間を受け取った後)$s, P$ 値)は任意に選択されます $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$

攻撃者は、辞書内のすべてのパスワードに対してこのすべての計算を実行できるため、1回の交換の結果としてすべてのパスワードをテストできます。

現在、DragonFlyはハントアンドペックを使用する必要はありません。離散対数を計算できない方法でパスワードをECポイントに変換する、他の既知のハッシュから曲線への変換があります。ただし、DragonFlyはそのような方法を使用する必要があります...