中間一致攻撃
中間一致攻撃(Meet-in-the-middle attack)は、
暗号理論における攻撃手法であり、
誕生日攻撃と同様に
時間と空間のトレードオフを活用しています。この手法は、特に
ブロック暗号に対して有効であるとされています。
概要
この攻撃手法の目的は、ある合成関数に着目して、特定の値が一致するような入力を探すことにあります。具体的には、合成関数の形として、$g(f(x))$を用います。この場合、$f(x_1) = g^{-1}(x_2)$となるような$(x_1, x_2)$の組み合わせを見つけることが目指されます。名前の由来は、中間で得られる値が一致する点を見つけるところにあります。
この手法は、1977年にディフィーとヘルマンによって開発されました。
ブロック暗号のセキュリティを向上させるために、異なる
暗号鍵を使用して2回の
暗号化を行うという方法が考案されました。
暗号化は、
ブロック暗号の固有な特性を生かして安全性を高めることを目指していますが、単純に重ねて
暗号化を行うだけでは、簡単に安全性が向上するとは限りません。
攻撃方法
中間一致攻撃を実行するために、攻撃者はまず平文$P$とそれに対応する
暗号文$C$を知っている前提から始まります。この攻撃手法における
暗号化関数を$E$、異なる鍵を$K_1, K_2$とすると、
暗号化処理は次のように表されます。
$$C = E_{K_2}(E_{K_1}(P))$$
攻撃者はまず、すべての可能な$K_1$を使って一度$P$を
暗号化します。各
暗号化の結果はメモリに保存され、その後、攻撃者はすべての$K_2$に対して
暗号文$C$の復号を試みます。復号の結果もメモリに保存し、2つの計算結果の中に一致するものがあれば、それぞれの鍵$K_1$と$K_2$が正しい鍵の組み合わせであると判断できます。
このプロセスを効率化するために、最初に得た
暗号化の結果と使用した鍵$K_1$のペアを
ルックアップテーブルに保存することが通常行われます。次に、復号の結果を用いて、このテーブルから鍵候補を検索します。一致する結果が見つかれば、別の
暗号文と平文を使用して、その正確性を確認することも可能です。
中間一致攻撃の試行回数は、鍵のサイズを$n$ビットとした場合、$2^{n+1}$になります。これに対して、単純な攻撃方法では$2^{2n}$回の試行が必要とされ、こちらは記憶領域も$O(1)$程度ですむため、場合によっては効率的な攻撃が可能となります。
この攻撃手法は、最新の
ブロック暗号においても考慮しなければならない要素であり、
暗号設計の観点からは特に注意が必要です。
ブロック暗号が広く使用される現代において、安全性の判断基準や設計原則は、常に更新し続ける必要があります。