CCM(Counter with CBC-MAC)モードについて
Counter with
CBC-MAC(CCM)モードは、
ブロック暗号の
暗号利用モードの一つであり、認証付き
暗号(Authenticated Encryption)を実現するための方式です。主に128ビットの
ブロック暗号に対して適用され、RFC 3610ではAESでの利用が定義されています。CCMモードは、CTR(Counter)モードを基盤としており、
ストリーム暗号のように動作します。そのため、初期化ベクトル(IV)の選択には細心の注意が必要で、同じIVの再利用は絶対に避けるべきです。
暗号化と認証の仕組み
CCMモードは、名前が示す通り、CTRモードと
CBC-MACモードを組み合わせたものです。CTRモードが
暗号化を担当し、
CBC-MACモードがメッセージの認証を行います。
暗号化で使われたカウンター値が、認証に使う初期化ベクトルと衝突しない限り、同一の
暗号鍵を
暗号化と認証の両方に使用できます。この組み合わせの安全性については、NIST(アメリカ国立標準技術研究所)によって、
ブロック暗号の安全性に基づいた証明がなされています。この証明は、128ビットのAESだけでなく、任意のブロック長の
ブロック暗号や任意の長さの擬似ランダム関数を部品とする、より一般的なCCMモードにも適用可能です。
CCMモードは、Russ Housley、Doug Whiting、Niels Fergusonによって設計されました。開発当時、Russ HousleyはRSA Laboratoriesに所属していました。
CCMモードの派生版として、CCM
と呼ばれるモードがあり、これはZigBeeでの暗号化に利用されています。CCMはCCMモードの全ての機能を持ちつつ、
暗号化のみでの利用も可能です。
パフォーマンス
CCMモードでは、メッセージの
暗号化と認証を行うために、メッセージ1ブロックにつき2回の
ブロック暗号の
暗号化操作が必要です。また、関連データ(
暗号化されない部分)の認証には、データ1ブロックにつき1回の
暗号化操作が必要です。
Crypto++のベンチマークによると、Intel Core 2プロセッサ(32ビットモード)を用いた場合、AES-CCMは1バイトあたり約28.6サイクルを要します。
効率性に関する注意点
CCMモードは、以下の点で効率性が低い場合があるため注意が必要です。
CCMは「オンライン」の認証付き暗号ではありません。事前にメッセージと関連データの長さが分かっている必要があります。
認証コード(MAC)の生成において、関連データの長さは可変長のエンコーディングがなされ、コンピュータのワード長よりも短い場合があります。これにより、関連データが長い場合にはMAC生成が遅くなる可能性があります。
関連データはメッセージデータの後に処理されます。そのため、関連データが固定であっても、事前に計算しておくことはできません。
特許に関する背景
CCMモードが開発された背景には、OCBモードのIEEE 802.11iへの採用に関する問題がありました。OCBモードのアルゴリズムの利用には特許権が主張されており、このことがOCBモードの採用に反対する意見の一因となっていました。特許を必要とするアルゴリズムの採用は、標準の実装においてライセンス問題を発生させる可能性があるためです。
OCBモードの採用が知的財産権の問題につながる可能性があったため、同様の問題を持たない新たな認証付き暗号が必要とされました。そこで、Housleyらは特許による問題を回避できる代替アルゴリズムとしてCCMモードを開発しました。CCMモードはOCBモードに比べて効率が劣るものの、特許問題の危険性がないため、IEEE 802.11iに必須要素として採用されました。一方で、OCBモードは排除されることなく、オプションとして位置づけられました。
利用例
CCMモードは、以下の標準規格で採用されています。
IEEE 802.11i(WPA2の
暗号規格であるCCMPとして)
IPSec
TLS 1.2
関連項目
暗号利用モード
認証付き
暗号
Advanced Encryption Standard (AES)
Counter mode with Cipher-block chaining Message authentication code Protocol
脚注
NIST Special Publication 800-38C Recommendation for Block Cipher Modes of Operation: The CCM Mode for Authentication and Confidentiality
外部リンク
RFC 3610: Counter with CBC-MAC (CCM)
RFC 4309: Using Advanced Encryption Standard (AES) CCM Mode with IPsec Encapsulating Security Payload (ESP)
RFC 6655: AES-CCM Cipher Suites for Transport Layer Security (TLS)
*
A Critique of CCM(OCBモードの設計者による評価)