1. 序論 (Introduction)
信頼できない媒体を介して送信される、またはその媒体に格納される情報の完全性を検証する手段を提供することは、オープンな計算と通信の世界において最も重要な要件である。秘密鍵に基づいてこのような完全性検証を提供する仕組みは、通常「メッセージ認証コード (message authentication codes, MAC)」と呼ばれる。典型的には、メッセージ認証コードは、秘密鍵を共有する二者間で、それらの二者間で送信される情報を検証するために使用される。本ドキュメントでは、このような MAC の仕組みを暗号学的ハッシュ関数に基づいて提示する。この仕組みは HMAC と呼ばれ、著者らの研究 [BCK1] に基づくものであり、そこでは構成法が提示され暗号学的に解析されている。HMAC の根拠およびセキュリティ解析の詳細、ならびに他の鍵付きハッシュ方式との比較については、その研究を参照されたい。
HMAC は、任意の反復型暗号学的ハッシュ関数と組み合わせて使用できる。MD5 および SHA-1 はそのようなハッシュ関数の例である。HMAC はまた、メッセージ認証値の計算および検証のために秘密鍵を用いる。この構成の背後にある主な目標は以下のとおりである。
-
変更を加えずに、既存のハッシュ関数を利用すること。とくに、ソフトウェア上で良好な性能を示し、かつコードが自由に広く利用可能であるハッシュ関数を利用すること。
-
ハッシュ関数の本来の性能を維持し、著しい性能低下を招かないこと。
-
鍵を単純な方法で利用し、取り扱うこと。
-
基となるハッシュ関数に対する合理的な仮定に基づき、認証機構の強度について十分に理解された暗号学的解析が得られていること。
-
より高速あるいはより安全なハッシュ関数が発見された、あるいは要求された場合に、基となるハッシュ関数を容易に置換できること。
本ドキュメントは、汎用的な暗号学的ハッシュ関数 (H と記す) を用いた HMAC を規定する。HMAC の具体的なインスタンス化 (instantiation) には、特定のハッシュ関数を定義する必要がある。そのようなハッシュ関数の現在の候補には、SHA-1 [SHA]、MD5 [MD5]、RIPEMD-128/160 [RIPEMD] が含まれる。HMAC のこれらの異なる実現は、HMAC-SHA1、HMAC-MD5、HMAC-RIPEMD などと表記される。
注意: 本ドキュメントの執筆時点において、MD5 および SHA-1 は最も広く使用されている暗号学的ハッシュ関数である。MD5 は最近、衝突探索攻撃に対して脆弱であることが示された [Dobb]。この攻撃および現在知られている MD5 のその他の弱点は、本ドキュメントで規定する HMAC における MD5 の使用を損なうものではない ([Dobb] を参照); しかしながら、SHA-1 は暗号学的により強い関数と思われる。現時点において、MD5 の優れた性能が極めて重要となるアプリケーションに対しては、HMAC での MD5 の使用を検討してもよい。いずれにせよ、実装者および利用者は、これらの暗号学的ハッシュ関数に関する可能性のある暗号解読上の進展、および最終的に基となるハッシュ関数を置換する必要性について認識しておく必要がある。(HMAC のセキュリティに関する詳細は、第 6 節を参照。)