読み方 : シービーシーマック

CBC-MAC【Cipher Block Chaining Message Authentication Code】

概要

CBC-MACとは共通鍵暗号を利用してデータ改竄を検出するための認証コードを生成する方式。送信者と受信者が共有する秘密鍵とメッセージを組み合わせて固定長ビット列を算出する。データ完全性と正当性を検証することができる。
CBC-MACのイメージ画像

暗号化処理ではまず、メッセージをブロック暗号のブロック長に合わせて分割する。最初のブロックを秘密鍵暗号化し、その結果と次のブロックをXOR演算してから再び暗号化する。この操作をメッセージ末尾まで繰り返し、最終的に得られた値を認証コードとしてデータに付加して送信する。

受信側は同じ秘密鍵と手順で認証コードを計算し、受け取った値と照合することで改竄の有無を確認する。全ブロックを連鎖的に処理する構造により、メッセージ全体の中でどこかが1ビットでも変化していれば最終的な出力値は大きく変わるため、わずかな改竄も検出できる。

素朴なCBC-MACは固定長メッセージに対してのみ安全性が保証されており、可変長メッセージにそのまま適用すると、既知の認証コードを利用して偽造データを作成される脆弱性が生じる。対策として、メッセージの先頭に全体の長さを含めて処理する方法や、最終ブロックに別の鍵を適用する「CMAC」(Cipher-based MAC)のような改良方式が考案されており、実用上はこれらが広く採用されている。

CBC-MACはブロック暗号の処理を流用するため、暗号化機能を持つ機器に認証機能を追加しやすい。暗号化認証を一体化した暗号利用モード「CCM」(Counter with CBC-MAC)では、認証コードの生成部分にCBC-MACの処理が用いられている。これを元に、無線LANWi-Fi)のセキュリティ規格「WPA2」では「CCMP」(Counter-mode with CBC-MAC Protocol)方式が定義されている。

(2026.7.12更新)
 
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。