Generic space–time tradeoff cryptographic attack
中間者攻撃 ( MITM ) は既知平文攻撃であり [1] 、複数の暗号化演算を連続して実行することに依存する暗号化方式に対する、 一般的な 空間と時間のトレードオフを特徴とする暗号攻撃である。MITM攻撃は、 ダブルDES が使用されない主な理由であり、 トリプルDES 鍵(168ビット)が攻撃者によって2 56 の 空間と2 112 の 演算で総当たり攻撃 ( ブルートフォース攻撃 )される可能性がある [2] 。
説明 ブロック暗号のセキュリティを向上させようとする場合、複数の鍵を用いてデータを複数回暗号化するという魅力的なアイデアが考えられます。データの 暗号化回数によっては、多重暗号化方式のセキュリティが2倍、あるいは n倍になると考える人もいるかもしれません。なぜなら、 k ビットの鍵を用いてデータを n回暗号化した場合、すべての鍵の組み合わせを網羅的に探索する(単純なブルートフォース攻撃)には2 n · k回の 試行が必要になるからです 。
MITM攻撃は、複数の暗号化方式を用いることによるセキュリティ上の利点を弱める一般的な攻撃です。暗号化または復号の中間値を保存し、それらを用いて復号鍵の総当たり攻撃 ([ 説明が必要 ]) にかかる時間を短縮します。このため、中間者攻撃(MITM)は、空間と時間のトレードオフに基づく一般的な 暗号 攻撃となります。
MITM攻撃は、複数の関数(またはブロック暗号)の組み合わせにおける値域(暗号文)と定義域(平文)の両方を用いて鍵を見つけ出そうとします。最初の関数を通る順方向マッピングと最後の関数を通る逆方向マッピング(逆写像)が、文字通り合成された関数の真ん中で 合流するようになります。例えば、Double DESは2つの異なる56ビット鍵でデータを暗号化しますが、Double DESは2 57回の 暗号化と復号化の操作 で解読可能です。
多次元 MITM (MD-MITM) は、上記で説明したように、複数の同時 MITM 攻撃の組み合わせを使用します。この場合、会議は合成関数内の複数の位置で発生します。
歴史 ディフィー と ヘルマンは 1977年に、仮想的な ブロック暗号 の拡張に対するミート・イン・ザ・ミドル攻撃を初めて提案しました。 [3] 彼らの攻撃は、 空間と時間のトレードオフ を利用して、単一の暗号化方式を破るのに必要な時間のわずか2倍で、二重暗号化方式を破りました。
2011年、Bo Zhuと Guang Gongは 多次元ミート・イン・ザ・ミドル攻撃 を調査し 、ブロック暗号 GOST 、KTANTAN、ハミングバード2に対する新しい攻撃を提示した。 [4]
ミート・イン・ザ・ミドル(1D-MITM) 与えられた平文 P と暗号文 C に対して、次の特性を持つ暗号化方式を攻撃したいとします。
C = E N C k 2 ( E N C k 1 ( P ) ) P = D E C k 1 ( D E C k 2 ( C ) ) {\displaystyle {\begin{aligned}C&={\mathit {ENC}}_{k_{2}}({\mathit {ENC}}_{k_{1}}(P))\\P&={\mathit {DEC}}_{k_{1}}({\mathit {DEC}}_{k_{2}}(C))\\\end{aligned}}} ここで、 ENC は暗号化関数、 DEC は ENC −1 (逆マッピング) として定義された復号化関数、 k 1 と k 2 は 2 つのキーです。
この暗号化方式をブルートフォース攻撃する単純な方法は、暗号文をあらゆる可能な k 2 で復号化し、中間出力のそれぞれをあらゆる可能な k 1 で復号化して、合計 2 | k 1 | × 2 | k 2 | (または 2 | k 1 |+| k 2 | ) 回の演算を実行することです。
中間者攻撃はより効率的なアプローチを用いる。Cを k 2 で 復号すると 、以下の等価性が得られる。
C = E N C k 2 ( E N C k 1 ( P ) ) D E C k 2 ( C ) = D E C k 2 ( E N C k 2 [ E N C k 1 ( P ) ] ) D E C k 2 ( C ) = E N C k 1 ( P ) {\displaystyle {\begin{aligned}C&={\mathit {ENC}}_{k_{2}}({\mathit {ENC}}_{k_{1}}(P))\\{\mathit {DEC}}_{k_{2}}(C)&={\mathit {DEC}}_{k_{2}}({\mathit {ENC}}_{k_{2}}[{\mathit {ENC}}_{k_{1}}(P)])\\{\mathit {DEC}}_{k_{2}}(C)&={\mathit {ENC}}_{k_{1}}(P)\\\end{aligned}}} 攻撃者は、 k 1 のすべての値に対して ENC k 1 ( P ) を、 k 2 のすべての可能な値に対して DEC k 2 ( C ) を計算できます。合計 2 | k 1 | + 2 | k 2 | (または、 k 1 と k 2 のサイズが同じ場合は2 | k 1 |+1 ) 回の演算を実行します。 ENC k 1 ( P ) 演算のいずれかの結果が DEC k 2 ( C ) 演算の結果と一致する場合、 k 1 と k 2 のペアは 正しい鍵である可能性があります。この正しい可能性のある鍵は 候補鍵 と呼ばれます。攻撃者は、平文と暗号文の2番目のテストセットを使用して候補鍵をテストすることにより、どの候補鍵が正しいかを判断できます。
MITM攻撃は、データ暗号化規格(DES)が ダブルDES ではなくトリプルDESに置き換えられた 理由の一つです。攻撃者は、2 57回の 演算と2 56回の 空間でダブルDESをブルートフォース攻撃することができ 、DESと比べてわずかな改良点にしかなりません。 [4]トリプルDESは「3倍長」(168ビット)の鍵を使用し、2 56回の 空間と2 112回 の演算で中間者攻撃に対して脆弱です が、鍵空間のサイズが大きいため安全であると考えられています。 [2] [5]
1D-MITM攻撃の図解
MITMアルゴリズム 以下を計算します。
S u b C i p h e r 1 = E N C f 1 ( k f 1 , P ) , ∀ k f 1 ∈ K {\displaystyle {\mathit {SubCipher}}_{1}={\mathit {ENC}}_{f_{1}}(k_{f_{1}},P),\;\forall k_{f_{1}}\in K} : それぞれを対応する セットAに 保存する S u b C i p h e r 1 {\displaystyle {\mathit {SubCipher}}_{1}} k f 1 {\displaystyle k_{f_{1}}} S u b C i p h e r 1 = D E C b 1 ( k b 1 , C ) , ∀ k b 1 ∈ K {\displaystyle {\mathit {SubCipher}}_{1}={\mathit {DEC}}_{b_{1}}(k_{b_{1}},C),\;\forall k_{b_{1}}\in K} : そして、それぞれの新しいものを セットAと比較する S u b C i p h e r 1 {\displaystyle {\mathit {SubCipher}}_{1}} 一致が見つかった場合、 候補となる鍵ペアをテーブル T に保存します。T 内の鍵ペアを 新しい のペアで テスト し、有効性を確認します。この新しいペアで鍵ペアが機能しない場合は、新しい のペアで再度 MITM を実行します。 k f 1 , k b 1 {\displaystyle k_{f_{1}},k_{b_{1}}} ( P , C ) {\displaystyle (P,C)} ( P , C ) {\displaystyle (P,C)}
MITMの複雑さ キーサイズが k の場合、この攻撃では、2 k +1回の 暗号化(および復号化)と、 ルックアップテーブル への順方向計算の結果を格納するための O (2 k )のメモリのみが使用されます。これは、2 2· k 回の暗号化と O (1)のメモリを必要とするナイーブな攻撃とは対照的です 。
多次元MITM(MD-MITM) 1D-MITM攻撃は効果的ですが、より洗練された攻撃手法が開発されています。 多次元中間者攻撃( MD-MITM とも略されます)です 。これは、データが2つ以上の異なる鍵を用いた暗号化で暗号化されている場合に適しています。中間者攻撃(シーケンス内の1箇所)ではなく、MD-MITM攻撃では、暗号内の複数の位置で順方向および逆方向の計算を行い、複数の特定の中間状態に到達しようとします。 [4]
暗号化と復号化が前と同じように定義されているブロック暗号に対して攻撃を実行する必要があると仮定します。
C = E N C k n ( E N C k n − 1 ( . . . ( E N C k 1 ( P ) ) . . . ) ) {\displaystyle C={\mathit {ENC}}_{k_{n}}({\mathit {ENC}}_{k_{n-1}}(...({\mathit {ENC}}_{k_{1}}(P))...))} P = D E C k 1 ( D E C k 2 ( . . . ( D E C k n ( C ) ) . . . ) ) {\displaystyle P={\mathit {DEC}}_{k_{1}}({\mathit {DEC}}_{k_{2}}(...({\mathit {DEC}}_{k_{n}}(C))...))} つまり、平文Pは同じブロック暗号の繰り返しを使用して複数回暗号化される。
MD-MITM攻撃の図解 MD-MITMは、 GOSTブロック暗号を はじめ多くの暗号の解読に使用されており、3D-MITMによって攻撃にかかる時間が大幅に短縮されることが示されています。 [4]
MD-MITMアルゴリズム 以下を計算します。
S u b C i p h e r 1 = E N C f 1 ( k f 1 , P ) ∀ k f 1 ∈ K {\displaystyle {\mathit {SubCipher}}_{1}={\mathit {ENC}}_{f_{1}}(k_{f_{1}},P)\qquad \forall k_{f_{1}}\in K} それぞれを対応するものと セットで 保存します 。 S u b C i p h e r 1 {\displaystyle {\mathit {SubCipher}}_{1}} k f 1 {\displaystyle k_{f_{1}}} H 1 {\displaystyle H_{1}} S u b C i p h e r n + 1 = D E C b n + 1 ( k b n + 1 , C ) ∀ k b n + 1 ∈ K {\displaystyle {\mathit {SubCipher}}_{n+1}={\mathit {DEC}}_{b_{n+1}}(k_{b_{n+1}},C)\qquad \forall k_{b_{n+1}}\in K} それぞれを対応するものと セットで 保存します 。 S u b C i p h e r n + 1 {\displaystyle {\mathit {SubCipher}}_{n+1}} k b n + 1 {\displaystyle k_{b_{n+1}}} H n + 1 {\displaystyle H_{n+1}} 中間状態に関する可能性のある推測ごとに、 以下を計算します。 s 1 {\displaystyle s_{1}}
S u b C i p h e r 1 = D E C b 1 ( k b 1 , s 1 ) ∀ k b 1 ∈ K {\displaystyle {\mathit {SubCipher}}_{1}={\mathit {DEC}}_{b_{1}}(k_{b_{1}},s_{1})\qquad \forall k_{b_{1}}\in K} そして、これとセット の間の各一致について 、 新しいセット に と を保存します 。 S u b C i p h e r 1 {\displaystyle {\mathit {SubCipher}}_{1}} H 1 {\displaystyle H_{1}} k b 1 {\displaystyle k_{b_{1}}} k f 1 {\displaystyle k_{f_{1}}} T 1 {\displaystyle T_{1}} S u b C i p h e r 2 = E N C f 2 ( k f 2 , s 1 ) ∀ k f 2 ∈ K {\displaystyle {\mathit {SubCipher}}_{2}={\mathit {ENC}}_{f_{2}}(k_{f_{2}},s_{1})\qquad \forall k_{f_{2}}\in K} [ 確認が必要です ] それぞれを対応するものと セットで 保存します 。 S u b C i p h e r 2 {\displaystyle {\mathit {SubCipher}}_{2}} k f 2 {\displaystyle k_{f_{2}}} H 2 {\displaystyle H_{2}} 中間状態の各可能な推測に対して、 以下を計算します。 s 2 {\displaystyle s_{2}} S u b C i p h e r 2 = D E C b 2 ( k b 2 , s 2 ) ∀ k b 2 ∈ K {\displaystyle {\mathit {SubCipher}}_{2}={\mathit {DEC}}_{b_{2}}(k_{b_{2}},s_{2})\qquad \forall k_{b_{2}}\in K} そして、これ と集合の間の各一致について 、 S u b C i p h e r 2 {\displaystyle {\mathit {SubCipher}}_{2}} H 2 {\displaystyle H_{2}} 一致し たら、サブキーの組み合わせを新しいセットにまとめて保存します 。 T 1 {\displaystyle T_{1}} T 2 {\displaystyle T_{2}} 中間状態の各可能な推測に対して、 以下を計算します。 s n {\displaystyle s_{n}} S u b C i p h e r n = D E C b n ( k b n , s n ) ∀ k b n ∈ K {\displaystyle {\mathit {SubCipher}}_{n}={\mathit {DEC}}_{b_{n}}(k_{b_{n}},s_{n})\qquad \forall k_{b_{n}}\in K} そして、これとセット の間の各一致について 、 と一致するかどうかも確認し 、 と を 新しいセット に保存します 。 S u b C i p h e r n {\displaystyle {\mathit {SubCipher}}_{n}} H n {\displaystyle H_{n}} T n − 1 {\displaystyle T_{n-1}} k b n {\displaystyle k_{b_{n}}} k f n {\displaystyle k_{f_{n}}} T n {\displaystyle T_{n}} S u b C i p h e r n + 1 = E N C f n + 1 ( k f n + 1 , s n ) ∀ k f n + 1 ∈ K {\displaystyle {\mathit {SubCipher}}_{n+1}={\mathit {ENC}}_{f_{n}+1}(k_{f_{n}+1},s_{n})\qquad \forall k_{f_{n+1}}\in K} そして、これと集合 との間の各一致について 、それが とも一致するかどうかを確認します 。一致する場合、次のようになります。 S u b C i p h e r n + 1 {\displaystyle {\mathit {SubCipher}}_{n+1}} H n + 1 {\displaystyle H_{n+1}} T n {\displaystyle T_{n}} 見つかったサブキーの組み合わせを 別のプレーンテキスト/暗号文のペアで使用して、キーの正確性を検証します。 ( k f 1 , k b 1 , k f 2 , k b 2 , . . . , k f n + 1 , k b n + 1 ) {\displaystyle (k_{f_{1}},k_{b_{1}},k_{f_{2}},k_{b_{2}},...,k_{f_{n+1}},k_{b_{n+1}})}
アルゴリズムのネストされた要素に注目してください。s j のあらゆる可能な値の推測は、前の s j -1 の推測ごとに行われます。これは 、 このMD-MITM攻撃の全体的な時間計算量に対して指数関数的な複雑さをもたらす要素です。
MD-MITMの複雑さ ブルートフォースを使わないこの攻撃の時間計算量は ⋅ ⋅ 2 | k f 1 | + 2 | k b n + 1 | + 2 | s 1 | {\displaystyle 2^{|k_{f_{1}}|}+2^{|k_{b_{n+1}}|}+2^{|s_{1}|}} ( 2 | k b 1 | + 2 | k f 2 | + 2 | s 2 | {\displaystyle (2^{|k_{b_{1}}|}+2^{|k_{f_{2}}|}+2^{|s_{2}|}} ( 2 | k b 2 | + 2 | k f 3 | + ⋯ ) ) {\displaystyle (2^{|k_{b_{2}}|}+2^{|k_{f_{3}}|}+\cdots ))}
メモリの複雑さに関しては、が最初に構築された候補値のテーブルよりもはるかに小さいこと が簡単にわかります 。i が増加すると、 に含まれる候補値が 満たす必要がある条件が増えるため、最終宛先に渡される候補の数は少なくなります 。 T 2 , T 3 , . . . , T n {\displaystyle T_{2},T_{3},...,T_{n}} T 1 {\displaystyle T_{1}} T i {\displaystyle T_{i}} T n {\displaystyle T_{n}}
MD-MITMのメモリ複雑度の上限は
2 | k f 1 | + 2 | k b n + 1 | + 2 | k | − | s n | ⋯ {\displaystyle 2^{|k_{f_{1}}|}+2^{|k_{b_{n+1}}|}+2^{|k|-|s_{n}|}\cdots } ここで、 k は キー全体の長さ(結合後)を表します。
データの複雑さは、誤ったキーが通過する確率(偽陽性となる確率)に依存します。これは です。ここで 、 l は最初の MITM フェーズにおける中間状態です。中間状態のサイズとブロックサイズは多くの場合同じです。また、最初の MITM フェーズ後にテスト用に残されるキーの数も考慮すると、 となります 。 1 / 2 | l | {\displaystyle 1/2^{|l|}} 2 | k | / 2 | l | {\displaystyle 2^{|k|}/2^{|l|}}
したがって、最初の MITM フェーズの後には 、 (ブロック サイズ)が存在します。 2 | k | − b ⋅ 2 − b = 2 | k | − 2 b {\displaystyle 2^{|k|-b}\cdot 2^{-b}=2^{|k|-2b}} | b | {\displaystyle |b|}
キーの最終候補値が新しい平文/暗号文のペアでテストされるたびに、合格するキーの数に、キーが合格する確率が掛けられます 。 1 / 2 | b | {\displaystyle 1/2^{|b|}}
ブルートフォーステストの部分 (新しい ( P , C ) {\displaystyle (P,C)} ペアに対する候補キーのテスト) には時間計算量があり 、明らかに指数の b の倍数が増えると、数はゼロに近づきます。 2 | k | − b + 2 | k | − 2 b + 2 | k | − 3 b + 2 | k | − 4 b ⋯ {\displaystyle 2^{|k|-b}+2^{|k|-2b}+2^{|k|-3b}+2^{|k|-4b}\cdots }
データの複雑さに関する結論は、同様の推論により、 ペアに関する推論によって制限されます。 ⌈ | k | / n ⌉ {\displaystyle \lceil |k|/n\rceil } ( P , C ) {\displaystyle (P,C)}
以下は 2D-MITM の取り付け方法の具体的な例です。
2D-MITMの一般的な例 2D-MITM がブロック暗号にどのように実装されるかについての一般的な説明です。
2次元MITM(2D-MITM)では、平文を多重暗号化することで2つの中間状態に到達します。下の図をご覧ください。
2D-MITM攻撃の図解
2D-MITMアルゴリズム 以下を計算します。
S u b C i p h e r 1 = E N C f 1 ( k f 1 , P ) ∀ k f 1 ∈ K {\displaystyle {\mathit {SubCipher}}_{1}={\mathit {ENC}}_{f_{1}}(k_{f_{1}},P)\qquad \forall k_{f_{1}}\in K} それぞれを対応する セットAに 保存する S u b C i p h e r 1 {\displaystyle {\mathit {SubCipher}}_{1}} k f 1 {\displaystyle k_{f_{1}}} S u b C i p h e r 2 = D E C b 2 ( k b 2 , C ) ∀ k b 2 ∈ K {\displaystyle {\mathit {SubCipher}}_{2}={\mathit {DEC}}_{b_{2}}(k_{b_{2}},C)\qquad \forall k_{b_{2}}\in K} それぞれを 対応するものとまとめて セット B に保存します。 S u b C i p h e r 2 {\displaystyle {\mathit {SubCipher}}_{2}} k b 2 {\displaystyle k_{b_{2}}} と の間の中間状態 s に関する可能な推測ごとに 、
以下を計算します。 S u b C i p h e r 1 {\displaystyle {\mathit {SubCipher}}_{1}} S u b C i p h e r 2 {\displaystyle {\mathit {SubCipher}}_{2}}
S u b C i p h e r 1 = D E C b 1 ( k b 1 , s ) ∀ k b 1 ∈ K {\displaystyle {\mathit {SubCipher}}_{1}={\mathit {DEC}}_{b_{1}}(k_{b_{1}},s)\qquad \forall k_{b_{1}}\in K} そして、これとセット A の間の各一致について、 新しいセット T に保存し ます。 S u b C i p h e r 1 {\displaystyle {\mathit {SubCipher}}_{1}} k b 1 {\displaystyle k_{b_{1}}} k f 1 {\displaystyle k_{f_{1}}} S u b C i p h e r 2 = E N C f 2 ( k f 2 , s ) ∀ k f 2 ∈ K {\displaystyle {\mathit {SubCipher}}_{2}={\mathit {ENC}}_{f_{2}}(k_{f_{2}},s)\qquad \forall k_{f_{2}}\in K} そして、これと集合B の間の各一致について、それがTと一致するかどうかも確認する。 S u b C i p h e r 2 {\displaystyle {\mathit {SubCipher}}_{2}} この場合は次のようになります。 見つかったサブキーの組み合わせを 別のプレーンテキスト/暗号文のペアで使用して、キーの正確性を検証します。 ( k f 1 , k b 1 , k f 2 , k b 2 ) {\displaystyle (k_{f_{1}},k_{b_{1}},k_{f_{2}},k_{b_{2}})}
2D-MITMの複雑さ ブルートフォースを使わないこの攻撃の時間計算量は
2 | k f 1 | + 2 | k b 2 | + 2 | s | ⋅ ( 2 | k b 1 | + 2 | k f 2 | ) {\displaystyle 2^{|k_{f_{1}}|}+2^{|k_{b_{2}}|}+2^{|s|}\cdot \left(2^{|k_{b_{1}}|}+2^{|k_{f_{2}}|}\right)} ここで |⋅| は長さを表します。
メインメモリの消費量は、 T が他のものよりはるかに小さい セット A と B の構成によって制限されます。
データの複雑さについては、MD-MITM の複雑さに関するサブセクションを参照してください。
参照
参考文献 ^ 「Crypto-IT」. ^ ab Moore, Stephane (2010年11月16日). 「Meet-in-the-Middle攻撃」 (PDF) : 2. ^ ^ Diffie, Whitfield; Hellman, Martin E. (1977年6月). 「NBSデータ暗号化規格の徹底的な暗号解析」 (PDF) . Computer . 10 (6): 74– 84. doi :10.1109/CM.1977.217750. S2CID 2412454. ^ abcd Zhu, Bo; Gong, Guang (2014). 「多次元ミート・イン・ザ・ミドル攻撃とKATAN32/48/64への応用」 . 暗号と通信 . 6 (4): 313– 333. doi :10.1007/s12095-014-0102-9 – Springer Link経由. ^ Blondeau, Céline. 「講義3:ブロック暗号」 (PDF) . CS-E4320 暗号化とデータセキュリティ . 2018年2月23日時点の オリジナル (PDF)からアーカイブ。 2018年2月22日 閲覧 。
一般的な アルゴリズム あまり一般的ではない アルゴリズム その他の アルゴリズム デザイン 攻撃 ( 暗号解読 ) 標準化 利用