CBC (Cipher Block Chaining)
CBC モードは、暗号化前に直前の暗号文ブロックと現在の平文ブロックを XOR するため、同一の平文ブロックも異なる暗号文になる。ランダムな IV が必要である一方、完全性の認証は提供しない。
目的
ECB の同一ブロックパターンを排除して機密性を提供するが、完全性のために別途 MAC が必要である。
メカニズム
暗号化は C_i = E_K(P_i ⊕ C_{i-1})(ただし C_0 = IV)、復号は P_i = D_K(C_i) ⊕ C_{i-1} である。IV は予測不可能(ランダム)でなければならない。エラー伝播は現在ブロックと次ブロックにのみ及ぶ。非認証暗号であるため、HMAC と併用(Encrypt-then-MAC)しなければならない。
ユースケース
- ファイル暗号化(OpenSSL の既定など)
- データベースフィールドの暗号化
- IPsec ESP(かつての利用)
- ディスク暗号化(部分的)
例
- 入力
IV + P1 P2 P3OutputC1 C2 C3Each block depends on the previous one
よくあるエラー
- A predictable IV enables chosen-plaintext attacks
- Use a random IV and transmit it with the ciphertext
- Lack of authentication invites padding attacks (e.g., POODLE)
- Use an AEAD mode or Encrypt-then-MAC
関連用語
ECB (Electronic Codebook)
ECB モード(Electronic Codebook)は各ブロックを独立に暗号化するため、同一の平文ブロックは同一の暗号文ブロックになる。安全でなく、単一ブロックやランダムデータにのみ適する。 用語集
CTR (Counter Mode)
CTR モードはブロック暗号をストリーム暗号に変える: 増分カウンタを暗号化してキーストリームを生成し、平文と XOR する。並列処理とランダムアクセスを支えるが、完全性は提供しない。 用語集
GCM (Galois/Counter Mode)
GCM(Galois/Counter Mode)は CTR 暗号と GHASH 認証を組み合わせた AEAD モードであり、機密性と完全性を同時に提供し、TLS 1.2/1.3 の推奨モードである。 用語集
Mode of Operation
運用モード(mode of operation)は、ブロック暗号を任意長のデータに適用するための方式で、暗号化時に複数の平文ブロックをどう連結するかを定義する。代表的なものにECB、CBC、CTR、GCMがある。 用語集
IV (Initialization Vector)
初期化ベクトル(IV、Initialization Vector)は、ブロック暗号モードにランダム性を注入する入力である。同じ平文でも暗号化ごとに異なる暗号文が生成される。 用語集