Skip to main content

==Composite FN-DSA for use in X.509 Public Key Infrastructure==
draft-chen-lamps-fndsa-composite-sigs-00

Document Type Active Internet-Draft (individual)
Authors Meiling Chen , Mengyuan Zhang , Xueyan Song
Last updated 2026-10-22
RFC stream (None)
Intended RFC status (None)
Formats
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-chen-lamps-fndsa-composite-sigs-00
LAMPS                                                            M. Chen
Internet-Draft                                                  M. Zhang
Intended status: Standards Track                            China Mobile
Expires: 26 April 2027                                           X. Song
                                                               ZTE Corp.
                                                         23 October 2026

    ==Composite FN-DSA for use in X.509 Public Key Infrastructure==
                draft-chen-lamps-fndsa-composite-sigs-00

Abstract

   To facilitate a robust and secure transition to post-quantum
   cryptography, this document defines a method for creating composite
   signature algorithms by combining the Fast-Fourier Transform over
   NTRU-Lattice-Based Digital Signature Algorithm (FN-DSA) with modern
   classical signature algorithms.  These composite algorithms are
   treated as new, atomic primitives.

   This document specifies algorithm identifiers, public key structures,
   and signature formats for using these composite algorithms within the
   Internet X.509 Public Key Infrastructure.  The methodology is
   designed to align with modern cryptographic practices, including a
   principle of strict security level alignment, ensuring a consistent
   and predictable security posture for all defined algorithms.

Status of This Memo

   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 April 2027.

Copyright Notice

   Copyright (c) 2026 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

Chen, et al.              Expires 26 April 2027                 [Page 1]
Internet-Draft              Composite FN-DSA                October 2026

   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.

Table of Contents

   1.  1.  Introduction  . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  2.  Terminology . . . . . . . . . . . . . . . . . . . . .   3
     1.2.  3.  Composite Signature Algorithms and Security Levels  .   4
     1.3.  4.  Algorithm Identifiers and Parameters  . . . . . . . .   5
     1.4.  5.  Composite FN-DSA Signature Scheme . . . . . . . . . .   7
       1.4.1.  5.1.  Serialization and Deserialization . . . . . . .   8
       1.4.2.  5.2.  Key Generation  . . . . . . . . . . . . . . . .  11
       1.4.3.  5.3.  Signature Generation  . . . . . . . . . . . . .  11
       1.4.4.  5.4.  Signature Verification  . . . . . . . . . . . .  13
     1.5.  6.  PKIX Profile  . . . . . . . . . . . . . . . . . . . .  14
       1.5.1.  6.1.  Certificate signatureAlgorithm Field  . . . . .  14
       1.5.2.  6.2.  Subject Public Key Info . . . . . . . . . . . .  14
       1.5.3.  6.3.  Key Usage . . . . . . . . . . . . . . . . . . .  14
     1.6.  7.  IANA Considerations . . . . . . . . . . . . . . . . .  14
     1.7.  8.  Security Considerations . . . . . . . . . . . . . . .  15
   2.  Normative References  . . . . . . . . . . . . . . . . . . . .  15
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  16

1.  1.  Introduction

   The Fast-Fourier Transform over NTRU-Lattice-Based Digital Signature
   Algorithm (FN-DSA) [FIPS206], formerly known as Falcon, is a post-
   quantum signature scheme standardized by the U.S.  National Institute
   of Standards and Technology (NIST).  The conventions for using
   standalone FN-DSA in X.509 certificates are specified in
   [I-D.turner-lamps-fn-dsa-certificates].

   During the transition to post-quantum cryptography, regulatory
   guidance and organizational security policies may call for post-
   quantum/traditional (PQ/T) hybrid signatures [RFC9794].  Combining
   FN-DSA with a traditional signature algorithm can support these
   requirements while providing protection against quantum computing
   threats and potential unforeseen weaknesses in FN-DSA.

   To support interoperable deployment in existing public key
   infrastructures, this document specifies a set of composite signature
   algorithms that combine FN-DSA with selected traditional signature

Chen, et al.              Expires 26 April 2027                 [Page 2]
Internet-Draft              Composite FN-DSA                October 2026

   algorithms to ensure that the overall security is at least as strong
   as that of the stronger component.  Each composite algorithm presents
   a single public key and signature value to applications and is used
   as a single signature algorithm. The combinations use the pure
   variant of FN-DSA and follow a *Strict Security Level
   Alignment* policy, under which each FN-DSA parameter set is
   paired with a traditional algorithm and parameter set of a
   corresponding NIST security level. 

   To enable interoperable use of these algorithms in X.509 certificates
   and CRLs [RFC5280], this document specifies the encodings for
   composite public keys and signatures, assigns Object Identifiers
   (OIDs) to the composite algorithms, and defines the associated PKI
   conventions.

1.1.  2.  Terminology

   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].

   Readers are expected to be familiar with the terms and concepts
   described in X.509 [RFC5280] and FN-DSA [FIPS206].  This document
   follows the terminology for post-quantum/traditional (PQ/T) hybrid
   schemes defined in [RFC9794] and uses the following terms:

   *  *Composite FN-DSA:* A PQ/T hybrid composite signature scheme that
      combines FN-DSA with a traditional signature algorithm and exposes
      the combination through a single signature-scheme interface.

   *  *Composite Signature:* A signature value produced by a Composite
      FN-DSA scheme, incorporating an FN-DSA signature value and a
      traditional signature value.

   *  *Composite Public Key:* A public key of a Composite FN-DSA scheme,
      incorporating an FN-DSA public key and the corresponding
      traditional public key.

   *  *Security Level:* A NIST classification of post-quantum
      cryptographic security based on the computational resources
      required to attack specified reference primitives.

   *  *Classical Security Strength:* An estimate, expressed in bits, of
      the computational effort required to break a cryptographic
      algorithm using classical computing resources.

Chen, et al.              Expires 26 April 2027                 [Page 3]
Internet-Draft              Composite FN-DSA                October 2026

1.2.  3.  Composite Signature Algorithms and Security Levels

   This document standardizes algorithms for two distinct security
   targets:

   *  *Level 1 (128-bit security):* For broad, general-purpose use.

   *  *Level 5 (256-bit security):* For high-security, long-term
      applications.

   The following table summarizes the standardized algorithms and their
   component alignment.

   +-----------+---------------------------------+---------------------+
   | Security  | Composite Algorithm             | Component Alignment |
   | Level     |                                 | (PQC + Traditional) |
   +-----------+---------------------------------+---------------------+
   |           |                                 |                     |
   | Level 1   | fndsa512-ecdsa-p256-sha256      | L1 + 128 bits       |
   |           |                                 |                     |
   |           | fndsa512-ed25519-sha256         | L1 + ≈128 bits      |
   |           |                                 |                     |
   |           | fndsa512-rsa3072-pss-sha256     | L1 + 128 bits       |
   |           |                                 |                     |
   |           | fndsa512-rsa3072-pkcs15-sha256  | L1 + 128 bits       |
   |           |                                 |                     |
   +-----------+---------------------------------+---------------------+
   |           |                                 |                     |
   | Level 5   | fndsa1024-ecdsa-p521-sha512     | L5 + 256 bits       |
   |           |                                 |                     |
   |           | fndsa1024-ed448-sha512          | L5 + 224 bits       |
   |           |                                 |                     |
   +-----------+---------------------------------+---------------------+

         Table 1: Defined Composite Algorithms

   Combinations with significant security level mismatches, such as
   pairing a Level 5 post-quantum algorithm with a Level 2 classical
   algorithm (e.g., RSA-4096), are explicitly *NOT RECOMMENDED* and are
   excluded from this standard to maintain a robust security model.  For
   legacy compatibility reasons, other profiles MAY define a composite
   with rsa-2048, but this is discouraged. fndsa512-rsa3072-pss-sha256
   is the RECOMMENDED Level 1 RSA-based composite.

Chen, et al.              Expires 26 April 2027                 [Page 4]
Internet-Draft              Composite FN-DSA                October 2026

1.3.  4.  Algorithm Identifiers and Parameters

   Each composite signature algorithm defined in this document is
   identified by a distinct Object Identifier (OID).  These OIDs are
   used in the algorithm field of the AlgorithmIdentifier structure
   defined in [RFC5280]:

   AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER,
   parameters ANY DEFINED BY algorithm OPTIONAL }

   Each composite algorithm OID identifies a fixed combination of
   component algorithms, component parameters, a pre-hash function (PH),
   and a domain-separation label.

   All FN-DSA components use the pure variant.  The pre-hash function
   listed for each composite algorithm is applied at the composite layer
   and does not select the pre-hash variant of FN-DSA.  Any hashing
   performed internally by a component signature algorithm remains part
   of that component algorithm.

   The following algorithms and parameters are defined:

   *  *id-fndsa512-ecdsa-p256-sha256*

      -  OID: TBD1

      -  Label: COMPSIG-FNDSA512-ECDSA-P256-SHA256

      -  Pre-hash function (PH): SHA256

      -  FN-DSA parameter set: FN-DSA-512

      -  Traditional algorithm: ECDSA - Traditional signature algorithm:
         ecdsa-with-SHA256 - Elliptic curve: secp256r1

   *  *id-fndsa512-ed25519-sha256*

      -  OID: TBD2

      -  Label: COMPSIG-FNDSA512-ED25519-SHA256

      -  Pre-hash function (PH): SHA256

      -  FN-DSA parameter set: FN-DSA-512

      -  Traditional algorithm: Ed25519 - Traditional signature
         algorithm: id-Ed25519

Chen, et al.              Expires 26 April 2027                 [Page 5]
Internet-Draft              Composite FN-DSA                October 2026

   *  *id-fndsa512-rsa3072-pss-sha256*

      -  OID: TBD3

      -  Label: COMPSIG-FNDSA512-RSA3072-PSS-SHA256

      -  Pre-hash function (PH): SHA256

      -  FN-DSA parameter set: FN-DSA-512

      -  Traditional Algorithm: RSA - Traditional signature algorithm:
         id-RSASSA-PSS - RSA size: 3072 - ==RSASSA-PSS message hash: id-
         sha256== - ==Mask generation function: MGF1 with SHA-256== -
         ==Salt length: 32 octets== - ==Trailer field: 1, corresponding
         to the trailer octet 0xBC==

   *  *id-fndsa1024-ecdsa-p521-sha512*

      -  OID: TBD4

      -  Label: COMPSIG-FNDSA1024-ECDSA-P521-SHA512

      -  Pre-hash function (PH): SHA-512

      -  FN-DSA parameter set: FN-DSA-1024

      -  Traditional Algorithm: ECDSA - Traditional Signature Algorithm:
         ecdsa-with-SHA512 - ECDSA curve: secp521r1

   *  *id-fndsa1024-ed448-sha512*

      -  OID: TBD5

      -  Label: COMPSIG-FNDSA1024-Ed448-SHA512

      -  Pre-hash function (PH): SHA-512

      -  FN-DSA parameter set: FN-DSA-1024

      -  Traditional Algorithm: Ed448 - Traditional signature algorithm:
         Ed448

   Each Label is the ASCII encoding of the exact string listed above,
   without a terminating NUL octet.

   The Ed25519 and Ed448 components MUST use the pure variants defined
   in [RFC8032].  Ed25519ph, Ed25519ctx, and Ed448ph MUST NOT be used.
   The Ed448 component MUST use an empty context string.

Chen, et al.              Expires 26 April 2027                 [Page 6]
Internet-Draft              Composite FN-DSA                October 2026

   The RSASSA-PSS component requires additional parameters as defined in
   [RFC8017].  For id-fndsa512-rsa3072-pss-sha256, these parameters MUST
   have the following values:

           +=============================+=====================+
           | RSASSA-PSS-params field     | Value               |
           +=============================+=====================+
           | hashAlgorithm               | id-sha256           |
           +-----------------------------+---------------------+
           | maskGenAlgorithm.algorithm  | id-mgf1             |
           +-----------------------------+---------------------+
           | maskGenAlgorithm.parameters | AlgorithmIdentifier |
           |                             | identifying SHA-256 |
           +-----------------------------+---------------------+
           | saltLength                  | 32                  |
           +-----------------------------+---------------------+
           | trailerField                | 1                   |
           +-----------------------------+---------------------+

                                  Table 1

   The parameters field of AlgorithmIdentifier MUST be absent for all
   composite algorithm identifiers defined in this section.  It MUST NOT
   contain an ASN.1 NULL value.  This requirement also applies to
   composites using RSASSA-PSS: the RSASSA-PSS parameters are fixed by
   the composite algorithm identifier, and no RSASSA-PSS-params
   structure is carried in the parameters field.

   The OID values are pending assignment.  TBD1 through TBD5 are
   editorial placeholders and are not valid OID values.

1.4.  5.  Composite FN-DSA Signature Scheme

   This section specifies the serialization and deserialization of
   composite keys and signature values, together with the key
   generation, signature generation, and signature verification
   operations.

   Each operation is instantiated for a composite algorithm identifier
   defined in Section 4.  The identifier determines the FN-DSA parameter
   set, the traditional signature algorithm and its parameters, the
   composite-layer pre-hash function PH, and the domain-separation
   Label.  These values are fixed for that identifier and are not
   independently selectable by the caller.

Chen, et al.              Expires 26 April 2027                 [Page 7]
Internet-Draft              Composite FN-DSA                October 2026

1.4.1.  5.1.  Serialization and Deserialization

   The functions in this section convert component keys and signatures
   to and from composite octet strings.  Each function is instantiated
   for a composite algorithm identifier defined in Section 4, which
   determines the component algorithms, parameters, and encodings.

   Deserialization returns ERROR if the input is malformed or does not
   conform to the requirements for the selected composite algorithm.
   Each component decoder MUST consume its entire assigned input;
   trailing octets MUST NOT be ignored.

      EDITOR'S NOTE: The FN-DSA seed length, encoding, and key
      reconstruction procedure are to be confirmed against the finalized
      [FIPS206].  This note is to be removed when those dependencies are
      resolved.

1.4.1.1.  5.1.1.  Public Keys

   The public-key serialization and deserialization functions are:

   Composite-FN-DSA.SerializePublicKey(pk_fndsa, pk_trad) -> pk
   Composite-FN-DSA<OID>.DeserializePublicKey(pk) -> (pk_fndsa, pk_trad)
   or ERROR

   OID is one of the composite algorithm OIDs defined in Section 4 and
   determines the component algorithms and parameters.

   The serialized public key is:

   pk = pk_fndsa || pk_trad

   pk_fndsa is the raw FN-DSA public-key encoding specified in
   [FIPS206], without an ASN.1 wrapper.  Its length is 897 octets for
   FN-DSA-512 and 1793 octets for FN-DSA-1024.

   pk_trad MUST be encoded as follows:

   *  *ECDSA P-256:* The 65-octet uncompressed point encoding 0x04 ||
      X || Y, with each coordinate encoded in 32 octets, as specified in
      [RFC5480].

   *  *ECDSA P-521:* The 133-octet uncompressed point encoding 0x04 ||
      X || Y, with each coordinate encoded in 66 octets, as specified in
      [RFC5480].

   *  *Ed25519:* The 32-octet public-key encoding specified in
      [RFC8032].

Chen, et al.              Expires 26 April 2027                 [Page 8]
Internet-Draft              Composite FN-DSA                October 2026

   *  *Ed448:* The 57-octet public-key encoding specified in [RFC8032].

   *  *RSA-3072:* The DER encoding of the RSAPublicKey structure
      specified in [RFC8017], containing a modulus of exactly 3072 bits
      and its public exponent.

   Compressed and hybrid ECDSA point encodings MUST NOT be used.

   Deserialization determines the FN-DSA public-key length L from the
   parameter set identified by OID and splits the input as follows:

   pk_fndsa = pk[0:L] pk_trad = pk[L:]

   The input MUST contain both components.  Each component MUST have the
   required encoding and satisfy the public-key validation requirements
   of the selected algorithm.

1.4.1.2.  5.1.2.  Private Keys

   The private-key serialization and deserialization functions are:

   Composite-FN-DSA.SerializePrivateKey(seed_fndsa, sk_trad) -> sk
   Composite-FN-DSA.DeserializePrivateKey(sk) -> (seed_fndsa, sk_trad)

   The serialized private key is:

   sk = seed_fndsa || sk_trad

   seed_fndsa is the 32-octet FN-DSA key-generation seed, included
   directly without an ASN.1 wrapper.

   sk_trad MUST be encoded as follows:

   *  *ECDSA P-256:* The private scalar d encoded as a 32-octet
      unsigned, big-endian integer.

   *  *ECDSA P-521:* The private scalar d encoded as a 66-octet
      unsigned, big-endian integer.

   *  *Ed25519:* The 32-octet private-key seed specified in [RFC8032].

   *  *Ed448:* The 57-octet private-key seed specified in [RFC8032].

   *  *RSA-3072:* The DER encoding of the two-prime RSAPrivateKey
      structure specified in [RFC8017], with version equal to 0 and all
      CRT fields present.

Chen, et al.              Expires 26 April 2027                 [Page 9]
Internet-Draft              Composite FN-DSA                October 2026

   For ECDSA, leading zero octets needed to obtain the required length
   MUST be retained, and the scalar MUST satisfy 1 <= d < n, where n is
   the selected curve's base-point order.  No ECPrivateKey wrapper is
   included.  For EdDSA, the encoding contains only the seed, without an
   appended public key or expanded signing representation.

   Serialization encodes the component private-key material as specified
   above and concatenates it in the indicated order.

   Deserialization requires an input longer than 32 octets and splits it
   as follows:

   seed_fndsa = sk[0:32] sk_trad = sk[32:]

   The traditional component MUST have the required encoding and satisfy
   the private-key validation requirements of the selected algorithm.

1.4.1.3.  5.1.3.  Signature Values

   The signature serialization and deserialization functions are:

   Composite-FN-DSA.SerializeSignatureValue(sig_fndsa, sig_trad) -> sig
   Composite-FN-DSA<OID>.DeserializeSignatureValue(sig) -> (sig_fndsa,
   sig_trad) or ERROR

   The serialized signature is:

   sig = sig_fndsa || sig_trad

      EDITOR'S NOTE: This document assumes a fixed-length FN-DSA
      signature encoding.  The encoding and lengths are to be confirmed
      against the finalized [FIPS206].  This note is to be removed once
      that specification is finalized and the corresponding definitions
      in this document have been updated.

   sig_fndsa MUST use the signature encoding specified in [FIPS206] for
   the selected parameter set, including any required padding.  Its
   encoded length MUST be between 1 and 65535 octets and MUST satisfy
   any tighter limits imposed by that specification.

   sk_trad MUST be encoded as follows:

   *  *ECDSA:* The DER encoding of Ecdsa-Sig-Value specified in
      [RFC3279], containing the signature integers r and s.

   *  *Ed25519:* The 64-octet signature encoding specified in [RFC8032].

   *  *Ed448:* The 114-octet signature encoding specified in [RFC8032].

Chen, et al.              Expires 26 April 2027                [Page 10]
Internet-Draft              Composite FN-DSA                October 2026

   *  *RSASSA-PSS with RSA-3072:* The 384-octet signature encoding
      specified in [RFC8017], retaining any leading zero octets.

   Deserialization determines the FN-DSA signature length L from the
   parameter set identified by OID and splits the input as follows:

   sig_fndsa = sig[:L] sig_trad = sig[L:]

   Each resulting component MUST have the required encoding.  Fixed-
   length traditional signatures MUST have exactly the specified length.

   Successful deserialization does not establish signature validity.
   Both component signatures MUST subsequently be verified as specified
   in Section 5.4.

1.4.2.  5.2.  Key Generation

   The KeyGen() function for a given Composite FN-DSA algorithm
   represented by OID is defined as:

   Composite-ML-DSA<OID>.KeyGen() -> (pk, sk) or ERROR

   OID MUST identify one of the composite algorithms defined in
   Section 4.

   The operation proceeds as follows:

   1.  ==Generate an FN-DSA key pair== pk_fndsa for the selected
       parameter set according to [FIPS206], retaining the key-
       generation seed required by Section 5.1.2.(因为标准没出无法展开写)

   2.  ==Generate a traditional key pair== pk_trad according to the
       selected traditional signature algorithm and its parameter
       requirements.

   3.  Compute the composite public key and private key: pk =
       SerializePublicKey(alg, pk_fndsa, pk_trad) sk =
       SerializePrivateKey(alg, seed_fndsa, sk_trad)

   4.  Return (pk, sk).  If either component key generation or
       serialization fails, return ERROR and do not return a partial
       composite key pair.

1.4.3.  5.3.  Signature Generation

   The composite signature-generation operation accepts a message M, a
   composite private key sk, and an optional context string ctx.  If no
   context is supplied, ctx is the empty octet string.

Chen, et al.              Expires 26 April 2027                [Page 11]
Internet-Draft              Composite FN-DSA                October 2026

   The Sign() function for a given Composite FN-DSA algorithm
   represented by OID is defined as:

   Composite-FN-DSA<OID>.Sign(sk, M, ctx) -> sig

   The message and context are octet strings.  Their interpretation by
   an application is outside the scope of this section.  The context
   string MUST be at most 255 octets long.  An implementation MUST
   reject a longer context; it MUST NOT truncate it.

   The operation proceeds as follows:

   1.  Compute the Message representative M': M' = Prefix || Label ||
       len(ctx) || ctx || PH(M)

   2.  Deserialize the input composite private key: (seed_fndsa,
       sk_trad) = DeserializePrivateKey(sk)

   3.  ==Reconstruct the FN-DSA signing key== sk_fndsa from seed_fndsa.

   4.  Generate the two component signatures independently over the same
       M' according to their algorithm specifications: sig_fndsa =
       FNDSA.Sign(sk_fndsa, M', fndsa_ctx="") sig_trad =
       Trad.Sign(sk_trad, M')

   5.  Serialize the component signatures: sig =
       SerializeSignatureValue(alg, sig_fndsa, sig_trad)

   6.  Return sig.  If either component signing operation or
       serialization fails, return ERROR.  A partial composite signature
       MUST NOT be returned.

   The fields used to construct M' in Step 1 are defined as follows:

   *  Prefix is the ASCII encoding of the exact string
      CompositeFNDSASignatures2026.

   *  Label is the ASCII-encoded domain-separation label assigned to
      each OID in Section 4.

   *  len(ctx) is the length of ctx in octets, encoded as a single
      unsigned octet.

   *  ctx is the context string supplied to the composite signature-
      generation operation to bind the signature to an application
      context.

Chen, et al.              Expires 26 April 2027                [Page 12]
Internet-Draft              Composite FN-DSA                October 2026

   *  PH(M) is the result of applying the pre-hash function assigned to
      OID in Section 4 to the complete message M.

   The component signing operations receive the complete M'.  The
   composite-layer pre-hash does not replace hashing performed by a
   component signature algorithm.

   All randomness required by component signature generation MUST be
   generated and used according to the respective component
   specifications.  Random values, including signature nonces and salts,
   MUST NOT be reused across component algorithms.

1.4.4.  5.4.  Signature Verification

   The composite signature-verification operation accepts a message M, a
   composite public key pk, a composite signature sig, and an optional
   context string ctx.  If no context is supplied, ctx is the empty
   octet string.

   The Verify() function for a given Composite FN-DSA algorithm
   represented by OID is defined as:

   Composite-FN-DSA<OID>.Verify(pk, M, sig, ctx) -> VALID or INVALID

   The component algorithms and parameters are determined by OID as
   specified in Section 4.  The verifier MUST use the same context
   octets as the signer; the context is not recovered from the
   signature.

   The operation proceeds as follows:

   1.  If len(ctx) > 255, return INVALID.

   2.  Deserialize the input composite public key and signature:
       (pk_fndsa, pk_trad) = Composite-FN-
       DSA<OID>.DeserializePublicKey(pk) (sig_fndsa, sig_trad) =
       Composite-FN-DSA<OID>.DeserializeSignatureValue(sig) If either
       deserialization operation returns ERROR, return INVALID.

   3.  Reconstruct the message representative M' using the construction
       and field definitions specified in Section 5.3: M' = Prefix ||
       Label || len(ctx) || ctx || PH(M)

   4.  Verify the two component signatures independently over the same
       M' according to their algorithm specifications: valid_fndsa =
       FNDSA.Verify(pk_fndsa, M', sig_fndsa, fndsa_ctx="") valid_trad =
       Trad.Verify(pk_trad, M', sig_trad)

Chen, et al.              Expires 26 April 2027                [Page 13]
Internet-Draft              Composite FN-DSA                October 2026

   5.  Return VALID if and only if both component verifications succeed.
       Otherwise, return INVALID.  Any component processing error MUST
       result in INVALID.

   An implementation MAY return INVALID as soon as a failure is
   established, without performing the remaining operations.

1.5.  6.  PKIX Profile

   This section provides a profile for the use of composite FN-DSA
   signature algorithms in the Internet X.509 PKI [RFC5280].

1.5.1.  6.1.  Certificate signatureAlgorithm Field

   The signatureAlgorithm field in a certificate that is signed with a
   composite algorithm MUST contain the OID of the composite algorithm
   used.

1.5.2.  6.2.  Subject Public Key Info

   The subjectPublicKeyInfo field in a certificate containing a
   composite public key MUST be populated as follows: * The algorithm
   field MUST contain the OID of the composite algorithm. * The
   subjectPublicKey field MUST contain the BIT STRING representation of
   the CompositePublicKey as defined in Section 5.1.

1.5.3.  6.3.  Key Usage

   The keyUsage extension in a certificate containing a composite public
   key SHOULD be marked as critical.  The digitalSignature and/or
   nonRepudiation bits MUST be set.  If the key is used to sign
   certificates, the keyCertSign bit MUST be set.  If it is used to sign
   CRLs, the cRLSign bit MUST be set.

1.6.  7.  IANA Considerations

   This document requests the assignment of five Object Identifiers from
   a suitable OID arc for the composite signature algorithms defined in
   Section 4.  These OIDs identify the new signature algorithms and are
   intended for use in X.509 certificates and other cryptographic
   protocols.

Chen, et al.              Expires 26 April 2027                [Page 14]
Internet-Draft              Composite FN-DSA                October 2026

1.7.  8.  Security Considerations

   The primary security goal of this specification is to provide *hybrid
   security*. A composite signature's security is intended to be at
   least as high as the security of its strongest component.  An
   attacker must break _both_ the FN-DSA component and the classical
   component to forge a composite signature.

   *Security Level Alignment*: This specification mandates the pairing
   of algorithms with matching or near-matching NIST security levels.
   This provides a clear and predictable security posture for each
   composite algorithm, preventing "unbalanced" pairings where one
   component is significantly weaker than the other.  Implementers
   SHOULD follow this principle when considering extensions.

   *Domain Separation*: The domain separation mechanism described in
   Section 5.2.1 is critical.  It ensures that a signature component
   created for this composite scheme cannot be misinterpreted as a valid
   standalone signature in another context.  Implementers MUST follow
   the message preparation steps exactly.

   *Modern Algorithm Preference*: This specification RECOMMENDS the use
   of modern elliptic curve algorithms (ECDSA, EdDSA) over RSA.  This is
   due to their superior performance, smaller key and signature sizes,
   and better resistance to certain types of implementation errors.

   *Implementation Security*: All security considerations from the
   component algorithm specifications ([FIPS206], [RFC8017], [RFC8032],
   etc.) apply.  Implementations must protect against side-channel
   attacks for all component algorithms.

2.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/rfc/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.

   [RFC5280]  Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
              Housley, R., and W. Polk, "Internet X.509 Public Key
              Infrastructure Certificate and Certificate Revocation List
              (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
              <https://www.rfc-editor.org/rfc/rfc5280>.

Chen, et al.              Expires 26 April 2027                [Page 15]
Internet-Draft              Composite FN-DSA                October 2026

   [RFC8017]  Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch,
              "PKCS #1: RSA Cryptography Specifications Version 2.2",
              RFC 8017, DOI 10.17487/RFC8017, November 2016,
              <https://www.rfc-editor.org/rfc/rfc8017>.

   [RFC8032]  Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital
              Signature Algorithm (EdDSA)", RFC 8032,
              DOI 10.17487/RFC8032, January 2017,
              <https://www.rfc-editor.org/rfc/rfc8032>.

   [I-D.turner-lamps-fn-dsa-certificates]
              Massimo, J., Kampanakis, P., Turner, S., and B.
              Westerbaan, "Internet X.509 Public Key Infrastructure --
              Algorithm Identifiers for the Fast-Fourier Transform over
              NTRU-Lattice-Based Digital Signature Algorithm (FN-DSA)",
              Work in Progress, Internet-Draft, draft-turner-lamps-fn-
              dsa-certificates-00, 4 November 2025,
              <https://datatracker.ietf.org/doc/html/draft-turner-lamps-
              fn-dsa-certificates-00>.

   [FIPS206]  National Institute of Standards and Technology (NIST),
              "FIPS 206, Fast-Fourier-Transform-based Digital Signature
              Algorithm", n.d., <https://www.nist.gov/news-
              events/news/2024/08/nist-releases-first-3-finalized-post-
              quantum-encryption-standards>.

Authors' Addresses

   Meiling Chen
   China Mobile
   BeiJing
   China
   Email: chenmeiling@chinamobile.com

   Mengyuan Zhang
   China Mobile
   BeiJing
   China
   Email: zhangmengyuanwl@chinamobile.com

   Xueyan Song
   ZTE Corp.
   Email: song.xueyan2@zte.com.cn

Chen, et al.              Expires 26 April 2027                [Page 16]