B.1.1. HMAC-SHA-1
B.1.1. HMAC-SHA-1
HMAC-SHA-1 は、SHA-1 ハッシュ関数 [NIST180] に基づく HMAC メッセージ認証コード [RFC2104] に対応する疑似ランダム関数です。疑似ランダム関数は、メッセージ認証コードが計算されるのと同じ関数で、全長出力を持ちます (疑似ランダム関数 PRF への最初の引数は HMAC の "key" として機能し、2番目は HMAC の "text" として機能します。PBKDF2 の場合、"key" はパスワードであり、"text" はソルトです)。HMAC-SHA-1 は可変長の鍵と20オクテット (160ビット) の出力値を持ちます。
HMAC-SHA-1 への鍵の長さは本質的に無制限ですが、疑似ランダム関数出力の有効検索空間は、関数の構造によって制限される可能性があります。特に、鍵が512ビットより長い場合、HMAC-SHA-1 はまずそれを160ビットにハッシュします。したがって、複数の疑似ランダム関数出力から構成される長い導出鍵が鍵から生成されても、導出鍵の有効検索空間は最大でも160ビットです。他の鍵サイズの特定の制限は HMAC 構成の詳細に依存しますが、保守的に、有効検索空間は他の鍵サイズでも160ビットに制限されると仮定すべきです。
(160ビットの制限は、パスワードベース暗号の場合、パスワードの検索空間が160ビットを超える可能性は低いため、一般的に実用的な制限をもたらすべきではありません。)
オブジェクト識別子 id-hmacWithSHA1 は、HMAC-SHA-1 疑似ランダム関数を識別します:
id-hmacWithSHA1 OBJECT IDENTIFIER ::= {digestAlgorithm 7}
AlgorithmIdentifier でこの OID に関連付けられる parameters フィールドは、NULL 型を持つべきです。このオブジェクト識別子は、オブジェクトセット PBKDF2-PRFs (Appendix A.2) で使用されます。
注記: HMAC-SHA-1 はメッセージ認証コードとして設計されましたが、そのセキュリティの証明は、より強い仮定の下で、疑似ランダム関数の要件に対応するように容易に修正されます。ハッシュ関数も、特定の仮定の下で疑似ランダム関数の要件を満たす可能性があります。たとえば、"key" と "text" の連結にハッシュ関数を直接適用することは、"text" が特定の攻撃を防ぐための適切な構造を持つ場合、適切である可能性があります。ただし、HMAC-SHA-1 は "key" と "text" を別々の引数として扱い、"text" に構造を必要としないため、好ましいです。
2004年と2005年の間に、SHA-1 に対する多数の攻撃があり、衝突攻撃に対する認識される有効強度が、期待される80ビットではなく62ビットに減少しました (例: Wang et al. [WANG]、M. Cochran [COCHRAN] によって確認されました)。ただし、これらの攻撃は値間の衝突を見つけることに焦点を当てているため、衝突耐性のある特性が HMAC 認証スキームによって要求されないため、ここでは直接的なセキュリティ上の考慮事項ではありません。