【情報セキュリティ】データの繋ぎ方で強固にする!「ブロック暗号のモード」|情報処理問題1000本ノック
AESなどのブロック暗号は、一度に処理できるデータ長(ブロック)が決まっています。長いメッセージを暗号化する際、どのようにブロックを繋いで処理していくかという「アルゴリズムの運用形態」を攻略しましょう。
■ 代表的な5つのブロック暗号モード
同じ鍵を使っても、モードによって暗号文の性質や安全性が大きく変わります。
| モード | 特徴とセキュリティ上の性質 |
|---|---|
| ECB (Electronic Codebook) |
各ブロックを独立して暗号化する最も単純な方式。 【弱点】 同じ平文ブロックからは同じ暗号文が出るため、パターンを推測されやすく現在は推奨されません。 |
| CBC (Cipher Block Chaining) |
前のブロックの暗号文と、次の平文をXOR(排他的論理和)してから暗号化する。現在の主流の一つ。 ・最初のブロックにはIV(初期化ベクトル)を使用します。 |
| CFB (Cipher Feedback) |
前の暗号文ブロックを暗号アルゴリズムへの入力に戻す方式。 ・ブロック暗号をストリーム暗号(逐次処理)のように利用できます。 |
| OFB (Output Feedback) |
暗号アルゴリズムの出力を、次の入力にフィードバックする方式。 ・伝送路でビットエラーが発生しても、そのエラーが後続に波及しない特徴があります。 |
| CTR (Counter) |
ブロックごとにカウントアップする数値を暗号化し、平文とXORをとる方式。 【利点】 各ブロックを独立して計算できるため、並列処理が可能で非常に高速です。 |
エンジニアが押さえるべき重要ポイント
- IV(初期化ベクトル)の役割:同じ鍵・同じ平文でも、毎回異なる暗号文を生成するために不可欠な「使い捨ての乱数」です(ECB以外で使用)。
- パディング:データの末尾がブロック長に足りない場合、特定のルールでデータを埋める作業が必要です(CTRなど一部モードでは不要)。
- 認証付き暗号 (AEAD):最近では暗号化と同時に改ざん検知も行うGCM(CTRモードの発展形)が広く普及しています。
※ECBは「そのまま並べるだけ」、CBCは「前の結果を次に繋ぐ数珠つなぎ」、CTRは「番号を振って並列処理」というイメージで整理すると、それぞれの特性(特に速度と安全性)の違いが見えてきます。
PR