Skip to content

Commit bf33bbc

Browse files
authored
Changes normative reference of ECDH Point Encoding. (#265)
* Changes normative reference of ECDH Point Encoding. Refer to RFC-5480 first, then hint to X9.62. Closes #264 * Removes trailing whitespaces. * Fixes some references. Closes #264
1 parent e0a3c6f commit bf33bbc

1 file changed

Lines changed: 9 additions & 19 deletions

File tree

draft-ietf-lamps-pq-composite-kem.md

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ normative:
8585
RFC8017:
8686
#RFC8174: -- does not need to be explicit; added by bcp14 boilerplateu
8787
RFC8410:
88-
RFC8411:
8988
RFC9629:
9089
X.690:
9190
title: "Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)"
@@ -156,17 +155,18 @@ normative:
156155

157156
informative:
158157
RFC2986:
159-
RFC4210:
160158
RFC4211:
161159
RFC5639:
162160
RFC5914:
163-
RFC5990:
164161
RFC6090:
165162
RFC7292:
166163
RFC7296:
164+
RFC8411:
167165
RFC8446:
168166
RFC8551:
167+
RFC9690:
169168
RFC9794:
169+
RFC9810:
170170
I-D.draft-ietf-lamps-kyber-certificates-11:
171171
I-D.draft-sfluhrer-cfrg-ml-kem-security-considerations-04:
172172
TestVectors:
@@ -259,16 +259,6 @@ informative:
259259
- name: Bertram Poettering
260260
date: 2018
261261
target: https://eprint.iacr.org/2018/024
262-
Aviram22:
263-
title: "Practical (Post-Quantum) Key Combiners from One-Wayness and Applications to TLS"
264-
author:
265-
- name: Nimrod Aviram
266-
- name: Benjamin Dowling
267-
- name: Ilan Komargodski
268-
- name: Kenneth G. Paterson
269-
- name: Eyal Ronen
270-
- name: Eylon Yogev
271-
target: https://eprint.iacr.org/2022/065
272262
FIPS-140-3-IG:
273263
title: Implementation Guidance for FIPS 140-3 and the Cryptographic Module Validation Program
274264
target: https://csrc.nist.gov/csrc/media/Projects/cryptographic-module-validation-program/documents/fips%20140-3/FIPS%20140-3%20IG.pdf
@@ -364,7 +354,7 @@ In addition, the following terms are used in this specification:
364354

365355
**ML-KEM**: The Module-Lattice-based Key Encapsulation Mechanism algorithm defined in [FIPS.203]
366356

367-
**RSA**: The Rivest-Shamir-Adleman cryptosystem, used in this specification as the RSA-OAEP (Optimal Asymmetric Encryption Padding) scheme defined in [RFC8017].
357+
**RSA**: The Rivest-Shamir-Adleman cryptosystem, used in this specification as the RSA-OAEP (Optimal Asymmetric Encryption Padding) scheme defined in [RFC8017].
368358

369359
**SHARED SECRET KEY:**
370360
A value established between two communicating parties for use as
@@ -392,7 +382,7 @@ The algorithm descriptions use python-like syntax. The following symbols deserve
392382

393383
## Composite Design Philosophy
394384

395-
Composite algorithms, as defined in this specification, follow the definition in [RFC9794] and should be regarded as a single algorithm that performs a single cryptographic operation typical of a key establishment mechanism.This generally means that the complexity of combining algorithms can and should be handled by the cryptographic library or cryptographic module. The design intent is that protocols such as PKCS#10 [RFC2986], CMP [RFC4210], X.509 [RFC5280], the CMS [RFC5652], and the Trust Anchor Format [RFC5914] can treat composite algorithms as they would any other algorithm without the protocol layer to have any "hybrid-awareness". This is a property referred to as "protocol backwards-compatibility".
385+
Composite algorithms, as defined in this specification, follow the definition in [RFC9794] and should be regarded as a single algorithm that performs a single cryptographic operation typical of a key establishment mechanism.This generally means that the complexity of combining algorithms can and should be handled by the cryptographic library or cryptographic module. The design intent is that protocols such as PKCS#10 [RFC2986], CMP [RFC9810], X.509 [RFC5280], the CMS [RFC5652], and the Trust Anchor Format [RFC5914] can treat composite algorithms as they would any other algorithm without the protocol layer to have any "hybrid-awareness". This is a property referred to as "protocol backwards-compatibility".
396386

397387
Discussion of the specific choices of algorithm pairings can be found in {{sec-rationale}}.
398388

@@ -469,7 +459,7 @@ RSAOAEPKEM.Decap(skR, enc):
469459

470460
The encodings for the public key (`pkR`), private key (`skR`), and ciphertext (`enc`) are described in {{sec-serialization}}.
471461

472-
A quick note on the choice of RSA-OAEP as the supported RSA encryption primitive. RSA-KEM [RFC5990] is cryptographically robust and is more straightforward to work with, but it has fairly limited adoption and therefore is of limited value as a PQ migration mechanism. Also, while RSA-PKCS#1v1.5 [RFC8017] is still widely used, it is hard to make secure and no longer FIPS-approved as of the end of 2023 [SP800-131Ar2], so it is of limited forwards value. This leaves RSA-OAEP [RFC8017] as the remaining choice. See {{sec-rationale}} for further discussion of algorithm choices.
462+
A quick note on the choice of RSA-OAEP as the supported RSA encryption primitive. RSA-KEM [RFC9690] is cryptographically robust and is more straightforward to work with, but it has fairly limited adoption and therefore is of limited value as a PQ migration mechanism. Also, while RSA-PKCS#1v1.5 [RFC8017] is still widely used, it is hard to make secure and no longer FIPS-approved as of the end of 2023 [SP800-131Ar2], so it is of limited forwards value. This leaves RSA-OAEP [RFC8017] as the remaining choice. See {{sec-rationale}} for further discussion of algorithm choices.
473463

474464
Note that, at least at the time of writing, the algorithm `RSAOAEPKEM` is not defined as a standalone algorithm within PKIX standards and it does not have an assigned algorithm OID, so it cannot be used directly with CMS KEMRecipientInfo [RFC9629]; it is merely a building block for the composite algorithm.
475465

@@ -792,7 +782,7 @@ While ML-KEM has a single fixed-size representation for each of public key, priv
792782

793783
* **ML-KEM**: MUST be encoded as specified in sections 7.1 and 7.2 of [FIPS.203], using a 64-byte seed `(d || z)` as the private key.
794784
* **RSA**: the public key MUST be encoded as RSAPublicKey with the `(n,e)` public key representation as specified in A.1.1 of [RFC8017] and the private key representation as RSAPrivateKey specified in A.1.2 of [RFC8017] with version 0 and 'otherPrimeInfos' absent. An RSA-OAEP ciphertext MUST be encoded as specified in section 7.1.1 of {{RFC8017}}
795-
* **ECDH**: public key MUST be encoded as an uncompressed X9.62 [X9.62–2005], including the leading byte `0x04` indicating uncompressed. This is consistent with the encoding of `ECPoint` as specified in section 2.2 of [RFC5480] when no ASN.1 OCTET STRING wrapping is present. The private key MUST be encoded as ECPrivateKey specified in [RFC5915] with 'NamedCurve' parameter set to the OID of the curve, but without the 'publicKey' field. The ciphertext MUST be encoded in the same manner as the public key.
785+
* **ECDH**: public key MUST be encoded as an uncompressed elliptic curve point as in section 2.2 of [RFC5480], including the leading byte `0x04` indicating uncompressed encoding and without the ASN.1 OCTET STRING wrapper. This is consistent with the encoding of EC public keys in X9.62 [X9.62–2005]. The private key MUST be encoded as ECPrivateKey specified in [RFC5915] with 'NamedCurve' parameter set to the OID of the curve, but without the 'publicKey' field. The ciphertext MUST be encoded in the same manner as the public key.
796786
* **X25519 and X448**: the public key MUST be encoded as per section 5 of [RFC7748] and the private key is a 32 or 56 byte raw value for X25519 and X448 respectively. The ciphertext MUST be encoded in the same manner as the public key.
797787

798788
All ASN.1 objects SHALL be encoded using DER on serialization.
@@ -1036,7 +1026,7 @@ Deserialization Process:
10361026

10371027
The following sections provide processing logic and the necessary ASN.1 modules necessary to use composite ML-KEM within X.509 and PKIX protocols. Use within the Cryptographic Message Syntax (CMS) will be covered in a separate specification.
10381028

1039-
While composite ML-KEM keys and ciphertext values MAY be used raw, the following sections provide conventions for using them within X.509 and other PKIX protocols such that Composite ML-KEM can be used as a drop-in replacement for KEM algorithms in PKCS#10 [RFC2986], CMP [RFC4210], X.509 [RFC5280], and related protocols.
1029+
While composite ML-KEM keys and ciphertext values MAY be used raw, the following sections provide conventions for using them within X.509 and other PKIX protocols such that Composite ML-KEM can be used as a drop-in replacement for KEM algorithms in PKCS#10 [RFC2986], CMP [RFC9810], X.509 [RFC5280], and related protocols.
10401030

10411031

10421032
## Encoding to DER {#sec-encoding-to-der}
@@ -1113,7 +1103,7 @@ kema-MLKEM768-ECDH-P256-SHA3-256 KEM-ALGORITHM ::=
11131103
The full set of key types defined by this specification can be found in the ASN.1 Module in {{sec-asn1-module}}.
11141104

11151105

1116-
Use cases that require an interoperable encoding for composite private keys will often need to place a composite private key inside a `OneAsymmetricKey` structure defined in [RFC5958], such as when private keys are carried in PKCS #12 [RFC7292], CMP [RFC4210] or CRMF [RFC4211]. The definition of `OneAsymmetricKey` is copied here for convenience:
1106+
Use cases that require an interoperable encoding for composite private keys will often need to place a composite private key inside a `OneAsymmetricKey` structure defined in [RFC5958], such as when private keys are carried in PKCS #12 [RFC7292], CMP [RFC9810] or CRMF [RFC4211]. The definition of `OneAsymmetricKey` is copied here for convenience:
11171107

11181108
~~~ ASN.1
11191109
OneAsymmetricKey ::= SEQUENCE {

0 commit comments

Comments
 (0)