CTR モードに対するビット反転攻撃

CBC モードにおいて、初期化ベクトルのビットが反転すると、平文の最初のブロックの対応するビットも反転する。だから初期化ベクトルはそのまま転送すべきではない

…しかしよく考えたら、CTR モードなど、平文と直接 XOR をとるモードでは、暗号文のビットを反転させればそのまま対応する平文のビットが反転してしまう。CBC モードと違って全文に対して可能な上、本質的に避けようがない。

「ブロック暗号 カウンターモード OR CTR ビット反転」でググってみると、当然、その欠点を指摘する情報がいろいろと見つかった。特にGoogleブック検索で引っかかった『C/C++セキュアプログラミングクックブック VOLUME2』の中の一節が分かりやすい。

暗号文のビットを反転させると対応する平文のビットが反転するので、平文のビットを反転させるのは非常に簡単です(この問題はすべてのストリーム暗号モードに共通します)。他の暗号化アルゴリズムと同様に、セキュリティを保つにはメッセージの完全性検査が必須です。

この欠点は、暗号で守るべき「機密性」というより、MACなどで守るべき「真正性(完全性)」の問題だから、CTR モードを責めるのは筋違いということか。同著によれば CTR と完全性検査を組み合わせた CWC や CCM といったモードもあるらしい。

この本おもしろそうだなあ…買ってもまず間違いなく読めないだろうけど。『新版暗号技術入門 秘密の国のアリス』は、全体としては素晴らしいのだが、ブロック暗号のモードについての説明だけは物足りなかった。

Leave a Reply