rfc9629.original | rfc9629.txt | |||
---|---|---|---|---|
LAMPS Working Group R. Housley | Internet Engineering Task Force (IETF) R. Housley | |||
Internet-Draft Vigil Security | Request for Comments: 9629 Vigil Security | |||
Updates: 5652 (if approved) J. Gray | Updates: 5652 J. Gray | |||
Intended status: Standards Track Entrust | Category: Standards Track Entrust | |||
Expires: 9 August 2024 大久保 智史 (T. Okubo) | ISSN: 2070-1721 大久保 智史 (T. Okubo) | |||
DigiCert | Penguin Securities Pte. Ltd. | |||
6 February 2024 | August 2024 | |||
Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic | Using Key Encapsulation Mechanism (KEM) Algorithms in the Cryptographic | |||
Message Syntax (CMS) | Message Syntax (CMS) | |||
draft-ietf-lamps-cms-kemri-08 | ||||
Abstract | Abstract | |||
The Cryptographic Message Syntax (CMS) supports key transport and key | The Cryptographic Message Syntax (CMS) supports key transport and key | |||
agreement algorithms. In recent years, cryptographers have been | agreement algorithms. In recent years, cryptographers have been | |||
specifying Key Encapsulation Mechanism (KEM) algorithms, including | specifying Key Encapsulation Mechanism (KEM) algorithms, including | |||
quantum-secure KEM algorithms. This document defines conventions for | quantum-secure KEM algorithms. This document defines conventions for | |||
the use of KEM algorithms by the originator and recipients to encrypt | the use of KEM algorithms by the originator and recipients to encrypt | |||
and decrypt CMS content. This document updates RFC 5652. | and decrypt CMS content. This document updates RFC 5652. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 9 August 2024. | 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/rfc9629. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
1.2. ASN.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2. ASN.1 | |||
1.3. CMS Version Numbers . . . . . . . . . . . . . . . . . . . 4 | 1.3. CMS Version Numbers | |||
2. KEM Processing Overview . . . . . . . . . . . . . . . . . . . 4 | 2. KEM Processing Overview | |||
3. KEM Recipient Information . . . . . . . . . . . . . . . . . . 5 | 3. KEM Recipient Information | |||
4. KEM Algorithm Identifier . . . . . . . . . . . . . . . . . . 7 | 4. KEM Algorithm Identifier | |||
5. Key Derivation . . . . . . . . . . . . . . . . . . . . . . . 7 | 5. Key Derivation | |||
6. ASN.1 Modules . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6. ASN.1 Modules | |||
6.1. KEMAlgorithmInformation-2023 ASN.1 Module . . . . . . . . 9 | 6.1. KEMAlgorithmInformation-2023 ASN.1 Module | |||
6.2. CMS-KEMRecipientInfo ASN.1 Module . . . . . . . . . . . . 10 | 6.2. CMS-KEMRecipientInfo-2023 ASN.1 Module | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 7. Security Considerations | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | 8. IANA Considerations | |||
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 15 | 9. References | |||
References . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 9.1. Normative References | |||
Normative References . . . . . . . . . . . . . . . . . . . . . 15 | 9.2. Informative References | |||
Informative References . . . . . . . . . . . . . . . . . . . . 16 | Acknowledgements | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
This document updates the The Cryptographic Message Syntax (CMS) | This document updates "Cryptographic Message Syntax (CMS)" [RFC5652]. | |||
[RFC5652]. | ||||
The Cryptographic Message Syntax (CMS) enveloped-data content type | The CMS enveloped-data content type [RFC5652] and the CMS | |||
[RFC5652] and the CMS authenticated-enveloped-data content type | authenticated-enveloped-data content type [RFC5083] support both key | |||
[RFC5083] support both key transport and key agreement algorithms to | transport and key agreement algorithms to establish the key used to | |||
establish the key used to encrypt and decrypt the content. In recent | encrypt and decrypt the content. In recent years, cryptographers | |||
years, cryptographers have been specifying Key Encapsulation | have been specifying Key Encapsulation Mechanism (KEM) algorithms, | |||
Mechanism (KEM) algorithms, including quantum-secure KEM algorithms. | including quantum-secure KEM algorithms. This document defines | |||
This document defines conventions for the use of KEM algorithms for | conventions for the use of KEM algorithms for the CMS enveloped-data | |||
the CMS enveloped-data content type and the CMS authenticated- | content type and the CMS authenticated-enveloped-data content type. | |||
enveloped-data content type. | ||||
A KEM algorithm is a one-pass (store-and-forward) mechanism for | A KEM algorithm is a one-pass (store-and-forward) mechanism for | |||
transporting random keying material to a recipient using the | transporting random keying material to a recipient using the | |||
recipient's public key. This means that the originator and the | recipient's public key. This means that the originator and the | |||
recipients do not need to be online at the same time. The | recipients do not need to be online at the same time. The | |||
recipient's private key is needed to recover the random keying | recipient's private key is needed to recover the random keying | |||
material, which is then treated as a pairwise shared secret (ss) | material, which is then treated as a pairwise shared secret (ss) | |||
between the originator and recipient. | between the originator and recipient. | |||
The KEMRecipientInfo structure defined in this document uses the | The KEMRecipientInfo structure defined in this document uses the | |||
pairwise shared secret as an input to a key derivation function (KDF) | pairwise shared secret as an input to a key derivation function (KDF) | |||
to produce a pairwise key-encryption key (KEK). Then, the pairwise | to produce a pairwise key-encryption key (KEK). Then, the pairwise | |||
KEK is used to encrypt a content-encryption key (CEK) or a content- | KEK is used to encrypt a content-encryption key (CEK) or a content- | |||
authenticated-encryption key (CAEK) for that recipient. All of the | authenticated-encryption key (CAEK) for that recipient. All of the | |||
recipients recieve the same CEK or CAEK. | recipients receive the same CEK or CAEK. | |||
In this environment, security depends on three things. First, the | In this environment, security depends on three things. First, the | |||
KEM algorithm must be secure against adaptive chosen ciphertext | KEM algorithm must be secure against adaptive chosen ciphertext | |||
attacks. Second, the key-encryption algorithm must provide | attacks. Second, the key-encryption algorithm must provide | |||
confidentiality and integrity protection. Third, the choices of the | confidentiality and integrity protection. Third, the choices of the | |||
KDF and the key-encryption algorithm need to provide the same level | KDF and the key-encryption algorithm need to provide the same level | |||
of security as the KEM algorithm. | of security as the KEM algorithm. | |||
A KEM algorithm provides three functions: | A KEM algorithm provides three functions: | |||
* KeyGen() -> (pk, sk): | KeyGen() -> (pk, sk): | |||
Generate the public key (pk) and a private key (sk). | Generate the public key (pk) and a private key (sk). | |||
* Encapsulate(pk) -> (ct, ss): | Encapsulate(pk) -> (ct, ss): | |||
Given the recipient's public key (pk), produce a ciphertext (ct) | Given the recipient's public key (pk), produce a ciphertext (ct) | |||
to be passed to the recipient and shared secret (ss) for the | to be passed to the recipient and shared secret (ss) for the | |||
originator. | originator. | |||
* Decapsulate(sk, ct) -> ss: | Decapsulate(sk, ct) -> ss: | |||
Given the private key (sk) and the ciphertext (ct), produce the | Given the private key (sk) and the ciphertext (ct), produce the | |||
shared secret (ss) for the recipient. | shared secret (ss) for the recipient. | |||
To support a particular KEM algorithm, the CMS originator MUST | To support a particular KEM algorithm, the CMS originator MUST | |||
implement the KEM Encapsulate() function. | implement the KEM Encapsulate() function. | |||
To support a particular KEM algorithm, the CMS recipient MUST | To support a particular KEM algorithm, the CMS recipient MUST | |||
implement the KEM KeyGen() function and the KEM Decapsulate() | implement the KEM KeyGen() function and the KEM Decapsulate() | |||
function. The recipient's public key is usually carried in a | function. The recipient's public key is usually carried in a | |||
certificate [RFC5280]. | certificate [RFC5280]. | |||
skipping to change at page 4, line 18 ¶ | skipping to change at line 150 ¶ | |||
Encoding Rules (BER) and the Distinguished Encoding Rules (DER) | Encoding Rules (BER) and the Distinguished Encoding Rules (DER) | |||
[X.690]. | [X.690]. | |||
1.3. CMS Version Numbers | 1.3. CMS Version Numbers | |||
As described in Section 1.3 of [RFC5652], the major data structures | As described in Section 1.3 of [RFC5652], the major data structures | |||
include a version number as the first item in the data structure. | include a version number as the first item in the data structure. | |||
The version number is intended to avoid ASN.1 decode errors. Some | The version number is intended to avoid ASN.1 decode errors. Some | |||
implementations do not check the version number prior to attempting a | implementations do not check the version number prior to attempting a | |||
decode, and then if a decode error occurs, the version number is | decode, and then if a decode error occurs, the version number is | |||
checked as part of the error handling routine. This is a reasonable | checked as part of the error-handling routine. This is a reasonable | |||
approach; it places error processing outside of the fast path. This | approach; it places error processing outside of the fast path. This | |||
approach is also forgiving when an incorrect version number is used | approach is also forgiving when an incorrect version number is used | |||
by the originator. | by the originator. | |||
Whenever the structure is updated, a higher version number will be | Whenever the structure is updated, a higher version number will be | |||
assigned. However, to ensure maximum interoperability, the higher | assigned. However, to ensure maximum interoperability, the higher | |||
version number is only used when the new syntax feature is employed. | version number is only used when the new syntax feature is employed. | |||
That is, the lowest version number that supports the generated syntax | That is, the lowest version number that supports the generated syntax | |||
is used. | is used. | |||
skipping to change at page 4, line 43 ¶ | skipping to change at line 175 ¶ | |||
type [RFC5652], or the authenticated-enveloped-data content type | type [RFC5652], or the authenticated-enveloped-data content type | |||
[RFC5083]. For simplicity, the terminology associated with the | [RFC5083]. For simplicity, the terminology associated with the | |||
enveloped-data content type will be used in this overview. | enveloped-data content type will be used in this overview. | |||
The originator randomly generates the CEK (or the CAEK), and then all | The originator randomly generates the CEK (or the CAEK), and then all | |||
recipients obtain that key as an encrypted object within the | recipients obtain that key as an encrypted object within the | |||
KEMRecipientInfo encryptedKey field explained in Section 3. All | KEMRecipientInfo encryptedKey field explained in Section 3. All | |||
recipients use the originator-generated symmetric key to decrypt the | recipients use the originator-generated symmetric key to decrypt the | |||
CMS message. | CMS message. | |||
A KEM algorithm and a key-derivation function are used to securely | A KEM algorithm and a key derivation function are used to securely | |||
establish a pairwise symmetric key-encryption key (KEK), which is | establish a pairwise symmetric KEK, which is used to encrypt the | |||
used to encrypt the originator-generated CEK (or the CAEK). | originator-generated CEK (or the CAEK). | |||
In advance, each recipient uses the KEM KeyGen() function to create a | In advance, each recipient uses the KEM KeyGen() function to create a | |||
key pair. The recipient will often obtain a certificate [RFC5280] | key pair. The recipient will often obtain a certificate [RFC5280] | |||
that includes the newly generated public key. Whether the public key | that includes the newly generated public key. Whether the public key | |||
is certified or not, the newly generated public key is made available | is certified or not, the newly generated public key is made available | |||
to potential originators. | to potential originators. | |||
The originator establishes the CEK (or the CAEK) using these steps: | The originator establishes the CEK (or the CAEK) using these steps: | |||
1. The CEK (or the CAEK) is generated at random. | 1. The CEK (or the CAEK) is generated at random. | |||
2. For each recipient: | 2. For each recipient: | |||
* The recipient's public key is used with the KEM Encapsulate() | * The recipient's public key is used with the KEM Encapsulate() | |||
function to obtain a pairwise shared secret (ss) and the | function to obtain a pairwise shared secret (ss) and the | |||
ciphertext for the recipient. | ciphertext for the recipient. | |||
* The key-derivation function is used to derive a pairwise | * The key derivation function is used to derive a pairwise | |||
symmetric KEK, from the pairwise ss and other data that is | symmetric KEK, from the pairwise ss and other data that is | |||
optionally sent in the ukm field. | optionally sent in the ukm field. | |||
* The KEK is used to encrypt the CEK for this recipient. | * The KEK is used to encrypt the CEK for this recipient. | |||
3. The CEK (or the CAEK) is used to encrypt the content for all | 3. The CEK (or the CAEK) is used to encrypt the content for all | |||
recipients. | recipients. | |||
The recipient obtains the CEK (or the CAEK) using these steps: | The recipient obtains the CEK (or the CAEK) using these steps: | |||
1. The recipient's private key and the ciphertext are used with the | 1. The recipient's private key and the ciphertext are used with the | |||
KEM Decapsulate() function to obtain a pairwise ss. | KEM Decapsulate() function to obtain a pairwise ss. | |||
2. The key-derivation function is used to derive a pairwise | 2. The key derivation function is used to derive a pairwise | |||
symmetric KEK, from the pairwise ss and other data that is | symmetric KEK, from the pairwise ss and other data that is | |||
optionally sent in the ukm field. | optionally sent in the ukm field. | |||
3. The KEK is used to decrypt the CEK (or the CAEK) . | 3. The KEK is used to decrypt the CEK (or the CAEK). | |||
4. The CEK (or the CAEK) is used to decrypt the content. | 4. The CEK (or the CAEK) is used to decrypt the content. | |||
3. KEM Recipient Information | 3. KEM Recipient Information | |||
This document defines KEMRecipientInfo for use with KEM algorithms. | This document defines KEMRecipientInfo for use with KEM algorithms. | |||
As specified in Section 6.2.5 of [RFC5652], recipient information for | As specified in Section 6.2.5 of [RFC5652], recipient information for | |||
additional key management techniques are represented in the | additional key management techniques is represented in the | |||
OtherRecipientInfo type, and they are each identified by a unique | OtherRecipientInfo type. Each key management technique is identified | |||
ASN.1 object identifier. | by a unique ASN.1 object identifier. | |||
The object identifier associated with KEMRecipientInfo is: | The object identifier associated with KEMRecipientInfo is: | |||
id-ori OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) | id-ori OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) | |||
rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) 13 } | rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) 13 } | |||
id-ori-kem OBJECT IDENTIFIER ::= { id-ori 3 } | id-ori-kem OBJECT IDENTIFIER ::= { id-ori 3 } | |||
The KEMRecipientInfo type is: | The KEMRecipientInfo type is: | |||
skipping to change at page 6, line 49 ¶ | skipping to change at line 278 ¶ | |||
certificate. For originator processing, implementations MUST | certificate. For originator processing, implementations MUST | |||
support at least one of these alternatives. | support at least one of these alternatives. | |||
kem identifies the KEM algorithm, and any associated parameters, | kem identifies the KEM algorithm, and any associated parameters, | |||
used by the originator. The KEMAlgorithmIdentifier is described | used by the originator. The KEMAlgorithmIdentifier is described | |||
in Section 4. | in Section 4. | |||
kemct is the ciphertext produced by the KEM Encapsulate() function | kemct is the ciphertext produced by the KEM Encapsulate() function | |||
for this recipient. | for this recipient. | |||
kdf identifies the key-derivation algorithm, and any associated | kdf identifies the key derivation function, and any associated | |||
parameters, used by the originator to generate the KEK. The | parameters, used by the originator to generate the KEK. The | |||
KeyDerivationAlgorithmIdentifier is described in Section 10.1.6 of | KeyDerivationAlgorithmIdentifier is described in Section 10.1.6 of | |||
[RFC5652]. | [RFC5652]. | |||
kekLength is the size of the KEK in octets. This value is one of | kekLength is the size of the KEK in octets. This value is one of | |||
the inputs to the key-derivation function. The upper bound on the | the inputs to the key derivation function. The upper bound on the | |||
integer value is provided to make it clear to implementers that | integer value is provided to make it clear to implementers that | |||
support for very large integer values is not needed. | support for very large integer values is not needed. | |||
Implementations MUST confirm that the value provided is consistent | Implementations MUST confirm that the value provided is consistent | |||
with the key-encryption algorithm identified in the wrap field | with the key-encryption algorithm identified in the wrap field | |||
below. | below. | |||
ukm is optional user keying material. When the ukm value is | ukm is optional user keying material. When the ukm value is | |||
provided, it is used as part of the info structure described in | provided, it is used as part of the info structure described in | |||
Section 5 to provide a context input to the key-derivation | Section 5 to provide a context input to the key derivation | |||
function. For example, the ukm value could include a nonce, | function. For example, the ukm value could include a nonce, | |||
application-specific context information, or an identifier for the | application-specific context information, or an identifier for the | |||
originator. A KEM algorithm may place requirements on the ukm | originator. A KEM algorithm may place requirements on the ukm | |||
value. Implementations that do not support the ukm field SHOULD | value. Implementations that do not support the ukm field SHOULD | |||
gracefully discontinue processing when the ukm field is present. | gracefully discontinue processing when the ukm field is present. | |||
Note that this requirement expands the original purpose of the ukm | Note that this requirement expands the original purpose of the ukm | |||
described in Section 10.2.6 of [RFC5652]; it is not limited to | described in Section 10.2.6 of [RFC5652]; it is not limited to | |||
being used with key agreement algorithms. | being used with key agreement algorithms. | |||
wrap identifies a key-encryption algorithm used to encrypt the | wrap identifies a key-encryption algorithm used to encrypt the | |||
CEK. The KeyEncryptionAlgorithmIdentifier is described in | CEK. The KeyEncryptionAlgorithmIdentifier is described in | |||
Section 10.1.3 of [RFC5652]. | Section 10.1.3 of [RFC5652]. | |||
encryptedKey is the result of encrypting the CEK or the content- | encryptedKey is the result of encrypting the CEK or the CAEK (the | |||
authenticated-encryption key [RFC5083] (CAEK) with the KEK. | content-authenticated-encryption key, as discussed in [RFC5083]) | |||
EncryptedKey is an OCTET STRING. | with the KEK. EncryptedKey is an OCTET STRING. | |||
4. KEM Algorithm Identifier | 4. KEM Algorithm Identifier | |||
The KEMAlgorithmIdentifier type identifies a KEM algorithm used to | The KEMAlgorithmIdentifier type identifies a KEM algorithm used to | |||
establish a pairwise ss. The details of establishment depend on the | establish a pairwise ss. The details of establishment depend on the | |||
KEM algorithm used. A Key derivation algorithm is used to transform | KEM algorithm used. A key derivation function is used to transform | |||
the pairwise ss value into a KEK. | the pairwise ss value into a KEK. | |||
KEMAlgorithmIdentifier ::= AlgorithmIdentifier{ KEM-ALGORITHM, {...} } | KEMAlgorithmIdentifier ::= AlgorithmIdentifier{ KEM-ALGORITHM, {...} } | |||
5. Key Derivation | 5. Key Derivation | |||
This section describes the conventions of using the KDF to compute | This section describes the conventions of using the KDF to compute | |||
the KEK for KEMRecipientInfo. For simplicity, the terminology used | the KEK for KEMRecipientInfo. For simplicity, the terminology used | |||
in the HKDF specification [RFC5869] is used here. | in the HKDF specification [RFC5869] is used here. | |||
Many KDFs internally employ a one-way hash function. When this is | Many KDFs internally employ a one-way hash function. When this is | |||
the case, the hash function that is used is indirectly indicated by | the case, the hash function that is used is indirectly indicated by | |||
the KeyDerivationAlgorithmIdentifier. Other KDFs internally employ | the KeyDerivationAlgorithmIdentifier. Other KDFs internally employ | |||
an encryption algorithm. When this is the case, the encryption that | an encryption algorithm. When this is the case, the encryption that | |||
is used is indirectly indicated by the | is used is indirectly indicated by the | |||
KeyDerivationAlgorithmIdentifier. | KeyDerivationAlgorithmIdentifier. | |||
The KDF inputs are: | The KDF inputs are as follows: | |||
IKM is the input key material. It is a symmetric secret input to | IKM is the input keying material. It is a symmetric secret input | |||
the KDF which may use a hash function or an encryption algorithm | to the KDF. The KDF may use a hash function or an encryption | |||
to generate a pseudorandom key. The algorithm used to derive the | algorithm to generate a pseudorandom key. The algorithm used to | |||
IKM is dependent on the algorithm identified in the | derive the IKM is dependent on the algorithm identified in the | |||
KeyDerivationAlgorithmIdentifier. | KeyDerivationAlgorithmIdentifier. | |||
L is the length of the output keying material in octets which is | L is the length of the output keying material in octets. L is | |||
identified in the kekLength of the KEMRecipientInfo. The value is | identified in the kekLength of the KEMRecipientInfo. The value is | |||
dependent on the key-encryption algorithm that is used which is | dependent on the key-encryption algorithm used; the key-encryption | |||
identified in the KeyEncryptionAlgorithmIdentifier. | algorithm is identified in the KeyEncryptionAlgorithmIdentifier. | |||
info is contextual input to the KDF. The DER-encoded | info is contextual input to the KDF. The DER-encoded | |||
CMSORIforKEMOtherInfo structure is created from elements of the | CMSORIforKEMOtherInfo structure is created from elements of the | |||
KEMRecipientInfo structure. CMSORIforKEMOtherInfo is defined as: | KEMRecipientInfo structure. CMSORIforKEMOtherInfo is defined as: | |||
CMSORIforKEMOtherInfo ::= SEQUENCE { | CMSORIforKEMOtherInfo ::= SEQUENCE { | |||
wrap KeyEncryptionAlgorithmIdentifier, | wrap KeyEncryptionAlgorithmIdentifier, | |||
kekLength INTEGER (1..65535), | kekLength INTEGER (1..65535), | |||
ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL } | ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL } | |||
The CMSORIforKEMOtherInfo structure contains: | The CMSORIforKEMOtherInfo structure contains the following: | |||
wrap identifies a key-encryption algorithm; the output of the key- | wrap identifies a key-encryption algorithm; the output of the key | |||
derivation function will be used as a key for this algorithm. | derivation function will be used as a key for this algorithm. | |||
kekLength is the length of the KEK in octets; the output of the | kekLength is the length of the KEK in octets; the output of the | |||
key-derivation function will be exactly this size. | key derivation function will be exactly this size. | |||
ukm is optional user keying material; see Section 3. | ukm is optional user keying material; see Section 3. | |||
The KDF output is: | The KDF output is as follows: | |||
OKM is the output keying material with the exact length of L | OKM is the output keying material with the exact length of L | |||
octets. The OKM is the KEK that is used to encrypt the CEK or the | octets. The OKM is the KEK that is used to encrypt the CEK or the | |||
CAEK. | CAEK. | |||
An acceptable KDF MUST accept an IKM, L, and info as inputs. An | An acceptable KDF MUST accept an IKM, L, and info as inputs. An | |||
acceptable KDF MAY also accept a salt input value, which is carried | acceptable KDF MAY also accept a salt input value, which is carried | |||
as a parameter to the KeyDerivationAlgorithmIdentifier if present. | as a parameter to the KeyDerivationAlgorithmIdentifier if present. | |||
All of these inputs MUST influence the output of the KDF. | All of these inputs MUST influence the output of the KDF. | |||
6. ASN.1 Modules | 6. ASN.1 Modules | |||
This section provides two ASN.1 modules [X.680]. The first ASN.1 | This section provides two ASN.1 modules [X.680]. The first ASN.1 | |||
module is an extension to the AlgorithmInformation-2009 module in | module is an extension to the AlgorithmInformation-2009 module | |||
[RFC5912], and it defines the KEM-ALGORITHM CLASS. The second ASN.1 | discussed in [RFC5912]; it defines the KEM-ALGORITHM CLASS. The | |||
module defines the structures needed to use KEM Algorithms with CMS | second ASN.1 module defines the structures needed to use KEM | |||
[RFC5652]. | algorithms with CMS [RFC5652]. | |||
The first ASN.1 module uses EXPLICIT tagging, and the second ASN.1 | The first ASN.1 module uses EXPLICIT tagging, and the second ASN.1 | |||
module uses IMPLICIT tagging. | module uses IMPLICIT tagging. | |||
Both ASN.1 modules follow the conventions established in [RFC5911], | Both ASN.1 modules follow the conventions established in [RFC5911], | |||
[RFC5912], and [RFC6268]. | [RFC5912], and [RFC6268]. | |||
6.1. KEMAlgorithmInformation-2023 ASN.1 Module | 6.1. KEMAlgorithmInformation-2023 ASN.1 Module | |||
<CODE BEGINS> | <CODE BEGINS> | |||
KEMAlgorithmInformation-2023 | KEMAlgorithmInformation-2023 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-kemAlgorithmInformation-2023(TBD3) } | id-mod-kemAlgorithmInformation-2023(109) } | |||
DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS EXPLICIT TAGS ::= | |||
BEGIN | BEGIN | |||
-- EXPORTS ALL; | -- EXPORTS ALL; | |||
IMPORTS | IMPORTS | |||
ParamOptions, PUBLIC-KEY, SMIME-CAPS | ParamOptions, PUBLIC-KEY, SMIME-CAPS | |||
FROM AlgorithmInformation-2009 | FROM AlgorithmInformation-2009 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-algorithmInformation-02(58) } ; | id-mod-algorithmInformation-02(58) } ; | |||
-- KEM-ALGORITHM | -- KEM-ALGORITHM | |||
-- | -- | |||
-- Describes the basic properties of a KEM algorithm | -- Describes the basic properties of a KEM algorithm | |||
-- | -- | |||
-- Suggested prefixes for KEM algorithm objects is: kema- | -- Suggested prefix for KEM algorithm objects is: kema- | |||
-- | -- | |||
-- &id - contains the OID identifying the KEM algorithm | -- &id - contains the OID identifying the KEM algorithm | |||
-- &Value - if present, contains a type definition for the kemct; | -- &Value - if present, contains a type definition for the kemct; | |||
-- if absent, implies that no ASN.1 encoding is | -- if absent, implies that no ASN.1 encoding is | |||
-- performed on the kemct value | -- performed on the kemct value | |||
-- &Params - if present, contains the type for the algorithm | -- &Params - if present, contains the type for the algorithm | |||
-- parameters; if absent, implies no parameters | -- parameters; if absent, implies no parameters | |||
-- ¶mPresence - parameter presence requirement | -- ¶mPresence - parameter presence requirement | |||
-- &PublicKeySet - specifies which public keys are used with | -- &PublicKeySet - specifies which public keys are used with | |||
-- this algorithm | -- this algorithm | |||
skipping to change at page 10, line 45 ¶ | skipping to change at line 460 ¶ | |||
[VALUE &Value] | [VALUE &Value] | |||
[PARAMS [TYPE &Params] ARE ¶mPresence] | [PARAMS [TYPE &Params] ARE ¶mPresence] | |||
[PUBLIC-KEYS &PublicKeySet] | [PUBLIC-KEYS &PublicKeySet] | |||
[UKM [TYPE &Ukm] ARE &ukmPresence] | [UKM [TYPE &Ukm] ARE &ukmPresence] | |||
[SMIME-CAPS &smimeCaps] | [SMIME-CAPS &smimeCaps] | |||
} | } | |||
END | END | |||
<CODE ENDS> | <CODE ENDS> | |||
6.2. CMS-KEMRecipientInfo ASN.1 Module | 6.2. CMS-KEMRecipientInfo-2023 ASN.1 Module | |||
RFC Editor: Please replace "[THISRFC]" with the the number assigned | ||||
to this document. | ||||
<CODE BEGINS> | <CODE BEGINS> | |||
CMS-KEMRecipientInfo-2023 | CMS-KEMRecipientInfo-2023 | |||
{ iso(1) member-body(2) us(840) rsadsi(113549) | { iso(1) member-body(2) us(840) rsadsi(113549) | |||
pkcs(1) pkcs-9(9) smime(16) modules(0) | pkcs(1) pkcs-9(9) smime(16) modules(0) | |||
id-mod-cms-kemri-2023(TBD2) } | id-mod-cms-kemri-2023(77) } | |||
DEFINITIONS IMPLICIT TAGS ::= | DEFINITIONS IMPLICIT TAGS ::= | |||
BEGIN | BEGIN | |||
-- EXPORTS ALL; | -- EXPORTS ALL; | |||
IMPORTS | IMPORTS | |||
OTHER-RECIPIENT, CMSVersion, RecipientIdentifier, | OTHER-RECIPIENT, CMSVersion, RecipientIdentifier, | |||
EncryptedKey, KeyDerivationAlgorithmIdentifier, | EncryptedKey, KeyDerivationAlgorithmIdentifier, | |||
KeyEncryptionAlgorithmIdentifier, UserKeyingMaterial | KeyEncryptionAlgorithmIdentifier, UserKeyingMaterial | |||
FROM CryptographicMessageSyntax-2010 -- [RFC6268] | FROM CryptographicMessageSyntax-2010 -- RFC 6268 | |||
{ iso(1) member-body(2) us(840) rsadsi(113549) | { iso(1) member-body(2) us(840) rsadsi(113549) | |||
pkcs(1) pkcs-9(9) smime(16) modules(0) | pkcs(1) pkcs-9(9) smime(16) modules(0) | |||
id-mod-cms-2009(58) } | id-mod-cms-2009(58) } | |||
KEM-ALGORITHM | KEM-ALGORITHM | |||
FROM KEMAlgorithmInformation-2023 -- [THISRFC] | FROM KEMAlgorithmInformation-2023 -- RFC 9629 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-kemAlgorithmInformation-2023(TBD3) } | id-mod-kemAlgorithmInformation-2023(109) } | |||
AlgorithmIdentifier{} | AlgorithmIdentifier{} | |||
FROM AlgorithmInformation-2009 -- [RFC5912] | FROM AlgorithmInformation-2009 -- RFC 5912 | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) id-mod(0) | security(5) mechanisms(5) pkix(7) id-mod(0) | |||
id-mod-algorithmInformation-02(58) } ; | id-mod-algorithmInformation-02(58) } ; | |||
-- | -- | |||
-- OtherRecipientInfo Types (ori-) | -- OtherRecipientInfo Types (ori-) | |||
-- | -- | |||
SupportedOtherRecipInfo OTHER-RECIPIENT ::= { ori-KEM, ... } | SupportedOtherRecipInfo OTHER-RECIPIENT ::= { ori-KEM, ... } | |||
skipping to change at page 12, line 32 ¶ | skipping to change at line 538 ¶ | |||
CMSORIforKEMOtherInfo ::= SEQUENCE { | CMSORIforKEMOtherInfo ::= SEQUENCE { | |||
wrap KeyEncryptionAlgorithmIdentifier, | wrap KeyEncryptionAlgorithmIdentifier, | |||
kekLength INTEGER (1..65535), | kekLength INTEGER (1..65535), | |||
ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL } | ukm [0] EXPLICIT UserKeyingMaterial OPTIONAL } | |||
END | END | |||
<CODE ENDS> | <CODE ENDS> | |||
7. Security Considerations | 7. Security Considerations | |||
The Security Considerations of [RFC5652] are applicable to this | The security considerations discussed in [RFC5652] are applicable to | |||
document. | this document. | |||
To be appropriate for use with this specification, the KEM algorithm | To be appropriate for use with this specification, the KEM algorithm | |||
MUST explicitly be designed to be secure when the public key is used | MUST explicitly be designed to be secure when the public key is used | |||
many times. For example, a KEM algorithm with a single-use public | many times. For example, a KEM algorithm with a single-use public | |||
key is not appropriate because the public key is expected to be | key is not appropriate, because the public key is expected to be | |||
carried in a long-lived certificate [RFC5280] and used over and over. | carried in a long-lived certificate [RFC5280] and used over and over. | |||
Thus, KEM algorithms that offer indistinguishability under adaptive | Thus, KEM algorithms that offer indistinguishability under adaptive | |||
chosen ciphertext attack (IND-CCA2) security are appropriate. A | chosen ciphertext attack (IND-CCA2) security are appropriate. A | |||
common design pattern for obtaining IND-CCA2 security with public key | common design pattern for obtaining IND-CCA2 security with public key | |||
reuse is to apply the Fujisaki-Okamoto (FO) transform [FO] or a | reuse is to apply the Fujisaki-Okamoto (FO) transform [FO] or a | |||
variant of the FO transform [HHK]. | variant of the FO transform [HHK]. | |||
The KDF SHOULD offer at least the security level of the KEM. | The KDF SHOULD offer at least the security level of the KEM. | |||
The choice of the key-encryption algorithm and the size of the KEK | The choice of the key-encryption algorithm and the size of the KEK | |||
SHOULD be made based on the security level provided by the KEM. The | SHOULD be made based on the security level provided by the KEM. The | |||
key-encryption algorithm and the KEK SHOULD at least have the | key-encryption algorithm and the KEK SHOULD offer at least the | |||
security level of the KEM. | security level of the KEM. | |||
KEM algorithms do not provide data origin authentication; therefore, | KEM algorithms do not provide data origin authentication; therefore, | |||
when a KEM algorithm is used with the authenticated-data content | when a KEM algorithm is used with the authenticated-data content | |||
type, the contents are delivered with integrity from an unknown | type, the contents are delivered with integrity from an unknown | |||
source. | source. | |||
Implementations MUST protect the KEM private key, the KEK, the CEK | Implementations MUST protect the KEM private key, the KEK, and the | |||
(or the CAEK). Compromise of the KEM private key may result in the | CEK (or the CAEK). Compromise of the KEM private key may result in | |||
disclosure of all contents protected with that KEM private key. | the disclosure of all contents protected with that KEM private key. | |||
However, compromise of the KEK, the CEK, or the CAEK may result in | However, compromise of the KEK, the CEK, or the CAEK may result in | |||
disclosure of the encrypted content of a single message. | disclosure of the encrypted content of a single message. | |||
The KEM produces the IKM input value for the KDF. This IKM value | The KEM produces the IKM input value for the KDF. This IKM value | |||
MUST NOT be reused for any other purpose. Likewise, any random value | MUST NOT be reused for any other purpose. Likewise, any random value | |||
used by the KEM algorithm to produce the shared secret or its | used by the KEM algorithm to produce the shared secret or its | |||
encapsulation MUST NOT be reused for any other purpose. That is, the | encapsulation MUST NOT be reused for any other purpose. That is, the | |||
originator MUST generate a fresh KEM shared secret for each recipient | originator MUST generate a fresh KEM shared secret for each recipient | |||
in the KEMRecipientInfo structure, including any random value used by | in the KEMRecipientInfo structure, including any random value used by | |||
the KEM algorithm to produce the KEM shared secret. In addition, the | the KEM algorithm to produce the KEM shared secret. In addition, the | |||
skipping to change at page 13, line 34 ¶ | skipping to change at line 588 ¶ | |||
value used by the KEM algorithm to produce the KEM shared secret, | value used by the KEM algorithm to produce the KEM shared secret, | |||
after constructing the entry in the KEMRecipientInfo structure for | after constructing the entry in the KEMRecipientInfo structure for | |||
the corresponding recipient. Similarly, the recipient MUST discard | the corresponding recipient. Similarly, the recipient MUST discard | |||
the KEM shared secret, including any random value used by the KEM | the KEM shared secret, including any random value used by the KEM | |||
algorithm to produce the KEM shared secret, after constructing the | algorithm to produce the KEM shared secret, after constructing the | |||
KEK from the KEMRecipientInfo structure. | KEK from the KEMRecipientInfo structure. | |||
Implementations MUST randomly generate content-encryption keys, | Implementations MUST randomly generate content-encryption keys, | |||
content-authenticated-encryption keys, and message-authentication | content-authenticated-encryption keys, and message-authentication | |||
keys. Also, the generation of KEM key pairs relies on random | keys. Also, the generation of KEM key pairs relies on random | |||
numbers. The use of inadequate pseudo-random number generators | numbers. The use of inadequate pseudorandom number generators | |||
(PRNGs) to generate these keys can result in little or no security. | (PRNGs) to generate these keys can result in little or no security. | |||
An attacker may find it much easier to reproduce the PRNG environment | An attacker may find it much easier to reproduce the PRNG environment | |||
that produced the keys, searching the resulting small set of | that produced the keys, searching the resulting small set of | |||
possibilities, rather than brute force searching the whole key space. | possibilities, rather than brute-force searching the whole key space. | |||
The generation of quality random numbers is difficult. [RFC4086] | The generation of quality random numbers is difficult. [RFC4086] | |||
offers important guidance in this area. | offers important guidance in this area. | |||
If the cipher and key sizes used for the key-encryption and the | If the cipher and key sizes used for the key-encryption algorithm and | |||
content-encryption algorithms are different, the effective security | the content-encryption algorithm are different, the effective | |||
is determined by the weaker of the two algorithms. If, for example, | security is determined by the weaker of the two algorithms. If, for | |||
the content is encrypted with AES-CBC using a 128-bit CEK, and the | example, the content is encrypted with AES-CBC using a 128-bit CEK | |||
CEK is wrapped with AES-KEYWRAP using a 256-bit KEK, then at most 128 | and the CEK is wrapped with AES-KEYWRAP using a 256-bit KEK, then at | |||
bits of protection is provided. | most 128 bits of protection is provided. | |||
If the cipher and key sizes used for the key-encryption and the | If the cipher and key sizes used for the key-encryption algorithm and | |||
content-authenticated-encryption algorithms are different, the | the content-authenticated-encryption algorithm are different, the | |||
effective security is determined by the weaker of the two algorithms. | effective security is determined by the weaker of the two algorithms. | |||
If, for example, the content is encrypted with AES-GCM using a | If, for example, the content is encrypted with AES-GCM using a | |||
128-bit CAEK, and the CAEK is wrapped with AES-KEYWRAP using a | 128-bit CAEK and the CAEK is wrapped with AES-KEYWRAP using a 192-bit | |||
192-bit KEK, then at most 128 bits of protection is provided. | KEK, then at most 128 bits of protection is provided. | |||
If the cipher and key sizes used for the key-encryption and the | If the cipher and key sizes used for the key-encryption algorithm and | |||
message-authentication algorithms are different, the effective | the message-authentication algorithm are different, the effective | |||
security is determined by the weaker of the two algorithms. If, for | security is determined by the weaker of the two algorithms. If, for | |||
example, the content is authenticated with HMAC-SHA256 using a | example, the content is authenticated with HMAC-SHA256 using a | |||
512-bit message-authentication key, and the message-authentication | 512-bit message-authentication key and the message-authentication key | |||
key is wrapped with AES-KEYWRAP using a 256-bit KEK, then at most 256 | is wrapped with AES-KEYWRAP using a 256-bit KEK, then at most 256 | |||
bits of protection is provided. | bits of protection is provided. | |||
Implementers should be aware that cryptographic algorithms, including | Implementers should be aware that cryptographic algorithms, including | |||
KEM algorithms, become weaker with time. As new cryptoanalysis | KEM algorithms, become weaker with time. As new cryptoanalysis | |||
techniques are developed and computing capabilities advance, the work | techniques are developed and computing capabilities advance, the work | |||
factor to break a particular cryptographic algorithm will be reduced. | factor to break a particular cryptographic algorithm will be reduced. | |||
As a result, cryptographic algorithm implementations should be | As a result, cryptographic algorithm implementations should be | |||
modular, allowing new algorithms to be readily inserted. That is, | modular, allowing new algorithms to be readily inserted. That is, | |||
implementers should be prepared for the set of supported algorithms | implementers should be prepared for the set of supported algorithms | |||
to change over time. | to change over time. | |||
8. IANA Considerations | 8. IANA Considerations | |||
For KEMRecipientInfo in Section 3, IANA has assigned the object | For KEMRecipientInfo as defined in Section 3, IANA has assigned the | |||
identifier (OID) for (1.2.840.113549.1.9.16.13.3) in the "SMI | following OID in the "SMI Security for S/MIME Other Recipient Info | |||
Security for S/MIME Other Recipient Info Identifiers" registry | Identifiers (1.2.840.113549.1.9.16.13)" registry: | |||
(1.2.840.113549.1.9.16.13), and the Description for the new OID has | ||||
been set to "id-ori-kem". | ||||
For the ASN.1 Module in Section 6.1, IANA is requested to assign an | +=========+=============+============+ | |||
object identifier (OID) for the module identifier to replace TBD3. | | Decimal | Description | References | | |||
The OID for the module should be allocated in the "SMI Security for | +=========+=============+============+ | |||
PKIX Module Identifier" registry (1.3.6.1.5.5.7.0), and the | | 3 | id-ori-kem | RFC 9629 | | |||
Description for the new OID should be set to "id-mod- | +---------+-------------+------------+ | |||
kemAlgorithmInformation-2023". | ||||
For the ASN.1 Module in Section 6.2, IANA is requested to assign an | Table 1 | |||
object identifier (OID) for the module identifier to replace TBD2. | ||||
The OID for the module should be allocated in the "SMI Security for | ||||
S/MIME Module Identifier" registry (1.2.840.113549.1.9.16.0), and the | ||||
Description for the new OID should be set to "id-mod-cms-kemri-2023". | ||||
Acknowledgements | For the ASN.1 module defined in Section 6.1, IANA has assigned the | |||
following OID in the "SMI Security for PKIX Module Identifier" | ||||
registry (1.3.6.1.5.5.7.0): | ||||
Our thanks to Burt Kaliski for his guidance and design review. | +=========+=====================================+============+ | |||
| Decimal | Description | References | | ||||
+=========+=====================================+============+ | ||||
| 109 | id-mod-kemAlgorithmInformation-2023 | RFC 9629 | | ||||
+---------+-------------------------------------+------------+ | ||||
Our thanks to Carl Wallace for his careful review of the ASN.1 | Table 2 | |||
modules. | ||||
Our thanks to Hendrik Brockhaus, Jonathan Hammell, Mike Jenkins, | For the ASN.1 module defined in Section 6.2, IANA has assigned the | |||
David von Oheimb, Francois Rousseau, and Linda Dunbar for their | following OID in the "SMI Security for S/MIME Module Identifier | |||
careful review and thoughtful comments. | (1.2.840.113549.1.9.16.0)" registry: | |||
References | +=========+=======================+============+ | |||
| Decimal | Description | References | | ||||
+=========+=======================+============+ | ||||
| 77 | id-mod-cms-kemri-2023 | RFC 9629 | | ||||
+---------+-----------------------+------------+ | ||||
Normative References | Table 3 | |||
9. References | ||||
9.1. Normative References | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC5083] Housley, R., "Cryptographic Message Syntax (CMS) | [RFC5083] Housley, R., "Cryptographic Message Syntax (CMS) | |||
Authenticated-Enveloped-Data Content Type", RFC 5083, | Authenticated-Enveloped-Data Content Type", RFC 5083, | |||
DOI 10.17487/RFC5083, November 2007, | DOI 10.17487/RFC5083, November 2007, | |||
<https://www.rfc-editor.org/rfc/rfc5083>. | <https://www.rfc-editor.org/info/rfc5083>. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
<https://www.rfc-editor.org/rfc/rfc5280>. | <https://www.rfc-editor.org/info/rfc5280>. | |||
[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | |||
RFC 5652, DOI 10.17487/RFC5652, September 2009, | RFC 5652, DOI 10.17487/RFC5652, September 2009, | |||
<https://www.rfc-editor.org/rfc/rfc5652>. | <https://www.rfc-editor.org/info/rfc5652>. | |||
[RFC5911] Hoffman, P. and J. Schaad, "New ASN.1 Modules for | [RFC5911] Hoffman, P. and J. Schaad, "New ASN.1 Modules for | |||
Cryptographic Message Syntax (CMS) and S/MIME", RFC 5911, | Cryptographic Message Syntax (CMS) and S/MIME", RFC 5911, | |||
DOI 10.17487/RFC5911, June 2010, | DOI 10.17487/RFC5911, June 2010, | |||
<https://www.rfc-editor.org/rfc/rfc5911>. | <https://www.rfc-editor.org/info/rfc5911>. | |||
[RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | [RFC5912] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | |||
Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | Public Key Infrastructure Using X.509 (PKIX)", RFC 5912, | |||
DOI 10.17487/RFC5912, June 2010, | DOI 10.17487/RFC5912, June 2010, | |||
<https://www.rfc-editor.org/rfc/rfc5912>. | <https://www.rfc-editor.org/info/rfc5912>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[X.680] ITU-T, "Information technology -- Abstract Syntax Notation | [X.680] ITU-T, "Information technology - Abstract Syntax Notation | |||
One (ASN.1): Specification of basic notation", ITU-T | One (ASN.1): Specification of basic notation", ITU-T | |||
Recommendation X.680, ISO/IEC 8824-1:2021, February 2021, | Recommendation X.680, ISO/IEC 8824-1:2021, February 2021, | |||
<https://www.itu.int/rec/T-REC-X.680>. | <https://www.itu.int/rec/T-REC-X.680>. | |||
[X.690] ITU-T, "Information technology -- ASN.1 encoding rules: | [X.690] ITU-T, "Information technology - ASN.1 encoding rules: | |||
Specification of Basic Encoding Rules (BER), Canonical | Specification of Basic Encoding Rules (BER), Canonical | |||
Encoding Rules (CER) and Distinguished Encoding Rules | Encoding Rules (CER) and Distinguished Encoding Rules | |||
(DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1:2021, | (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1:2021, | |||
February 2021, <https://www.itu.int/rec/T-REC-X.680>. | February 2021, <https://www.itu.int/rec/T-REC-X.690>. | |||
Informative References | 9.2. Informative References | |||
[FO] Fujisaki, E. and T. Okamoto, "Secure Integration of | [FO] Fujisaki, E. and T. Okamoto, "Secure Integration of | |||
Asymmetric and Symmetric Encryption Schemes", Springer | Asymmetric and Symmetric Encryption Schemes", Springer | |||
Science and Business Media LLC, Journal of Cryptology vol. | Science and Business Media LLC, Journal of Cryptology, | |||
26, no. 1, pp. 80-101, DOI 10.1007/s00145-011-9114-1, | vol. 26, no. 1, pp. 80-101, DOI 10.1007/s00145-011-9114-1, | |||
December 2011, | December 2011, | |||
<https://doi.org/10.1007/s00145-011-9114-1>. | <https://doi.org/10.1007/s00145-011-9114-1>. | |||
[HHK] Hofheinz, D., Hövelmanns, K., and E. Kiltz, "A Modular | [HHK] Hofheinz, D., Hövelmanns, K., and E. Kiltz, "A Modular | |||
Analysis of the Fujisaki-Okamoto Transformation", Springer | Analysis of the Fujisaki-Okamoto Transformation", Springer | |||
International Publishing, Theory of Cryptography pp. | International Publishing, Theory of Cryptography, TCC | |||
341-371, DOI 10.1007/978-3-319-70500-2_12, | 2017, Lecture Notes in Computer Science, vol. 10677, pp. | |||
ISBN ["9783319704999", "9783319705002"], 2017, | 341-371, Print ISBN 9783319704999, Online ISBN | |||
<https://doi.org/10.1007/978-3-319-70500-2_12>. | 9783319705002, DOI 10.1007/978-3-319-70500-2_12, November | |||
2017, <https://doi.org/10.1007/978-3-319-70500-2_12>. | ||||
[RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | [RFC4086] Eastlake 3rd, D., Schiller, J., and S. Crocker, | |||
"Randomness Requirements for Security", BCP 106, RFC 4086, | "Randomness Requirements for Security", BCP 106, RFC 4086, | |||
DOI 10.17487/RFC4086, June 2005, | DOI 10.17487/RFC4086, June 2005, | |||
<https://www.rfc-editor.org/rfc/rfc4086>. | <https://www.rfc-editor.org/info/rfc4086>. | |||
[RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand | [RFC5869] Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand | |||
Key Derivation Function (HKDF)", RFC 5869, | Key Derivation Function (HKDF)", RFC 5869, | |||
DOI 10.17487/RFC5869, May 2010, | DOI 10.17487/RFC5869, May 2010, | |||
<https://www.rfc-editor.org/rfc/rfc5869>. | <https://www.rfc-editor.org/info/rfc5869>. | |||
[RFC6268] Schaad, J. and S. Turner, "Additional New ASN.1 Modules | [RFC6268] Schaad, J. and S. Turner, "Additional New ASN.1 Modules | |||
for the Cryptographic Message Syntax (CMS) and the Public | for the Cryptographic Message Syntax (CMS) and the Public | |||
Key Infrastructure Using X.509 (PKIX)", RFC 6268, | Key Infrastructure Using X.509 (PKIX)", RFC 6268, | |||
DOI 10.17487/RFC6268, July 2011, | DOI 10.17487/RFC6268, July 2011, | |||
<https://www.rfc-editor.org/rfc/rfc6268>. | <https://www.rfc-editor.org/info/rfc6268>. | |||
Acknowledgements | ||||
Our thanks to Burt Kaliski for his guidance and design review. | ||||
Our thanks to Carl Wallace for his careful review of the ASN.1 | ||||
modules. | ||||
Our thanks to Hendrik Brockhaus, Jonathan Hammell, Mike Jenkins, | ||||
David von Oheimb, Francois Rousseau, and Linda Dunbar for their | ||||
careful reviews and thoughtful comments. | ||||
Authors' Addresses | Authors' Addresses | |||
Russ Housley | Russ Housley | |||
Vigil Security, LLC | Vigil Security, LLC | |||
Herndon, VA, | Herndon, VA | |||
United States of America | United States of America | |||
Email: housley@vigilsec.com | Email: housley@vigilsec.com | |||
John Gray | John Gray | |||
Entrust | Entrust | |||
Minneapolis, MN, | Minneapolis, MN | |||
United States of America | United States of America | |||
Email: john.gray@entrust.com | Email: john.gray@entrust.com | |||
Tomofumi Okubo | Tomofumi Okubo | |||
DigiCert, Inc. | Penguin Securities Pte. Ltd. | |||
Fairfax, VA, | Singapore | |||
United States of America | ||||
Email: tomofumi.okubo+ietf@gmail.com | Email: tomofumi.okubo+ietf@gmail.com | |||
Additional contact information: | Additional contact information: | |||
大久保 智史 | 大久保 智史 | |||
DigiCert, Inc. | Penguin Securities Pte. Ltd. | |||
Fairfax, VA, | Singapore | |||
United States of America | ||||
End of changes. 84 change blocks. | ||||
182 lines changed or deleted | 189 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |