なぜこれは実行可能な鍵交換アルゴリズムではないのですか?[複製]
たとえば、Diffie-Hellmanの代わりにこの種のアルゴリズムを使用して鍵を交換できないのはなぜだろうと思っていました。
- アリスは、ボブと共有したいキーを決定します。
- アリスは、キーと同じ長さのバイトストリームを生成します(たとえば、CSPRNGを使用して安全に)。
- アリスはボブに送信します:
C1 = (key ^ alice_random_bytes)
- ボブは、アリスと同様の方法でランダムバイトのストリームを生成します。
- ボブはアリスに戻ります:
C2 = (C1 ^ bob_random_bytes)
- アリスは
C2
再びランダムなバイトシーケンスでXORを実行し、そのままkey ^ bob_random_bytes
にしてボブに送信します。C3 = (C2 ^ alice_random_bytes) = (C1 ^ bob_random_bytes ^ alice_random_bytes) = (key ^ alice_random_bytes ^ bob_random_bytes ^ alice_random_bytes) = (key ^ bob_random_bytes)
- ボブ
C3
はランダムなバイトとXORし、キーを取得します。K = (C3 ^ bob_random_bytes) = (key ^ bob_random_bytes ^ bob_random_bytes) = key
これはDiffieHellmanよりもはるかに単純なように思われるので、私は疑問に思っていました。そのようなアルゴリズムの問題は何ですか?
回答
アリスのランダムバイトをARBに、ボブのランダムバイトをBRBに簡略化しました。次に、プロトコルは次のようになります。
アリスは知っています $key$ そして $ARB$そして送信 $$C_1 = key \oplus ARB$$
ボブは知っている $C_1$ そして $BRB$そして送信
$$C_2 = C_1 \oplus BRB = key \oplus ARB \oplus BRB$$
アリスは計算します $C_2 \oplus key \oplus ARB = key \oplus key \oplus ARB \oplus BRB = BRB$
アリスは知っています $key, ARB,$ そして $BRB$そして送信
$$C_3 = (C_2 \oplus ARB) = key \oplus ARB \oplus BRB \oplus ARB = key \oplus BRB$$
さて、まず第一に、これには3パスプロトコルが必要です。
今、オブザーバーは見る
\begin{align} C_1 & = key \oplus ARB \oplus {}\\ C_2 & = key \oplus ARB \oplus BRB\\ C_3 & = key \oplus \phantom{ARB}\oplus BRB \\ \end{align}
パッシブオブザーバー(盗聴者)は、キーを導出するために単純にxまたはすべてを実行します $$key = C_1 \oplus C_2 \oplus C_3.$$したがって、攻撃者の弱い仮定に対しては安全ではありません。受動的!。
したがって、xorに依存しますが、オブザーバーがそれらから何を取得して計算できるかを確認しませんでした。
一方、Diffie-Hellman鍵交換(DHKE)はリークします$g^a$ そして $g^b$ ここで、アリスはランダムな整数を選択します $a$そして送信 $g^a$ ボブはランダムな整数を選択します $b$そして送信 $g^b$。見つける$a$ または $b$それらから、離散対数問題があります。一方、計算上のDiffie-Hellman(CDH)の仮定は、次のように求められます。$g^{ab}$ 与えられた $g^a$ そして $g^b$、そしてDHKEはこれで中継されます。離散対数が簡単な場合、CDHは簡単です。一般的な場合、その逆はわかりません。
鍵交換アルゴリズムは、盗聴から保護しようとします。有線で送信するもの(C1、C2、およびC3)が傍受されると想定する必要があります。C2は単にC1xor Bobのランダムバイトであり、C3は単にキーxor Bobのランダムバイトであるため、これはメソッドの問題です。
C1、C2、およびC3の攻撃者は、C1 xor C2を使用してボブのランダムバイトを取得し、次にそれをC3を使用してxorして、ボブと同じようにキーを取得する可能性があります。