同じ部分キーで暗号化された 2 つのメッセージがあります。例えば:
C1 = RC4(M1, "(VARIABLE_DATA)XXXXYYYY")
C2 = RC4(M2, "(VARIABLE_DATA)XXXXYYYY")
C1とC2が「XXXXYYYY」の部分キーを少なくとも回復することがわかっている場合、それは決して変わらないため、RC4で可能ですか?
同じ部分キーで暗号化された 2 つのメッセージがあります。例えば:
C1 = RC4(M1, "(VARIABLE_DATA)XXXXYYYY")
C2 = RC4(M2, "(VARIABLE_DATA)XXXXYYYY")
C1とC2が「XXXXYYYY」の部分キーを少なくとも回復することがわかっている場合、それは決して変わらないため、RC4で可能ですか?
あなたの質問にはいくつかの混乱があると思います。ストリーム暗号が機能する方法は、(通常) メッセージとの排他的論理和を取得するキーストリームを生成することです。同じキーと IV、つまり同じキーストリームを使用すると、メッセージに関する情報が漏洩することは間違いありません。
ここで、K は RC4 によって生成されたキー ストリームです。
C1 = K^M1
C2 = K^M2
そして、次のように並べ替えます。
C1 ^ C2 = (K ^ M1) ^ (K ^ M2)
キーストリームはここでキャンセルされ、残りは
C1^C2=M1^M2
攻撃者は 2 つの暗号文の値を知っているため、2 つのメッセージの違いを計算できます。攻撃者が入力の 1 つ (おそらく固定ヘッダー) を知っている場合、攻撃者は 2 番目のメッセージを計算できます。
M2 = (C1 ^ C2) ^ M1
メッセージが自然言語である場合、ベビーベッドを使用した統計テストもあります。
あなたの質問に答えるために、RC4 は関連するキーの下でまったく異なるキーストリームを生成する必要があるため、この攻撃は機能しません。ただし、キー スケジューリング アルゴリズムに対する攻撃は他にもあり、RC4 に代わるものを好む理由はたくさんあります。
一般に、妥協のない暗号化技術のキーは、ブルートフォースを使用してのみ回復可能であり、これには、復号化が成功したことを確認する何らかの方法が必要です。