Counter with CBC-MAC

Counter with CBC-MAC (CCM、CCMモード)は、ブロック暗号の暗号利用モードの一つであり、認証付き暗号の一つである。CCMモードは128ビットブロック暗号に対してのみ定義されており、ではAESでの利用について定義されている。

CTRモードの派生として、CCMモードはストリーム暗号として振る舞う。そのため、初期化ベクトル (IV)を慎重に選択し、再使用することは避けなければならない。

 暗号化と認証 
名称が示すように、CCMモードはカウンター (CTR)モードとCBC-MACモードを組み合わせたものであり、前者が暗号化に、後者が認証に用いられる。暗号化に用いられたカウンター値が認証で用いられる初期化ベクトルと衝突することがない限り、同一の鍵を暗号化と認証の双方に用いることができる。この組み合わせについては、ブロック暗号の安全性に基づくNISTによる安全性証明が存在する。この証明は、128ビットAESだけでなく、任意のブロック長のブロック暗号や任意長の擬似ランダム関数CTRモード、CBC-MACのいずれも，ブロック暗号の暗号化関数しか利用しないため、暗号化の逆演算（復号）ができる必要はない。を部品とする一般化したCCMモードにも適用可能である。

CCMモードはRuss Housley、Doug Whiting、Niels Fergusonによって設計された。CCMモードの開発時、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 は「on-line」の認証付き暗号ではなく、事前にメッセージ（と関連データ）の長さが分かっていなければならない。
 認証コード（MAC）の生成において、関連データの長さは可変長のエンコーディングがなされ、コンピュータのワード長よりも短い場合がある。このことは、（あまり無いことだが）関連データが長い場合にはMAC生成が遅くなる原因となりうる。
 関連データはメッセージデータの後に処理される。そのため，関連データが固定であったとしても、事前に計算しておくといったことはできない。

 特許 
CCMモードの開発の動機は、OCBモードのIEEE 802.11iへの採用に関する問題である。OCBモードのアルゴリズムの利用に特許の主張が留保されていたことでOCBの採用に反対する意見があった。特許を必要とするアルゴリズムの採用は、標準の実装の際にライセンス問題に発展するためである。

OCBモードの採用は知的財産権の問題につながるものであるため、そのような問題を持たない新たな認証付き暗号の開発が求められた。そこで、Housleyらは特許による問題を受けない代替アルゴリズムとしてCCMモードを開発した。

CCMモードはOCBモードと比較すると効率が悪いアルゴリズムであるが、特許問題の危険性がないことから、CCMモードはIEEE 802.11iに必須要素として採用された。OCBモードは除外されるのではなく、オプションとしての位置付けとなった。

 利用 
CCMモードは、IEEE 802.11i（WPA2の暗号規格であるCCMPとして）、IPSec Using Advanced Encryption Standard (AES) CCM Mode with IPsec Encapsulating Security Payload (ESP)、TLS 1.2 AES-CCM Cipher Suites for Transport Layer Security (TLS)といった標準規格で採用されている。

 関連項目 
 暗号利用モード
 認証付き暗号
 Advanced Encryption Standard
 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

 外部リンク 
 : Counter with CBC-MAC (CCM)
 : Using Advanced Encryption Standard (AES) CCM Mode with IPsec Encapsulating Security Payload (ESP)
 : AES-CCM Cipher Suites for Transport Layer Security (TLS)
 A Critique of CCM （OCBモードの設計者による評価）

Category:暗号技術
Category:暗号利用モード
Category:メッセージ認証コード
Category:認証付き暗号
3610