IVの目的は理解しています。特にCBCモードでは、同じキーで暗号化された2つのメッセージの最初のブロックが決して同一にならないことを保証します。しかし、IVが連続している場合、なぜ脆弱性になるのでしょうか?CWE-329非ランダム IV は辞書攻撃の可能性を許容します。実際には、WEP などのプロトコルは IV を隠そうとはしません。攻撃者が IV と暗号テキスト メッセージを持っている場合、キーに対する辞書攻撃が可能になります。ランダム IV がこれを変えるとは思えません。(WEP に対する攻撃はこれよりも複雑であることは知っています。)
ランダム化された iv にはどのようなセキュリティ上の利点がありますか? これは「理想的なブロック暗号」でも依然として問題になりますか? (弱点のない完全に安全なブロック暗号)
ベストアンサー1
予測可能な IV は、選択されたプレーンテキストによって悪用される可能性があります。
イヴが保険会社の DBA だと仮定します。この会社は、受益者から医療履歴を収集しますが、そこには病状に関する多数の真偽チェックボックスが含まれています。この会社は、自社の健康保険会社でもあります。イヴは、アリスが特に恥ずかしい病状を持っていることを発見できれば、アリスが脅迫される可能性があると気づきます。ただし、これらの各フィールドの値は暗号化されているため、イヴは DBA ですが、暗号文にしかアクセスできません。
CBC では、IV はプレーンテキストと XOR 演算され (以下、「⊕」で示される)、ブロック暗号にかけられます: C 1 = E k (IV ⊕ P 1 )。
イブは保険会社の受益者なので、自分の医療記録にプレーンテキストを選択できます。また、DBA なので、誰の暗号テキストでも調べることができます。予測可能な IV を使用していることに加えて、ずさんなアプリケーション開発者は、アプリケーション入力の検証をきちんと行っていませんでした。イブが自分の (IV eve ) 記録とアリスの (IV alice ) 記録に適用される IV を事前に予測できる場合、次のように自分の記録にプレーンテキストを選択できます。P eve = IV eve ⊕ IV alice ⊕ "false"
アプリケーションは、このプレーンテキストを次のように暗号化します。
C eve = E k (IV eve ⊕ P eve ) = E k (IV eve ⊕ (IV eve ⊕ IV alice ⊕ "false"))
IV eve ⊕ IV eveは打ち消し合うので、C eve = E k (IV alice ⊕ "false")となります。
これで、Eve は C eveと C aliceを比較できます。これらが異なる場合、Eve は Alice がその病状に「true」を入力したに違いないことがわかります。
IV を予測不可能にすることでこの攻撃を阻止できます。IV を予測不可能にする簡単な方法は、プレーンテキストを提供した後に IV をランダムに選択することです。