読み方 : シービーシーマック
CBC-MAC【Cipher Block Chaining Message Authentication Code】
概要

暗号化処理ではまず、メッセージをブロック暗号のブロック長に合わせて分割する。最初のブロックを秘密鍵で暗号化し、その結果と次のブロックをXOR演算してから再び暗号化する。この操作をメッセージ末尾まで繰り返し、最終的に得られた値を認証コードとしてデータに付加して送信する。
受信側は同じ秘密鍵と手順で認証コードを計算し、受け取った値と照合することで改竄の有無を確認する。全ブロックを連鎖的に処理する構造により、メッセージ全体の中でどこかが1ビットでも変化していれば最終的な出力値は大きく変わるため、わずかな改竄も検出できる。
素朴なCBC-MACは固定長メッセージに対してのみ安全性が保証されており、可変長メッセージにそのまま適用すると、既知の認証コードを利用して偽造データを作成される脆弱性が生じる。対策として、メッセージの先頭に全体の長さを含めて処理する方法や、最終ブロックに別の鍵を適用する「CMAC」(Cipher-based MAC)のような改良方式が考案されており、実用上はこれらが広く採用されている。
CBC-MACはブロック暗号の処理を流用するため、暗号化機能を持つ機器に認証機能を追加しやすい。暗号化と認証を一体化した暗号利用モード「CCM」(Counter with CBC-MAC)では、認証コードの生成部分にCBC-MACの処理が用いられている。これを元に、無線LAN(Wi-Fi)のセキュリティ規格「WPA2」では「CCMP」(Counter-mode with CBC-MAC Protocol)方式が定義されている。
(2026.7.12更新)