| Internet-Draft | Composite FrodoKEM for X.509 PKI | September 2026 |
| Song & Chen | Expires 26 March 2027 | [Page] |
Composite FrodoKEM defines combinations of FrodoKEM with RSA-OAEP, ECDH, X25519, and X448. This document specifies the algorithm definitions, key formats, and certificate conventions for using Composite FrodoKEM in the X.509 Public Key Infrastructure.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 26 March 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
[ISO18033-2-AMD2] specifies FrodoKEM, a family of quantum-resistant key encapsulation mechanisms (KEMs) based on the Learning With Errors (LWE) problem over unstructured lattices. The detailed algorithm specification, including the KeyGen, Encapsulate, and Decapsulate procedures, is provided in [I-D.longa-cfrg-frodokem]. FrodoKEM offers multiple parameter sets, with the recommended sets for general use including FrodoKEM-976 for NIST security level 3 and FrodoKEM-1344 for NIST security level 5.¶
This document defines Composite FrodoKEM, which combines a FrodoKEM component with a traditional component algorithm (RSA-OAEP, ECDH, X25519, or X448) to produce a hybrid KEM that provides both post- quantum and classical security guarantees.¶
This document specifies the algorithm definitions, key formats, and certificate conventions for using Composite FrodoKEM in the X.509 Public Key Infrastructure [RFC5280]. Companion documents define the use of Composite FrodoKEM in specific protocols such as CMS [RFC9629] and TLS.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
FrodoKEM [ISO18033-2-AMD2] is a key encapsulation mechanism based on the Learning With Errors (LWE) problem over unstructured lattices. FrodoKEM defines two modes of operation: standard and ephemeral. As introduced in [I-D.longa-cfrg-frodokem], standard FrodoKEM doubles the length of the seedSE value and incorporates a public random salt value into encapsulation; it MAY be used in any application. Ephemeral FrodoKEM is intended only for applications where the number of ciphertexts generated per public key is small. This document specifies the use of standard FrodoKEM for composite combinations with traditional KEM algorithms.¶
For each FrodoKEM parameter set, [I-D.longa-cfrg-frodokem] defines two implementation variants that differ in the internal pseudorandom function: a SHAKE variant and an AES variant. This document specifies the use of both variants for each parameter set. The parameter sets of standard FrodoKEM used in this document are shown below:¶
+-------------+----------------+--------+--------+--------+------+ | NIST Level | Parameter Set | pk | sk | ct | ss | +-------------+----------------+--------+--------+--------+------+ | Level 3 | FrodoKEM-976 | 15,632 | 31,296 | 15,792 | 24 | +-------------+----------------+--------+--------+--------+------+ | Level 5 | FrodoKEM-1344 | 21,520 | 43,088 | 21,696 | 32 | +-------------+----------------+--------+--------+--------+------+ Table 1: Size (in bytes) of keys and ciphertexts of FrodoKEM¶
The following traditional component algorithms are used with Composite FrodoKEM:¶
RSA-OAEP: RSA encryption scheme with Optimal Asymmetric Encryption Padding. When used as a KEM component, RSA-OAEP generates a random shared secret, encrypts it with the recipient's RSA public key, and transmits the resulting ciphertext. The RSA-OAEP parameters used with Composite FrodoKEM follow the conventions specified in RFC8017.¶
ECDH: Elliptic Curve Diffie-Hellman key agreement using the NIST prime curves. When used as a KEM component, ECDH performs ephemeral-static key agreement and hashes the resulting shared point to produce a shared secret.¶
X25519 and X448: Elliptic Curve Diffie-Hellman key agreement using the Curve25519 and Curve448 Montgomery curves, respectively. These are used as KEMs in a manner analogous to ECDH.¶
A Composite FrodoKEM public key is a concatenation of a FrodoKEM public key and a traditional algorithm public key. A Composite FrodoKEM private key is a concatenation of the corresponding private keys. The public key and private key formats are identical for both the SHAKE and AES variants of a given parameter set; the variants are distinguished only by the algorithm identifier (OID).¶
The encapsulation and decapsulation procedures for Composite FrodoKEM invoke the underlying component algorithms independently and then combine the resulting shared secrets using a KEM combiner (see Section 3.4).¶
This section defines the key generation, encapsulation, decapsulation, and shared secret combiner algorithms for Composite FrodoKEM.¶
The Composite FrodoKEM key generation algorithm performs the following steps:¶
1. Generate a FrodoKEM key pair using the parameter set implied
by the algorithm identifier (SHAKE or AES variant):
(frodo_pk, frodo_sk) <- FrodoKEM.KeyGen()
2. Generate a traditional algorithm key pair:
(trad_pk, trad_sk) <- Trad.KeyGen()
3. The Composite FrodoKEM public key is the concatenation of the
component public keys:
ek = frodo_pk || trad_pk
4. The Composite FrodoKEM private key is the concatenation of the
component private keys:
dk = frodo_sk || trad_sk
¶
The Composite FrodoKEM encapsulation algorithm performs the following steps:¶
1. Separate the public keys based on the FrodoKEM parameter set
implied by the algorithm identifier:
switch FrodoKEM do
case FrodoKEM-976:
frodo_pk = ek[0:15632]
trad_pk = ek[15632:]
case FrodoKEM-1344:
frodo_pk = ek[0:21520]
trad_pk = ek[21520:]
2. Perform the respective component encapsulation operations
according to their algorithm specifications:
(frodo_ct, frodo_ss) <- FrodoKEM.Encapsulate(frodo_pk)
(trad_ct, trad_ss) <- TradKEM.Encap(trad_pk)
3. If either FrodoKEM.Encapsulate() or TradKEM.Encap() return an
error, then this process MUST return an error.
4. Encode the ciphertext:
ct = frodo_ct || trad_ct
5. Combine the KEM secrets and additional context to yield the
composite shared secret (see Section 3.4):
ss = SHA3-256(frodo_ss || trad_ss || trad_ct || trad_pk
|| Label)
6. Output composite shared secret key and ciphertext:
return (ss, ct)
¶
The Composite FrodoKEM decapsulation algorithm performs the following steps:¶
1. Separate the private keys based on the FrodoKEM parameter set
implied by the algorithm identifier:
switch FrodoKEM do
case FrodoKEM-976:
frodo_sk = dk[0:31296]
trad_sk = dk[31296:]
case FrodoKEM-1344:
frodo_sk = dk[0:43088]
trad_sk = dk[43088:]
2. Separate the ciphertext into its components based on the
FrodoKEM parameter set implied by the algorithm identifier:
switch FrodoKEM do
case FrodoKEM-976:
frodo_ct = ct[0:15792]
trad_ct = ct[15792:]
case FrodoKEM-1344:
frodo_ct = ct[0:21696]
trad_ct = ct[21696:]
3. Perform the respective component decapsulation operations
according to their algorithm specifications:
frodo_ss <- FrodoKEM.Decapsulate(frodo_sk, frodo_ct)
trad_ss <- TradKEM.Decap(trad_sk, trad_ct)
4. If either FrodoKEM.Decapsulate() or TradKEM.Decap() return
an error, then this process MUST return an error.
5. Combine the KEM secrets and additional context to yield the
composite shared secret (see Section 3.4):
ss = SHA3-256(frodo_ss || trad_ss || trad_ct || trad_pk ||
Label)
6. Output composite shared secret key:
return ss
¶
The KEM combiner takes as input the shared secrets and ciphertext from the component algorithms and produces a single composite shared secret.¶
For all Composite FrodoKEM algorithms specified in this document, the combiner is defined as follows:¶
ss = SHA3-256(frodo_ss || trad_ss || trad_ct || trad_pk || Label) where: o frodo_ss is the shared secret output from the FrodoKEM component. o trad_ss is the shared secret output from the traditional component. o trad_ct is the ciphertext output from the traditional component. o trad_pk is the public key of the traditional component. o Label is the KEM Combiner Label value defined in Section 5.2. o || denotes concatenation. o SHA3-256 is the SHA3-256 hash function [FIPS202].¶
The inclusion of the traditional ciphertext, traditional public key, and Label in the combiner input provides binding between the shared secret and the specific keying material, mitigating risks from partial key compromise. The same combiner is used for both the SHAKE and AES variants of Composite FrodoKEM.¶
The Composite FrodoKEM public key is a concatenation of the component public keys:¶
CompositeFrodoKEMPublicKey ::= BIT STRING¶
The value of the BIT STRING is:¶
bytes = frodo_pk || trad_pk¶
where frodo_pk is the raw FrodoKEM public key bytes and trad_pk is the traditional algorithm public key in its native encoding.¶
For ECDH and RSA-OAEP components, the trad_pk is encoded according to [RFC5480] and [RFC8017], respectively. For X25519 and X448 components, the trad_pk is the 32-octet or 56-octet Montgomery u-coordinate, respectively.¶
When carried in an X.509 SubjectPublicKeyInfo structure [RFC5280], the algorithm field contains the Composite FrodoKEM OID, and the subjectPublicKey field contains the CompositeFrodoKEMPublicKey.¶
The Composite FrodoKEM private key is a concatenation of the component private keys:¶
CompositeFrodoKEMPrivateKey ::= OCTET STRING¶
The value of the OCTET STRING is:¶
bytes = frodo_sk || trad_sk¶
where frodo_sk is the raw FrodoKEM private key bytes and trad_sk is the traditional algorithm private key in its native encoding.¶
When carried in an Asymmetric Key Package [RFC5958], the privateKeyAlgorithm field is set to the corresponding Composite FrodoKEM algorithm identifier, the privateKey field contains the CompositeFrodoKEMPrivateKey, and the publicKey field contains the CompositeFrodoKEMPublicKey.¶
All ASN.1 objects SHALL be encoded using DER on serialization. The deserialization routines do not check for well-formedness of the cryptographic material they are recovering. It is assumed that underlying cryptographic primitives will catch malformed values and raise an appropriate error.¶
The following object identifiers are assigned for Composite FrodoKEM algorithms. For each FrodoKEM parameter set and traditional algorithm combination, two variants are defined: a SHAKE variant and an AES variant. The SHAKE variants use FrodoKEM with SHAKE as the internal pseudorandom function; the AES variants use FrodoKEM with AES as the internal pseudorandom function. The two variants are not interoperable and are assigned distinct object identifiers.¶
-- SHAKE Variants
id-FrodoKEM976-RSA2048-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD1 }
id-FrodoKEM976-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD2 }
id-FrodoKEM976-RSA4096-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD3 }
id-FrodoKEM976-X25519-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD4 }
id-FrodoKEM976-ECDH-P256-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD5 }
id-FrodoKEM976-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD6 }
id-FrodoKEM976-ECDH-brainpoolP256r1-SHA3-256
OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD7 }
id-FrodoKEM1344-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD8 }
id-FrodoKEM1344-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD9 }
id-FrodoKEM1344-ECDH-brainpoolP384r1-SHA3-256
OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD10 }
id-FrodoKEM1344-X448-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD11 }
id-FrodoKEM1344-ECDH-P521-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD12 }
¶
-- AES Variants
id-FrodoKEM976-AES-RSA2048-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD13 }
id-FrodoKEM976-AES-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD14 }
id-FrodoKEM976-AES-RSA4096-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD15 }
id-FrodoKEM976-AES-X25519-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD16 }
id-FrodoKEM976-AES-ECDH-P256-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD17 }
id-FrodoKEM976-AES-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD18 }
id-FrodoKEM976-AES-ECDH-brainpoolP256r1-SHA3-256
OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD19 }
id-FrodoKEM1344-AES-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD20 }
id-FrodoKEM1344-AES-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD21 }
id-FrodoKEM1344-AES-ECDH-brainpoolP384r1-SHA3-256
OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD22 }
id-FrodoKEM1344-AES-X448-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD23 }
id-FrodoKEM1344-AES-ECDH-P521-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD24 }
¶
The parameters field for all Composite FrodoKEM algorithm identifiers MUST be absent.¶
For each Composite FrodoKEM algorithm, a KEM Combiner Label is used within the KEM combiner to bind the shared secret to the specific algorithm. The Label is a fixed ASCII string that uniquely identifies the composite algorithm.¶
The Label values are provided in two forms: where the label value is alphanumeric ASCII, they are represented below as strings. Where the label value contains problematic characters, such as backslashes, they are represented directly in hexadecimal to avoid transcription errors.¶
For example, the Label for id-FrodoKEM976-ECDH-P384-SHA3-256 is "FrodoKEM976-P384", the label for id-FrodoKEM976-RSA2048-SHA3-256 is "FrodoKEM976-RSA2048".¶
Because the SHAKE and AES variants have distinct object identifiers, they produce distinct Label values, ensuring that shared secrets derived from the two variants are cryptographically separated.¶
Composite FrodoKEM uses a substantially non-ASN.1 based encoding, as specified in [I-D.ietf-lamps-pq-composite-kem], leading to a smaller overall ASN.1 module.¶
<CODE BEGINS>
Composite-FrodoKEM-2026
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-composite-frodokem-2026(TBDMOD) }
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
EXPORTS ALL;
IMPORTS
PUBLIC-KEY, AlgorithmIdentifier{}, SMIME-CAPS
FROM AlgorithmInformation-2009
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-algorithmInformation-02(58) }
KEM-ALGORITHM
FROM KEMAlgorithmInformation-2023
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-kemAlgorithmInformation-2023(109) }
;
--
-- Information Object Classes
--
pk-CompositeKEM {OBJECT IDENTIFIER:id}
PUBLIC-KEY ::= {
IDENTIFIER id
-- KEY no ASN.1 wrapping --
PARAMS ARE absent
CERT-KEY-USAGE { keyEncipherment }
-- PRIVATE-KEY no ASN.1 wrapping --
}
kema-CompositeKEM {
OBJECT IDENTIFIER:id,
PUBLIC-KEY:publicKeyType }
KEM-ALGORITHM ::= {
IDENTIFIER id
-- VALUE no ASN.1 wrapping --
PARAMS ARE absent
PUBLIC-KEYS { publicKeyType }
SMIME-CAPS { IDENTIFIED BY id }
}
--
-- SHAKE Variants
--
id-FrodoKEM976-RSA2048-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD1 }
pk-FrodoKEM976-RSA2048-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-RSA2048-SHA3-256 }
kema-FrodoKEM976-RSA2048-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-RSA2048-SHA3-256,
pk-FrodoKEM976-RSA2048-SHA3-256 }
id-FrodoKEM976-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD2 }
pk-FrodoKEM976-RSA3072-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-RSA3072-SHA3-256 }
kema-FrodoKEM976-RSA3072-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-RSA3072-SHA3-256,
pk-FrodoKEM976-RSA3072-SHA3-256 }
id-FrodoKEM976-RSA4096-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD3 }
pk-FrodoKEM976-RSA4096-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-RSA4096-SHA3-256 }
kema-FrodoKEM976-RSA4096-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-RSA4096-SHA3-256,
pk-FrodoKEM976-RSA4096-SHA3-256 }
id-FrodoKEM976-X25519-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD4 }
pk-FrodoKEM976-X25519-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-X25519-SHA3-256 }
kema-FrodoKEM976-X25519-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-X25519-SHA3-256,
pk-FrodoKEM976-X25519-SHA3-256 }
id-FrodoKEM976-ECDH-P256-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD5 }
pk-FrodoKEM976-ECDH-P256-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-ECDH-P256-SHA3-256 }
kema-FrodoKEM976-ECDH-P256-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-ECDH-P256-SHA3-256,
pk-FrodoKEM976-ECDH-P256-SHA3-256 }
id-FrodoKEM976-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD6 }
pk-FrodoKEM976-ECDH-P384-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-ECDH-P384-SHA3-256 }
kema-FrodoKEM976-ECDH-P384-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-ECDH-P384-SHA3-256,
pk-FrodoKEM976-ECDH-P384-SHA3-256 }
id-FrodoKEM976-ECDH-brainpoolP256r1-SHA3-256
OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD7 }
pk-FrodoKEM976-ECDH-brainpoolP256r1-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-ECDH-brainpoolP256r1-SHA3-256 }
kema-FrodoKEM976-ECDH-brainpoolP256r1-SHA3-256
KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-ECDH-brainpoolP256r1-SHA3-256,
pk-FrodoKEM976-ECDH-brainpoolP256r1-SHA3-256 }
id-FrodoKEM1344-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD8 }
pk-FrodoKEM1344-RSA3072-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-RSA3072-SHA3-256 }
kema-FrodoKEM1344-RSA3072-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-RSA3072-SHA3-256,
pk-FrodoKEM1344-RSA3072-SHA3-256 }
id-FrodoKEM1344-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD9 }
pk-FrodoKEM1344-ECDH-P384-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-ECDH-P384-SHA3-256 }
kema-FrodoKEM1344-ECDH-P384-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-ECDH-P384-SHA3-256,
pk-FrodoKEM1344-ECDH-P384-SHA3-256 }
id-FrodoKEM1344-ECDH-brainpoolP384r1-SHA3-256
OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD10 }
pk-FrodoKEM1344-ECDH-brainpoolP384r1-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-brainpoolP384r1-P384-SHA3-256 }
kema-FrodoKEM1344-ECDH-brainpoolP384r1-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-ECDH-brainpoolP384r1-SHA3-256,
pk-FrodoKEM1344-ECDH-brainpoolP384r1-SHA3-256 }
id-FrodoKEM1344-X448-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD11 }
pk-FrodoKEM1344-X448-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-X448-SHA3-256 }
kema-FrodoKEM1344-X448-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-X448-SHA3-256,
pk-FrodoKEM1344-X448-SHA3-256 }
id-FrodoKEM1344-ECDH-P521-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD12 }
pk-FrodoKEM1344-ECDH-P521-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-ECDH-P521-SHA3-256 }
kema-FrodoKEM1344-ECDH-P521-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-ECDH-P521-SHA3-256,
pk-FrodoKEM1344-ECDH-P521-SHA3-256 }
--
-- AES Variants
--
id-FrodoKEM976-AES-RSA2048-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD13 }
pk-FrodoKEM976-AES-RSA2048-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-AES-RSA2048-SHA3-256 }
kema-FrodoKEM976-AES-RSA2048-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-AES-RSA2048-SHA3-256,
pk-FrodoKEM976-AES-RSA2048-SHA3-256 }
id-FrodoKEM976-AES-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD14 }
pk-FrodoKEM976-AES-RSA3072-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-AES-RSA3072-SHA3-256 }
kema-FrodoKEM976-AES-RSA3072-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-AES-RSA3072-SHA3-256,
pk-FrodoKEM976-AES-RSA3072-SHA3-256 }
id-FrodoKEM976-AES-RSA4096-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD15 }
pk-FrodoKEM976-AES-RSA4096-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-AES-RSA4096-SHA3-256 }
kema-FrodoKEM976-AES-RSA4096-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-AES-RSA4096-SHA3-256,
pk-FrodoKEM976-AES-RSA4096-SHA3-256 }
id-FrodoKEM976-AES-X25519-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD16 }
pk-FrodoKEM976-AES-X25519-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-AES-X25519-SHA3-256 }
kema-FrodoKEM976-AES-X25519-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-AES-X25519-SHA3-256,
pk-FrodoKEM976-AES-X25519-SHA3-256 }
id-FrodoKEM976-AES-ECDH-P256-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD17 }
pk-FrodoKEM976-AES-ECDH-P256-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-AES-ECDH-P256-SHA3-256 }
kema-FrodoKEM976-AES-ECDH-P256-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-AES-ECDH-P256-SHA3-256,
pk-FrodoKEM976-AES-ECDH-P256-SHA3-256 }
id-FrodoKEM976-AES-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD18 }
pk-FrodoKEM976-AES-ECDH-P384-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-AES-ECDH-P384-SHA3-256 }
kema-FrodoKEM976-AES-ECDH-P384-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-AES-ECDH-P384-SHA3-256,
pk-FrodoKEM976-AES-ECDH-P384-SHA3-256 }
id-FrodoKEM976-AES-ECDH-brainpoolP256r1-SHA3-256
OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD19 }
pk-FrodoKEM976-AES-ECDH-brainpoolP256r1-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM976-AES-ECDH-P384-SHA3-256 }
kema-FrodoKEM976-AES-ECDH-brainpoolP256r1-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM976-AES-ECDH-brainpoolP256r1-SHA3-256,
pk-FrodoKEM976-AES-ECDH-brainpoolP256r1-SHA3-256 }
id-FrodoKEM1344-AES-RSA3072-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD20 }
pk-FrodoKEM1344-AES-RSA3072-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-AES-RSA3072-SHA3-256 }
kema-FrodoKEM1344-AES-RSA3072-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-AES-RSA3072-SHA3-256,
pk-FrodoKEM1344-AES-RSA3072-SHA3-256 }
id-FrodoKEM1344-AES-ECDH-P384-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD21 }
pk-FrodoKEM1344-AES-ECDH-P384-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-AES-ECDH-P384-SHA3-256 }
kema-FrodoKEM1344-AES-ECDH-P384-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-AES-ECDH-P384-SHA3-256,
pk-FrodoKEM1344-AES-ECDH-P384-SHA3-256 }
id-FrodoKEM1344-AES-ECDH-brainpoolP384r1-SHA3-256
OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD22 }
pk-FrodoKEM1344-AES-ECDH-brainpoolP384r1-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM {
id-FrodoKEM1344-AES-ECDH-brainpoolP384r1-SHA3-256 }
kema-FrodoKEM1344-AES-ECDH-brainpoolP384r1-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-AES-ECDH-brainpoolP384r1-SHA3-256,
pk-FrodoKEM1344-AES-ECDH-brainpoolP384r1-SHA3-256 }
id-FrodoKEM1344-AES-X448-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD23 }
pk-FrodoKEM1344-AES-X448-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-AES-X448-SHA3-256 }
kema-FrodoKEM1344-AES-X448-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-AES-X448-SHA3-256,
pk-FrodoKEM1344-AES-X448-SHA3-256 }
id-FrodoKEM1344-AES-ECDH-P521-SHA3-256 OBJECT IDENTIFIER ::= {
iso(1) identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) alg(6) TBD24 }
pk-FrodoKEM1344-AES-ECDH-P521-SHA3-256 PUBLIC-KEY ::=
pk-CompositeKEM { id-FrodoKEM1344-AES-ECDH-P521-SHA3-256 }
kema-FrodoKEM1344-AES-ECDH-P521-SHA3-256 KEM-ALGORITHM ::=
kema-CompositeKEM {
id-FrodoKEM1344-AES-ECDH-P521-SHA3-256,
pk-FrodoKEM1344-AES-ECDH-P521-SHA3-256 }
END
<CODE ENDS>
¶
The Security Considerations for implementing a composite algorithm defined in [I-D.ietf-lamps-pq-composite-kem] apply to this document. Additional security considerations specific to FrodoKEM, including side-channel resistance, fault attack mitigations, and parameter set selection guidance, discussed in [I-D.longa-cfrg-frodokem-security-considerations] and [I-D.smyslov-lamps-frodokem-certificates] apply to this specification as well.¶
IANA is requested to allocate a value from the "SMI Security for PKIX Module Identifier" registry for the ASN.1 module defined in Section 6.¶
| Decimal | Description | References |
|---|---|---|
| TBDMOD | id-mod-composite-frodokem-2026 | This Document |
IANA is requested to allocate values from the "SMI Security for PKIX Algorithm" registry (1.3.6.1.5.5.7.6) for the Composite FrodoKEM algorithm identifiers listed in Section 5.1.¶
| Decimal | Description | References |
|---|---|---|
| TBD1 | id-FrodoKEM976-RSA2048-SHA3-256 | This Document |
| TBD2 | id-FrodoKEM976-RSA3072-SHA3-256 | This Document |
| TBD3 | id-FrodoKEM976-RSA4096-SHA3-256 | This Document |
| TBD4 | id-FrodoKEM976-X25519-SHA3-256 | This Document |
| TBD5 | id-FrodoKEM976-ECDH-P256-SHA3-256 | This Document |
| TBD6 | id-FrodoKEM976-ECDH-P384-SHA3-256 | This Document |
| TBD7 | id-FrodoKEM976-ECDH-brainpoolP256r1-SHA3-256 | This Document |
| TBD8 | id-FrodoKEM1344-RSA3072-SHA3-256 | This Document |
| TBD9 | id-FrodoKEM1344-ECDH-P384-SHA3-256 | This Document |
| TBD10 | id-FrodoKEM1344-ECDH-brainpoolP384r1-SHA3-256 | This Document |
| TBD11 | id-FrodoKEM1344-X448-SHA3-256 | This Document |
| TBD12 | id-FrodoKEM1344-ECDH-P521-SHA3-256 | This Document |
| TBD13 | id-FrodoKEM976-AES-RSA2048-SHA3-256 | This Document |
| TBD14 | id-FrodoKEM976-AES-RSA3072-SHA3-256 | This Document |
| TBD15 | id-FrodoKEM976-AES-RSA4096-SHA3-256 | This Document |
| TBD16 | id-FrodoKEM976-AES-X25519-SHA3-256 | This Document |
| TBD17 | id-FrodoKEM976-AES-ECDH-P256-SHA3-256 | This Document |
| TBD18 | id-FrodoKEM976-AES-ECDH-P384-SHA3-256 | This Document |
| TBD19 | id-FrodoKEM976-AES-ECDH-brainpoolP256r1-SHA3-256 | This Document |
| TBD20 | id-FrodoKEM1344-AES-RSA3072-SHA3-256 | This Document |
| TBD21 | id-FrodoKEM1344-AES-ECDH-P384-SHA3-256 | This Document |
| TBD22 | id-FrodoKEM1344-AES-ECDH-brainpoolP384r1-SHA3-256 | This Document |
| TBD23 | id-FrodoKEM1344-AES-X448-SHA3-256 | This Document |
| TBD24 | id-FrodoKEM1344-AES-ECDH-P521-SHA3-256 | This Document |