メインコンテンツまでスキップ

5. ハッシュアルゴリズムの考慮事項と登録

整合性の目的で使用できるさまざまなハッシュアルゴリズムがあります。アルゴリズムの選択は、整合性の使用例、実装のニーズや制約、またはアプリケーションの設計やワークフローなどのいくつかの要因によって異なります。

アルゴリズムの初期セットは、IANA の「HTTP ダイジェストフィールドのハッシュアルゴリズム (Hash Algorithms for HTTP Digest Fields)」レジストリに登録されます。セクション 7.2 を参照してください。追加のアルゴリズムは、このセクションで定められたポリシーに従って登録できます。

各アルゴリズムには、実装の選択を支援することを目的としたステータスフィールドがあります。

ステータス値が "Active"(アクティブ)のアルゴリズムは、多くの目的に適しており、アプリケーションがこれらのアルゴリズムを使用することが推奨されます (RECOMMENDED)。これらは、ハッシュ関数が衝突、第一原像、および第二原像攻撃に対する耐性を提供する必要がある敵対的な状況で使用できます。敵対的な状況の場合、許容される "Active" アルゴリズムの選択は、状況が要求する保護レベルに依存します。詳細な考慮事項は、セクション 6.6 に示されています。

ステータス値が "Deprecated"(非推奨)のアルゴリズムは、これらのプロパティのいずれも提供しないか、脆弱であることが知られています([NO-MD5] および [NO-SHA] を参照)。これらのアルゴリズムは、破損に対する整合性を維持するために使用してもよい (MAY) が、真正性のために整合性フィールドの値を署名する場合など、潜在的に敵対的な設定で使用してはなりません (MUST NOT)。これらのアルゴリズムの使用を許可することで、一部のアプリケーション(以前に [RFC3230] を使用していた、この仕様に移行中である(付録 E)、計算されたダイジェスト値の既存の保存済みコレクションがあるアプリケーションなど)が、他のより安全なアルゴリズムを使用して再計算することによって発生する過度の運用オーバーヘッドを回避するのに役立ちます。そのようなアプリケーションは、このセクションの要件を免除されません。さらに、そのような遺産や履歴のないアプリケーションは、ステータス値が "Active" のアルゴリズムを使用するためのガイダンスに従うべきです。

アルゴリズムのアジリティに関する議論は、セクション 6.6 に示されています。

「HTTP ダイジェストフィールドのハッシュアルゴリズム」レジストリの登録リクエストは、Specification Required ポリシー([RFC8126] のセクション 4.6)を使用します。リクエストは次のテンプレートを使用する必要があります。

  • Algorithm Key(アルゴリズムキー):Content-Digest、Repr-Digest、Want-Content-Digest、または Want-Repr-Digest フィールドの辞書メンバーキーで使用される構造化フィールドのキー値。

  • Status(ステータス):アルゴリズムのステータス。オプションは次のとおりです。

    • "Active":既知の問題のないアルゴリズム
    • "Provisional":未証明のアルゴリズム
    • "Deprecated":非推奨または安全でないアルゴリズム
  • Description(説明):アルゴリズムの短い説明。

  • Reference(s)(参照):アルゴリズムキーとアルゴリズムの技術的詳細を定義する主要な文書へのポインタ。

登録リクエストをレビューする際、指名された専門家はリクエストされたステータスに注意を払う必要があります。ステータス値は、標準化の状況と、IETF やセキュリティ関連の標準開発組織 (SDO) などの関連する利益団体の広範な意見を反映する必要があります。"Active" ステータスは、脆弱、破損、または実験的であることが知られているアルゴリズムには適していません。登録リクエストがそのようなアルゴリズムを "Active" として登録しようとする場合、指名された専門家は "Deprecated" または "Provisional" の代替ステータスを提案する必要があります。

登録リクエストをレビューする際、指名された専門家は "Deprecated" または "Provisional" のステータスを拒否の根拠として使用することはできません。

既存の登録のフィールドを更新または変更するリクエストは許可されます。たとえば、これにより、セキュリティ環境の進化に伴い、アルゴリズムのステータスを "Active" から "Deprecated" に移行できるようになります。