rfc9708.original | rfc9708.txt | |||
---|---|---|---|---|
LAMPS Working Group R. Housley | lamps R. Housley | |||
Internet-Draft Vigil Security | Internet-Draft Vigil Security | |||
Obsoletes: 8708 (if approved) 19 September 2024 | Obsoletes: 8708 (if approved) December 2024 | |||
Intended status: Standards Track | Intended status: Standards Track | |||
Expires: 23 March 2025 | Expires: 23 June 2025 | |||
Use of the HSS/LMS Hash-Based Signature Algorithm in the Cryptographic | Use of the HSS/LMS Hash-Based Signature Algorithm in the Cryptographic | |||
Message Syntax (CMS) | Message Syntax (CMS) | |||
draft-ietf-lamps-rfc8708bis-03 | draft-ietf-lamps-rfc8708bis-03 | |||
Abstract | Abstract | |||
This document specifies the conventions for using the Hierarchical | This document specifies the conventions for using the Hierarchical | |||
Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based | Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based | |||
signature algorithm with the Cryptographic Message Syntax (CMS). In | signature algorithm with the Cryptographic Message Syntax (CMS). In | |||
skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 23 March 2025. | This Internet-Draft will expire on 4 June 2025. | |||
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 (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
extracted from this document must include Revised BSD License text as | extracted from this document must include Revised BSD License text as | |||
described in Section 4.e of the Trust Legal Provisions and are | described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Revised BSD License. | provided without warranty as described in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. ASN.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. ASN.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.3. Motivation . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.3. Motivation . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
skipping to change at page 3, line 5 ¶ | skipping to change at page 3, line 5 ¶ | |||
signing operations depends upon the size of the tree. The HSS/LMS | signing operations depends upon the size of the tree. The HSS/LMS | |||
signature algorithm uses small public keys, and it has low | signature algorithm uses small public keys, and it has low | |||
computational cost; however, the signatures are quite large. The | computational cost; however, the signatures are quite large. The | |||
HSS/LMS private key can be very small when the signer is willing to | HSS/LMS private key can be very small when the signer is willing to | |||
perform additional computation at signing time; alternatively, the | perform additional computation at signing time; alternatively, the | |||
private key can consume additional memory and provide a faster | private key can consume additional memory and provide a faster | |||
signing time. The HSS/LMS signatures are defined in [HASHSIG]. | signing time. The HSS/LMS signatures are defined in [HASHSIG]. | |||
Currently, parameter sets are defined that use SHA-256 [SHS] and | Currently, parameter sets are defined that use SHA-256 [SHS] and | |||
SHAKE256 [SHA3]. | SHAKE256 [SHA3]. | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
1.1. ASN.1 | 1.1. ASN.1 | |||
CMS values are generated using ASN.1 [ASN1-B], using the Basic | CMS values are generated using ASN.1 [ASN1-B], using the Basic | |||
Encoding Rules (BER) and the Distinguished Encoding Rules (DER) | Encoding Rules (BER) and the Distinguished Encoding Rules (DER) | |||
[ASN1-E]. | [ASN1-E]. | |||
1.2. Terminology | 1.2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
skipping to change at page 3, line 28 ¶ | skipping to change at page 3, line 30 ¶ | |||
1.3. Motivation | 1.3. Motivation | |||
Advances in cryptanalysis [BH2013] and progress in the development of | Advances in cryptanalysis [BH2013] and progress in the development of | |||
quantum computers [NAS2019] pose a future threat to widely deployed | quantum computers [NAS2019] pose a future threat to widely deployed | |||
digital signature algorithms. As a result, there is a need to | digital signature algorithms. As a result, there is a need to | |||
prepare for a day when cryptosystems such as RSA and DSA that depend | prepare for a day when cryptosystems such as RSA and DSA that depend | |||
on discrete logarithms and factoring cannot be depended upon. | on discrete logarithms and factoring cannot be depended upon. | |||
If cryptographically relevant quantum computers (CRQCs) are ever | If cryptographically relevant quantum computers (CRQCs) are ever | |||
built, these computers will be able to break many of the public key | built, they will be able to break many of the public key | |||
cryptosystems currently in use. A post-quantum cryptosystem [PQC] is | cryptosystems currently in use. A post-quantum cryptosystem [PQC] is | |||
a system that is secure against quantum computers that have more than | a system that is secure against quantum computers that have more than | |||
a trivial number of quantum bits (qubits). It is open to conjecture | a trivial number of quantum bits (qubits). It is open to conjecture | |||
when it will be feasible to build such computers; however, RSA, DSA, | when it will be feasible to build such computers; however, RSA, DSA, | |||
Elliptic Curve Digital Signature Algorithm (ECDSA), and Edwards-curve | Elliptic Curve Digital Signature Algorithm (ECDSA), and Edwards-curve | |||
Digital Signature Algorithm (EdDSA) are all vulnerable if CRQCs are | Digital Signature Algorithm (EdDSA) are all vulnerable if CRQCs are | |||
ever developed. | ever developed. | |||
Since the HSS/LMS signature algorithm does not depend on the | Since the HSS/LMS signature algorithm does not depend on the | |||
difficulty of discrete logarithms or factoring, but on a second- | difficulty of discrete logarithms or factoring, but on a second- | |||
skipping to change at page 3, line 51 ¶ | skipping to change at page 3, line 53 ¶ | |||
quantum-secure signatures is the protection of software updates, | quantum-secure signatures is the protection of software updates, | |||
perhaps using the format described in [FWPROT], to enable deployment | perhaps using the format described in [FWPROT], to enable deployment | |||
of software that implements new cryptosystems. | of software that implements new cryptosystems. | |||
1.4. Changes Since RFC 8708 | 1.4. Changes Since RFC 8708 | |||
At the time RFC 8708 was published, there were no plans to put an | At the time RFC 8708 was published, there were no plans to put an | |||
HSS/LMS public key in a certificate. The expectation was that the | HSS/LMS public key in a certificate. The expectation was that the | |||
HSS/LMS public key would be distributed by some other means. Today, | HSS/LMS public key would be distributed by some other means. Today, | |||
there are plans to put an HSS/LMS public key in a certificate | there are plans to put an HSS/LMS public key in a certificate | |||
[I-D.ietf-lamps-x509-shbs]. The KEY field of the pk-HSS-LMS-HashSig | [X.509-S-HBS]. The KEY field of the pk-HSS-LMS-HashSig definition in | |||
definition in the ASN.1 module does not come into play when using | the ASN.1 module does not come into play when using HSS/LMS | |||
HSS/LMS signatures in the CMS; however, it needs to be consistent | ||||
with the conventions for carrying an HSS/LMS public key in a | RFC Use of the HSS/LMS Hash-Based Signature December 2024 | |||
certificate. The pk-HSS-LMS-HashSig definition is updated to reflect | ||||
no ASN.1 wrapping for the public key. These changes resolve | signatures in the CMS; however, it needs to be consistent with the | |||
[Err7960] and [Err7963]. | conventions for carrying an HSS/LMS public key in a certificate. The | |||
pk-HSS-LMS-HashSig definition is updated to reflect no ASN.1 wrapping | ||||
for the public key. These changes resolve [Err7960] and [Err7963]. | ||||
Additional HSS/LMS tree sizes have been defined. The list in | Additional HSS/LMS tree sizes have been defined. The list in | |||
Section 2.2 was expanded to include the recently defined ones. | Section 2.2 was expanded to include the recently defined ones. | |||
Additional LM-OTS Signatures have been defined. The list in | Additional LM-OTS Signatures have been defined. The list in | |||
Section 2.3 was expanded to include the recently defined ones. | Section 2.3 was expanded to include the recently defined ones. | |||
Provide more detail in Section 4 regarding allowed values in the | More detail has been provided in Section 4 regarding allowed values | |||
X.509 certificate key usage extension for an HSS/LMS public key. | in the X.509 certificate key usage extension for an HSS/LMS public | |||
key. | ||||
2. HSS/LMS Hash-Based Signature Algorithm Overview | 2. HSS/LMS Hash-Based Signature Algorithm Overview | |||
Merkle Tree Signatures (MTS) are a method for signing a large but | Merkle Tree Signatures (MTS) are a method for signing a large but | |||
fixed number of messages. An MTS system depends on a one-time | fixed number of messages. An MTS system depends on a one-time | |||
signature method and a collision-resistant hash function. | signature method and a collision-resistant hash function. | |||
This specification makes use of the hash-based algorithm specified in | This specification makes use of the hash-based algorithm specified in | |||
[HASHSIG], which is the Leighton and Micali adaptation [LM] of the | [HASHSIG], which is the Leighton and Micali adaptation [LM] of the | |||
original Lamport-Diffie-Winternitz-Merkle one-time signature system | original Lamport-Diffie-Winternitz-Merkle one-time signature system | |||
skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 5 ¶ | |||
permit the registration of additional one-way hash functions in the | permit the registration of additional one-way hash functions in the | |||
future. | future. | |||
2.1. Hierarchical Signature System (HSS) | 2.1. Hierarchical Signature System (HSS) | |||
The MTS system specified in [HASHSIG] uses a hierarchy of trees. The | The MTS system specified in [HASHSIG] uses a hierarchy of trees. The | |||
N-time Hierarchical Signature System (HSS) allows subordinate trees | N-time Hierarchical Signature System (HSS) allows subordinate trees | |||
to be generated when needed by the signer. Otherwise, generation of | to be generated when needed by the signer. Otherwise, generation of | |||
the entire tree might take weeks or longer. | the entire tree might take weeks or longer. | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
An HSS signature as specified in [HASHSIG] carries the number of | An HSS signature as specified in [HASHSIG] carries the number of | |||
signed public keys (Nspk), followed by that number of signed public | signed public keys (Nspk), followed by that number of signed public | |||
keys, followed by the LMS signature as described in Section 2.2. The | keys, followed by the LMS signature as described in Section 2.2. The | |||
public key for the topmost LMS tree is the public key of the HSS | public key for the topmost LMS tree is the public key of the HSS | |||
system. The LMS private key in the parent tree signs the LMS public | system. The LMS private key in the parent tree signs the LMS public | |||
key in the child tree, and the LMS private key in the bottom-most | key in the child tree, and the LMS private key in the bottom-most | |||
tree signs the actual message. The signature over the public key and | tree signs the actual message. The signature over the public key and | |||
the signature over the actual message are LMS signatures as described | the signature over the actual message are LMS signatures as described | |||
in Section 2.2. | in Section 2.2. | |||
skipping to change at page 5, line 50 ¶ | skipping to change at page 5, line 52 ¶ | |||
Each tree in the system specified in [HASHSIG] uses the Leighton- | Each tree in the system specified in [HASHSIG] uses the Leighton- | |||
Micali Signature (LMS) system. LMS systems have two parameters. The | Micali Signature (LMS) system. LMS systems have two parameters. The | |||
first parameter is the height of the tree, h, which is the number of | first parameter is the height of the tree, h, which is the number of | |||
levels in the tree minus one. The [HASHSIG] specification supports | levels in the tree minus one. The [HASHSIG] specification supports | |||
five values for this parameter: h=5, h=10, h=15, h=20, and h=25. | five values for this parameter: h=5, h=10, h=15, h=20, and h=25. | |||
There are 2^h leaves in the tree. The second parameter, m, is the | There are 2^h leaves in the tree. The second parameter, m, is the | |||
number of bytes output by the hash function, and it is the amount of | number of bytes output by the hash function, and it is the amount of | |||
data associated with each node in the tree. The [HASHSIG] | data associated with each node in the tree. The [HASHSIG] | |||
specification supports the SHA-256 hash function [SHS], with m=32. | specification supports the SHA-256 hash function [SHS], with m=32. | |||
Additional, LMS Signature parameter sets have been registered at | Additional LMS Signature parameter sets have been registered at | |||
[IANA-LMS]. | [IANA-LMS]. | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
As specified in [HASHSIG], the LMS public key consists of four | As specified in [HASHSIG], the LMS public key consists of four | |||
elements: the lms_algorithm_type from the list above, the otstype to | elements: the lms_algorithm_type from the list above, the otstype to | |||
identify the Leighton-Micali One-Time Signature (LM-OTS) type as | identify the Leighton-Micali One-Time Signature (LM-OTS) type as | |||
discussed in Section 2.3, the private key identifier (I) as described | discussed in Section 2.3, the private key identifier (I) as described | |||
in Section 5.3 of [HASHSIG], and the m-byte string associated with | in Section 5.3 of [HASHSIG], and the m-byte string associated with | |||
the root node of the tree (T[1]). | the root node of the tree (T[1]). | |||
The LMS public key can be summarized as: | The LMS public key can be summarized as: | |||
u32str(lms_algorithm_type) || u32str(otstype) || I || T[1] | u32str(lms_algorithm_type) || u32str(otstype) || I || T[1] | |||
skipping to change at page 7, line 4 ¶ | skipping to change at page 7, line 4 ¶ | |||
H: A preimage-resistant hash function that accepts byte strings of | H: A preimage-resistant hash function that accepts byte strings of | |||
any length and returns an n-byte string. | any length and returns an n-byte string. | |||
w: The width in bits of the Winternitz coefficients. [HASHSIG] | w: The width in bits of the Winternitz coefficients. [HASHSIG] | |||
supports four values for this parameter: w=1, w=2, w=4, and w=8. | supports four values for this parameter: w=1, w=2, w=4, and w=8. | |||
p: The number of n-byte string elements that make up the LM-OTS | p: The number of n-byte string elements that make up the LM-OTS | |||
signature value. | signature value. | |||
ls: The number of bits that are left-shifted in the final step of | ls: The number of bits that are left-shifted in the final step of | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
the checksum function, which is defined in Section 4.4 of | the checksum function, which is defined in Section 4.4 of | |||
[HASHSIG]. | [HASHSIG]. | |||
The values of p and ls are dependent on the choices of the parameters | The values of p and ls are dependent on the choices of the parameters | |||
n and w, as described in Appendix B of [HASHSIG]. | n and w, as described in Appendix B of [HASHSIG]. | |||
The [HASHSIG] specifies four LM-OTS variants. Additional, LM-OTS | The [HASHSIG] specifies four LM-OTS variants. Additional LM-OTS | |||
Signature parameter sets have been registered at [IANA-LMS]. | Signature parameter sets have been registered at [IANA-LMS]. | |||
Signing involves the generation of C, an n-byte random value. | Signing involves the generation of C, an n-byte random value. | |||
The LM-OTS signature value can be summarized as the identifier of the | The LM-OTS signature value can be summarized as the identifier of the | |||
LM-OTS variant, the random value, and a sequence of hash values (y[0] | LM-OTS variant, the random value, and a sequence of hash values (y[0] | |||
through y[p-1]) that correspond to the elements of the public key, as | through y[p-1]) that correspond to the elements of the public key, as | |||
described in Section 4.5 of [HASHSIG]: | described in Section 4.5 of [HASHSIG]: | |||
u32str(otstype) || C || y[0] || ... || y[p-1] | u32str(otstype) || C || y[0] || ... || y[p-1] | |||
skipping to change at page 8, line 5 ¶ | skipping to change at page 8, line 5 ¶ | |||
The signature value identifies the hash function used in the HSS/LMS | The signature value identifies the hash function used in the HSS/LMS | |||
tree. | tree. | |||
4. HSS/LMS Public Key Identifier | 4. HSS/LMS Public Key Identifier | |||
The AlgorithmIdentifier for an HSS/LMS public key uses the id-alg- | The AlgorithmIdentifier for an HSS/LMS public key uses the id-alg- | |||
hss-lms-hashsig object identifier, and the parameters field MUST be | hss-lms-hashsig object identifier, and the parameters field MUST be | |||
absent. | absent. | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
When this AlgorithmIdentifier appears in the SubjectPublicKeyInfo | When this AlgorithmIdentifier appears in the SubjectPublicKeyInfo | |||
field of a certification authority (CA) X.509 certificate [RFC5280], | field of a certification authority (CA) X.509 certificate [RFC5280], | |||
the certificate key usage extension MUST contain at least one of the | the certificate key usage extension MUST contain at least one of the | |||
following values: digitalSignature, nonRepudiation, keyCertSign, and | following values: digitalSignature, nonRepudiation, keyCertSign, and | |||
cRLSign. However, it MUST NOT contain other values. | cRLSign. However, it MUST NOT contain other values. | |||
When this AlgorithmIdentifier appears in the SubjectPublicKeyInfo | When this AlgorithmIdentifier appears in the SubjectPublicKeyInfo | |||
field of an end entity X.509 certificate [RFC5280], the certificate | field of an end-entity X.509 certificate [RFC5280], the certificate | |||
key usage extension MUST contain at least one of the following: | key usage extension MUST contain at least one of the following: | |||
digitalSignature or nonRepudiation. However, it MUST NOT contain | digitalSignature, nonRepudiation, or cRLSign. However, it MUST NOT | |||
other values. | contain other values. | |||
pk-HSS-LMS-HashSig PUBLIC-KEY ::= { | pk-HSS-LMS-HashSig PUBLIC-KEY ::= { | |||
IDENTIFIER id-alg-hss-lms-hashsig | IDENTIFIER id-alg-hss-lms-hashsig | |||
-- KEY no ASN.1 wrapping -- | -- KEY no ASN.1 wrapping -- | |||
PARAMS ARE absent | PARAMS ARE absent | |||
CERT-KEY-USAGE | CERT-KEY-USAGE | |||
{ digitalSignature, nonRepudiation, keyCertSign, cRLSign } } | { digitalSignature, nonRepudiation, keyCertSign, cRLSign } } | |||
HSS-LMS-HashSig-PublicKey ::= OCTET STRING | HSS-LMS-HashSig-PublicKey ::= OCTET STRING | |||
skipping to change at page 9, line 4 ¶ | skipping to change at page 9, line 4 ¶ | |||
As specified in [CMS], the digital signature is produced from the | As specified in [CMS], the digital signature is produced from the | |||
message digest and the signer's private key. The signature is | message digest and the signer's private key. The signature is | |||
computed over different values depending on whether signed attributes | computed over different values depending on whether signed attributes | |||
are absent or present. | are absent or present. | |||
When signed attributes are absent, the HSS/LMS signature is computed | When signed attributes are absent, the HSS/LMS signature is computed | |||
over the content. When signed attributes are present, a hash is | over the content. When signed attributes are present, a hash is | |||
computed over the content using the same hash function that is used | computed over the content using the same hash function that is used | |||
in the HSS/LMS tree, then a message-digest attribute is constructed | in the HSS/LMS tree, then a message-digest attribute is constructed | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
with the hash of the content, and then the HSS/LMS signature is | with the hash of the content, and then the HSS/LMS signature is | |||
computed over the DER-encoded set of signed attributes (which MUST | computed over the DER-encoded set of signed attributes (which MUST | |||
include a content-type attribute and a message-digest attribute). In | include a content-type attribute and a message-digest attribute). In | |||
summary: | summary: | |||
IF (signed attributes are absent) | IF (signed attributes are absent) | |||
THEN HSS_LMS_Sign(content) | THEN HSS_LMS_Sign(content) | |||
ELSE message-digest attribute = Hash(content); | ELSE message-digest attribute = Hash(content); | |||
HSS_LMS_Sign(DER(SignedAttributes)) | HSS_LMS_Sign(DER(SignedAttributes)) | |||
When using [HASHSIG], the fields in the SignerInfo are used as | When using [HASHSIG], the fields in the SignerInfo are used as | |||
follows: | follows: | |||
* digestAlgorithm MUST contain the one-way hash function used in the | * digestAlgorithm MUST contain the one-way hash function used in the | |||
HSS/LMS tree. For convenience, the AlgorithmIdentifier for | HSS/LMS tree. For convenience, the AlgorithmIdentifier for | |||
SHA-256 from [PKIXASN1] and the AlgorithmIdentifier for SHAKE256 | SHA-256 from [PKIXASN1] and the AlgorithmIdentifier for SHAKE256 | |||
from [RFC8692] are repeated here: | from [RFC8692] are repeated here: | |||
mda-sha256 DIGEST-ALGORITHM ::= { | mda-sha256 DIGEST-ALGORITHM ::= { | |||
IDENTIFIER id-sha256 | IDENTIFIER id-sha256 | |||
PARAMS TYPE NULL ARE preferredAbsent } | PARAMS TYPE NULL ARE preferredAbsent } | |||
id-sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | id-sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | |||
country(16) us(840) organization(1) gov(101) csor(3) | country(16) us(840) organization(1) gov(101) csor(3) | |||
nistAlgorithms(4) hashalgs(2) 1 } | nistAlgorithms(4) hashalgs(2) 1 } | |||
mda-shake256 DIGEST-ALGORITHM ::= { | mda-shake256 DIGEST-ALGORITHM ::= { | |||
IDENTIFIER id-shake256 } | IDENTIFIER id-shake256 } | |||
id-shake256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | id-shake256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) | |||
country(16) us(840) organization(1) gov(101) csor(3) | country(16) us(840) organization(1) gov(101) csor(3) | |||
nistAlgorithm(4) hashAlgs(2) 12 } | nistAlgorithm(4) hashAlgs(2) 12 } | |||
* signatureAlgorithm MUST contain id-alg-hss-lms-hashsig, and the | * signatureAlgorithm MUST contain id-alg-hss-lms-hashsig, and the | |||
algorithm parameters field MUST be absent. | algorithm parameters field MUST be absent. | |||
* signature contains the single HSS/LMS signature value resulting | * signature contains the single HSS/LMS signature value resulting | |||
from the signing operation as specified in [HASHSIG]. | from the signing operation as specified in [HASHSIG]. | |||
6. Security Considerations | 6. Security Considerations | |||
Implementations MUST protect the private keys. Compromise of the | Implementations MUST protect the private keys. Compromise of the | |||
private keys will result in the ability to forge signatures. Along | private keys will result in the ability to forge signatures. Along | |||
with the private key, the implementation MUST keep track of which | with the private key, the implementation MUST keep track of which | |||
leaf nodes in the tree have been used. Loss of integrity of this | leaf nodes in the tree have been used. Loss of integrity of this | |||
tracking data can cause a one-time key to be used more than once. As | tracking data can cause a one-time key to be used more than once. As | |||
a result, when a private key and the tracking data are stored on non- | a result, when a private key and the tracking data are stored on non- | |||
volatile media or in a virtual machine environment, failed writes, | volatile media or in a virtual machine environment, failed writes, | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
virtual machine snapshotting or cloning, and other operational | virtual machine snapshotting or cloning, and other operational | |||
concerns must be considered to ensure confidentiality and integrity. | concerns must be considered to ensure confidentiality and integrity. | |||
When generating an LMS key pair, an implementation MUST generate each | When generating an LMS key pair, an implementation MUST generate each | |||
key pair independently of all other key pairs in the HSS tree. | key pair independently of all other key pairs in the HSS tree. | |||
An implementation MUST ensure that an LM-OTS private key is used to | An implementation MUST ensure that an LM-OTS private key is used to | |||
generate a signature only one time and ensure that it cannot be used | generate a signature only one time and ensure that it cannot be used | |||
for any other purpose. | for any other purpose. | |||
skipping to change at page 10, line 36 ¶ | skipping to change at page 10, line 39 ¶ | |||
the generation of private keys, the guidance in [RFC4086] remains | the generation of private keys, the guidance in [RFC4086] remains | |||
important. | important. | |||
When computing signatures, the same hash function SHOULD be used to | When computing signatures, the same hash function SHOULD be used to | |||
compute the message digest of the content and the signed attributes, | compute the message digest of the content and the signed attributes, | |||
if they are present. | if they are present. | |||
7. IANA Considerations | 7. IANA Considerations | |||
In the "SMI Security for S/MIME Module Identifier | In the "SMI Security for S/MIME Module Identifier | |||
(1.2.840.113549.1.9.16.0)" registry, IANA is requested to change the | (1.2.840.113549.1.9.16.0)" registry, IANA has changed the reference | |||
reference for value 64 to point to this document. | for value 64 to this document. | |||
In the "SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3)" | In the "SMI Security for S/MIME Algorithms (1.2.840.113549.1.9.16.3)" | |||
registry, IANA is requested to change the reference for value 17 to | registry, IANA has changed the reference for value 17 to this | |||
point to this document. | document. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[ASN1-B] ITU-T, "Information technology -- Abstract Syntax Notation | [ASN1-B] ITU-T, "Information technology -- Abstract Syntax Notation | |||
One (ASN.1): Specification of basic notation", | One (ASN.1): Specification of basic notation", | |||
ITU-T Recommendation X.680, August 2015. | ITU-T Recommendation X.680, August 2015. | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
[ASN1-E] ITU-T, "Information technology -- ASN.1 encoding rules: | [ASN1-E] 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, August 2015. | (DER)", ITU-T Recommendation X.690, August 2015. | |||
[CMS] Housley, R., "Cryptographic Message Syntax (CMS)", STD 70, | [CMS] 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/info/rfc5652>. | <https://www.rfc-editor.org/info/rfc5652>. | |||
[HASHSIG] McGrew, D., Curcio, M., and S. Fluhrer, "Leighton-Micali | [HASHSIG] McGrew, D., Curcio, M., and S. Fluhrer, "Leighton-Micali | |||
skipping to change at page 11, line 44 ¶ | skipping to change at page 11, line 46 ¶ | |||
Infrastructure: Additional Algorithm Identifiers for | Infrastructure: Additional Algorithm Identifiers for | |||
RSASSA-PSS and ECDSA Using SHAKEs", RFC 8692, | RSASSA-PSS and ECDSA Using SHAKEs", RFC 8692, | |||
DOI 10.17487/RFC8692, December 2019, | DOI 10.17487/RFC8692, December 2019, | |||
<https://www.rfc-editor.org/info/rfc8692>. | <https://www.rfc-editor.org/info/rfc8692>. | |||
[SHA3] National Institute of Standards and Technology, "SHA-3 | [SHA3] National Institute of Standards and Technology, "SHA-3 | |||
Standard: Permutation-Based Hash and Extendable-Output | Standard: Permutation-Based Hash and Extendable-Output | |||
Functions", DOI 10.6028/NIST.FIPS.202, FIPS PUB 202, | Functions", DOI 10.6028/NIST.FIPS.202, FIPS PUB 202, | |||
August 2015, <https://doi.org/10.6028/NIST.FIPS.202>. | August 2015, <https://doi.org/10.6028/NIST.FIPS.202>. | |||
[SHS] National Institute of Standards and Technology (NIST), | [SHS] National Institute of Standards and Technology, "Secure | |||
"Secure Hash Standard (SHS)", FIPS PUB 180-4, | Hash Standard (SHS)", FIPS PUB 180-4, | |||
DOI 10.6028/NIST.FIPS.180-4, August 2015, | DOI 10.6028/NIST.FIPS.180-4, August 2015, | |||
<https://doi.org/10.6028/NIST.FIPS.180-4>. | <https://doi.org/10.6028/NIST.FIPS.180-4>. | |||
8.2. Informative References | 8.2. Informative References | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
[BH2013] Ptacek, T., Ritter, T., Samuel, J., and A. Stamos, "The | [BH2013] Ptacek, T., Ritter, T., Samuel, J., and A. Stamos, "The | |||
Factoring Dead: Preparing for the Cryptopocalypse", August | Factoring Dead: Preparing for the Cryptopocalypse", August | |||
2013, <https://media.blackhat.com/us-13/us-13-Stamos-The- | 2013, <https://media.blackhat.com/us-13/us-13-Stamos-The- | |||
Factoring-Dead.pdf>. | Factoring-Dead.pdf>. | |||
[CMSASN1] Hoffman, P. and J. Schaad, "New ASN.1 Modules for | [CMSASN1] 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/info/rfc5911>. | <https://www.rfc-editor.org/info/rfc5911>. | |||
[CMSASN1U] Schaad, J. and S. Turner, "Additional New ASN.1 Modules | [CMSASN1U] 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/info/rfc6268>. | <https://www.rfc-editor.org/info/rfc6268>. | |||
[Err7960] RFC Errata Report 7960, RFC 8708, 28 May 2024, | [Err7960] RFC Errata, Erratum ID 7960, RFC 8708, | |||
<https://www.rfc-editor.org/errata/eid7960>. | <https://www.rfc-editor.org/errata/eid7960>. | |||
[Err7963] RFC Errata Report 7963, RFC 8708, 29 May 2024, | [Err7963] RFC Errata, Erratum ID 7963, RFC 8708, | |||
<https://www.rfc-editor.org/errata/eid7963>. | <https://www.rfc-editor.org/errata/eid7963>. | |||
[FWPROT] Housley, R., "Using Cryptographic Message Syntax (CMS) to | [FWPROT] Housley, R., "Using Cryptographic Message Syntax (CMS) to | |||
Protect Firmware Packages", RFC 4108, | Protect Firmware Packages", RFC 4108, | |||
DOI 10.17487/RFC4108, August 2005, | DOI 10.17487/RFC4108, August 2005, | |||
<https://www.rfc-editor.org/info/rfc4108>. | <https://www.rfc-editor.org/info/rfc4108>. | |||
[I-D.ietf-lamps-x509-shbs] | ||||
Van Geest, D., Bashiri, K., Fluhrer, S., Gazdag, S., and | ||||
S. Kousidis, "Internet X.509 Public Key Infrastructure: | ||||
Algorithm Identifiers for HSS and XMSS", Work in Progress, | ||||
Internet-Draft, draft-ietf-lamps-x509-shbs-04, 25 July | ||||
2024, <https://datatracker.ietf.org/doc/draft-ietf-lamps- | ||||
x509-shbs-04>. | ||||
[IANA-LMS] IANA, "Leighton-Micali Signatures (LMS)", | [IANA-LMS] IANA, "Leighton-Micali Signatures (LMS)", | |||
<https://www.iana.org/assignments/leighton-micali- | <https://www.iana.org/assignments/leighton-micali- | |||
signatures/>. | signatures/>. | |||
[LM] Leighton, T. and S. Micali, "Large provably fast and | [LM] Leighton, T. and S. Micali, "Large provably fast and | |||
secure digital signature schemes based on secure hash | secure digital signature schemes based on secure hash | |||
functions", U.S. Patent 5,432,852, July 1995. | functions", U.S. Patent 5,432,852, July 1995. | |||
[M1979] Merkle, R., "Secrecy, Authentication, and Public Key | [M1979] Merkle, R., "Secrecy, Authentication, and Public Key | |||
Systems", Technical Report No. 1979-1, Information Systems | Systems", Information Systems Laboratory, Stanford | |||
Laboratory, Stanford University, 1979. | University, Technical Report No. 1979-1, 1979. | |||
[M1987] Merkle, R., "A Digital Signature Based on a Conventional | [M1987] Merkle, R., "A Digital Signature Based on a Conventional | |||
Encryption Function", Advances in Cryptology -- CRYPTO '87 | Encryption Function", Advances in Cryptology -- CRYPTO '87 | |||
Proceedings, Lecture Notes in Computer Science Vol. 293, | Proceedings, Lecture Notes in Computer Science, Vol. 293, | |||
DOI 10.1007/3-540-48184-2_32, 1988, | DOI 10.1007/3-540-48184-2_32, 1988, | |||
<https://doi.org/10.1007/3-540-48184-2_32>. | <https://doi.org/10.1007/3-540-48184-2_32>. | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
[M1989a] Merkle, R., "A Certified Digital Signature", Advances in | [M1989a] Merkle, R., "A Certified Digital Signature", Advances in | |||
Cryptology -- CRYPTO '89 Proceedings, Lecture Notes in | Cryptology -- CRYPTO '89 Proceedings, Lecture Notes in | |||
Computer Science Vol. 435, DOI 10.1007/0-387-34805-0_21, | Computer Science, Vol. 435, DOI 10.1007/0-387-34805-0_21, | |||
1990, <https://doi.org/10.1007/0-387-34805-0_21>. | 1990, <https://doi.org/10.1007/0-387-34805-0_21>. | |||
[M1989b] Merkle, R., "One Way Hash Functions and DES", Advances in | [M1989b] Merkle, R., "One Way Hash Functions and DES", Advances in | |||
Cryptology -- CRYPTO '89 Proceedings, Lecture Notes in | Cryptology -- CRYPTO '89 Proceedings, Lecture Notes in | |||
Computer Science Vol. 435, DOI 10.1007/0-387-34805-0_40, | Computer Science, Vol. 435, DOI 10.1007/0-387-34805-0_40, | |||
1990, <https://doi.org/10.1007/0-387-34805-0_40>. | 1990, <https://doi.org/10.1007/0-387-34805-0_40>. | |||
[NAS2019] National Academies of Sciences, Engineering, and Medicine, | [NAS2019] National Academies of Sciences, Engineering, and Medicine, | |||
"Quantum Computing: Progress and Prospects", The National | "Quantum Computing: Progress and Prospects", The National | |||
Academies Press, DOI 10.17226/25196, 2019, | Academies Press, DOI 10.17226/25196, 2019, | |||
<https://doi.org/10.17226/25196>. | <https://doi.org/10.17226/25196>. | |||
[PKIXASN1] Hoffman, P. and J. Schaad, "New ASN.1 Modules for the | [PKIXASN1] 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/info/rfc5912>. | <https://www.rfc-editor.org/info/rfc5912>. | |||
[PQC] Bernstein, D., "Introduction to post-quantum | [PQC] Bernstein, D., "Introduction to post-quantum | |||
cryptography", DOI 10.1007/978-3-540-88702-7_1, 2009, | cryptography", Post-Quantum Cryptography, Springer, pp. | |||
1-14, DOI 10.1007/978-3-540-88702-7_1, 2009, | ||||
<https://doi.org/10.1007/978-3-540-88702-7_1>. | <https://doi.org/10.1007/978-3-540-88702-7_1>. | |||
[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/info/rfc4086>. | <https://www.rfc-editor.org/info/rfc4086>. | |||
[X.509-S-HBS] | ||||
Van Geest, D., Bashiri, K., Fluhrer, S., Gazdag, S., and | ||||
S. Kousidis, "Use of the HSS and XMSS Hash-Based Signature | ||||
Algorithms in Internet X.509 Public Key Infrastructure", | ||||
Work in Progress, Internet-Draft, draft-ietf-lamps-x509- | ||||
shbs-13, 12 December 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-lamps- | ||||
x509-shbs-13>. | ||||
Appendix A. ASN.1 Module | Appendix A. ASN.1 Module | |||
The ASN.1 module in this appendix builds upon the modules in | The ASN.1 module in this appendix builds upon the modules in | |||
[CMSASN1] and [CMSASN1U]. | [CMSASN1] and [CMSASN1U]. | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
<CODE BEGINS> | <CODE BEGINS> | |||
MTS-HashSig-2013 | MTS-HashSig-2013 | |||
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) | { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) | |||
id-smime(16) id-mod(0) id-mod-mts-hashsig-2013(64) } | id-smime(16) id-mod(0) id-mod-mts-hashsig-2013(64) } | |||
DEFINITIONS IMPLICIT TAGS ::= BEGIN | DEFINITIONS IMPLICIT TAGS ::= BEGIN | |||
EXPORTS ALL; | EXPORTS ALL; | |||
IMPORTS | IMPORTS | |||
PUBLIC-KEY, SIGNATURE-ALGORITHM, SMIME-CAPS | PUBLIC-KEY, SIGNATURE-ALGORITHM, SMIME-CAPS | |||
FROM AlgorithmInformation-2009 -- RFC 5911 [CMSASN1] | FROM AlgorithmInformation-2009 -- RFC 5911 [CMSASN1] | |||
{ 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) } ; | |||
-- | -- | |||
-- Object Identifiers | -- Object Identifiers | |||
-- | -- | |||
skipping to change at page 14, line 44 ¶ | skipping to change at page 15, line 5 ¶ | |||
PARAMS ARE absent | PARAMS ARE absent | |||
CERT-KEY-USAGE | CERT-KEY-USAGE | |||
{ digitalSignature, nonRepudiation, keyCertSign, cRLSign } } | { digitalSignature, nonRepudiation, keyCertSign, cRLSign } } | |||
HSS-LMS-HashSig-PublicKey ::= OCTET STRING | HSS-LMS-HashSig-PublicKey ::= OCTET STRING | |||
-- | -- | |||
-- Expand the signature algorithm set used by CMS [CMSASN1U] | -- Expand the signature algorithm set used by CMS [CMSASN1U] | |||
-- | -- | |||
RFC Use of the HSS/LMS Hash-Based Signature December 2024 | ||||
SignatureAlgorithmSet SIGNATURE-ALGORITHM ::= | SignatureAlgorithmSet SIGNATURE-ALGORITHM ::= | |||
{ sa-HSS-LMS-HashSig, ... } | { sa-HSS-LMS-HashSig, ... } | |||
-- | -- | |||
-- Expand the S/MIME capabilities set used by CMS [CMSASN1] | -- Expand the S/MIME capabilities set used by CMS [CMSASN1] | |||
-- | -- | |||
SMimeCaps SMIME-CAPS ::= | SMimeCaps SMIME-CAPS ::= | |||
{ sa-HSS-LMS-HashSig.&smimeCaps, ... } | { sa-HSS-LMS-HashSig.&smimeCaps, ... } | |||
End of changes. 41 change blocks. | ||||
52 lines changed or deleted | 87 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |