CMAC
CMAC (Cipher-based MAC) は、ブロック暗号に基づくメッセージ認証符号アルゴリズムである。認証およびデータの機密の保証に用いられる。この暗号利用モードは、CBC-MACのセキュリティ上の欠陥を修正したものである(CBC-MACは固定長のメッセージの場合のみ安全である)。
CMACアルゴリズムの中核は、John BlackとPhillip Rogawayによって提案、解析され、NISTに提出されたXCBCと呼ばれるCBC-MACの変種である。XCBCアルゴリズムはCBC-MACの欠陥を効率的に克服しているが、3つの鍵を必要とする。岩田と黒沢はXCBCの改良を提案し、One-Key CBC-MAC (OMAC)として発表した。さらに、OMACの改良としてOMAC1を発表し、さらなるセキュリティ解析を行った。OMACではXCBCよりも必要な鍵が少なくなっている。CMACはOMAC1と等価なものである。
bビットのブロック暗号 (E) と秘密鍵 (k) を用いてメッセージ (m) の lビットのCMACタグ (t) を生成する場合、はじめに2つの bビットの副鍵 (k1 and k2) を以下の手順で生成する(これは有限体GF(2) 上での x と x の乗算と等価である)。 ここで ≪ は左シフト演算子である。
一時的な値として k0 = Ek(0) を計算する。
msb(k0) = 0 であれば k1 = k0 ≪ 1 とする。