正解:イ
各選択肢の解説
ア鍵長を128ビットから256ビットに伸ばして、同じ方法で暗号化する。
誤り。鍵長を伸ばすと総当たりで鍵を見つけにくくなりますが、同じ鍵で同じ平文ブロックを 独立に暗号化すれば、出てくる暗号文は同じです。指摘されたのは鍵の強さではなく、 同じ入力が同じ出力になる使い方です。
イ初期値や前のブロックの結果を組み合わせ、同じ平文でも異なる暗号文になる方法で暗号化する。
正解。ブロック暗号は暗号利用モードと組み合わせて使います。CBCモードのように 初期値(IV)や前のブロックの暗号文を混ぜると、同じ値が繰り返しても暗号文はそろわず、 暗号文から平文の並びを読み取られにくくなります。
ウAESを3-key Triple DESに切り替えて、同じ方法で暗号化する。
誤り。Triple DESも共通鍵のブロック暗号で、ブロックごとに独立して暗号化すれば同じ問題が 残ります。ブロック長が64ビットと短く、CRYPTREC暗号リストでは運用監視暗号リストに 置かれているので、切り替える先としても適しません。
エ同じ鍵で暗号化した結果を、もう一度同じ鍵で暗号化する。
誤り。同じ鍵での暗号化を重ねても、同じ入力からは毎回同じ結果が出ます。 1回目で同じだったブロックは、2回目の後も同じままです。回数を増やすことと、 入力ごとに結果を変えることは別の話です。
理解を深めるために
同じ判子を押せば、同じ跡が残る
AESのようなブロック暗号は、データを決まった長さ(AESは128ビット)のブロックに区切って 暗号化します。鍵が同じなら、同じブロックからは必ず同じ暗号文が出ます。 ブロックごとに独立して暗号化すると、同じ判子を同じ紙に押したように、 平文のどこが同じかが暗号文にそのまま写ります。中身は読めなくても、 繰り返しの模様から推測の手がかりを与えてしまいます。
暗号利用モードで模様を消す
ブロック暗号をどうつなげて使うかを決めるのが、暗号利用モードです。
- ECBモード: 各ブロックを独立に暗号化する。同じ平文ブロックは同じ暗号文になる
- CBCモード: 前のブロックの暗号文を次の平文に混ぜてから暗号化する。最初のブロックには初期値(IV)を使う
- CTRモードやGCMモード: カウンタやノンス(使い捨ての値)から作った値を平文に混ぜる。 GCMは改ざんの検知も同時に行う
初期値やノンスを毎回変えれば、同じファイルを2回暗号化しても暗号文は異なります。 鍵を守ることに加えて、使い方まで決めて初めて暗号は期待した強さを発揮します。
混同しやすいものとの違い
| 対策 | 強くなる点 | 同じ値の模様は消えるか |
|---|---|---|
| 暗号利用モードの変更(CBCなど) | 同じ平文でも暗号文が変わる | 消える |
| 鍵長を伸ばす | 鍵の総当たりへの強さ | 消えない |
| Triple DESに切り替える | なし(ブロック長が短い) | 消えない |
| 同じ鍵で二重に暗号化する | なし | 消えない |
「同じ値が分かる」という指摘は、方式や鍵の強さではなく、ブロックのつなぎ方の問題です。