コンテンツへスキップ
uencoder

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 P3
    Output
    C1 C2 C3

    Each 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

関連用語

関連ツール

References