VMAC は、 2007 年 4 月にTed Krovetz とWei Daiによって提案された、ユニバーサル ハッシュを使用したブロック暗号ベースのメッセージ認証コード(MAC) アルゴリズムです。このアルゴリズムは、形式的な分析に基づいて高いパフォーマンスを実現するように設計されています。[引用が必要]
VMAC は、64 ビット CPU アーキテクチャ上のソフトウェアで優れたパフォーマンスを発揮すると同時に、32 ビット アーキテクチャでも優れたパフォーマンスを発揮するように設計されています。[要出典] 測定された速度は、64 ビット アーキテクチャでは 1 バイトあたり CPU サイクルの半分 (cpb)、デスクトップ 32 ビット プロセッサでは 5 cpb 未満、組み込み 32 ビット アーキテクチャでは約 10 cpb です。[1] 32 ビット アーキテクチャ向けに最適化された VMAC の密接に関連するバリアントは、UMACです。
概要
VMACはウェグマンとカーターのスタイルのMACです。[2] [3]高速な「ユニバーサル」ハッシュ関数を使用して、入力メッセージMを短い文字列にハッシュします。[引用が必要]この短い文字列は、疑似ランダムパッドと加算によって結合され、VMACタグが生成されます。セキュリティは、送信者と受信者がランダムに選択された秘密ハッシュ関数と疑似ランダムパッドを共有することに依存します。これは、キー付きハッシュ関数Hと疑似ランダム関数Fを使用して実現されます。タグは、計算を実行することによって生成されます。
タグ = H K1 (M) + F K2 (ノンス)
ここで、K1 と K2 は送信者と受信者が共有する秘密のランダム キーであり、Nonce は生成されるタグごとに変化する値です。受信者は送信者がどの nonce を使用したかを知る必要があるため、nonce を同期する何らかの方法を使用する必要があります。これは、メッセージとタグとともに nonce を明示的に送信するか、シーケンス番号などの他の繰り返しのない値の使用に同意することで実行できます。nonce を秘密にしておく必要はありませんが、VMAC キーの有効期間中、各メッセージで異なる nonce が使用されるように注意する必要があります。
VMAC は、キー付きハッシュ関数 H として VHASH と呼ばれる関数 (このドキュメントでも指定されています) を使用し、デフォルトの実装で AES ブロック暗号を使用する疑似乱数関数 F を使用します。VMAC では、使用中のブロック暗号のブロック サイズまでの 64 ビットの倍数のタグ長が許可されます。AES を使用する場合、これは VMAC が 64 ビットまたは 128 ビットのタグを生成できることを意味します。
ウェグマン・カーター MAC の理論と VMAC の分析によると、真にランダムなキーとパッドを使用して VMAC を「インスタンス化」すると、攻撃者 (計算上無制限の攻撃者であっても) が選択したメッセージに対して正しいタグを生成する確率は、タグの長さがそれぞれ 64 ビットまたは 128 ビットの場合、それぞれ1/2 60または 1/2 120未満になります。攻撃者が N 回の偽造試行を行うと、1 つ以上のタグを正しく取得する確率は直線的に増加し、N/2 60または N/2 120未満になります。VMAC の応用実装では、AES を使用してキーとパッドを生成すると、これらの偽造確率は AES のセキュリティに関連してわずかに増加します。AES が安全である限り、この小さな追加項は実際の攻撃には影響しません。詳細については仕様を参照してください。VMAC セキュリティの分析は、著者 Wei Dai と Ted Krovetz によって実行されました。[引用が必要] [4]
実装
- C [5] [6]
- C++ [7] [8]
- パイソン[9]
参考文献
- ^ T. Krovetz および W. Dai (2007)。「VMAC: ユニバーサル ハッシュを使用したメッセージ認証コード」。CFRGワーキング グループ。IETF。2010年 8 月 12 日閲覧。
- ^ J. Carter、M. Wegman (1977)。「ハッシュ関数のユニバーサルクラス (拡張要約)」。第 9 回 ACM コンピューティング理論シンポジウム議事録 - STOC '77 。ACM。pp . 106–112。doi : 10.1145 /800105.803400。S2CID 1302091 。
- ^ J. Carter; M. Wegman (1981). 「新しいハッシュ関数と認証および集合等価性におけるその使用」. Journal of Computer and System Sciences . 22 (3): 265–279. doi : 10.1016/0022-0000(81)90033-7 .
- ^ T. Krovetz ( 2007)。「64 ビット アーキテクチャでのメッセージ認証」(PDF)。暗号化の選択された領域。コンピュータ サイエンスの講義ノート。第 4356 巻。Springer-Verlag。pp. 327–341。doi :10.1007/ 978-3-540-74462-7_23。ISBN 978-3-540-74461-0. ISSN 0302-9743.
- ^ 「vmac.h (ソースコード)」。2022年11月13日閲覧。
- ^ 「vmac.c (ソースコード)」。2022年11月13日閲覧。
- ^ 「Crypto++: vmac.h ソース ファイル」。www.cryptopp.com。
- ^ 「Crypto++: vmac.cpp ソース ファイル」。www.cryptopp.com。
- ^ Krovetz, Ted (2007-04-22). 「最適化されていない、わかりやすい VMAC のリファレンス実装」 。2022年 11 月 13 日閲覧。
外部リンク
- VMAC: ユニバーサルハッシュを使用したメッセージ認証コード – 2007 年 4 月インターネット ドラフト
- VMACホームページ
- Cryptolounge VMAC wiki エントリ 2010-04-02 にWayback Machineでアーカイブされました
