暗号技術の基礎と応用
AESをCBCモードで使うときの、初期化ベクトル(IV)の扱いとして適切なものはどれか。
- AIVは鍵と同じく秘密にし、すべてのメッセージで同じ値を使い続ける
- BIVは秘密にしなくてよいが、メッセージごとに、攻撃者が予測できないランダムな値を新しく選ぶ
- CIVは秘密にしなくてよく、相手と決めておいた同じ値(例えばすべて0)に毎回固定して使ってよい
答えと解説を見る
正解:B. IVは秘密にしなくてよいが、メッセージごとに、攻撃者が予測できないランダムな値を新しく選ぶ
CBCモードでは、各平文ブロックを直前の暗号文ブロックとXORしてから暗号化し、最初のブロックはIVとXORします。IVはふつう暗号文の先頭に付けて送るので、秘密にする必要はありません。しかし、毎回同じIVを使うと、先頭が同じメッセージは暗号文の先頭も同じになり、内容の一部が同じであることが漏れます。さらに、次に使われるIVを攻撃者が予測できると、選んだ平文を暗号化させて内容を推測する攻撃が成り立つことが知られています(TLS 1.0に対するBEAST攻撃など)。
- A. IVは暗号文と一緒に送るのがふつうで、秘密にする必要はありません。同じ値を使い続けると、先頭が同じメッセージを見分けられてしまいます。
- B. 正しい。CBCモードのIVは、メッセージごとに予測できない値にします。
- C. 固定のIVでは、同じ平文から常に同じ暗号文ができるので、ECBモードに近い弱点が生じます。