Internet Engineering Task Force (IETF) R. Housley Request for Comments: 9688 Vigil Security Category: Standards Track November 2024 ISSN: 2070-1721
This document describes the conventions for using the one-way hash functions in the SHA3 family with the Cryptographic Message Syntax (CMS). The SHA3 family can be used as a message digest algorithm, as part of a signature algorithm, as part of a message authentication code, or as part of a Key Derivation Function (KDF).
このドキュメントでは、暗号化メッセージ構文(CMS)を使用して、SHA3ファミリーの一方向ハッシュ関数を使用するための規則について説明します。SHA3ファミリーは、メッセージの署名アルゴリズムの一部として、メッセージ認証コードの一部として、またはキー派生関数(KDF)の一部として、メッセージダイジェストアルゴリズムとして使用できます。
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/rfc9688.
このドキュメントの現在のステータス、任意のERRATA、およびそのフィードバックを提供する方法に関する情報は、https://www.rfc-editor.org/info/rfc9688で取得できます。
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.
著作権(c)2024 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ライセンステキストを含める必要があります。
1. Introduction 1.1. ASN.1 1.2. Terminology 2. Message Digest Algorithms 3. Signature Algorithms 3.1. RSASSA PKCS#1 v1.5 with SHA3 3.2. ECDSA with SHA3 4. Message Authentication Codes Using HMAC and SHA3 5. Key Derivation Functions 5.1. HKDF with SHA3 5.2. KMAC128-KDF and KMAC256-KDF 5.3. KDF2 and KDF3 with SHA3 6. Security Considerations 7. IANA Considerations 8. References 8.1. Normative References 8.2. Informative References Appendix A. ASN.1 Module Acknowledgements Author's Address
The Cryptographic Message Syntax (CMS) [RFC5652] is used to digitally sign, digest, authenticate, or encrypt arbitrary message contents. This specification describes the use of the four one-way hash functions in the SHA3 family (SHA3-224, SHA3-256, SHA3-384, and SHA3-512) [SHA3] with the CMS. In addition, this specification describes the use of these four one-way hash functions with the RSASSA PKCS#1 version 1.5 signature algorithm [RFC8017] and the Elliptic Curve Digital Signature Algorithm (ECDSA) [DSS] with the CMS signed-data content type.
暗号化メッセージ構文(CMS)[RFC5652]は、任意のメッセージコンテンツにデジタル署名、消化、認証、または暗号化するために使用されます。この仕様では、CMSを使用して、SHA3ファミリー(SHA3-224、SHA3-256、SHA3-384、およびSHA3-512)[SHA3-512]での4つの一方向ハッシュ関数の使用について説明します。さらに、この仕様では、RSassa PKCS#1バージョン1.5シグネチャーアルゴリズム[RFC8017]および楕円曲線デジタル署名アルゴリズム(ECDSA)[DSS]を使用したRSassa PKCS#1バージョン1.5署名アルゴリズムでのこれらの4つの片側ハッシュ関数の使用について説明します。。
This document should not be confused with [RFC8702], which defines conventions for using the SHAKE family of SHA3-based extensible output functions with the CMS.
このドキュメントは[RFC8702]と混同しないでください。これは、SHA3ベースの拡張可能な出力関数のシェイクファミリーをCMSで使用するための規則を定義します。
CMS values are generated with ASN.1 [X.680], using the Basic Encoding Rules (BER) and the Distinguished Encoding Rules (DER) [X.690].
CMS値は、基本的なエンコーディングルール(BER)と著名なエンコードルール(der)[x.690]を使用して、asn.1 [x.680]で生成されます。
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]で説明されているように解釈されます。
One-way hash functions are also referred to as message digest algorithms. This section specifies the conventions employed by CMS implementations that support SHA3-224, SHA3-256, SHA3-384, and SHA3-512 [SHA3].
一元配置ハッシュ関数は、メッセージダイジェストアルゴリズムとも呼ばれます。このセクションでは、SHA3-224、SHA3-256、SHA3-384、およびSHA3-512 [SHA3]をサポートするCMS実装で採用されている規則を指定します。
Digest algorithm identifiers are located in the SignedData digestAlgorithms field, the SignerInfo digestAlgorithm field, the DigestedData digestAlgorithm field, and the AuthenticatedData digestAlgorithm field.
ダイジェストアルゴリズム識別子は、SignedData Digestalgorithmsフィールド、SignerInfo Digestalgorithmフィールド、消化器消化器gorithmフィールド、および認証されたData Digestalgorithmフィールドにあります。
Digest values are located in the DigestedData digest field and the Message Digest authenticated attribute. In addition, digest values are input to signature algorithms.
ダイジェスト値は、DigestedData DigestフィールドとMessage Digest Authented Attributeにあります。さらに、ダイジェスト値は署名アルゴリズムに入力されます。
SHA3-224, SHA3-256, SHA3-384, and SHA3-512 produce output values with 224, 256, 384, and 512 bits, respectively. The object identifiers for these four one-way hash functions are as follows:
SHA3-224、SHA3-256、SHA3-384、およびSHA3-512は、それぞれ224、256、384、および512ビットの出力値を生成します。これら4つの一方向ハッシュ関数のオブジェクト識別子は次のとおりです。
hashAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 2 } id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 }
When using the id-sha3-224, id-sha3-s256, id-sha3-384, or id-sha3-512 algorithm identifiers, the parameters field MUST be absent, not NULL but absent.
ID-Sha3-224、ID-Sha3-S256、ID-Sha3-384、またはID-Sha3-512アルゴリズム識別子を使用する場合、パラメーターフィールドはnullではなく存在しない必要があります。
This section specifies the conventions employed by CMS implementations that support the four SHA3 one-way hash functions with the RSASSA PKCS#1 v1.5 signature algorithm [RFC8017] and the ECDSA [DSS] with the CMS signed-data content type.
このセクションでは、RSassa PKCS#1 V1.5シグネチャアルゴリズム[RFC8017]とCMS署名DATAコンテンツタイプを使用してECDSA [DSS]を使用して、4つのSHA3一元配置ハッシュ機能をサポートするCMS実装で採用されている規則を指定します。
Signature algorithm identifiers are located in the SignerInfo signatureAlgorithm field of SignedData. Also, signature algorithm identifiers are located in the SignerInfo signatureAlgorithm field of countersignature attributes.
署名アルゴリズム識別子は、Signerinfo SignatureAlgorithm SignedDataのフィールドにあります。また、署名アルゴリズム識別子は、Signerinfo SignatureAlgorithm bountersignature属性のフィールドにあります。
Signature values are located in the SignerInfo signature field of SignedData. Also, signature values are located in the SignerInfo signature field of countersignature attributes.
署名値は、SigneRinfo SignedDataの署名フィールドにあります。また、署名値は、SignerInfoの署名属性の署名フィールドにあります。
The RSASSA PKCS#1 v1.5 is defined in [RFC8017]. When RSASSA PKCS#1 v1.5 is used in conjunction with one of the SHA3 one-way hash functions, the object identifiers are:
RSassa PKCS#1 V1.5は[RFC8017]で定義されています。RSassa PKCS#1 V1.5がSHA3一元配置ハッシュ関数の1つと併用している場合、オブジェクト識別子は次のとおりです。
OID ::= OBJECT IDENTIFIER sigAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 3 } id-rsassa-pkcs1-v1-5-with-sha3-224 OID ::= { sigAlgs 13 } id-rsassa-pkcs1-v1-5-with-sha3-256 OID ::= { sigAlgs 14 } id-rsassa-pkcs1-v1-5-with-sha3-384 OID ::= { sigAlgs 15 } id-rsassa-pkcs1-v1-5-with-sha3-512 OID ::= { sigAlgs 16 }
The algorithm identifier for RSASSA PKCS#1 v1.5 subject public keys in certificates is specified in [RFC3279], and it is repeated here for convenience:
RSASSA PKCS#1 V1.5証明書の主題パブリックキーのアルゴリズム識別子は[RFC3279]で指定されており、便利なためにここで繰り返されます。
rsaEncryption OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1) 1 }
When the rsaEncryption, id-rsassa-pkcs1-v1-5-with-sha3-224, id-rsassa-pkcs1-v1-5-with-sha3-256, id-rsassa-pkcs1-v1-5-with-sha3-384, and id-rsassa-pkcs1-v1-5-with-sha3-512 algorithm identifiers are used, the AlgorithmIdentifier parameters field MUST contain NULL.
rsaEncryption、id-rsassa-pkcs1-v1-5-with-sha3-224、id-rsassa-pkcs1-v1-5-with-sha3-256、id-rsassa-pkcs1-v1-5-with-sha3-384、およびID-RSASSA-PKCS1-V1-5-WITH-SHA3-512アルゴリズム識別子が使用されているため、アルゴリズムのIdentidifierパラメーターフィールドにはNULLが含まれている必要があります。
When the rsaEncryption algorithm identifier is used, the RSA public key, which is composed of a modulus and a public exponent, MUST be encoded using the RSAPublicKey type as specified in [RFC3279]. The output of this encoding is carried in the certificate subject public key. The definition of RSAPublicKey is repeated here for convenience:
rsaencryptionアルゴリズム識別子を使用する場合、[RFC3279]で指定されているRSapublickeyタイプを使用して、弾性率とパブリック指数で構成されるRSA公開キーをエンコードする必要があります。このエンコーディングの出力は、証明書の件名公開鍵に掲載されています。rsapublickeyの定義は、便利なためにここで繰り返されます。
RSAPublicKey ::= SEQUENCE { modulus INTEGER, -- n publicExponent INTEGER } -- e
When signing, the RSASSA PKCS#1 v1.5 signature algorithm generates a single value. That value is used directly as the signature value.
署名するとき、RSASSA PKCS#1 V1.5署名アルゴリズムは単一の値を生成します。その値は、署名値として直接使用されます。
The ECDSA is defined in [DSS]. When the ECDSA is used in conjunction with one of the SHA3 one-way hash functions, the object identifiers are:
ECDSAは[DSS]で定義されています。ECDSAがSHA3一方向ハッシュ関数の1つと組み合わせて使用される場合、オブジェクト識別子は次のとおりです。
sigAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 3 } id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 }
When the id-sha3-224, id-sha3-s256, id-sha3-384, or id-sha3-512 algorithm identifier is used, the parameters field MUST be absent, not NULL but absent.
ID-Sha3-224、ID-Sha3-S256、ID-SHA3-384、またはID-SHA3-512アルゴリズム識別子が使用される場合、パラメーターフィールドはヌルではなく存在しない必要があります。
When the id-ecdsa-with-sha3-224, id-ecdsa-with-sha3-256, id- ecdsa-with-sha3-384, and id-ecdsa-with-sha3-512 algorithm identifiers are used, the parameters field MUST be absent, not NULL but absent.
id-ecdsa-with-sha3-224、id-ecdsa-with-sha3-256、id-ecdsa-with-sha3-384、およびid-ecdsa-with-sha3-512アルゴリズム識別子が使用されると、パラメーターフィールドが使用されます。ヌルではなく欠席していない必要があります。
The conventions for ECDSA public keys are as specified in [RFC5480]. The ECParameters associated with the ECDSA public key in the signers certificate SHALL apply to the verification of the signature.
ECDSAパブリックキーの規則は、[RFC5480]で指定されているとおりです。署名者証明書のECDSA公開キーに関連付けられたECPARAMETERSは、署名の検証に適用されるものとします。
When signing, the ECDSA algorithm generates two values. These values are commonly referred to as r and s. To easily transfer these two values as one signature, they MUST be ASN.1 encoded using the ECDSA-Sig-Value defined in [RFC3279], which is repeated here for convenience:
署名すると、ECDSAアルゴリズムは2つの値を生成します。これらの値は一般にrおよびsと呼ばれます。これら2つの値を1つの署名として簡単に転送するには、[RFC3279]で定義されたECDSA-SIG値を使用してエンコードする必要があります。
ECDSA-Sig-Value ::= SEQUENCE { r INTEGER, s INTEGER }
This section specifies the conventions employed by CMS implementations that support the Hashed Message Authentication Code (HMAC) [RFC2104] with SHA3 message authentication code (MAC).
このセクションでは、SHA3メッセージ認証コード(MAC)を使用して、ハッシュされたメッセージ認証コード(HMAC)[RFC2104]をサポートするCMS実装で採用されている規則を指定します。
MAC algorithm identifiers are located in the AuthenticatedData macAlgorithm field.
MACアルゴリズム識別子は、AuthenticatedData Macalgorithmフィールドにあります。
MAC values are located in the AuthenticatedData mac field.
Macバルブは、認証されたデータフィールドにあります。
When HMAC is used in conjunction with one of the SHA3 one-way hash functions, the object identifiers are:
HMACがSHA3一方向ハッシュ関数の1つと組み合わせて使用される場合、オブジェクト識別子は次のとおりです。
hashAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 2 } id-hmacWithSHA3-224 OBJECT IDENTIFIER ::= { hashAlgs 13 } id-hmacWithSHA3-256 OBJECT IDENTIFIER ::= { hashAlgs 14 } id-hmacWithSHA3-384 OBJECT IDENTIFIER ::= { hashAlgs 15 } id-hmacWithSHA3-512 OBJECT IDENTIFIER ::= { hashAlgs 16 }
When the id-hmacWithSHA3-224, id-hmacWithSHA3-256, id-hmacWithSHA3-384, and id-hmacWithSHA3-512 algorithm identifiers are used, the parameters field MUST be absent, not NULL but absent.
id-hmacwithsha3-224、id-hmacwithsha3-256、id-hmacwithsha3-384、およびid-hmacwithsha3-512アルゴリズム識別子が使用される場合、パラメーターフィールドは存在しない、nullではなく欠けている必要があります。
The CMS KEMRecipientInfo structure [RFC9629] is one place where algorithm identifiers for key-derivation functions are needed.
CMS KemrecipientInfo構造[RFC9629]は、キー染色機能のアルゴリズム識別子が必要な場所の1つです。
This section assigns four algorithm identifiers that can be employed by CMS implementations that support the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) [RFC5869] with the SHA3 family of hash functions.
このセクションでは、HMACベースの抽出および拡張キー導入関数(HKDF)[RFC5869]をHASH機能のSHA3ファミリーとサポートするCMS実装で使用できる4つのアルゴリズム識別子を割り当てます。
When HKDF is used in conjunction with one of the SHA3 one-way hash functions, the object identifiers are:
HKDFがSHA3一方向ハッシュ関数の1つと組み合わせて使用される場合、オブジェクト識別子は次のとおりです。
id-alg OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) 3 } id-alg-hkdf-with-sha3-224 OBJECT IDENTIFIER ::= { id-alg 32 } id-alg-hkdf-with-sha3-256 OBJECT IDENTIFIER ::= { id-alg 33 } id-alg-hkdf-with-sha3-384 OBJECT IDENTIFIER ::= { id-alg 34 } id-alg-hkdf-with-sha3-512 OBJECT IDENTIFIER ::= { id-alg 35 }
When id-alg-hkdf-with-sha3-224, id-alg-hkdf-with-sha3-256, id-alg-hkdf-with-sha3-384, or id-alg-hkdf-with-sha3-512 is used in an algorithm identifier, the parameters field MUST be absent, not NULL but absent.
id-alg-hkdf-with-sha3-224、id-alg-hkdf-with-sha3-256、id-alg-hkdf-with-sha3-384、またはid-alg-hkdf-with-sha3-512の場合アルゴリズム識別子で使用される、パラメーターフィールドはnullではなく存在しない必要があります。
This section specifies the conventions employed by CMS implementations that employ either KMAC128 or KMAC256 as KDFs as defined in Section 4.4 of [NIST.SP.800-108r1-upd1].
このセクションでは、[nist.sp.800-108r1-upd1]のセクション4.4で定義されているように、KMAC128またはKMAC256のいずれかをKDFSとして使用するCMS実装で採用されている規則を指定します。
KMAC128 and KMAC256 are specified in [NIST.SP.800-185]. The use of KMAC128 and KMAC256 as KDFs are defined as follows:
KMAC128およびKMAC256は[nist.sp.800-185]で指定されています。KDFSとしてのKMAC128およびKMAC256の使用は、次のように定義されています。
KMAC128-KDF is KMAC128(K, X, L, S).
KMAC128-KDFはKMAC128(K、X、L、S)です。
KMAC256-KDF is KMAC256(K, X, L, S).
KMAC256-KDFはKMAC256(K、X、L、S)です。
The parameters to the KMAC128 and KMAC256 functions are:
KMAC128およびKMAC256関数のパラメーターは次のとおりです。
K
k
The input key-derivation key. The length of K MUST be less than 2^2040.
入力キーダリベーションキー。Kの長さは2^2040未満でなければなりません。
X
x
The context, which contains the ASN.1 DER encoding of CMSORIforKEMOtherInfo when the KDF is used with [RFC9629].
KDFが[RFC9629]で使用される場合のCMSORIFORKEMOTHERINFOのasn.1 derエンコードを含むコンテキスト。
L
l
The output length in bits. L MUST be greater than or equal to 0 and MUST be less than 2^2040.
ビットの出力長。lは0以上である必要があり、2^2040未満でなければなりません。
S
s
The optional customization label, such as "KDF" (0x4B4446). The length of S MUST be less than 2^2040.
「KDF」(0x4B4446)などのオプションのカスタマイズラベル。Sの長さは2^2040未満でなければなりません。
The K parameter is known to all authorized parties; it is often the output of a KEM Decap() operation. The X parameter is assembled from data that is transmitted by the originator. The L parameter is determined by the size of the output keying material. The S parameter is optional, and if it is provided by the originator, it is passed in the parameters field of the KDF algorithm identifier.
Kパラメーターは、すべての認定当事者に知られています。多くの場合、KEM decap()操作の出力です。Xパラメーターは、オリジネーターによって送信されるデータから組み立てられます。Lパラメーターは、出力キーイング材料のサイズによって決定されます。Sパラメーターはオプションであり、オリジネーターによって提供される場合、KDFアルゴリズム識別子のパラメーターフィールドに渡されます。
When KMAC128-KDF or KMAC256-KDF is used, the object identifiers are:
KMAC128-KDFまたはKMAC256-KDFを使用する場合、オブジェクト識別子は次のとおりです。
hashAlgs OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 2 } id-kmac128 OBJECT IDENTIFIER ::= { hashAlgs 21 } id-kmac256 OBJECT IDENTIFIER ::= { hashAlgs 22 }
When id-kmac128 or id-kmac256 is used as part of an algorithm identifier, the parameters field MUST be absent when there is no customization label (S). If any value is provided for S, then the parameters field MUST be present and contain the value of S, encoded as Customization.
ID-KMAC128またはID-KMAC256がアルゴリズム識別子の一部として使用される場合、カスタマイズラベルがない場合、パラメーターフィールドがない必要があります。Sに対して値が提供されている場合、パラメーターフィールドが存在し、カスタマイズとしてエンコードされたSの値を含める必要があります。
Customization ::= OCTET STRING
This section specifies the conventions employed by CMS implementations that employ either the KDF2 or KDF3 functions defined in [ANS-X9.44-2007]. The CMS KEMRecipientInfo structure [RFC9629] is one place where algorithm identifiers for key-derivation functions are needed.
このセクションでは、[ANS-X9.44-2007]で定義されているKDF2またはKDF3関数のいずれかを使用するCMS実装で採用されている規則を指定します。CMS KemrecipientInfo構造[RFC9629]は、キー染色機能のアルゴリズム識別子が必要な場所の1つです。
The key-derivation function algorithm identifier is an object identifier and optional parameters. When KDF2 and KDF3 are used, they are identified by the id-kdf-kdf2 and id-kdf-kdf3 object identifiers, respectively. The key-derivation function algorithm identifier parameters carry a message digest algorithm identifier, which indicates the hash function that is being employed. To support SHA3, the key-derivation function algorithm identifier parameters contain an algorithm identifier from Section 2.
キーダリベーション関数アルゴリズム識別子は、オブジェクト識別子とオプションのパラメーターです。KDF2とKDF3を使用すると、ID-KDF-KDF2およびID-KDF-KDF3オブジェクト識別子によってそれぞれ識別されます。キーダリベーション関数アルゴリズム識別子パラメーターには、採用されているハッシュ関数を示すメッセージダイジェストアルゴリズム識別子が含まれます。SHA3をサポートするために、キーダリベーション関数アルゴリズム識別子パラメーターには、セクション2のアルゴリズム識別子が含まれています。
x9-44 OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) tc68(133) country(16) x9(840) x9Standards(9) x9-44(44) } x9-44-components OBJECT IDENTIFIER ::= { x9-44 components(1) } id-kdf-kdf2 OBJECT IDENTIFIER ::= { x9-44-components kdf2(1) } id-kdf-kdf3 OBJECT IDENTIFIER ::= { x9-44-components kdf3(2) }
Implementations must protect the signer's private key. Compromise of the signer's private key permits masquerade.
実装は、署名者の秘密鍵を保護する必要があります。署名者の秘密鍵の妥協は、仮面舞踏会を許可します。
Implementations must protect the key-derivation key. Compromise of the key-derivation key permits others to derive the derived keying material, which would result in loss of confidentiality, integrity, or authentication, depending on the use of the derived keying material.
実装は、キー派生キーを保護する必要があります。キーダリベーションキーの妥協により、他の人は派生したキーイング材料を導き出すことができます。これにより、派生材料の使用に応じて、機密性、完全性、または認証が失われます。
When more than two parties share the same message-authentication key, data origin authentication is not assured. Any party that knows the message-authentication key can compute a valid MAC; therefore, the content could originate from any one of the parties.
2つ以上の当事者が同じメッセージ認証キーを共有している場合、データオリジン認証は保証されません。メッセージ認証キーを知っている当事者は、有効なMacを計算できます。したがって、コンテンツは、当事者のいずれかに由来する可能性があります。
Implementations must randomly generate message-authentication keys and one-time values, such as the a per-message secret number (called the k value) when generating an ECDSA signature. In addition, the generation of public/private key pairs relies on a random numbers. The use of inadequate pseudorandom number generators (PRNGs) to generate cryptographic values can result in little or no security. Instead of brute-force searching the whole key space, 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. The generation of quality random numbers is difficult. [RFC4086] offers important guidance in this area, and Appendix 3 of FIPS PUB 186-4 [DSS] provides some PRNG techniques.
実装は、ECDSA署名を生成するときに、メッセージごとの秘密番号(K値と呼ばれる)など、メッセージと認識キーと1回限りの値をランダムに生成する必要があります。さらに、パブリック/秘密鍵のペアの生成は、乱数に依存しています。暗号化値を生成するために不十分な擬似ランダム数ジェネレーター(PRNGS)を使用すると、セキュリティがほとんどまたはまったくなりません。キースペース全体を検索するブルートフォースの代わりに、攻撃者は、キーを生成したPRNG環境を再現し、結果として生じる小さな可能性のセットを検索する方がはるかに簡単になる場合があります。品質の乱数の生成は困難です。[RFC4086]はこの分野で重要なガイダンスを提供し、FIPS Pub 186-4 [DSS]の付録3はいくつかのPRNG技術を提供します。
Implementers should be aware that cryptographic algorithms become weaker with time. As new cryptanalysis techniques are developed and computing performance improves, the work factor to break a particular cryptographic algorithm will reduce. Therefore, cryptographic algorithm implementations should be modular, allowing new algorithms to be readily inserted. That is, implementers should be prepared to regularly update the set of algorithms in their implementations.
実装者は、暗号化アルゴリズムが時間とともに弱くなることに注意する必要があります。新しい暗号化技術が開発され、コンピューティングのパフォーマンスが向上すると、特定の暗号化アルゴリズムを破る作業要因が減少します。したがって、暗号化アルゴリズムの実装はモジュール式であり、新しいアルゴリズムを容易に挿入できるようにする必要があります。つまり、実装者は、実装のアルゴリズムのセットを定期的に更新する準備をする必要があります。
IANA has assigned one object identifier for the ASN.1 module in Appendix A in the "SMI Security for S/MIME Module Identifiers (1.2.840.113549.1.9.16.0)" registry [IANA-MOD]:
IANAは、「S/MIMEモジュール識別子のSMIセキュリティ(1.2.840.113549.1.9.16.0)」の付録AのASN.1モジュールに1つのオブジェクト識別子を割り当てました。
id-mod-sha3-oids-2023 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) mod(0) 78 }
IANA has assigned four object identifiers for the HKDF using SHA3 algorithm identifiers in the "SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3)" registry [IANA-ALG]:
IANAは、「S/MIMEアルゴリズムのSMIセキュリティ(1.2.840.113549.1.9.9)」のSHA3アルゴリズム識別子を使用してHKDFの4つのオブジェクト識別子を割り当てています。
id-alg-hkdf-with-sha3-224 OBJECT IDENTIFIER ::= { id-alg 32 } id-alg-hkdf-with-sha3-256 OBJECT IDENTIFIER ::= { id-alg 33 } id-alg-hkdf-with-sha3-384 OBJECT IDENTIFIER ::= { id-alg 34 } id-alg-hkdf-with-sha3-512 OBJECT IDENTIFIER ::= { id-alg 35 }
[ANS-X9.44-2007] American National Standards Institute, "Public Key Cryptography for the Financial Services Industry -- Key Establishment Using Integer Factorization Cryptography", ANSI X9.44-2007 (R2017), 2017, <https://webstore.ansi.org/standards/ascx9/ ansix9442007r2017>.
[DSS] National Institute of Standards and Technology, "Digital Signature Standard (DSS)", FIPS PUB 186-5, DOI 10.6028/NIST.FIPS.186-5, 3 February 2023, <https://nvlpubs.nist.gov/nistpubs/FIPS/ NIST.FIPS.186-5.pdf>.
[NIST.SP.800-108r1-upd1] Chen, L., "Recommendation for Key Derivation Using Pseudorandom Functions", NIST SP 800-108r1-upd1, DOI 10.6028/NIST.SP.800-108r1-upd1, 2 February 2024, <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ NIST.SP.800-108r1-upd1.pdf>.
[NIST.SP.800-185] Kelsey, J., Chang, S., and R. Perlner, "SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash", NIST SP 800-185, DOI 10.6028/NIST.SP.800-185, December 2016, <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ NIST.SP.800-185.pdf>.
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- Hashing for Message Authentication", RFC 2104, DOI 10.17487/RFC2104, February 1997, <https://www.rfc-editor.org/info/rfc2104>.
[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>.
[RFC3279] Bassham, L., Polk, W., and R. Housley, "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279, DOI 10.17487/RFC3279, April 2002, <https://www.rfc-editor.org/info/rfc3279>.
[RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R., and T. Polk, "Elliptic Curve Cryptography Subject Public Key Information", RFC 5480, DOI 10.17487/RFC5480, March 2009, <https://www.rfc-editor.org/info/rfc5480>.
[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>.
[RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, DOI 10.17487/RFC5912, June 2010, <https://www.rfc-editor.org/info/rfc5912>.
[RFC8017] Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch, "PKCS #1: RSA Cryptography Specifications Version 2.2", RFC 8017, DOI 10.17487/RFC8017, November 2016, <https://www.rfc-editor.org/info/rfc8017>.
[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>.
[SHA3] National Institute of Standards and Technology, "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions", NIST FIPS 202, DOI 10.6028/NIST.FIPS.202, August 2015, <http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf>.
[X.680] 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-202102-I/en>.
[X.690] 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-202102-I/en>.
[IANA-ALG] IANA, "SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3)", <https://www.iana.org/assignments/smi-numbers/>.
[IANA-MOD] IANA, "SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)", <https://www.iana.org/assignments/smi-numbers/>.
[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>.
[RFC8702] Kampanakis, P. and Q. Dang, "Use of the SHAKE One-Way Hash Functions in the Cryptographic Message Syntax (CMS)", RFC 8702, DOI 10.17487/RFC8702, January 2020, <https://www.rfc-editor.org/info/rfc8702>.
[RFC9629] Housley, R., Gray, J., and T. Okubo, "Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic Message Syntax (CMS)", RFC 9629, DOI 10.17487/RFC9629, August 2024, <https://www.rfc-editor.org/info/rfc9629>.
This section contains the ASN.1 module for the algorithm identifiers using the SHA3 family of hash functions [SHA3]. This module imports types from other ASN.1 modules that are defined in [RFC5912].
このセクションには、Hash関数のSHA3ファミリー[SHA3]を使用したアルゴリズム識別子のASN.1モジュールが含まれています。このモジュールは、[RFC5912]で定義されている他のASN.1モジュールからタイプをインポートします。
SHA3-OIDs-2023 { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) id-mod-sha3-oids-2023(78) } DEFINITIONS IMPLICIT TAGS ::= BEGIN EXPORTS ALL; IMPORTS AlgorithmIdentifier{}, DIGEST-ALGORITHM, SIGNATURE-ALGORITHM, KEY-DERIVATION, MAC-ALGORITHM FROM AlgorithmInformation-2009 -- [RFC5912] { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-algorithmInformation-02(58) } mda-sha1, pk-rsa, pk-ec, ECDSA-Sig-Value FROM PKIXAlgs-2009 -- [RFC5912] { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-algorithms2008-02(56) } mda-sha224, mda-sha256, mda-sha384, mda-sha512 FROM PKIX1-PSS-OAEP-Algorithms-2009 -- [RFC5912] { iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-rsa-pkalgs-02(54) } ; -- -- Alias -- OID ::= OBJECT IDENTIFIER -- -- Object Identifier Arcs -- nistAlgorithm OID ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) 4 } hashAlgs OID ::= { nistAlgorithm 2 } sigAlgs OID ::= { nistAlgorithm 3 } x9-44 OID ::= { iso(1) identified-organization(3) tc68(133) country(16) x9(840) x9Standards(9) x9-44(44) } x9-44-components OID ::= { x9-44 components(1) } id-alg OID ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) 3 } -- -- Message Digest Algorithms -- id-sha3-224 OID ::= { hashAlgs 7 } id-sha3-256 OID ::= { hashAlgs 8 } id-sha3-384 OID ::= { hashAlgs 9 } id-sha3-512 OID ::= { hashAlgs 10 } mda-sha3-224 DIGEST-ALGORITHM ::= { IDENTIFIER id-sha3-224 PARAMS ARE absent } mda-sha3-256 DIGEST-ALGORITHM ::= { IDENTIFIER id-sha3-256 PARAMS ARE absent } mda-sha3-384 DIGEST-ALGORITHM ::= { IDENTIFIER id-sha3-384 PARAMS ARE absent } mda-sha3-512 DIGEST-ALGORITHM ::= { IDENTIFIER id-sha3-512 PARAMS ARE absent } HashAlgorithm ::= AlgorithmIdentifier{ DIGEST-ALGORITHM, { HashAlgorithms } } HashAlgorithms DIGEST-ALGORITHM ::= { mda-sha3-224 | mda-sha3-256 | mda-sha3-384 | mda-sha3-512, ... } -- -- Signature Algorithms -- id-rsassa-pkcs1-v1-5-with-sha3-224 OID ::= { sigAlgs 13 } id-rsassa-pkcs1-v1-5-with-sha3-256 OID ::= { sigAlgs 14 } id-rsassa-pkcs1-v1-5-with-sha3-384 OID ::= { sigAlgs 15 } id-rsassa-pkcs1-v1-5-with-sha3-512 OID ::= { sigAlgs 16 } id-ecdsa-with-sha3-224 OID ::= { sigAlgs 9 } id-ecdsa-with-sha3-256 OID ::= { sigAlgs 10 } id-ecdsa-with-sha3-384 OID ::= { sigAlgs 11 } id-ecdsa-with-sha3-512 OID ::= { sigAlgs 12 } sa-rsaWithSHA3-224 SIGNATURE-ALGORITHM ::= { IDENTIFIER id-rsassa-pkcs1-v1-5-with-sha3-224 PARAMS TYPE NULL ARE required HASHES { mda-sha3-224 } PUBLIC-KEYS { pk-rsa } SMIME-CAPS {IDENTIFIED BY id-rsassa-pkcs1-v1-5-with-sha3-224 } } sa-rsaWithSHA3-256 SIGNATURE-ALGORITHM ::= { IDENTIFIER id-rsassa-pkcs1-v1-5-with-sha3-256 PARAMS TYPE NULL ARE required HASHES { mda-sha3-256 } PUBLIC-KEYS { pk-rsa } SMIME-CAPS {IDENTIFIED BY id-rsassa-pkcs1-v1-5-with-sha3-256 } } sa-rsaWithSHA3-384 SIGNATURE-ALGORITHM ::= { IDENTIFIER id-rsassa-pkcs1-v1-5-with-sha3-384 PARAMS TYPE NULL ARE required HASHES { mda-sha3-384 } PUBLIC-KEYS { pk-rsa } SMIME-CAPS {IDENTIFIED BY id-rsassa-pkcs1-v1-5-with-sha3-384 } } sa-rsaWithSHA3-512 SIGNATURE-ALGORITHM ::= { IDENTIFIER id-rsassa-pkcs1-v1-5-with-sha3-512 PARAMS TYPE NULL ARE required HASHES { mda-sha3-512 } PUBLIC-KEYS { pk-rsa } SMIME-CAPS {IDENTIFIED BY id-rsassa-pkcs1-v1-5-with-sha3-512 } } sa-ecdsaWithSHA3-224 SIGNATURE-ALGORITHM ::= { IDENTIFIER id-ecdsa-with-sha3-224 VALUE ECDSA-Sig-Value PARAMS ARE absent HASHES { mda-sha3-224 } PUBLIC-KEYS { pk-ec } SMIME-CAPS {IDENTIFIED BY id-ecdsa-with-sha3-224 } } sa-ecdsaWithSHA3-256 SIGNATURE-ALGORITHM ::= { IDENTIFIER id-ecdsa-with-sha3-256 VALUE ECDSA-Sig-Value PARAMS ARE absent HASHES { mda-sha3-256 } PUBLIC-KEYS { pk-ec } SMIME-CAPS {IDENTIFIED BY id-ecdsa-with-sha3-256 } } sa-ecdsaWithSHA3-384 SIGNATURE-ALGORITHM ::= { IDENTIFIER id-ecdsa-with-sha3-384 VALUE ECDSA-Sig-Value PARAMS ARE absent HASHES { mda-sha3-384 } PUBLIC-KEYS { pk-ec } SMIME-CAPS {IDENTIFIED BY id-ecdsa-with-sha3-384 } } sa-ecdsaWithSHA3-512 SIGNATURE-ALGORITHM ::= { IDENTIFIER id-ecdsa-with-sha3-512 VALUE ECDSA-Sig-Value PARAMS ARE absent HASHES { mda-sha3-512 } PUBLIC-KEYS { pk-ec } SMIME-CAPS {IDENTIFIED BY id-ecdsa-with-sha3-512 } } SignatureAlg ::= AlgorithmIdentifier{ SIGNATURE-ALGORITHM, { SignatureAlgs } } SignatureAlgs SIGNATURE-ALGORITHM ::= { sa-rsaWithSHA3-224 | sa-rsaWithSHA3-256 | sa-rsaWithSHA3-384 | sa-rsaWithSHA3-512 | sa-ecdsaWithSHA3-224 | sa-ecdsaWithSHA3-256 | sa-ecdsaWithSHA3-384 | sa-ecdsaWithSHA3-512, ... } -- -- Message Authentication Codes -- id-hmacWithSHA3-224 OID ::= { hashAlgs 13 } id-hmacWithSHA3-256 OID ::= { hashAlgs 14 } id-hmacWithSHA3-384 OID ::= { hashAlgs 15 } id-hmacWithSHA3-512 OID ::= { hashAlgs 16 } maca-hmacWithSHA3-224 MAC-ALGORITHM ::= { IDENTIFIER id-hmacWithSHA3-224 PARAMS ARE absent IS-KEYED-MAC TRUE SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA3-224 } } maca-hmacWithSHA3-256 MAC-ALGORITHM ::= { IDENTIFIER id-hmacWithSHA3-256 PARAMS ARE absent IS-KEYED-MAC TRUE SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA3-256 } } maca-hmacWithSHA3-384 MAC-ALGORITHM ::= { IDENTIFIER id-hmacWithSHA3-384 PARAMS ARE absent IS-KEYED-MAC TRUE SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA3-384 } } maca-hmacWithSHA3-512 MAC-ALGORITHM ::= { IDENTIFIER id-hmacWithSHA3-512 PARAMS ARE absent IS-KEYED-MAC TRUE SMIME-CAPS {IDENTIFIED BY id-hmacWithSHA3-512 } } MACAlgorithm ::= AlgorithmIdentifier{ MAC-ALGORITHM, { MACAlgorithms } } MACAlgorithms MAC-ALGORITHM ::= { maca-hmacWithSHA3-224 | maca-hmacWithSHA3-256 | maca-hmacWithSHA3-384 | maca-hmacWithSHA3-512, ... } -- -- Key Derivation Algorithms -- id-alg-hkdf-with-sha3-224 OID ::= { id-alg 32 } id-alg-hkdf-with-sha3-256 OID ::= { id-alg 33 } id-alg-hkdf-with-sha3-384 OID ::= { id-alg 34 } id-alg-hkdf-with-sha3-512 OID ::= { id-alg 35 } id-kmac128 OID ::= { hashAlgs 21 } id-kmac256 OID ::= { hashAlgs 22 } id-kdf-kdf2 OID ::= { x9-44-components kdf2(1) } id-kdf-kdf3 OID ::= { x9-44-components kdf3(2) } kda-hkdf-with-sha3-224 KEY-DERIVATION ::= { IDENTIFIER id-alg-hkdf-with-sha3-224 PARAMS ARE absent -- No S/MIME caps defined -- } kda-hkdf-with-sha3-256 KEY-DERIVATION ::= { IDENTIFIER id-alg-hkdf-with-sha3-256 PARAMS ARE absent -- No S/MIME caps defined -- } kda-hkdf-with-sha3-384 KEY-DERIVATION ::= { IDENTIFIER id-alg-hkdf-with-sha3-384 PARAMS ARE absent -- No S/MIME caps defined -- } kda-hkdf-with-sha3-512 KEY-DERIVATION ::= { IDENTIFIER id-alg-hkdf-with-sha3-512 PARAMS ARE absent -- No S/MIME caps defined -- } kda-kmac128 KEY-DERIVATION ::= { IDENTIFIER id-kmac128 PARAMS TYPE Customization ARE optional -- PARAMS are absent when Customization is ''H -- -- No S/MIME caps defined -- } kda-kmac256 KEY-DERIVATION ::= { IDENTIFIER id-kmac256 PARAMS TYPE Customization ARE optional -- PARAMS are absent when Customization is ''H -- -- No S/MIME caps defined -- } kda-kdf2 KEY-DERIVATION ::= { IDENTIFIER id-kdf-kdf2 PARAMS TYPE KDF2-HashFunction ARE required -- No S/MIME caps defined -- } kda-kdf3 KEY-DERIVATION ::= { IDENTIFIER id-kdf-kdf3 PARAMS TYPE KDF3-HashFunction ARE required -- No S/MIME caps defined -- } Customization ::= OCTET STRING KDF2-HashFunction ::= AlgorithmIdentifier { DIGEST-ALGORITHM, { KDF2-HashFunctions } } KDF2-HashFunctions DIGEST-ALGORITHM ::= { X9-HashFunctions, ... } KDF3-HashFunction ::= AlgorithmIdentifier { DIGEST-ALGORITHM, { KDF3-HashFunctions } } KDF3-HashFunctions DIGEST-ALGORITHM ::= { X9-HashFunctions, ... } X9-HashFunctions DIGEST-ALGORITHM ::= { mda-sha1 | mda-sha224 | mda-sha256 | mda-sha384 | mda-sha512 | mda-sha3-224 | mda-sha3-256 | mda-sha3-384 | mda-sha3-512, ... } KeyDerivationFunction ::= AlgorithmIdentifier{ KEY-DERIVATION, { KeyDevAlgs } } KeyDevAlgs KEY-DERIVATION ::= { kda-hkdf-with-sha3-224 | kda-hkdf-with-sha3-256 | kda-hkdf-with-sha3-384 | kda-hkdf-with-sha3-512 | kda-kmac128 | kda-kmac256 | kda-kdf2 | kda-kdf3, ... } END
Thanks to Daniel Van Geest and Sean Turner for their careful review and thoughtful comments.
ダニエル・ヴァン・ジストとショーン・ターナーの慎重なレビューと思慮深いコメントに感謝します。
Thanks to Sara Kerman, Quynh Dang, and David Cooper for getting the object identifiers assigned for KMAC128 and KMAC256.
Sara Kerman、Quynh Dang、およびDavid Cooperに、KMAC128およびKMAC256にオブジェクト識別子を割り当ててくれてありがとう。
Russ Housley Vigil Security, LLC Herndon, VA United States of America Email: housley@vigilsec.com