rfc9881v4.txt   rfc9881.txt 
skipping to change at line 181 skipping to change at line 181
parameters SIGNATURE-ALGORITHM. parameters SIGNATURE-ALGORITHM.
&Params({SignatureAlgorithms} &Params({SignatureAlgorithms}
{@algorithmIdentifier.algorithm}) {@algorithmIdentifier.algorithm})
OPTIONAL OPTIONAL
}, },
signature BIT STRING (CONTAINING SIGNATURE-ALGORITHM.&Value( signature BIT STRING (CONTAINING SIGNATURE-ALGORITHM.&Value(
{SignatureAlgorithms} {SignatureAlgorithms}
{@algorithmIdentifier.algorithm})) {@algorithmIdentifier.algorithm}))
} }
Signatures are also used in the CRL list ASN.1 representation from Signatures are also used in the CRL list ASN.1; the representation
[RFC5280] below. In an X.509 CRL, a signature is encoded with an below is equivalent to that in [RFC5280]. In an X.509 CRL, a
algorithm identifier in the signatureAlgorithm attribute and a signature is encoded with an algorithm identifier in the
signatureValue attribute that contains the actual signature. signatureAlgorithm attribute and a signatureValue attribute that
contains the actual signature.
CertificateList ::= SIGNED{ TBSCertList } CertificateList ::= SIGNED{ TBSCertList }
The following SIGNATURE-ALGORITHM ASN.1 classes are for ML-DSA-44, The following SIGNATURE-ALGORITHM ASN.1 classes are for ML-DSA-44,
ML-DSA-65, and ML-DSA-87: ML-DSA-65, and ML-DSA-87:
sa-ml-dsa-44 SIGNATURE-ALGORITHM ::= { sa-ml-dsa-44 SIGNATURE-ALGORITHM ::= {
IDENTIFIER id-ml-dsa-44 IDENTIFIER id-ml-dsa-44
PARAMS ARE absent PARAMS ARE absent
PUBLIC-KEYS { pk-ml-dsa-44 } PUBLIC-KEYS { pk-ml-dsa-44 }
skipping to change at line 226 skipping to change at line 227
The identifiers defined in Section 2 can be used as the The identifiers defined in Section 2 can be used as the
AlgorithmIdentifier in the signatureAlgorithm field in the sequence AlgorithmIdentifier in the signatureAlgorithm field in the sequence
Certificate/CertificateList and in the signature field in the Certificate/CertificateList and in the signature field in the
sequence TBSCertificate/TBSCertList in certificates and CRLs, sequence TBSCertificate/TBSCertList in certificates and CRLs,
respectively, [RFC5280]. The parameters of these signature respectively, [RFC5280]. The parameters of these signature
algorithms MUST be absent, as explained in Section 2. That is, the algorithms MUST be absent, as explained in Section 2. That is, the
AlgorithmIdentifier SHALL be a SEQUENCE of one component, the OID id- AlgorithmIdentifier SHALL be a SEQUENCE of one component, the OID id-
ml-dsa-*, where * is 44, 65, or 87 -- see Section 2. ml-dsa-*, where * is 44, 65, or 87 -- see Section 2.
The signatureValue field contains the corresponding ML-DSA signature The signatureValue field contains the corresponding ML-DSA signature
computed upon the ASN.1 DER-encoded tbsCertificate/tbsCertList computed upon the ASN.1 DER-encoded TBSCertificate/TBSCertList
[RFC5280]. The optional context string (ctx) parameter as defined in [RFC5280]. The optional context string (ctx) parameter as defined in
Section 5.2 of [FIPS204] is left to its default value: the empty Section 5.2 of [FIPS204] is left to its default value: the empty
string. string.
Conforming Certification Authority (CA) implementations MUST specify Conforming Certification Authority (CA) implementations MUST specify
the algorithms explicitly by using the OIDs specified in Section 2 the algorithms explicitly by using the OIDs specified in Section 2
when encoding ML-DSA signatures in certificates and CRLs. Conforming when encoding ML-DSA signatures in certificates and CRLs. Conforming
client implementations that process certificates and CRLs using ML- client implementations that process certificates and CRLs using ML-
DSA MUST recognize the corresponding OIDs. Encoding rules for ML-DSA DSA MUST recognize the corresponding OIDs. Encoding rules for ML-DSA
signature values are specified in Section 2. signature values are specified in Section 2.
skipping to change at line 481 skipping to change at line 482
For the ASN.1 module in Appendix A, IANA has assigned the following For the ASN.1 module in Appendix A, IANA has assigned the following
object identifier (OID) in the "SMI Security for PKIX Module object identifier (OID) in the "SMI Security for PKIX Module
Identifier" registry (1.3.6.1.5.5.7.0): Identifier" registry (1.3.6.1.5.5.7.0):
+=========+=========================+===========+ +=========+=========================+===========+
| Decimal | Description | Reference | | Decimal | Description | Reference |
+=========+=========================+===========+ +=========+=========================+===========+
| 119 | id-mod-x509-ml-dsa-2025 | RFC 9881 | | 119 | id-mod-x509-ml-dsa-2025 | RFC 9881 |
+---------+-------------------------+-----------+ +---------+-------------------------+-----------+
Table 1 Table 1: Registered ASN.1 Module
8. Operational Considerations 8. Operational Considerations
8.1. Private Key Format 8.1. Private Key Format
An ML-DSA.KeyGen seed (xi) represents the RECOMMENDED format for An ML-DSA.KeyGen seed (xi) represents the RECOMMENDED format for
storing and transmitting ML-DSA private keys. This format is storing and transmitting ML-DSA private keys. This format is
explicitly permitted by [FIPS204] as an acceptable representation of explicitly permitted by [FIPS204] as an acceptable representation of
a keypair. In particular, generating the seed in one cryptographic a keypair. In particular, generating the seed in one cryptographic
module and then importing or exporting it into another cryptographic module and then importing or exporting it into another cryptographic
skipping to change at line 566 skipping to change at line 567
prior to hashing, as described in line 6 of Algorithm 7 of [FIPS204]. prior to hashing, as described in line 6 of Algorithm 7 of [FIPS204].
This means that in the unlikely discovery of a collision attack This means that in the unlikely discovery of a collision attack
against the SHA-3 family, an attacker would have to perform a public- against the SHA-3 family, an attacker would have to perform a public-
key-specific collision search in order to find message pairs such key-specific collision search in order to find message pairs such
that H(tr || m1) = H(tr || m2), because a direct hash collision H(m1) that H(tr || m1) = H(tr || m2), because a direct hash collision H(m1)
= H(m2) will not suffice. HashML-DSA removes this enhanced security = H(m2) will not suffice. HashML-DSA removes this enhanced security
property. In spite of its lack of targeted collision protection, the property. In spite of its lack of targeted collision protection, the
practical security risk of using HashML-DSA in X.509 signatures would practical security risk of using HashML-DSA in X.509 signatures would
be immaterial. This is because a hash of the issuing CA's public key be immaterial. This is because a hash of the issuing CA's public key
is already included in the Authority Key Identifier (AKI) extension, is already included in the Authority Key Identifier (AKI) extension,
which is signed as part of the tbsCertificate structure. Even when which is signed as part of the TBSCertificate structure. Even when
it is a SHA-1 hash, general second pre-images against the AKI hash of it is a SHA-1 hash, general second pre-images against the AKI hash of
existing issuing CAs would be impractical. existing issuing CAs would be impractical.
9. Security Considerations 9. Security Considerations
The Security Considerations section of [RFC5280] applies to this The Security Considerations section of [RFC5280] applies to this
specification as well. specification as well.
The ML-DSA signature scheme is strongly unforgeable under chosen The ML-DSA signature scheme is strongly unforgeable under chosen
message attacks (SUF-CMA). For the purpose of estimating security message attacks (SUF-CMA). For the purpose of estimating security
skipping to change at line 606 skipping to change at line 607
implementation with greater ease -- particularly against side-channel implementation with greater ease -- particularly against side-channel
attacks -- it does not necessarily provide resistance to more attacks -- it does not necessarily provide resistance to more
powerful attacks such as differential power analysis. Some amount of powerful attacks such as differential power analysis. Some amount of
side-channel leakage has been demonstrated in parts of the signing side-channel leakage has been demonstrated in parts of the signing
algorithm (specifically the bit-unpacking function), from which a algorithm (specifically the bit-unpacking function), from which a
demonstration of key recovery has been made over a large sample of demonstration of key recovery has been made over a large sample of
signatures. Masking countermeasures exist for ML-DSA, but comes with signatures. Masking countermeasures exist for ML-DSA, but comes with
performance overhead. performance overhead.
ML-DSA offers both deterministic and randomized signing. Signatures ML-DSA offers both deterministic and randomized signing. Signatures
generated with either mode are compatible and a verifier can't tell generated with either mode are compatible and a verifier cannot tell
them apart. In the deterministic case, a signature only depends on them apart. In the deterministic case, a signature only depends on
the private key and the message to be signed. This makes the the private key and the message to be signed. This makes the
implementation easier to test and does not require a randomness implementation easier to test and does not require a randomness
source during signing. In the randomized case, signing mixes in a source during signing. In the randomized case, signing mixes in a
256-bit random string from an approved random bit generator (RBG). 256-bit random string from an approved random bit generator (RBG).
When randomized, ML-DSA is easier to harden against fault and When randomized, ML-DSA is easier to harden against fault and
hardware side-channel attacks. hardware side-channel attacks.
A security property that is also associated with digital signatures A security property that is also associated with digital signatures
is non-repudiation. Non-repudiation refers to the assurance that the is non-repudiation. Non-repudiation refers to the assurance that the
skipping to change at line 3825 skipping to change at line 3825
| in production systems. | in production systems.
The following examples demonstrate inconsistent seed and expanded The following examples demonstrate inconsistent seed and expanded
private keys. private keys.
Three ML-DSA-44-PrivateKey examples of inconsistent seed and expanded Three ML-DSA-44-PrivateKey examples of inconsistent seed and expanded
private keys follow: private keys follow:
1. The first ML-DSA-PrivateKey example includes the both CHOICE , 1. The first ML-DSA-PrivateKey example includes the both CHOICE ,
i.e., both seed and expandedKey are included. The seed and i.e., both seed and expandedKey are included. The seed and
expanded values can be checked for inconsistencies. expandedKey values can be checked for inconsistencies.
2. The second ML-DSA-PrivateKey example includes only expandedKey. 2. The second ML-DSA-PrivateKey example includes only expandedKey.
The public key fails to match the tr hash value in the private The public key fails to match the tr hash value in the private
key. key.
3. The third ML-DSA-PrivateKey example also includes only 3. The third ML-DSA-PrivateKey example also includes only
expandedKey. The private s_1 and s_2 vectors imply a t vector expandedKey. The private s_1 and s_2 vectors imply a t vector
whose private low bits do not match the t_0 vector portion of the whose private low bits do not match the t_0 vector portion of the
private key (its high bits t_1 are the primary content of the private key (its high bits t_1 are the primary content of the
public key). public key).
skipping to change at line 4064 skipping to change at line 4064
# The functions `BytesToBits` and `IntegerToBytes` are defined # The functions `BytesToBits` and `IntegerToBytes` are defined
# in FIPS 204. # in FIPS 204.
return μ return μ
Figure 1: Computeμ Pre-Hash Operation Figure 1: Computeμ Pre-Hash Operation
Sign operations: Sign operations:
Signμ(sk, μ): Signμ(sk, μ):
# Referred to as 'ExternalMu-ML-DSA.Sign(sk, μ)' # Referred to as 'ExternalMu-ML-DSA.Sign(sk, mu)'
# in the FIPS 204 FAQ. # in the FIPS 204 FAQ.
if |μ| != 64 then if |μ| != 64 then
return error # return an error indication if the input μ is not return error # return an error indication if the input μ is not
# 64 bytes. # 64 bytes.
end if end if
rnd = rand(32) # for the optional deterministic variant, rnd = rand(32) # for the optional deterministic variant,
# set rnd to all zeroes # set rnd to all zeroes
if rnd = NULL then if rnd = NULL then
 End of changes. 7 change blocks. 
10 lines changed or deleted 11 lines changed or added

This html diff was produced by rfcdiff 1.48.