Internet Engineering Task Force (IETF)                        R. Housley
Request for Comments: 9709                                Vigil Security
Category: Standards Track                                   January 2025
ISSN: 2070-1721
        
Encryption Key Derivation in the Cryptographic Message Syntax (CMS) Using HKDF with SHA-256
暗号化キー派生は、SHA-256を使用してHKDFを使用して、暗号化メッセージ構文(CMS)の派生
Abstract
概要

This document specifies the derivation of the content-encryption key or the content-authenticated-encryption key in the Cryptographic Message Syntax (CMS) using the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) with SHA-256. The use of this mechanism provides protection against an attacker that manipulates the content-encryption algorithm identifier or the content-authenticated-encryption algorithm identifier.

このドキュメントは、HMACベースの抽出および拡張キー派生関数(HKDF)をSHA-256で使用して、暗号化キーまたは暗号化メッセージの構文(CMS)のコンテンツ - 暗号化キーまたはコンテンツ誘導性暗号化キーの導出を指定します。このメカニズムを使用すると、コンテンツ圧縮アルゴリズムの識別子またはコンテンツ認証された暗号化アルゴリズム識別子を操作する攻撃者に対する保護が提供されます。

Status of This Memo
本文書の位置付け

This is an Internet Standards Track document.

これは、インターネット標準トラックドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

このドキュメントは、インターネットエンジニアリングタスクフォース(IETF)の製品です。IETFコミュニティのコンセンサスを表しています。公開レビューを受けており、インターネットエンジニアリングステアリンググループ(IESG)からの出版が承認されています。インターネット標準の詳細については、RFC 7841のセクション2で入手できます。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9709.

このドキュメントの現在のステータス、任意のERRATA、およびそのフィードバックを提供する方法に関する情報は、https://www.rfc-editor.org/info/rfc9709で取得できます。

著作権表示

Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(c)2025 IETF Trustおよび文書著者として特定された人。無断転載を禁じます。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.

このドキュメントは、BCP 78およびIETFドキュメント(https://trustee.ietf.org/license-info)に関連するIETF Trustの法的規定の対象となります。この文書に関するあなたの権利と制限を説明するので、これらの文書を注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、セクション4.Eで説明されている法的規定のセクション4.Eで説明されており、改訂されたBSDライセンスで説明されている保証なしで提供されるように、改訂されたBSDライセンステキストを含める必要があります。

Table of Contents
目次
   1.  Introduction
     1.1.  ASN.1
     1.2.  Terminology
     1.3.  Cryptographic Algorithm Agility Considerations
   2.  Use of HKDF with SHA-256 to Derive Encryption Keys
   3.  The id-alg-cek-hkdf-sha256 Algorithm Identifier
   4.  SMIMECapabilities Attribute Conventions
   5.  Use of HKDF with SHA-256 with CMS
     5.1.  Enveloped-Data Content Type
     5.2.  Encrypted-Data Content Type
     5.3.  Authenticated-Enveloped-Data Content Type
   6.  Security Considerations
   7.  Privacy Considerations
   8.  Operational Considerations
   9.  IANA Considerations
   10. References
     10.1.  Normative References
     10.2.  Informative References
   Appendix A.  ASN.1 Module
   Appendix B.  CMS_CEK_HKDF_SHA256 Function Examples
     B.1.  CMS_CEK_HKDF_SHA256 with AES-128-GCM
     B.2.  CMS_CEK_HKDF_SHA256 with AES-128-CBC
   Acknowledgements
   Author's Address
        
1. Introduction
1. はじめに

This document specifies the derivation of the content-encryption key for the Cryptographic Message Syntax (CMS) enveloped-data content type [RFC5652], the content-encryption key for the CMS encrypted-data content type [RFC5652], or the content-authenticated-encryption key for the authenticated-enveloped-data content type [RFC5083].

このドキュメントは、暗号化メッセージの構文(CMS)包括的なデータコンテンツタイプ[RFC5652]のコンテンツ暗号化キーの導出キー、CMS暗号化されたDATAコンテンツタイプ[RFC5652]のコンテンツ暗号化キー、または認識されたコンテンツを指定します。- 認証されたエンベロープDATAコンテンツタイプ[RFC5083]の暗号化キー。

The use of this mechanism provides protection against an attacker that manipulates the content-encryption algorithm identifier or the content-authenticated-encryption algorithm identifier. Johannes Roth and Falko Strenzke presented such an attack at IETF 118 [RS2023], where:

このメカニズムを使用すると、コンテンツ圧縮アルゴリズムの識別子またはコンテンツ認証された暗号化アルゴリズム識別子を操作する攻撃者に対する保護が提供されます。ヨハネス・ロスとファルコ・ストレンケは、IETF 118 [RS2023]でこのような攻撃を発表しました。

1. The attacker intercepts a CMS authenticated-enveloped-data content [RFC5083] that uses either AES-CCM or AES-GCM [RFC5084].

1. 攻撃者は、AES-CCMまたはAES-GCM [RFC5084]のいずれかを使用するCMS認証エンベロープDATAコンテンツ[RFC5083]をインターセプトします。

2. The attacker turns the intercepted content into a "garbage" CMS enveloped-data content (Section 6 of [RFC5652]) that is composed of AES-CBC guess blocks.

2. 攻撃者は、インターセプトされたコンテンツを、AES-CBC推測ブロックで構成される「ガベージ」CMSエンベロープデータコンテンツ([RFC5652]のセクション6)に変換します。

3. The attacker sends the "garbage" message to the victim, and the victim reveals the result of the decryption to the attacker.

3. 攻撃者は被害者に「ごみ」メッセージを送信し、被害者は攻撃者への復号化の結果を明らかにします。

4. If any of the transformed plaintext blocks match the guess for that block, then the attacker learns the plaintext for that block.

4. 変換された平文ブロックのいずれかがそのブロックの推測と一致する場合、攻撃者はそのブロックのプレーンテキストを学習します。

With highly structured messages, one block can reveal the only sensitive part of the original message.

高度に構造化されたメッセージを使用すると、1つのブロックが元のメッセージの唯一の機密部分を明らかにすることができます。

This attack is thwarted if the encryption key depends upon the delivery of the unmodified algorithm identifier.

暗号化キーが、変更されていないアルゴリズム識別子の配信に依存する場合、この攻撃は阻止されます。

The mitigation for this attack has three parts:

この攻撃の緩和には3つの部分があります。

1. Potential recipients include the id-alg-cek-hkdf-sha256 algorithm identifier (with no parameters) in S/MIME Capabilities to indicate support for this mitigation.

1. 潜在的な受信者には、この緩和のサポートを示すために、S/MIME機能のID-Alg-CEK-HKDF-SHA256アルゴリズム識別子(パラメーターなし)が含まれます。

2. As a flag to the recipient that this mitigation is being used, carry the id-alg-cek-hkdf-sha256 algorithm identifier as the contentEncryptionAlgorithm in the EncryptedContentInfo structure. This structure is used in the enveloped-data content type, the encrypted-data content type, and the authenticated-enveloped-data content type. The parameters field of the id-alg-cek-hkdf-sha256 algorithm identifier identifies the content-encryption algorithm or the content-authenticated-encryption algorithm and any associated parameters.

2. この緩和が使用されているという受信者へのフラグとして、ID-Alg-CEK-HKDF-SHA256アルゴリズム識別子を暗号化されたContentInfo構造のContentEncrptionAlgorithmとして運びます。この構造は、包み込まれたDATAコンテンツタイプ、暗号化されたDATAコンテンツタイプ、および認証されたエンベロープDATAコンテンツタイプで使用されます。ID-Alg-CEK-HKDF-SHA256アルゴリズム識別子のパラメーターフィールドは、コンテンツ暗号化アルゴリズムまたはコンテンツ認証型抑制アルゴリズムと関連するパラメーターを識別します。

3. Perform encryption with a derived content-encryption key or content-authenticated-encryption key:

3. 派生したコンテンツ暗号化キーまたはコンテンツ容認された暗号化キーを使用して暗号化を実行します。

         CEK' = HKDF(CEK, AlgorithmIdentifier)
        
1.1. ASN.1
1.1. ASN.1

CMS values are generated using ASN.1 [X680], using the Basic Encoding Rules (BER) and the Distinguished Encoding Rules (DER) [X690].

CMS値は、基本的なエンコーディングルール(BER)と著名なエンコードルール(der)[x690]を使用して、asn.1 [x680]を使用して生成されます。

1.2. Terminology
1.2. 用語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

「必須」、「必要」、「必須」、「shall」、「shall」、「suff」、 "not"、 "becommended"、 "becommented"、 "may"、 "optional「このドキュメントでは、BCP 14 [RFC2119] [RFC8174]で説明されているように解釈されます。

1.3. Cryptographic Algorithm Agility Considerations
1.3. 暗号化アルゴリズムの俊敏性に関する考慮事項

There is no provision for key derivation functions other than HKDF, and there is no provision for hash functions other than SHA-256. If there is ever a need to support another key derivation function or another hash function, it will be very straightforward to assign a new object identifier. At this point, keeping the design very simple seems most important.

HKDF以外の重要な派生関数の規定はなく、SHA-256以外のハッシュ関数の規定はありません。別のキー派生関数または別のハッシュ関数をサポートする必要がある場合、新しいオブジェクト識別子を割り当てるのは非常に簡単です。この時点で、デザインを非常にシンプルに保つ最も重要なようです。

2. Use of HKDF with SHA-256 to Derive Encryption Keys
2. 暗号化キーを導出するために、SHA-256を使用したHKDFを使用します

The mitigation uses the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) [RFC5869] to derive output keying material (OKM) from input keying material (IKM). HKDF is used with the SHA-256 hash function [FIPS180]. The derivation includes the DER-encoded AlgorithmIdentifier as the optional info input value. The encoded value includes the ASN.1 tag for SEQUENCE (0x30), the length, and the value. This AlgorithmIdentifier is carried as the parameter to the id-alg-cek-hkdf-sha256 algorithm identifier. If an attacker were to change the originator-provided AlgorithmIdentifier, then the recipient will derive a different content-encryption key or content-authenticated-encryption key.

緩和は、HMACベースの抽出および拡張キー誘導関数(HKDF)[RFC5869]を使用して、入力キーイング材料(IKM)から出力キーイン材(OKM)を導出します。HKDFは、SHA-256ハッシュ関数[FIPS180]で使用されます。導出には、オプションの情報入力値としてder-EncodedアルゴリズムIdentidifierが含まれます。エンコードされた値には、シーケンス(0x30)、長さ、および値のASN.1タグが含まれます。このAlgorithmidentifierは、ID-Alg-CEK-HKDF-SHA256アルゴリズム識別子のパラメーターとして運ばれます。攻撃者がオリジネーターが提供するアルゴリスミンディファイヤーを変更する場合、受信者は異なるコンテンツ暗号化キーまたはコンテンツ容認された暗号化キーを導き出します。

The CMS_CEK_HKDF_SHA256 function uses the HKDF-Extract and HKDF-Expand functions to derive the OKM from the IKM:

CMS_CEK_HKDF_SHA256関数は、HKDF-EXTRACTとHKDF-EXPAND関数を使用して、IKMからOKMを導出します。

Inputs:

入力:

IKM

IKM

input keying material

入力キーイン素材

info

情報

DER-encoded AlgorithmIdentifier

Der-Encoded AlgorithMidentifier

Output:

出力:

OKM

OKM

output keying material (same size as IKM)

出力キーイン素材(IKMと同じサイズ)

The output OKM is calculated as follows:

出力okmは次のように計算されます。

      OKM_SIZE = len(IKM)  /* length in octets */
      IF OKM_SIZE > 8160 THEN raise error

      salt = "The Cryptographic Message Syntax"
      PRK = HKDF-Extract(salt, IKM)

      OKM = HKDF-Expand(PRK, info, OKM_SIZE)
        
3. The id-alg-cek-hkdf-sha256 Algorithm Identifier
3. ID-Alg-CEK-HKDF-SHA256アルゴリズム識別子

The id-alg-cek-hkdf-sha256 algorithm identifier indicates that the CMS_CEK_HKDF_SHA256 function defined in Section 2 is used to derive the content-encryption key or the content-authenticated-encryption key.

ID-Alg-CEK-HKDF-SHA256アルゴリズム識別子は、セクション2で定義されているCMS_CEK_HKDF_SHA256関数が、コンテンツ暗号化キーまたはコンテンツを認識した結晶化キーを導出するために使用されることを示しています。

The following object identifier identifies the id-alg-cek-hkdf-sha256 algorithm:

次のオブジェクト識別子は、id-alg-cek-hkdf-sha256アルゴリズムを識別します。

      id-alg-cek-hkdf-sha256 OBJECT IDENTIFIER ::= { iso(1)
         member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
         id-smime(16) alg(3) 31 }
        

The id-alg-cek-hkdf-sha256 parameters field has an ASN.1 type of AlgorithmIdentifier.

id-alg-cek-hkdf-sha256パラメーターフィールドには、asn.1タイプのアルゴリズムdidentifierがあります。

Using the conventions from [RFC5911], the id-alg-cek-hkdf-sha256 algorithm identifier is defined as:

[rfc5911]の規則を使用して、id-alg-cek-hkdf-sha256アルゴリズム識別子は次のように定義されています。

     ContentEncryptionAlgorithmIdentifier ::=
       AlgorithmIdentifier{CONTENT-ENCRYPTION, { ... } }

     cea-CEKHKDFSHA256 CONTENT-ENCRYPTION ::= {
       IDENTIFIER id-alg-cek-hkdf-sha256
       PARAMS TYPE ContentEncryptionAlgorithmIdentifier ARE required
       SMIME-CAPS { IDENTIFIED BY id-alg-cek-hkdf-sha256 } }
        
4. SMIMECapabilities Attribute Conventions
4. SmimeCapabilities属性の規則

The SMIMECapabilities attribute is defined in Section 2.5.2 of [RFC8551]. An S/MIME client announces the set of cryptographic functions it supports using the SMIMECapabilities attribute.

SmimeCapability属性は、[RFC8551]のセクション2.5.2で定義されています。S/MIMEクライアントは、SmimeCapabilities属性を使用してサポートする暗号化関数のセットを発表します。

If an S/MIME client supports the mechanism in this document, the id-alg-cek-hkdf-sha256 object identifier SHOULD be included in the set of cryptographic functions. The parameter with this encoding MUST be absent.

S/MIMEクライアントがこのドキュメントのメカニズムをサポートする場合、ID-Alg-CEK-HKDF-SHA256オブジェクト識別子を暗号化関数のセットに含める必要があります。このエンコードのパラメーターはない必要があります。

The encoding for id-alg-cek-hkdf-sha256, in hexadecimal, is:

ヘキサデシマルでのid-alg-cek-hkdf-sha256のエンコーディングは次のとおりです。

      30 0d 06 0b 2a 86 48 86 f7 0d 01 09 10 03 1f
        
5. Use of HKDF with SHA-256 with CMS
5. CMSでSHA-256でHKDFを使用します

This section describes the originator and recipient processing to implement this mitigation for each of the CMS encrypting content types.

このセクションでは、CMSの暗号化コンテンツタイプのそれぞれにこの緩和を実装するための発信者と受信者の処理について説明します。

5.1. Enveloped-Data Content Type
5.1. 封筒のコンテンツタイプ

The fourth step of constructing an enveloped-data content type is repeated below from Section 6 of [RFC5652]:

[RFC5652]のセクション6から、封筒のコンテンツタイプを構築する4番目のステップを以下に繰り返します。

4. The content is encrypted with the content-encryption key. Content encryption may require that the content be padded to a multiple of some block size; see Section 6.3.

4. コンテンツは、コンテンツ暗号化キーで暗号化されています。コンテンツの暗号化では、コンテンツをブロックサイズの倍数にパッドでパッドにする必要があります。セクション6.3を参照してください。

To implement this mitigation, the originator expands this step as follows:

この緩和を実装するために、オリジネーターは次のようにこのステップを展開します。

* Include the id-alg-cek-hkdf-sha256 algorithm identifier in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure, and set the contentEncryptionAlgorithm.parameters field to the AlgorithmIdentifier for the content-encryption algorithm that will be used to encrypt the content, including both the algorithm and optional parameters.

* ID-Alg-Alg-CEK-HKDF-SHA256 ALGORITHM ALGORITHM識別子識別子識別子contentencryptionalgorithm.algorithm field of the necryptedcontentinfo構造のフィールドを含め、Cententencryptionalgorithm.parametersフィールドをAlgorithmidmetierに設定します。アルゴリズムとオプションのパラメーターの両方。

* Derive the new content-encryption key (CEK') from the original content-encryption key (CEK) and the ContentEncryptionAlgorithmIdentifier, which is carried in the contentEncryptionAlgorithm.parameters field:

* 元のContent-Incryptionキー(CEK ')を元のContent-Incryption Key(CEK)とContentEncryptionAlgorithMidentifierから導き出します。

   CEK' = CMS_CEK_HKDF_SHA256(CEK, ContentEncryptionAlgorithmIdentifier)
        

* The content is encrypted with the new content-encryption key (CEK'). Content encryption may require that the content be padded to a multiple of some block size; see Section 6.3 of [RFC5652].

* コンテンツは、新しいコンテンツ圧縮キー(CEK ')で暗号化されています。コンテンツの暗号化では、コンテンツをブロックサイズの倍数にパッドでパッドにする必要があります。[RFC5652]のセクション6.3を参照してください。

The presence of the id-alg-cek-hkdf-sha256 algorithm identifier in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure tells the recipient to derive the new content-encryption key (CEK') as shown above, and then use it for decryption of the EncryptedContent. If the id-alg-cek-hkdf-sha256 algorithm identifier is not present in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure, then the recipient uses the original content-encryption key (CEK) for decryption of the EncryptedContent.

ID-Alg-Alg-CEK-HKDF-SHA256 ALGORITHM ALGORITHM ALGORITHM ALGORITHM識別子識別子識別子識別子識別子INCONTENCRIPTIONALGORITHMM.ALGORITHM [暗号化されたContentINFO構造のフィールド]は、レシピエントに、上記のように新しいコンテンツインクリクトキー(CEK ')を導出するように指示し、それを使用して飾り付けるために使用するように指示します。暗号化されたコンテンツの。Id-alg-cek-hkdf-sha256アルゴリズム識別子が、暗号化されたContenctedContentinfo構造のコンテンツクリプチングアルゴリスムフィールドに存在しない場合、レシピエントは元のコンテンツ圧力キー(CEK)を使用して、暗号化されたものの脱片を使用します。

5.2. Encrypted-Data Content Type
5.2. 暗号化されたデータコンテンツタイプ

As specified in Section 8 of [RFC5652], the content-encryption key is managed by other means.

[RFC5652]のセクション8で指定されているように、コンテンツ圧力キーは他の手段によって管理されます。

To implement this mitigation, the originator performs the following:

この緩和を実装するために、オリジネーターは以下を実行します。

* Include the id-alg-cek-hkdf-sha256 algorithm identifier in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure, and set the contentEncryptionAlgorithm.parameters field to the AlgorithmIdentifier for the content-encryption algorithm that will be used to encrypt the content, including both the algorithm and optional parameters.

* ID-Alg-Alg-CEK-HKDF-SHA256 ALGORITHM ALGORITHM識別子識別子識別子contentencryptionalgorithm.algorithm field of the necryptedcontentinfo構造のフィールドを含め、Cententencryptionalgorithm.parametersフィールドをAlgorithmidmetierに設定します。アルゴリズムとオプションのパラメーターの両方。

* Derive the new content-encryption key (CEK') from the original content-encryption key (CEK) and the ContentEncryptionAlgorithmIdentifier, which is carried in the contentEncryptionAlgorithm.parameters field:

* 元のContent-Incryptionキー(CEK ')を元のContent-Incryption Key(CEK)とContentEncryptionAlgorithMidentifierから導き出します。

   CEK' = CMS_CEK_HKDF_SHA256(CEK, ContentEncryptionAlgorithmIdentifier)
        

* The content is encrypted with the new content-encryption key (CEK'). Content encryption may require that the content be padded to a multiple of some block size; see Section 6.3 of [RFC5652].

* コンテンツは、新しいコンテンツ圧縮キー(CEK ')で暗号化されています。コンテンツの暗号化では、コンテンツをブロックサイズの倍数にパッドでパッドにする必要があります。[RFC5652]のセクション6.3を参照してください。

The presence of the id-alg-cek-hkdf-sha256 algorithm identifier in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure tells the recipient to derive the new content-encryption key (CEK') as shown above, and then use it for decryption of the EncryptedContent. If the id-alg-cek-hkdf-sha256 algorithm identifier is not present in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure, then the recipient uses the original content-encryption key (CEK) for decryption of the EncryptedContent.

ID-Alg-Alg-CEK-HKDF-SHA256 ALGORITHM ALGORITHM ALGORITHM ALGORITHM識別子識別子識別子識別子識別子INCONTENCRIPTIONALGORITHMM.ALGORITHM [暗号化されたContentINFO構造のフィールド]は、レシピエントに、上記のように新しいコンテンツインクリクトキー(CEK ')を導出するように指示し、それを使用して飾り付けるために使用するように指示します。暗号化されたコンテンツの。Id-alg-cek-hkdf-sha256アルゴリズム識別子が、暗号化されたContenctedContentinfo構造のコンテンツクリプチングアルゴリスムフィールドに存在しない場合、レシピエントは元のコンテンツ圧力キー(CEK)を使用して、暗号化されたものの脱片を使用します。

5.3. Authenticated-Enveloped-Data Content Type
5.3. 認証されたエンベロープデータのコンテンツタイプ

The fifth step of constructing an authenticated-enveloped-data content type is repeated below from Section 2 of [RFC5083]:

[RFC5083]のセクション2から、認証されたエンベロープDATAコンテンツタイプを構築する5番目のステップを以下に繰り返します。

5. The attributes collected in step 4 are authenticated and the CMS content is authenticated and encrypted with the content-authenticated-encryption key. If the authenticated encryption algorithm requires either the additional authenticated data (AAD) or the content to be padded to a multiple of some block size, then the padding is added as described in Section 6.3 of [CMS].

5. ステップ4で収集された属性は認証されており、CMSコンテンツは認証され、コンテンツ認証の暗号化キーで暗号化されます。認証された暗号化アルゴリズムに、追加の認証データ(AAD)またはコンテンツをブロックサイズの倍数にパッドでパッドにする必要がある場合、[CMS]のセクション6.3で説明されているようにパディングが追加されます。

Note that [CMS] refers to [RFC3852], which has been obsoleted by [RFC5652], but the text in Section 6.3 was unchanged in RFC 5652.

[CMS]は[RFC3852]を指し、[RFC5652]によって廃止されましたが、セクション6.3のテキストはRFC 5652で変更されていませんでした。

To implement this mitigation, the originator expands this step as follows:

この緩和を実装するために、オリジネーターは次のようにこのステップを展開します。

* Include the id-alg-cek-hkdf-sha256 algorithm identifier in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure, and set the contentEncryptionAlgorithm.parameters field to the AlgorithmIdentifier for the content-authenticated-encryption algorithm that will be used for authenticated encryption of the content, including both the algorithm and optional parameters.

* ID-Alg-Alg-CEK-HKDF-SHA256 ALGORITHM ALGORITHM ALGORITHM識別子識別子を含めることを含むContentENCRYPTIONALGORITHM.ALGORITHM ALGORITHM ALGORITHM ALGORITHM ALGORITHM ALGORITHM ALGORITHMTENTINFO構造は、CententEncryptionAlgorithM.ParametersフィールドをAlgorithmidifierに設定します。アルゴリズムとオプションのパラメーターの両方を含むコンテンツ。

* Derive the new content-authenticated-encryption key (CEK') from the original content-authenticated-encryption key (CEK) and the ContentEncryptionAlgorithmIdentifier:

* 元のContent-Authenticated-Incryption Key(CEK)およびContentEncryptionAlgorithMidentifierから新しいコンテンツ容認された暗号化キー(CEK ')を導き出します。

   CEK' = CMS_CEK_HKDF_SHA256(CEK, ContentEncryptionAlgorithmIdentifier)
        

* The attributes collected in step 4 are authenticated and the CMS content is authenticated and encrypted with the new content-authenticated-encryption key (CEK'). If the authenticated encryption algorithm requires either the additional authenticated data (AAD) or the content to be padded to a multiple of some block size, then the padding is added as described in Section 6.3 of [RFC5652].

* ステップ4で収集された属性は認証されており、CMSコンテンツは認証され、新しいコンテンツを認識した暗号化キー(CEK ')で暗号化されます。認証された暗号化アルゴリズムに、追加の認証データ(AAD)またはコンテンツをブロックサイズの倍数にパッドでパッドにする必要がある場合、[RFC5652]のセクション6.3で説明されているようにパディングが追加されます。

The presence of the id-alg-cek-hkdf-sha256 algorithm identifier in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure tells the recipient to derive the new content-authenticated-encryption key (CEK') as shown above, and then use it for authenticated decryption of the EncryptedContent and the authentication of the AAD. If the id-alg-cek-hkdf-sha256 algorithm identifier is not present in the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure, then the recipient uses the original content-authenticated-encryption (CEK) for decryption and authentication of the EncryptedContent and the authentication of the AAD.

ID-Alg-Alg-CEK-HKDF-SHA256 ALGORITHM ALGORITHM ALGORITHM ALGORITHM CONTERCRYPTINGALGORITHM.ALGORITHMフィールドの存在は、暗号化されたContentINFO構造のフィールドフィールドに、上記のように新しいContent-authenticated-Incryption Key(CEK ')を導出するように受信者に指示し、その後、それを使用し、それを使用するようにします。暗号化されたコンテンツの認証された復号化とAADの認証用。Id-alg-cek-hkdf-sha256アルゴリズム識別子がcontentencryptionalgorithm.algorithmフィールドに暗号化されたContentInfo構造のフィールドに存在しない場合、レシピエントは、隔離および誘発性の脱骨および認証のために元のコンテンツ因果関係 - 結晶(CEK)を使用します。AADの認証。

6. Security Considerations
6. セキュリティに関する考慮事項

This mitigation always uses HKDF with SHA-256. One KDF algorithm was selected to avoid the need for negotiation. In the future, if a weakness is found in the KDF algorithm, a new attribute will need to be assigned for use with an alternative KDF algorithm.

この緩和は、常にSHA-256でHKDFを使用します。交渉の必要性を回避するために、1つのKDFアルゴリズムが選択されました。将来、KDFアルゴリズムで弱点が見つかった場合、代替KDFアルゴリズムで使用するために新しい属性を割り当てる必要があります。

If the attacker removes the id-alg-cek-hkdf-sha256 object identifier from the contentEncryptionAlgorithm.algorithm field of the EncryptedContentInfo structure prior to delivery to the recipient, then the recipient will not attempt to derive CEK', which will deny the recipient access to the content but will not assist the attacker in recovering the plaintext content.

攻撃者がID-alg-cek-hkdf-sha256オブジェクト識別子をcontentencryptingalgorithm.algorithm fieldから削除すると、レシピエントに配信する前に暗号化されたContentInfo構造のフィールドを削除すると、レシピエントはcek 'を導き出そうとしません。コンテンツに対しては、攻撃者がプレーンテキストコンテンツを回復するのに役立ちません。

If the attacker changes contentEncryptionAlgorithm.parameters field of the EncryptedContentInfo structure prior to delivery to the recipient, then the recipient will derive a different CEK', which will not assist the attacker in recovering the plaintext content. Providing the object identifier as an input to the key derivation function is sufficient to mitigate the attack described in [RS2023], but this mitigation includes both the object identifier and the parameters to protect against some yet-to-be-discovered attack that only manipulates the parameters.

攻撃者がContentEncryptionalgorithm.parametersをレシピエントに配信する前に暗号化されたContentinfo構造のフィールドを変更した場合、受信者は別のCEKを導き出します。キー導出関数への入力としてオブジェクト識別子を提供することは、[RS2023]に記載されている攻撃を緩和するのに十分ですが、この緩和は、オブジェクト識別子と、まだ操作している攻撃のみを保護するパラメーターの両方を含みます。パラメーター。

Implementations MUST protect the content-encryption keys and content-authenticated-encryption keys, including the CEK and CEK'. Compromise of a content-encryption key may result in disclosure of the associated encrypted content. Compromise of a content-authenticated-encryption key may result in disclosure of the associated encrypted content or allow modification of the authenticated content and the AAD.

実装では、CEKやCEK 'を含むコンテンツ暗号化キーとコンテンツ認証具合キーを保護する必要があります。コンテンツ暗号化キーの妥協は、関連する暗号化されたコンテンツの開示をもたらす可能性があります。コンテンツ認証の暗号化キーの妥協は、関連する暗号化されたコンテンツの開示をもたらすか、認証されたコンテンツとAADの変更を可能にする可能性があります。

Implementations MUST randomly generate content-encryption keys and content-authenticated-encryption keys. Using an inadequate pseudorandom number generator (PRNG) to generate cryptographic keys can result in little or no security. An attacker may find it much easier to reproduce the PRNG environment that produced the keys and then search the resulting small set of possibilities, rather than brute-force searching the whole key space. The generation of quality random numbers is difficult. [RFC4086] offers important guidance on this topic.

実装では、コンテンツエックリプットキーとコンテンツ容認された暗号化キーをランダムに生成する必要があります。不十分な擬似ランダム数ジェネレーター(PRNG)を使用して暗号化キーを生成すると、セキュリティがほとんどまたはまったくなりません。攻撃者は、キーを生成したPRNG環境を再現し、キー空間全体を検索するのではなく、結果として生じる小さな可能性のセットを検索する方がはるかに簡単になる場合があります。品質の乱数の生成は困難です。[RFC4086]は、このトピックに関する重要なガイダンスを提供します。

7. Privacy Considerations
7. プライバシーに関する考慮事項

If the message-digest attribute is included in the AuthAttributes, then the attribute value will contain the unencrypted one-way hash value of the plaintext of the content. Disclosure of this hash value enables content tracking, and it can be used to determine if the content matches one or more candidates. For these reasons, the AuthAttributes SHOULD NOT contain the message-digest attribute.

メッセージダイジェスト属性がauthattributesに含まれている場合、属性値には、コンテンツのプレーンテキストの暗号化されていない一方向のハッシュ値が含まれます。このハッシュ値の開示により、コンテンツの追跡が可能になり、コンテンツが1つ以上の候補者と一致するかどうかを判断するために使用できます。これらの理由により、authattributesにはメッセージdigest属性を含めるべきではありません。

8. Operational Considerations
8. 運用上の考慮事項

CMS is often used to provide encryption in messaging environments, where various forms of unsolicited messages (such as spam and phishing) represent a significant volume of unwanted traffic. Mitigation strategies for unwanted message traffic involve analysis of plaintext message content. When recipients accept unsolicited encrypted messages, they become even more vulnerable to unwanted traffic since many mitigation strategies will be unable to access the plaintext message content. Therefore, software that receives messages that have been encrypted using CMS ought to provide alternate mechanisms to handle the unwanted message traffic. One approach that does not require disclosure of keying material to a server is to reject or discard encrypted messages unless they purport to come from a member of a previously approved originator list.

CMSは、メッセージング環境で暗号化を提供するためによく使用されます。この環境では、さまざまな形式の未承諾メッセージ(スパムやフィッシングなど)は、かなりの量の不要なトラフィックを表しています。不要なメッセージトラフィックの緩和戦略には、プレーンテキストメッセージコンテンツの分析が含まれます。受信者は未承諾の暗号化されたメッセージを受け入れると、多くの緩和戦略がプレーンテキストメッセージコンテンツにアクセスできないため、不要なトラフィックに対してさらに脆弱になります。したがって、CMSを使用して暗号化されたメッセージを受信するソフトウェアは、不要なメッセージトラフィックを処理するための代替メカニズムを提供する必要があります。サーバーへのキーイング素材の開示を必要としない1つのアプローチは、以前に承認されたオリジネーターリストのメンバーから来ると主張しない限り、暗号化されたメッセージを拒否または破棄することです。

9. IANA Considerations
9. IANAの考慮事項

For the ASN.1 module in Appendix A of this document, IANA has assigned the following object identifier (OID) in the "SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)" registry:

このドキュメントの付録AのASN.1モジュールの場合、IANAは「S/MIMEモジュール識別子のSMIセキュリティ(1.2.840.113549.1.9.16.0)」に次のオブジェクト識別子(OID)を割り当てました。

          +=========+=================================+============+
          | Decimal | Description                     | References |
          +=========+=================================+============+
          | 80      | id-mod-CMS-CEK-HKDF-SHA256-2023 | RFC 9709   |
          +---------+---------------------------------+------------+

                                   Table 1
        

IANA has allocated the id-alg-cek-hkdf-sha256 algorithm identifier as specified in Section 3 in the "SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3)" registry as follows:

IANAは、「S/MIMEアルゴリズムのSMIセキュリティ(1.2.840.113549.1.9.16.3)」のセクション3で指定されているID-Alg-CEK-HKDF-SHA256アルゴリズム識別子を割り当てました。

                    +=========+========================+============+
                    | Decimal | Description            | References |
                    +=========+========================+============+
                    | 31      | id-alg-cek-hkdf-sha256 | RFC 9709   |
                    +---------+------------------------+------------+

                                         Table 2
        
10. References
10. 参考文献
10.1. Normative References
10.1. 引用文献
   [FIPS180]  National Institute of Standards and Technology (NIST),
              "Secure Hash Standard (SHS)", FIPS PUB 180-4,
              DOI 10.6028/NIST.FIPS.180-4, August 2015,
              <https://nvlpubs.nist.gov/nistpubs/FIPS/
              NIST.FIPS.180-4.pdf>.
        
   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.
        
   [RFC5083]  Housley, R., "Cryptographic Message Syntax (CMS)
              Authenticated-Enveloped-Data Content Type", RFC 5083,
              DOI 10.17487/RFC5083, November 2007,
              <https://www.rfc-editor.org/info/rfc5083>.
        
   [RFC5652]  Housley, R., "Cryptographic Message Syntax (CMS)", STD 70,
              RFC 5652, DOI 10.17487/RFC5652, September 2009,
              <https://www.rfc-editor.org/info/rfc5652>.
        
   [RFC5869]  Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand
              Key Derivation Function (HKDF)", RFC 5869,
              DOI 10.17487/RFC5869, May 2010,
              <https://www.rfc-editor.org/info/rfc5869>.
        
   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.
        
   [RFC8551]  Schaad, J., Ramsdell, B., and S. Turner, "Secure/
              Multipurpose Internet Mail Extensions (S/MIME) Version 4.0
              Message Specification", RFC 8551, DOI 10.17487/RFC8551,
              April 2019, <https://www.rfc-editor.org/info/rfc8551>.
        
   [X680]     ITU-T, "Information technology -- Abstract Syntax Notation
              One (ASN.1): Specification of basic notation", ITU-T
              Recommendation X.680, ISO/IEC 8824-1:2021, February 2021,
              <https://www.itu.int/rec/T-REC-X.680>.
        
   [X690]     ITU-T, "Information technology -- ASN.1 encoding rules:
              Specification of Basic Encoding Rules (BER), Canonical
              Encoding Rules (CER) and Distinguished Encoding Rules
              (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1-2021,
              February 2021, <https://www.itu.int/rec/T-REC-X.690>.
        
10.2. Informative References
10.2. 参考引用
   [RFC3852]  Housley, R., "Cryptographic Message Syntax (CMS)",
              RFC 3852, DOI 10.17487/RFC3852, July 2004,
              <https://www.rfc-editor.org/info/rfc3852>.
        
   [RFC4086]  Eastlake 3rd, D., Schiller, J., and S. Crocker,
              "Randomness Requirements for Security", BCP 106, RFC 4086,
              DOI 10.17487/RFC4086, June 2005,
              <https://www.rfc-editor.org/info/rfc4086>.
        
   [RFC5084]  Housley, R., "Using AES-CCM and AES-GCM Authenticated
              Encryption in the Cryptographic Message Syntax (CMS)",
              RFC 5084, DOI 10.17487/RFC5084, November 2007,
              <https://www.rfc-editor.org/info/rfc5084>.
        
   [RFC5911]  Hoffman, P. and J. Schaad, "New ASN.1 Modules for
              Cryptographic Message Syntax (CMS) and S/MIME", RFC 5911,
              DOI 10.17487/RFC5911, June 2010,
              <https://www.rfc-editor.org/info/rfc5911>.
        
   [RS2023]   Roth, J. and F. Strenzke, "AEAD-to-CBC Downgrade Attacks
              on CMS", IETF 118 Proceedings, 8 November 2023,
              <https://datatracker.ietf.org/meeting/118/materials/
              slides-118-lamps-attack-against-aead-in-cms>.
        
Appendix A. ASN.1 Module
付録A. ASN.1モジュール

This ASN.1 module builds upon the conventions established in [RFC5911].

このASN.1モジュールは、[RFC5911]で確立された規則の上に構築されます。

   CMS-CEK-HKDF-SHA256-Module-2023
     { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
       id-smime(16) id-mod(0) id-mod-CMS-CEK-HKDF-SHA256-2023(80) }

   DEFINITIONS IMPLICIT TAGS ::= BEGIN

   EXPORTS ALL;

   IMPORTS
     AlgorithmIdentifier{}, CONTENT-ENCRYPTION, SMIME-CAPS
     FROM AlgorithmInformation-2009 -- in RFC 5911
       { iso(1) identified-organization(3) dod(6) internet(1)
         security(5) mechanisms(5) pkix(7) id-mod(0)
         id-mod-algorithmInformation-02(58) } ;


   --
   -- CEK-HKDF-SHA256 Algorithm
   --

   id-alg-cek-hkdf-sha256 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
       us(840) rsadsi(113549) pkcs(1) pkcs-9(9) id-smime(16) alg(3) 31 }

   ContentEncryptionAlgorithmIdentifier ::=
       AlgorithmIdentifier{CONTENT-ENCRYPTION, { ... } }

   cea-CEKHKDFSHA256 CONTENT-ENCRYPTION ::= {
       IDENTIFIER id-alg-cek-hkdf-sha256
       PARAMS TYPE ContentEncryptionAlgorithmIdentifier ARE required
       SMIME-CAPS { IDENTIFIED BY id-alg-cek-hkdf-sha256 } }

   --
   -- S/MIME Capability for CEK-HKDF-SHA256 Algorithm
   --

   SMimeCaps SMIME-CAPS ::= { cap-CMSCEKHKDFSHA256, ... }

   cap-CMSCEKHKDFSHA256 SMIME-CAPS ::=
       { -- No value -- IDENTIFIED BY id-alg-cek-hkdf-sha256 }

   END
        
Appendix B. CMS_CEK_HKDF_SHA256 Function Examples
付録B. CMS_CEK_HKDF_SHA256関数の例

This appendix provides two test vectors for the CMS_CEK_HKDF_SHA256 function.

この付録は、CMS_CEK_HKDF_SHA256関数の2つのテストベクトルを提供します。

B.1. CMS_CEK_HKDF_SHA256 with AES-128-GCM
B.1. cms_cek_hkdf_sha256 with aes-128-gcm

This test vector includes an AlgorithmIdentifier for AES-128-GCM.

このテストベクトルには、AES-128-GCM用のアルゴリズムIdentidifierが含まれています。

   IKM = c702e7d0a9e064b09ba55245fb733cf3

   The AES-128-GCM AlgorithmIdentifier:
    algorithm=2.16.840.1.101.3.4.1.6
    parameters=GCMParameters:
     aes-nonce=0x5c79058ba2f43447639d29e2
     aes-ICVlen is omitted; it indicates the DEFAULT of 12

   DER-encoded AlgorithmIdentifier:
     301b0609608648016503040106300e040c5c79058ba2f43447639d29e2

   OKM = 2124ffb29fac4e0fbbc7d5d87492bff3
        
B.2. CMS_CEK_HKDF_SHA256 with AES-128-CBC
B.2. AES-128-CBCを搭載したCMS_CEK_HKDF_SHA256

This test vector uses includes an AlgorithmIdentifier for AES-128-CBC.

このテストベクトルが使用すると、AES-128-CBC用のアルゴリズムIdentidifierが含まれています。

   IKM = c702e7d0a9e064b09ba55245fb733cf3

   The AES-128-CBC AlgorithmIdentifier:
    algorithm=2.16.840.1.101.3.4.1.2
    parameters=AES-IV=0x651f722ffd512c52fe072e507d72b377

   DER-encoded AlgorithmIdentifier:
     301d06096086480165030401020410651f722ffd512c52fe072e507d72b377

   OKM = 9cd102c52f1e19ece8729b35bfeceb50
        
Acknowledgements
謝辞

Thanks to Mike Ounsworth, Carl Wallace, and Joe Mandel their careful review and constructive comments.

マイク・オンスワース、カール・ウォレス、ジョー・マンデルの慎重なレビューと建設的なコメントに感謝します。

Author's Address
著者の連絡先
   Russ Housley
   Vigil Security, LLC
   Herndon, VA
   United States of America
   Email: housley@vigilsec.com