< draft-ietf-lamps-cms-mix-with-psk-05.txt   draft-ietf-lamps-cms-mix-with-psk-06.txt >
INTERNET-DRAFT R. Housley INTERNET-DRAFT R. Housley
Internet Engineering Task Force (IETF) Vigil Security Internet Engineering Task Force (IETF) Vigil Security
Intended Status: Proposed Standard Intended Status: Proposed Standard
Expires: 5 December 2019 5 June 2019 Expires: 6 February 2020 6 August 2019
Using Pre-Shared Key (PSK) in the Cryptographic Message Syntax (CMS) Using Pre-Shared Key (PSK) in the Cryptographic Message Syntax (CMS)
<draft-ietf-lamps-cms-mix-with-psk-05.txt> <draft-ietf-lamps-cms-mix-with-psk-06.txt>
Abstract Abstract
The invention of a large-scale quantum computer would pose a serious The invention of a large-scale quantum computer would pose a serious
challenge for the cryptographic algorithms that are widely deployed challenge for the cryptographic algorithms that are widely deployed
today. The Cryptographic Message Syntax (CMS) supports key transport today. The Cryptographic Message Syntax (CMS) supports key transport
and key agreement algorithms that could be broken by the invention of and key agreement algorithms that could be broken by the invention of
such a quantum computer. By storing communications that are such a quantum computer. By storing communications that are
protected with the CMS today, someone could decrypt them in the protected with the CMS today, someone could decrypt them in the
future when a large-scale quantum computer becomes available. Once future when a large-scale quantum computer becomes available. Once
skipping to change at page 2, line 47 skipping to change at page 2, line 47
B.1. Originator Processing Example . . . . . . . . . . . . . . 23 B.1. Originator Processing Example . . . . . . . . . . . . . . 23
B.2. ContentInfo and AuthEnvelopedData . . . . . . . . . . . . 26 B.2. ContentInfo and AuthEnvelopedData . . . . . . . . . . . . 26
B.3. Recipient Processing Example . . . . . . . . . . . . . . . 27 B.3. Recipient Processing Example . . . . . . . . . . . . . . . 27
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . 29 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . 29
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 29 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 29
1. Introduction 1. Introduction
The invention of a large-scale quantum computer would pose a serious The invention of a large-scale quantum computer would pose a serious
challenge for the cryptographic algorithms that are widely deployed challenge for the cryptographic algorithms that are widely deployed
today. It is an open question whether or not it is feasible to build today [S1994]. It is an open question whether or not it is feasible
a large-scale quantum computer, and if so, when that might happen. to build a large-scale quantum computer, and if so, when that might
However, if such a quantum computer is invented, many of the happen [NAS2019]. However, if such a quantum computer is invented,
cryptographic algorithms and the security protocols that use them many of the cryptographic algorithms and the security protocols that
would become vulnerable. use them would become vulnerable.
The Cryptographic Message Syntax (CMS) [RFC5652][RFC5083] supports The Cryptographic Message Syntax (CMS) [RFC5652][RFC5083] supports
key transport and key agreement algorithms that could be broken by key transport and key agreement algorithms that could be broken by
the invention of a large-scale quantum computer [C2PQ]. These the invention of a large-scale quantum computer [C2PQ]. These
algorithms include RSA [RFC8017], Diffie-Hellman [RFC2631], and algorithms include RSA [RFC8017], Diffie-Hellman [RFC2631], and
Elliptic Curve Diffie-Hellman [RFC5753]. As a result, an adversary Elliptic Curve Diffie-Hellman [RFC5753]. As a result, an adversary
that stores CMS-protected communications today, could decrypt those that stores CMS-protected communications today, could decrypt those
communications in the future when a large-scale quantum computer communications in the future when a large-scale quantum computer
becomes available. becomes available.
skipping to change at page 3, line 30 skipping to change at page 3, line 30
quantum computer by mixing the output of existing key transport and quantum computer by mixing the output of existing key transport and
key agreement algorithms with a pre-shared key (PSK). Secure key agreement algorithms with a pre-shared key (PSK). Secure
communication can be achieved today by mixing a strong PSK with the communication can be achieved today by mixing a strong PSK with the
output of an existing key transport algorithm, like RSA [RFC8017], or output of an existing key transport algorithm, like RSA [RFC8017], or
an existing key agreement algorithm, like Diffie-Hellman [RFC2631] or an existing key agreement algorithm, like Diffie-Hellman [RFC2631] or
Elliptic Curve Diffie-Hellman [RFC5753]. A security solution that is Elliptic Curve Diffie-Hellman [RFC5753]. A security solution that is
believed to be quantum resistant can be achieved by using a PSK with believed to be quantum resistant can be achieved by using a PSK with
sufficient entropy along with a quantum resistant key derivation sufficient entropy along with a quantum resistant key derivation
function (KDF), like HKDF [RFC5869], and a quantum resistant function (KDF), like HKDF [RFC5869], and a quantum resistant
encryption algorithm, like 256-bit AES [AES]. In this way, today's encryption algorithm, like 256-bit AES [AES]. In this way, today's
CMS-protected communication can be invulnerable to an attacker with a CMS-protected communication can be resistant to an attacker with a
large-scale quantum computer. large-scale quantum computer.
In addition, there may be other reasons for including a strong PSK In addition, there may be other reasons for including a strong PSK
besides protection against the future invention of a large-scale besides protection against the future invention of a large-scale
quantum computer. For example, there is always the possibility of a quantum computer. For example, there is always the possibility of a
cryptoanalytic breakthrough on one or more of the classic public-key cryptoanalytic breakthrough on one or more of the classic public-key
algorithm, and there are longstanding concerns about undisclosed algorithm, and there are longstanding concerns about undisclosed
trapdoors in Diffie-Hellamn parameters. Inclusion of a strong PSK as trapdoors in Diffie-Hellman parameters [FGHT2016]. Inclusion of a
part of the overall key management offer additional protection strong PSK as part of the overall key management offer additional
against these concerns. protection against these concerns.
Note that the CMS also supports key management techniques based on Note that the CMS also supports key management techniques based on
symmetric key-encryption keys and passwords, but they are not symmetric key-encryption keys and passwords, but they are not
discussed in this document because they are already quantum discussed in this document because they are already quantum
resistant. The symmetric key-encryption key technique is quantum resistant. The symmetric key-encryption key technique is quantum
resistant when used with an adequate key size. The password resistant when used with an adequate key size. The password
technique is quantum resistant when used with a quantum-resistant key technique is quantum resistant when used with a quantum-resistant key
derivation function and a sufficiently large password. derivation function and a sufficiently large password.
1.1. Terminology 1.1. Terminology
skipping to change at page 6, line 15 skipping to change at page 6, line 15
KDF is the key-encryption key, which is used for the encryption of KDF is the key-encryption key, which is used for the encryption of
the content-encryption key or content-authenticated-encryption key. the content-encryption key or content-authenticated-encryption key.
The second key management technique, called keyAgreePSK, see The second key management technique, called keyAgreePSK, see
Section 4, uses a key agreement algorithm to establish a pairwise Section 4, uses a key agreement algorithm to establish a pairwise
key-encryption key, which is then mixed with the PSK using a KDF to key-encryption key, which is then mixed with the PSK using a KDF to
produce a second pairwise key-encryption key, which is then used to produce a second pairwise key-encryption key, which is then used to
encrypt the content-encryption key or content-authenticated- encrypt the content-encryption key or content-authenticated-
encryption key. encryption key.
3. KeyTransPSKRecipientInfo 3. keyTransPSK
Per-recipient information using keyTransPSK is represented in the Per-recipient information using keyTransPSK is represented in the
KeyTransPSKRecipientInfo type, which is indicated by the id-ori- KeyTransPSKRecipientInfo type, which is indicated by the id-ori-
keyTransPSK object identifier. Each instance of keyTransPSK object identifier. Each instance of
KeyTransPSKRecipientInfo establishes the content-encryption key or KeyTransPSKRecipientInfo establishes the content-encryption key or
content-authenticated-encryption key for one or more recipients that content-authenticated-encryption key for one or more recipients that
have access to the same PSK. have access to the same PSK.
The id-ori-keyTransPSK object identifier is: The id-ori-keyTransPSK object identifier is:
skipping to change at page 7, line 28 skipping to change at page 7, line 28
ktris contains one KeyTransRecipientInfo type for each recipient; ktris contains one KeyTransRecipientInfo type for each recipient;
it uses a key transport algorithm to establish the key-derivation it uses a key transport algorithm to establish the key-derivation
key. KeyTransRecipientInfo is described in Section 6.2.1 of key. KeyTransRecipientInfo is described in Section 6.2.1 of
[RFC5652]. [RFC5652].
encryptedKey is the result of encrypting the content-encryption encryptedKey is the result of encrypting the content-encryption
key or the content-authenticated-encryption key with the key- key or the content-authenticated-encryption key with the key-
encryption key. EncryptedKey is an OCTET STRING. encryption key. EncryptedKey is an OCTET STRING.
4. KeyAgreePSKRecipientInfo 4. keyAgreePSK
Per-recipient information using keyAgreePSK is represented in the Per-recipient information using keyAgreePSK is represented in the
KeyAgreePSKRecipientInfo type, which is indicated by the id-ori- KeyAgreePSKRecipientInfo type, which is indicated by the id-ori-
keyAgreePSK object identifier. Each instance of keyAgreePSK object identifier. Each instance of
KeyAgreePSKRecipientInfo establishes the content-encryption key or KeyAgreePSKRecipientInfo establishes the content-encryption key or
content-authenticated-encryption key for one or more recipients that content-authenticated-encryption key for one or more recipients that
have access to the same PSK. have access to the same PSK.
The id-ori-keyAgreePSK object identifier is: The id-ori-keyAgreePSK object identifier is:
skipping to change at page 9, line 15 skipping to change at page 9, line 15
authenticated-encryption key with the second pairwise key- authenticated-encryption key with the second pairwise key-
encryption key. EncryptedKey is an OCTET STRING. The encryption key. EncryptedKey is an OCTET STRING. The
RecipientEncryptedKeys type is defined in Section 6.2.2 of RecipientEncryptedKeys type is defined in Section 6.2.2 of
[RFC5652]. [RFC5652].
5. Key Derivation 5. Key Derivation
Many key derivation functions (KDFs) internally employ a one-way hash Many key derivation functions (KDFs) internally employ a one-way hash
function. When this is the case, the hash function that is used is function. When this is the case, the hash function that is used is
identified by the KeyDerivationAlgorithmIdentifier. HKDF [RFC5869] identified by the KeyDerivationAlgorithmIdentifier. HKDF [RFC5869]
is one example of a KDF that make use fo a hash function. is one example of a KDF that makes use of a hash function.
A KDF has several input values. This section describes the A KDF has several input values. This section describes the
conventions for using the KDF to compute the key-encryption key for conventions for using the KDF to compute the key-encryption key for
KeyTransPSKRecipientInfo and KeyAgreePSKRecipientInfo. For KeyTransPSKRecipientInfo and KeyAgreePSKRecipientInfo. For
simplicity, the terminology used in the HKDF [RFC5869] specification simplicity, the terminology used in the HKDF [RFC5869] specification
is used here. is used here.
The KDF inputs are: The KDF inputs are:
IKM is the input keying material; it is the symmetric secret input IKM is the input keying material; it is the symmetric secret input
skipping to change at page 9, line 43 skipping to change at page 9, line 43
L is the length of output keying material in octets; the value L is the length of output keying material in octets; the value
depends on the key-encryption algorithm that will be used. The depends on the key-encryption algorithm that will be used. The
algorithm is identified by the KeyEncryptionAlgorithmIdentifier. algorithm is identified by the KeyEncryptionAlgorithmIdentifier.
In addition, the OBJECT IDENTIFIER portion of the In addition, the OBJECT IDENTIFIER portion of the
KeyEncryptionAlgorithmIdentifier is included in the next input KeyEncryptionAlgorithmIdentifier is included in the next input
value, called info. value, called info.
info is optional context and application specific information. info is optional context and application specific information.
The DER-encoding of CMSORIforPSKOtherInfo is used as the info The DER-encoding of CMSORIforPSKOtherInfo is used as the info
value, and the PSK is included in this structure. Note that value, and the PSK is included in this structure. Note that
EXPLICIT tagging is used in the ASN.1 module that deines this EXPLICIT tagging is used in the ASN.1 module that defines this
structure. For KeyTransPSKRecipientInfo, the ENUMERATED value of structure. For KeyTransPSKRecipientInfo, the ENUMERATED value of
5 is used. For KeyAgreePSKRecipientInfo, the ENUMERATED value of 5 is used. For KeyAgreePSKRecipientInfo, the ENUMERATED value of
10 is used. CMSORIforPSKOtherInfo is defined by the following 10 is used. CMSORIforPSKOtherInfo is defined by the following
ASN.1 structure: ASN.1 structure:
CMSORIforPSKOtherInfo ::= SEQUENCE { CMSORIforPSKOtherInfo ::= SEQUENCE {
psk OCTET STRING, psk OCTET STRING,
keyMgmtAlgType ENUMERATED { keyMgmtAlgType ENUMERATED {
keyTrans (5), keyTrans (5),
keyAgree (10) }, keyAgree (10) },
skipping to change at page 11, line 28 skipping to change at page 11, line 28
AlgorithmIdentifier{}, KEY-DERIVATION AlgorithmIdentifier{}, KEY-DERIVATION
FROM AlgorithmInformation-2009 -- [RFC5912] FROM AlgorithmInformation-2009 -- [RFC5912]
{ 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) }
OTHER-RECIPIENT, OtherRecipientInfo, CMSVersion, OTHER-RECIPIENT, OtherRecipientInfo, CMSVersion,
KeyTransRecipientInfo, OriginatorIdentifierOrKey, KeyTransRecipientInfo, OriginatorIdentifierOrKey,
UserKeyingMaterial, RecipientEncryptedKeys, EncryptedKey, UserKeyingMaterial, RecipientEncryptedKeys, EncryptedKey,
KeyDerivationAlgorithmIdentifier, KeyEncryptionAlgorithmIdentifier KeyDerivationAlgorithmIdentifier, KeyEncryptionAlgorithmIdentifier
FROM CryptographicMessageSyntax-2009 -- [RFC5911] FROM CryptographicMessageSyntax-2010 -- [RFC6268]
{ 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-2004-02(41) } ; id-mod-cms-2009(58) } ;
-- --
-- OtherRecipientInfo Types (ori-) -- OtherRecipientInfo Types (ori-)
-- --
SupportedOtherRecipInfo OTHER-RECIPIENT ::= { SupportedOtherRecipInfo OTHER-RECIPIENT ::= {
ori-keyTransPSK | ori-keyTransPSK |
ori-keyAgreePSK, ori-keyAgreePSK,
... } ... }
skipping to change at page 12, line 20 skipping to change at page 12, line 20
encryptedKey EncryptedKey } encryptedKey EncryptedKey }
PreSharedKeyIdentifier ::= OCTET STRING PreSharedKeyIdentifier ::= OCTET STRING
KeyTransRecipientInfos ::= SEQUENCE OF KeyTransRecipientInfo KeyTransRecipientInfos ::= SEQUENCE OF KeyTransRecipientInfo
-- --
-- Key Agreement with Pre-Shared Key -- Key Agreement with Pre-Shared Key
-- --
ori-keyAgreePSK ORI-TYPE ::= { ori-keyAgreePSK OTHER-RECIPIENT ::= {
KeyAgreePSKRecipientInfo IDENTIFIED BY id-ori-keyAgreePSK } KeyAgreePSKRecipientInfo IDENTIFIED BY id-ori-keyAgreePSK }
id-ori-keyAgreePSK OBJECT IDENTIFIER ::= { id-ori 2 } id-ori-keyAgreePSK OBJECT IDENTIFIER ::= { id-ori 2 }
KeyAgreePSKRecipientInfo ::= SEQUENCE { KeyAgreePSKRecipientInfo ::= SEQUENCE {
version CMSVersion, -- always set to 0 version CMSVersion, -- always set to 0
pskid PreSharedKeyIdentifier, pskid PreSharedKeyIdentifier,
originator [0] EXPLICIT OriginatorIdentifierOrKey, originator [0] EXPLICIT OriginatorIdentifierOrKey,
ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL, ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
kdfAlgorithm KeyDerivationAlgorithmIdentifier, kdfAlgorithm KeyDerivationAlgorithmIdentifier,
skipping to change at page 13, line 18 skipping to change at page 13, line 18
private key, the agreement private key, the key-derivation key, and private key, the agreement private key, the key-derivation key, and
the key-encryption key. Compromise of the PSK will make the the key-encryption key. Compromise of the PSK will make the
encrypted content vulnerable to the future invention of a large-scale encrypted content vulnerable to the future invention of a large-scale
quantum computer. Compromise of the PSK and either the key transport quantum computer. Compromise of the PSK and either the key transport
private key or the agreement private key may result in the disclosure private key or the agreement private key may result in the disclosure
of all contents protected with that combination of keying material. of all contents protected with that combination of keying material.
Compromise of the PSK and the key-derivation key may result in Compromise of the PSK and the key-derivation key may result in
disclosure of all contents protected with that combination of keying disclosure of all contents protected with that combination of keying
material. Compromise of the key-encryption key may result in the material. Compromise of the key-encryption key may result in the
disclosure of all content-encryption keys or content-authenticated- disclosure of all content-encryption keys or content-authenticated-
encryption keys that were protected with that keying materail, which encryption keys that were protected with that keying material, which
in turn may result in the disclosure of the content. in turn may result in the disclosure of the content.
A large-scale quantum computer will essentially negate the security A large-scale quantum computer will essentially negate the security
provided by the key transport algorithm or the key agreement provided by the key transport algorithm or the key agreement
algorithm, which means that the attacker with a large-scale quantum algorithm, which means that the attacker with a large-scale quantum
computer can discover the key-derivation key. In addition a large- computer can discover the key-derivation key. In addition a large-
scale quantum computer effectively cuts the security provided by a scale quantum computer effectively cuts the security provided by a
symmetric key algorithm in half. Therefore, the PSK needs at least symmetric key algorithm in half. Therefore, the PSK needs at least
256 bits of entropy to provide 128 bits of security. To match that 256 bits of entropy to provide 128 bits of security. To match that
same level of security, the key derivation function needs to be same level of security, the key derivation function needs to be
skipping to change at page 14, line 30 skipping to change at page 14, line 30
Once an attacker has the PSK, they can decrypt stored traffic if they Once an attacker has the PSK, they can decrypt stored traffic if they
ever gain access to a large-scale quantum computer in the same manner ever gain access to a large-scale quantum computer in the same manner
as a legitimate group member. as a legitimate group member.
Sound cryptographic key hygiene is to use a key for one and only one Sound cryptographic key hygiene is to use a key for one and only one
purpose. Use of the recipient's public key for both the traditional purpose. Use of the recipient's public key for both the traditional
CMS and the PSK-mixing variation specified in this document would be CMS and the PSK-mixing variation specified in this document would be
a violation of this principle; however, there is no known way for an a violation of this principle; however, there is no known way for an
attacker to take advantage of this situation. That said, an attacker to take advantage of this situation. That said, an
application should enforce separation whenever possible. For application should enforce separation whenever possible. For
example, an purpose identifier for use in the X.509 extended key example, a purpose identifier for use in the X.509 extended key usage
usage certificate extension [RFC5280] could be identified in the certificate extension [RFC5280] could be identified in the future to
future to indicate that a public key should only be used in indicate that a public key should only be used in conjunction with a
conjunction with a PSK, or only without. PSK, or only without.
Implementations must randomly generate key-derivation keys as well as Implementations must randomly generate key-derivation keys as well as
the content-encryption keys or content-authenticated-encryption keys. the content-encryption keys or content-authenticated-encryption keys.
Also, the generation of public/private key pairs for the key Also, the generation of public/private key pairs for the key
transport and key agreement algorithms rely on a random numbers. The transport and key agreement algorithms rely on a random numbers. The
use of inadequate pseudo-random number generators (PRNGs) to generate use of inadequate pseudo-random number generators (PRNGs) to generate
cryptographic keys can result in little or no security. An attacker cryptographic keys can result in little or no security. An attacker
may find it much easier to reproduce the PRNG environment that may find it much easier to reproduce the PRNG environment that
produced the keys, searching the resulting small set of 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.
Implementers should be aware that cryptographic algorithms become Implementers should be aware that cryptographic algorithms become
weaker with time. As new cryptoanalysis techniques are developed and weaker with time. As new cryptoanalysis techniques are developed and
computing performance improves, the work factor to break a particular computing performance improves, the work factor to break a particular
cryptographic algorithm will be reduced. Therefore, cryptographic cryptographic algorithm will be reduced. Therefore, cryptographic
algorithm implementations should be modular, allowing new algorithms algorithm implementations should be modular, allowing new algorithms
to be readily inserted. That is, implementors should be prepared for to be readily inserted. That is, implementers should be prepared for
the set of supported algorithms to change over time. the set of supported algorithms to change over time.
The security properties provided by the mechanisms specified in this
document can be validated using formal methods. A ProVerif proof in
[H2019] shows that an attacker with a large-scale quantum computer
that is capable of breaking the Diffie-Hellman key agreement
algorithm cannot disrupt the delivery of the content-encryption key
to the recipient and the attacker cannot learn the content-encryption
key from the protocol exchange.
8. Privacy Considerations 8. Privacy Considerations
An observer can see which parties are using each PSK simply by An observer can see which parties are using each PSK simply by
watching the PSK key identifiers. However, the addition of these key watching the PSK key identifiers. However, the addition of these key
identifiers is not really making privacy worse. When key transport identifiers is not really making privacy worse. When key transport
is used, the RecipientIdentifier is always present, and it clearly is used, the RecipientIdentifier is always present, and it clearly
identifies each recipient to an observer. When key agreement is identifies each recipient to an observer. When key agreement is
used, either the IssuerAndSerialNumber or the RecipientKeyIdentifier used, either the IssuerAndSerialNumber or the RecipientKeyIdentifier
is always present, and these clearly identify each recipient. is always present, and these clearly identify each recipient.
9. IANA Considerations 9. IANA Considerations
One object identifier for the ASN.1 module in the Section 5 was One object identifier for the ASN.1 module in Section 6 was assigned
assigned in the SMI Security for S/MIME Module Identifiers in the SMI Security for S/MIME Module Identifiers
(1.2.840.113549.1.9.16.0) [IANA-MOD] registry: (1.2.840.113549.1.9.16.0) [IANA-MOD] registry:
id-mod-cms-ori-psk-2017 OBJECT IDENTIFIER ::= { id-mod-cms-ori-psk-2019 OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
pkcs-9(9) smime(16) mod(0) TBD0 } pkcs-9(9) smime(16) mod(0) TBD0 }
One object identifier for an arc to assign Other Recipient Info One new registry was created for Other Recipient Info Identifiers
Identifiers was assigned in the SMI Security for S/MIME Mail Security within the SMI Security for S/MIME Mail Security
(1.2.840.113549.1.9.16) [IANA-SMIME] registry: (1.2.840.113549.1.9.16) [IANA-SMIME] registry:
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) TBD1 } rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) TBD1 }
This assignment created the new SMI Security for Other Recipient Info Two assignments were made in the new SMI Security for Other Recipient
Identifiers (1.2.840.113549.1.9.16.TBD1) [IANA-ORI] registry with the Info Identifiers (1.2.840.113549.1.9.16.TBD1) [IANA-ORI] registry
following two entries with references to this document: with references to this document:
id-ori-keyTransPSK OBJECT IDENTIFIER ::= { id-ori-keyTransPSK OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
pkcs-9(9) smime(16) id-ori(TBD1) 1 } pkcs-9(9) smime(16) id-ori(TBD1) 1 }
id-ori-keyAgreePSK OBJECT IDENTIFIER ::= { id-ori-keyAgreePSK OBJECT IDENTIFIER ::= {
iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
pkcs-9(9) smime(16) id-ori(TBD1) 2 } pkcs-9(9) smime(16) id-ori(TBD1) 2 }
10. References 10. References
10.1. Normative References 10.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, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[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,
November 2007. November 2007.
[RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", RFC [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", RFC
5652, September 2009. 5652, September 2009.
[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, May 2017. 2119 Key Words", BCP 14, RFC 8174, May 2017.
[X680] ITU-T, "Information technology -- Abstract Syntax Notation [X680] 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, 2015. Recommendation X.680, 2015.
[X690] ITU-T, "Information technology -- ASN.1 encoding rules: [X690] ITU-T, "Information technology -- ASN.1 encoding rules:
skipping to change at page 16, line 40 skipping to change at page 16, line 40
10.2. Informative References 10.2. Informative References
[AES] National Institute of Standards and Technology, FIPS Pub [AES] National Institute of Standards and Technology, FIPS Pub
197: Advanced Encryption Standard (AES), 26 November 2001. 197: Advanced Encryption Standard (AES), 26 November 2001.
[C2PQ] Hoffman, P., "The Transition from Classical to Post- [C2PQ] Hoffman, P., "The Transition from Classical to Post-
Quantum Cryptography", work-in-progress, draft-hoffman- Quantum Cryptography", work-in-progress, draft-hoffman-
c2pq-04, August 2018. c2pq-04, August 2018.
[FGHT2016] Fried, J., Gaudry, P., Heninger, N., and E. Thome, "A
kilobit hidden SNFS discrete logarithm computation",
Cryptology ePrint Archive, Report 2016/961, 2016.
https://eprint.iacr.org/2016/961.pdf.
[H2019] Hammell, J., "Re: [lamps] WG Last Call for draft-ietf- [H2019] Hammell, J., "Re: [lamps] WG Last Call for draft-ietf-
lamps-cms-mix-with-psk", <https://mailarchive.ietf.org/ lamps-cms-mix-with-psk", <https://mailarchive.ietf.org/
arch/msg/spasm/_6d_4jp3sOprAnbU2fp_yp_-6-k>, 27 May 2019. arch/msg/spasm/_6d_4jp3sOprAnbU2fp_yp_-6-k>, 27 May 2019.
[IANA-MOD] https://www.iana.org/assignments/smi-numbers/smi- [IANA-MOD] https://www.iana.org/assignments/smi-numbers/smi-
numbers.xhtml#security-smime-0. numbers.xhtml#security-smime-0.
[IANA-SMIME] https://www.iana.org/assignments/smi-numbers/smi- [IANA-SMIME] https://www.iana.org/assignments/smi-numbers/smi-
numbers.xhtml#security-smime. numbers.xhtml#security-smime.
[IANA-ORI] https://www.iana.org/assignments/smi-numbers/smi- [IANA-ORI] https://www.iana.org/assignments/smi-numbers/smi-
numbers.xhtml#security-smime-13. numbers.xhtml#security-smime-TBD1.
[NAS2019] National Academies of Sciences, Engineering, and Medicine,
"Quantum Computing: Progress and Prospects", The National
Academies Press, DOI 10.17226/25196, 2019.
[S1994] Shor, P., "Algorithms for Quantum Computation: Discrete
Logarithms and Factoring", Proceedings of the 35th Annual
Symposium on Foundations of Computer Science, 1994, pp.
124-134.
[RFC2631] Rescorla, E., "Diffie-Hellman Key Agreement Method", [RFC2631] Rescorla, E., "Diffie-Hellman Key Agreement Method",
RFC 2631, June 1999. RFC 2631, June 1999.
[RFC4086] D. Eastlake 3rd, D., Schiller, J., and S. Crocker, [RFC4086] D. Eastlake 3rd, D., Schiller, J., and S. Crocker,
"Randomness Requirements for Security", RFC 4086, "Randomness Requirements for Security", RFC 4086,
June 2005. June 2005.
[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
skipping to change at page 17, line 30 skipping to change at page 17, line 43
[RFC5869] Krawczyk, H., and P. Eronen, "HMAC-based Extract-and- [RFC5869] Krawczyk, H., and P. Eronen, "HMAC-based Extract-and-
Expand Key Derivation Function (HKDF)", RFC 5869, Expand Key Derivation Function (HKDF)", RFC 5869,
May 2010. May 2010.
[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,
June 2010. June 2010.
[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,
June 2010. June 2010.
[RFC6268] Schaad, J., S. Turner, "Additional New ASN.1 Modules for
the Cryptographic Message Syntax (CMS) and the Public Key
Infrastructure Using X.509 (PKIX)", RFC 6268, July 2011.
[RFC8017] Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch, [RFC8017] Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch,
"PKCS #1: RSA Cryptography Specifications Version 2.2", "PKCS #1: RSA Cryptography Specifications Version 2.2",
RFC 8017, November 2016. RFC 8017, November 2016.
Appendix A: Key Transport with PSK Example Appendix A: Key Transport with PSK Example
This example shows the establishment of an AES-256 content-encryption This example shows the establishment of an AES-256 content-encryption
key using: key using:
- a pre-shared key of 256 bits; - a pre-shared key of 256 bits;
- key transport using RSA PKCS#1 v1.5 with a 3072-bit key; - key transport using RSA PKCS#1 v1.5 with a 3072-bit key;
- key derivation using HKDF with SHA-384; and - key derivation using HKDF with SHA-384; and
- key wrap using AES-256-KEYWRAP. - key wrap using AES-256-KEYWRAP.
In real-world use, the originator would encrypt the key-derivation In real-world use, the originator would encrypt the key-derivation
key in their own RSA public key as well as the recipient's public key in their own RSA public key as well as the recipient's public
key. This is omited in an attempt to simplify the example. key. This is omitted in an attempt to simplify the example.
A.1. Originator Processing Example A.1. Originator Processing Example
The pre-shared key known to Alice and Bob: The pre-shared key known to Alice and Bob:
c244cdd11a0d1f39d9b61282770244fb0f6befb91ab7f96cb05213365cf95b15 c244cdd11a0d1f39d9b61282770244fb0f6befb91ab7f96cb05213365cf95b15
The identifier assigned to the pre-shared key is: The identifier assigned to the pre-shared key is:
ptf-kmc:13614122112 ptf-kmc:13614122112
Alice obtains Bob's public key: Alice obtains Bob's public key:
skipping to change at page 19, line 40 skipping to change at page 20, line 40
ae4ea1d99e78fcdcea12d9f10d991ac71502939ee0c30ebdcc97dd1fc5ba3566 ae4ea1d99e78fcdcea12d9f10d991ac71502939ee0c30ebdcc97dd1fc5ba3566
c83d0dd5d1b4faa5 c83d0dd5d1b4faa5
Alice encrypts the content using AES-256-GCM with the content- Alice encrypts the content using AES-256-GCM with the content-
encryption key. The 12-octet nonce used is: encryption key. The 12-octet nonce used is:
cafebabefacedbaddecaf888 cafebabefacedbaddecaf888
The content plaintext is: The content plaintext is:
48656c6c6f2c20776f726c6421 48656c6c6f2c20776f726c6421
The resutling ciphertext is: The resulting ciphertext is:
9af2d16f21547fcefed9b3ef2d 9af2d16f21547fcefed9b3ef2d
The resutling 12-octet authentication tag is: The resulting 12-octet authentication tag is:
a0e5925cc184e0172463c44c a0e5925cc184e0172463c44c
A.2. ContentInfo and AuthEnvelopedData A.2. ContentInfo and AuthEnvelopedData
Alice encodes the AuthEnvelopedData and the ContentInfo, and Alice encodes the AuthEnvelopedData and the ContentInfo, and
sends the result to Bob. The resulting structure is: sends the result to Bob. The resulting structure is:
0 650: SEQUENCE { 0 650: SEQUENCE {
4 11: OBJECT IDENTIFIER authEnvelopedData 4 11: OBJECT IDENTIFIER authEnvelopedData
: { 1 2 840 113549 1 9 16 1 23 } : { 1 2 840 113549 1 9 16 1 23 }
skipping to change at page 23, line 26 skipping to change at page 24, line 26
encryption key, and checks the received authentication tag. The encryption key, and checks the received authentication tag. The
12-octet nonce used is: 12-octet nonce used is:
cafebabefacedbaddecaf888 cafebabefacedbaddecaf888
The 12-octet authentication tag is: The 12-octet authentication tag is:
a0e5925cc184e0172463c44c a0e5925cc184e0172463c44c
The received ciphertext content is: The received ciphertext content is:
9af2d16f21547fcefed9b3ef2d 9af2d16f21547fcefed9b3ef2d
The resutling plaintext content is: The resulting plaintext content is:
48656c6c6f2c20776f726c6421 48656c6c6f2c20776f726c6421
Appendix B: Key Agreement with PSK Example Appendix B: Key Agreement with PSK Example
This example shows the establishment of an AES-256 content-encryption This example shows the establishment of an AES-256 content-encryption
key using: key using:
- a pre-shared key of 256 bits; - a pre-shared key of 256 bits;
- key agreement using ECDH on curve P-384 and X9.63 KDF - key agreement using ECDH on curve P-384 and X9.63 KDF
with SHA-384; with SHA-384;
- key derivation using HKDF with SHA-384; and - key derivation using HKDF with SHA-384; and
- key wrap using AES-256-KEYWRAP. - key wrap using AES-256-KEYWRAP.
In real-world use, the originator would treat themselves as an In real-world use, the originator would treat themselves as an
additional recipient by performing key agreement with their own additional recipient by performing key agreement with their own
static public key and the ephemeral private key generated for this static public key and the ephemeral private key generated for this
message. This is omited in an attempt to simplify the example. message. This is omitted in an attempt to simplify the example.
B.1. Originator Processing Example B.1. Originator Processing Example
The pre-shared key known to Alice and Bob: The pre-shared key known to Alice and Bob:
4aa53cbf500850dd583a5d9821605c6fa228fb5917f87c1c078660214e2d83e4 4aa53cbf500850dd583a5d9821605c6fa228fb5917f87c1c078660214e2d83e4
The identifier assigned to the pre-shared key is: The identifier assigned to the pre-shared key is:
ptf-kmc:216840110121 ptf-kmc:216840110121
Alice randomly generates a content-encryption key: Alice randomly generates a content-encryption key:
skipping to change at page 25, line 37 skipping to change at page 26, line 37
Alice uses AES-KEY-WRAP to encrypt the content-encryption key Alice uses AES-KEY-WRAP to encrypt the content-encryption key
with the KEK2; the wrapped key is: with the KEK2; the wrapped key is:
229fe0b45e40003e7d8244ec1b7e7ffb2c8dca16c36f5737222553a71263a92b 229fe0b45e40003e7d8244ec1b7e7ffb2c8dca16c36f5737222553a71263a92b
de08866a602d63f4 de08866a602d63f4
Alice encrypts the content using AES-256-GCM with the content- Alice encrypts the content using AES-256-GCM with the content-
encryption key. The 12-octet nonce used is: encryption key. The 12-octet nonce used is:
dbaddecaf888cafebabeface dbaddecaf888cafebabeface
The plaintext is:
48656c6c6f2c20776f726c6421
The resulting ciphertext is: The resulting ciphertext is:
fc6d6f823e3ed2d209d0c6ffcf fc6d6f823e3ed2d209d0c6ffcf
The resulting 12-octet authentication tag is: The resulting 12-octet authentication tag is:
550260c42e5b29719426c1ff 550260c42e5b29719426c1ff
B.2. ContentInfo and AuthEnvelopedData B.2. ContentInfo and AuthEnvelopedData
Alice encodes the AuthEnvelopedData and the ContentInfo, and Alice encodes the AuthEnvelopedData and the ContentInfo, and
sends the result to Bob. The resulting structure is: sends the result to Bob. The resulting structure is:
skipping to change at page 28, line 36 skipping to change at page 29, line 36
encryption key, and checks the received authentication tag. The encryption key, and checks the received authentication tag. The
12-octet nonce used is: 12-octet nonce used is:
dbaddecaf888cafebabeface dbaddecaf888cafebabeface
The 12-octet authentication tag is: The 12-octet authentication tag is:
550260c42e5b29719426c1ff 550260c42e5b29719426c1ff
The received ciphertext content is: The received ciphertext content is:
fc6d6f823e3ed2d209d0c6ffcf fc6d6f823e3ed2d209d0c6ffcf
The resutling plaintext content is: The resulting plaintext content is:
48656c6c6f2c20776f726c6421 48656c6c6f2c20776f726c6421
Acknowledgements Acknowledgements
Many thanks to Burt Kaliski, Panos Kampanakis, Jim Schaad, Sean Many thanks to Roman Danyliw, Burt Kaliski, Panos Kampanakis, Jim
Turner, and Daniel Van Geest for their review and insightful Schaad, Robert Sparks, Sean Turner, and Daniel Van Geest for their
comments. They have greatly improved the design, clarity, and review and insightful comments. They have greatly improved the
implementation guidance. design, clarity, and implementation guidance.
The security properties provided by the mechanisms specified in this
document can be validated using formal methods. A ProVerif proof in
[H2019] shows that an attacker with a large-scale quantum computer
that is capable of breaking the Diffie-Hellman key agreement
algorithm cannot disrupt the delivery of the content-encryption key
to the recipient and the attacker cannot learn the content-encryption
key from the protocol exchange.
Author's Address Author's Address
Russ Housley Russ Housley
Vigil Security, LLC Vigil Security, LLC
516 Dranesville Road 516 Dranesville Road
Herndon, VA 20170 Herndon, VA 20170
USA USA
EMail: housley@vigilsec.com EMail: housley@vigilsec.com
 End of changes. 33 change blocks. 
53 lines changed or deleted 74 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/