| rfc9881v2.txt | rfc9881.txt | |||
|---|---|---|---|---|
| skipping to change at line 115 ¶ | skipping to change at line 115 ¶ | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 2. Identifiers | 2. Identifiers | |||
| The AlgorithmIdentifier type is defined in [RFC5912] as follows: | The AlgorithmIdentifier type is defined in [RFC5912] as follows: | |||
| AlgorithmIdentifier{ALGORITHM-TYPE, ALGORITHM-TYPE:AlgorithmSet} ::= | AlgorithmIdentifier{ALGORITHM-TYPE, ALGORITHM-TYPE:AlgorithmSet} ::= | |||
| SEQUENCE { | SEQUENCE { | |||
| algorithm ALGORITHM-TYPE.id({AlgorithmSet}), | algorithm ALGORITHM-TYPE.&id({AlgorithmSet}), | |||
| parameters ALGORITHM-TYPE. | parameters ALGORITHM-TYPE. | |||
| &Params({AlgorithmSet}{@algorithm}) OPTIONAL | &Params({AlgorithmSet}{@algorithm}) OPTIONAL | |||
| } | } | |||
| | NOTE: The above syntax is from [RFC5912] and is compatible with | | NOTE: The above syntax is from [RFC5912] and is compatible with | |||
| | the 2021 ASN.1 syntax [X680]. See [RFC5280] for the 1988 ASN.1 | | the 2021 ASN.1 syntax [X680]. See [RFC5280] for the 1988 ASN.1 | |||
| | syntax. | | syntax. | |||
| The fields in AlgorithmIdentifier have the following meanings: | The fields in AlgorithmIdentifier have the following meanings: | |||
| * algorithm identifies the cryptographic algorithm with an object | * algorithm identifies the cryptographic algorithm with an object | |||
| identifier (OID). | identifier (OID). | |||
| skipping to change at line 682 ¶ | skipping to change at line 682 ¶ | |||
| Encoding Rules (CER) and Distinguished Encoding Rules | Encoding Rules (CER) and Distinguished Encoding Rules | |||
| (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1:2021, | (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1:2021, | |||
| February 2021, <https://www.itu.int/rec/T-REC-X.690>. | February 2021, <https://www.itu.int/rec/T-REC-X.690>. | |||
| 10.2. Informative References | 10.2. Informative References | |||
| [CDFFJ21] Cremers, C., Düzlü, S., Fiedler, R., Fischlin, M., and C. | [CDFFJ21] Cremers, C., Düzlü, S., Fiedler, R., Fischlin, M., and C. | |||
| Janson, "BUFFing signature schemes beyond unforgeability | Janson, "BUFFing signature schemes beyond unforgeability | |||
| and the case of post-quantum signatures", Cryptology | and the case of post-quantum signatures", Cryptology | |||
| ePrint Archive, Paper 2020/1525, October 2023, | ePrint Archive, Paper 2020/1525, October 2023, | |||
| <https://eprint.iacr.org/2020/1525>. | <https://eprint.iacr.org/ | |||
| archive/2020/1525/20231023:114351>. | ||||
| [Dilithium] | [Dilithium] | |||
| Bai, S., Ducas, L., Kiltz, E., Lepoint, T., Lyubashevsky, | Bai, S., Ducas, L., Kiltz, E., Lepoint, T., Lyubashevsky, | |||
| V., Schwabe, P., Seiler, G., and D. Stehlé, "CRYSTALS- | V., Schwabe, P., Seiler, G., and D. Stehlé, "CRYSTALS- | |||
| Dilithium Algorithm Specifications and Supporting | Dilithium Algorithm Specifications and Supporting | |||
| Documentation (Version 3.1)", 8 February 2021, | Documentation (Version 3.1)", 8 February 2021, | |||
| <https://pq-crystals.org/dilithium/data/dilithium- | <https://pq-crystals.org/dilithium/data/dilithium- | |||
| specification-round3-20210208.pdf>. | specification-round3-20210208.pdf>. | |||
| [Fiat-Shamir] | [Fiat-Shamir] | |||
| skipping to change at line 4045 ¶ | skipping to change at line 4046 ¶ | |||
| Implementations of ML-DSA using the External μ pre-hashing mode | Implementations of ML-DSA using the External μ pre-hashing mode | |||
| requires the following algorithms, which are modified versions of the | requires the following algorithms, which are modified versions of the | |||
| algorithms presented in [FIPS204]. The nomenclature used here has | algorithms presented in [FIPS204]. The nomenclature used here has | |||
| been modified from the NIST FAQ [FIPS204-ExternalMuFAQ] for clarity. | been modified from the NIST FAQ [FIPS204-ExternalMuFAQ] for clarity. | |||
| Pre-hash operation: | Pre-hash operation: | |||
| Computeμ(pk, M, ctx): | Computeμ(pk, M, ctx): | |||
| # Referred to as 'Externalμ-ML-DSA.Prehash(pk, M, ctx)' | # Referred to as 'ExternalMu-ML-DSA.Prehash(pk, M, ctx)' | |||
| # in the FIPS 204 FAQ. | # in the FIPS 204 FAQ. | |||
| # M is the message, a bit-string | # M is the message, a bit-string | |||
| # μ and ctx are byte-strings. | # μ and ctx are byte-strings. | |||
| # ctx is the context string, which defaults to the empty string. | # ctx is the context string, which defaults to the empty string. | |||
| μ = H(BytesToBits(H(pk, 64) || IntegerToBytes(0, 1) || | μ = H(BytesToBits(H(pk, 64) || IntegerToBytes(0, 1) || | |||
| IntegerToBytes(|ctx|, 1) || ctx) || M, 64) | IntegerToBytes(|ctx|, 1) || ctx) || M, 64) | |||
| # 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 'Externalμ-ML-DSA.Sign(sk, μ)' | # Referred to as 'ExternalMu-ML-DSA.Sign(sk, μ)' | |||
| # 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. 4 change blocks. | ||||
| 8 lines changed or deleted | 9 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||