CBCモードでAES-256で暗号化された秘密のメッセージがあるとします
5a04ec902686fb05a6b7a338b6e07760 14c4e6965fc2ed2cd358754494aceffa
最初の16バイトは初期ベクトル、2番目の16バイトは暗号文です。上記の秘密メッセージの平文は(ASCIIエンコード)We're blown. Run
さて、私の質問です。秘密のメッセージをどのように変更すれば、平文Meeting tonight!
解読した場合
インターネットでいくつかの例を見つけようとしましたが、見つかりませんでした:/
ただし、CBC復号化がどのように機能するかを説明するモデルを見つけることができました。
平文We're blown. Run
は16の文字で構成されています。つまり、プレーンテキストブロックは1つだけです。モデルから、暗号文が復号化され、XORされて暗号文が作成されることもわかります。このように、初期ベクトルに必要な変更があるため、目的のメッセージを取得しますMeeting tonight!
。しかし、これはどのように正確に行われますか?
IVとプレーンテキスト、および(IVが適用される前の)生の暗号出力を知っています。重要なのはそれだけです。他はすべて無視できます。制御できるのは、暗号文とIVだけです。では、プレーンテキストを予測どおりに変更するために、IVをどのように変更しますか?
ヒント:A⊕B = Cであり、BとCがわかっている(したがってAを計算できる)場合、Cを予測どおりに変更するために、完全に制御できるAに対して何をしますか?ここで、AはIVが適用される前の平文、BはIV、Cは変更する平文です。他のブロックに対してこれを行っている場合、IVは代わりに前のブロックの暗号文で置き換えられることに注意してください。