ワンキーMAC

ワンキーMACOMAC )は、 CBC-MACアルゴリズムによく似たブロック暗号から構成されるメッセージ認証コードの一種です。データの真正性、ひいては整合性を保証するために使用できます。以下の2つのバージョンが定義されています。

  • 2003年2月のオリジナルのOMAC。あまり使われていない。[ 1 ]現在推奨されている名称は「OMAC2」である。[ 2 ]
  • OMAC1の改良版[ 2 ]は、2005年5月にCMACという名前でNISTの勧告となった。[ 3 ]

OMACはあらゆる用途に無料で使用できます。いかなる特許も適用されません。[ 4 ]

歴史

CMACアルゴリズムの中核は、ブラックロガウェイが「XCBC」 [ 5 ]という名前で提案・分析し、NISTに提出したCBC-MACのバリエーションです。[ 6 ] XCBCアルゴリズムはCBC-MACのセキュリティ上の欠陥を効率的に解決しますが、3つのキーが必要です。

岩田と黒澤は、XCBCの改良版として、より少ない鍵材料(鍵1つだけ)を必要とするアルゴリズムを提案し、そのアルゴリズムを論文中でOne-Key CBC-MAC (OMAC)と名付けました。 [ 1 ]その後、彼らはOMAC1(= CMAC)[ 2 ]とOMACの改良版、および追加のセキュリティ分析を提出しました。[ 7 ]

アルゴリズム

bビットのブロック暗号(E)と秘密鍵(k )を用いてメッセージ(m )のビットのCMACタグ(t )を生成するには、まず以下のアルゴリズムを用いて2つのbビットのサブキー(k 1k 2)を生成する(これは有限体GF(2 b )におけるxx 2の乗算と同等である)。 ≪ は標準的な左シフト演算子、 ⊕ はビット単位の排他的論理和を表すものとする。

  1. 一時的な値k 0 = E k (0)を計算します。
  2. msb( k 0 ) = 0 の場合、k 1 = k 0 ≪ 1 となり、それ以外の場合はk 1 = ( k 0 ≪ 1) ⊕ Cとなります。ここで、 Cはbのみに依存する定数です。(具体的には、Cは辞書式に最初の既約なb次バイナリ多項式の非主係数で、1 の数が最小となる係数です。64ビットの場合は0x1B、128 ビットの場合は0x87、256ビット ブロックの場合は0x425 です。)
  3. msb( k 1 ) = 0の場合、k 2 = k 1 ≪ 1、それ以外の場合はk 2 = ( k 1 ≪ 1) ⊕ C
  4. MAC生成プロセスのキー(k 1k 2 )を返します。

小さな例として、b = 4C = 0011 2k 0 = E k (0) = 0101 2とします。すると、k 1 = 1010 2k 2 = 0100 ⊕ 0011 = 0111 2となります。

CMAC タグ生成プロセスは次のとおりです。

  1. メッセージをbビットのブロックm = m 1 ‖ ... ‖ m n −1m nに分割する。ここで、m 1 , ..., m n −1は完全なブロックである。(空のメッセージは1つの不完全なブロックとして扱われる。)
  2. m nが完全なブロックの場合、 m n ′ = k 1m n 、そうでない場合はm n ′ = k 2 ⊕ ( m n ∥ 10...0 2 )
  3. c 0 = 00...0 2とします。
  4. i = 1, ..., n − 1の場合、c i = E k ( c i −1mi )計算します。
  5. c n = E k ( c n −1m n ′)
  6. 出力t = msb ( c n )

検証プロセスは次のとおりです。

  1. 上記のアルゴリズムを使用してタグを生成します。
  2. 生成されたタグが受信したタグと等しいことを確認します。

変種

CMAC-C1 [ 8 ]はCMACの変種であり、追加のコミットメントとコンテキスト検出のセキュリティ保証を提供します。

実装

参考文献

  1. ^ a b岩田 哲; 黒澤 薫 (2003-02-24). 「OMAC: One-Key CBC MAC」.高速ソフトウェア暗号化. コンピュータサイエンス講義ノート. 第2887巻. Springer, ベルリン, ハイデルベルク. pp.  129– 153. doi : 10.1007/978-3-540-39887-5_11 . ISBN 978-3-540-20449-7
  2. ^ a b c岩田 哲; 黒澤 薫 (2003). 「OMAC: One-Key CBC MAC – 補遺」(PDF) .この論文では、OMACファミリーのパラメータの新しい選択肢であるOMAC1を提案する(詳細は[4]を参照)。テストベクトルも提示する。これに伴い、従来のOMACをOMAC2と改名する(つまり、OMAC2のテストベクトルは[3]で既に提示されている)。OMACは、OMAC1とOMAC2の総称として使用する。{{cite journal}}:ジャーナルを引用するには|journal=ヘルプ)が必要です
  3. ^ Dworkin, Morris (2016). 「ブロック暗号の動作モードに関する推奨事項:認証のためのCMACモード」(PDF) . doi : 10.6028/nist.sp.800-38b .{{cite journal}}:ジャーナルを引用するには|journal=ヘルプ)が必要です
  4. ^ロガウェイ、フィリップ。「CMAC:非ライセンス」 。 2020年5月27日閲覧フィリップ・ロガウェイによるCMACの知的財産権に関する声明
  5. ^ブラック, ジョン; ロガウェイ, フィリップ (2000-08-20).暗号学の進歩 – CRYPTO 2000 . シュプリンガー, ベルリン, ハイデルベルク. pp.  197– 215. doi : 10.1007/3-540-44598-6_12 . ISBN 978-3540445982
  6. ^ Black, J; Rogaway, P. 「CBC MAC で任意の長さのメッセージを処理するための提案」(PDF){{cite journal}}:ジャーナルを引用するには|journal=ヘルプ)が必要です
  7. ^岩田哲;黒沢 薫 (2003-12-08)。 「OMAC、TMAC、XCBC のセキュリティ境界の強化」。ヨハンソンでは、トーマス。マイトラ、サブハモイ(編)。暗号学の進歩 - INDOCRYPT 2003。コンピューターサイエンスの講義ノート。 Vol. 2904. シュプリンガー ベルリン ハイデルベルク。402 –415ページ CiteSeerX 10.1.1.13.8229土井: 10.1007/978-3-540-24582-7_30ISBN  9783540206095
  8. ^バウミク、リタム;チャクラボルティ、ビシュワジット。チェ・ウォンソク。ダッタ、アビジット。ゴビンデン、ジェローム。沈耀斌(2024)。「汎用構成へのアプリケーションを使用した MAC のセキュリティのコミット」。レオニードのレイジンにて。ステビラ、ダグラス (編)。暗号学の進歩 – CRYPTO 2024。コンピューターサイエンスの講義ノート。 Vol. 14923. チャム: Springer Nature スイス。 pp.  425–462土井: 10.1007/978-3-031-68385-5_14ISBN 978-3-031-68385-5
  9. ^ 「Impacketは、ネットワークプロトコルを操作するためのPythonクラスのコレクションです。: SecureAuthCorp/impacket」。2018年12月15日 – GitHub経由。
  10. ^ 「AES-CMACキーハッシュ関数のRuby C拡張(RFC 4493):louismullie/cmac-rb」。2016年5月4日 – GitHub経由。