<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" docName="draft-song-ietf-tls-fndsa-00" ipr="trust200902" submissionType="IETF" obsoletes="" updates="" xml:lang="en" tocInclude="true" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="Use of FN-DSA in TLS 1.3">Use of FN-DSA in TLS 1.3</title>
    <seriesInfo name="Internet-Draft" value="draft-song-ietf-tls-fndsa-00"/>

    <author fullname="Xueyan Song" initials="X." surname="Song">
      <organization>ZTE Corp.</organization>
      <address>
        <email>song.xueyan2@zte.com.cn</email>
      </address>
    </author>
	
    <author fullname="Meiling Chen" initials="M." surname="Chen">
      <organization>China Mobile</organization>
      <address>
        <email>chenmeiling@chinamobile.com</email>
      </address>
    </author>
	
    <date/>
    <workgroup>TLS</workgroup>
    <keyword>FN-DSA</keyword>
    <keyword>FIPS206</keyword>
    <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

  <abstract>
      <t>
	  NIST is standardizing FN-DSA as a post-quantum NTRU-lattice-based digital signature algorithm, which is expected to be 
	  published in FIPS 206. This document specifies how FN-DSA can be negotiated for authentication in TLS 1.3 via the 
	  signature_algorithms and signature_algorithms_cert extensions.
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="sec_intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
     FN-DSA (formerly known as Falcon) is a lattice-based digital signature scheme based on the Gentry-Peikert-Vaikuntanathan
	 (GPV) hash-and-sign framework, instantiated over NTRU lattices with fast Fourier sampling techniques.  The core hard 
	 problem underlying FN-DSA is the Short Integer Solution (SIS) problem over NTRU lattices. FN-DSA offers compact signatures 
	 and public keys compared to other post-quantum signature schemes.  For bandwidth-constrained applications where signature 
	 size is a critical factor, FN-DSA provides a favourable alternative to ML-DSA and SLH-DSA.
      </t>
	  <t>
	  Editor's Note: The FN-DSA description of the whole text needs double check after FIPS206 publishment.
      </t>
	  <t>
	 This document specifies how FN-DSA is used for authentication in TLS 1.3, including certificate chain signatures and handshake
     signatures in the CertificateVerify message. 
	  </t>
    </section>
    <!-- end of introduction -->

    <section numbered="true" toc="default">
      <name>Conventions and Definitions</name>
      <t>
    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 <xref target="RFC2119" format="default"/> <xref target="RFC8174" format="default"/> when, and
    only when, they appear in all capitals, as shown here.
      </t>
    </section>
    <!-- end of convensions and definitions -->

<!-- ===================================================================== -->

<section anchor="fn-dsa" numbered="true" toc="default">
      <name>FN-DSA Signature Scheme Values</name>
      <t>
     As defined in <xref target="RFC8446"/>, the SignatureScheme namespace is used for the negotiation of signature scheme for 
	 authentication via the signature_algorithms and signature_algorithms_cert extensions.  This document adds two new SignatureScheme 
	 values for the two FN-DSA parameter sets from <xref target="FIPS206"/> as follows. 
      </t>
	  
	  
	   <table anchor="schemes">
        <name>SignatureSchemes for FN-DSA</name>
        <thead>
          <tr>
            <th align="left">SignatureScheme</th>
            <th align="left">FIPS 206</th>
            <th align="left">Certificate AlgorithmIdentifier</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">fndsa512(TBD1)</td>
            <td align="left">FN-DSA-512</td>
            <td align="left">id-FN-DSA-512 (2.16.840.1.101.3.4.3.TBD2)</td>
          </tr>
          <tr>
            <td align="left">fndsa1024(TBD3)</td>
            <td align="left">FN-DSA-1024</td>
            <td align="left">id-FN-DSA-1024 (2.16.840.1.101.3.4.3.TBD4)</td>
          </tr>
        </tbody>
      </table>
    
	  
	  
      <t>	  
	  Note that these are the pure (non-pre-hashed) variants of FN-DSA. Pre-hashed variants are not defined in this document.
	  This design choice follows the convention established by IETF for other post-quantum signature algorithms in protocol bindings.  
	  As discussed in <xref target="I-D.turner-lamps-cms-fn-dsa"/>, when signature algorithms such as EdDSA, SLH-DSA, ML-DSA, 
	  and FN-DSA are used in protocol contexts where the data to be signed is typically small (such as TLS handshake transcripts or 
	  CMS signed attributes), the pre-hash mode offers no significant benefit in reducing the size of data to be signed.
      </t>	
	  
      <section anchor="key-and-signature-size" numbered="true" toc="default">
        <name>Key and Signature Sizes</name>
        <t>
       The following table summarizes the sizes of FN-DSA public keys and signatures for each parameter set, as defined in <xref target="FIPS206"/>.
	   Two security levels of FN-DSA are recommended in this document. FN-DSA-512 is expected to offer a security level equivalent to NIST level 1. 
	   FN-DSA-1024 is expected to offer a security level equivalent to NIST level 5.
        </t>	
	
  
	   <table anchor="sizes">
        <name>Key and Signature Sizes for FN-DSA</name>
        <thead>
          <tr>
            <th align="left">Parameter Set</th>
            <th align="left">Public Key (bytes)</th>
            <th align="left">Signature (bytes)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">FN-DSA-512</td>
            <td align="left">897</td>
            <td align="left">666</td>
          </tr>
          <tr>
            <td align="left">FN-DSA-1024</td>
            <td align="left">1793</td>
            <td align="left">1280</td>
          </tr>
        </tbody>
      </table>

      </section>
	  
      <section anchor="certificate-chain" numbered="true" toc="default">
        <name>Certificate Chain</name>
        <t>
       For the purpose of signalling support for signatures on certificates as per Section 4.2.3 of <xref target="RFC8446"/>, 
	   these values indicate support for signing using the given AlgorithmIdentifier shown in Table 1 as defined 
	   in <xref target="I-D.turner-lamps-fn-dsa-certificates"/>.
        </t>		  

        <t>	
       Implementations SHOULD validate that the public key in the end-entity certificate matches the expected size for the 
	   negotiated parameter set.  A mismatch MUST be treated as a verification failure.
        </t>	
      </section>

      <section anchor="handshake-signature" numbered="true" toc="default">
        <name>Handshake Signature</name>
        <t>
       When one of those SignatureScheme values is used in a CertificateVerify message, then the signature MUST be computed and
       verified as specified in Section 4.4.3 of <xref target="RFC8446"/>, and the corresponding end-entity certificate MUST use 
	   the corresponding AlgorithmIdentifier from Table 1.
        </t>		  
        <t>	
       If the signature or public key is of the wrong length, the client MUST treat this as a verification failure, and thus 
	   terminate the handshake with a decrypt_error alert.
        </t>	
        <t>	
        The random salt used in FN-DSA signature generation MUST be derived from a cryptographically secure random number generator.  
		Lack of fresh random data during FN-DSA signature generation leads to a differential fault attack <xref target="BD23"/>.
        </t>	
      </section>
   </section>
    <!-- FN-DSA Scheme -->
<!-- ===================================================================== -->



  <section numbered="true" toc="default">
      <name>Security Considerations</name>
      <t> 
      The security considerations of <xref target="RFC8446"/> and <xref target="FIPS206"/> apply.
	  </t>
      <t> 	  
      Editor's Note: This section should be expanded with FN-DSA-specific security considerations, including: random number generation
      requirements (see <xref target="BD23"/>), floating-point arithmetic implementation concerns, and side-channel attack mitigations.  
	  Specific references to <xref target="FIPS206"/> should be added once it is finalized.
	  </t>
   </section>

    <section anchor="iana" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
	  This document requests new entries to the TLS SignatureScheme registry, according to the procedures in <xref target="RFC9847"/>.
      </t>
	    
	   <table anchor="iana-request">
        <name>TLS SignatureScheme Values for FN-DSA</name>
        <thead>
          <tr>
            <th align="left">Value</th>
            <th align="left">Description</th>
            <th align="left">Reconmmended</th>
            <th align="left">Reference</th>			
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TBD1</td>
            <td align="left">fndsa512</td>
            <td align="left">N</td>
            <td align="left">This document</td>			
          </tr>
          <tr>
            <td align="left">TBD3</td>
            <td align="left">fndsa1024</td>
            <td align="left">N</td>
            <td align="left">This document</td>	
          </tr>
        </tbody>
      </table>

    </section>
    <section anchor="acks" numbered="true" toc="default">
      <name>Acknowledgements</name>
    <t>
       TBD.
    </t>
    </section>
  </middle>
  <back>
  <references>
     <name>References</name>	  
	  <references>
      <name>Normative References</name>	  
        <reference anchor="FIPS206" target="https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards">
          <front>
            <title>Fast Fourier Transform over NTRU-Lattice-Based Digital Signature Algorithm</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>

        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>	  
	  </references>
	  <references>
      <name>Informative References</name>	          
	  <reference anchor="BD23" target="https://eprint.iacr.org/2023/422">
          <front>
            <title>A Differential Fault Attack against Deterministic Falcon Signatures</title>
            <author initials="S." surname="Bauer" fullname="Sven Bauer">
              <organization/>
            </author>
            <author initials="F. D." surname="Santis" fullname="Fabrizio De Santis">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>

        <reference anchor="I-D.turner-lamps-fn-dsa-certificates">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Fast-Fourier Transform over NTRU-Lattice-Based Digital Signature Algorithm (FN-DSA)</title>
            <author fullname="Jake Massimo" initials="J." surname="Massimo"/>
            <date month="November" year="2025"/>
            <abstract>
              <t>This document specifies the use of the FN-DSA in Public Key Infrastructure X.509 (PKIX) certificates and Certificate Revocation Lists (CRLs) at two security levels: FN-DSA-512 and FN-DSA-1024.</t>
            </abstract>        
          </front>
		 <seriesInfo name="Internet-Draft" value="draft-turner-lamps-fn-dsa-certificates-00"/>
        </reference>

        <reference anchor="I-D.turner-lamps-cms-fn-dsa">
          <front>
            <title>Use of the FN-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="Daniel Van Geest" initials="D." surname="Van Geest"/>
			<author fullname="Panos Kampanakis" initials="P." surname="Kampanakis"/>
			<author fullname="Sean Turner" initials="S." surname="Turner"/>
			<author fullname="Bas Westerbaan" initials="B." surname="Westerbaan"/>
            <date month="September" year="2025"/>
            <abstract>
              <t>This document specifies the conventions for using the FN-DSA signature algorithm with the Cryptographic Message Syntax (CMS). In addition, the algorithm identifier is provided.</t>
            </abstract>
          </front>
         <seriesInfo name="Internet-Draft" value="draft-turner-lamps-cms-fn-dsa-00"/>
        </reference>
		
        <reference anchor="RFC9847">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="Joe Salowey" initials="J." surname="Salowey"/>
		    <author initials="S." surname="Turner" fullname="Sean Turner"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>This document updates the changes to the TLS and DTLS IANA registries made in RFC 8447.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9847"/>
          <seriesInfo name="DOI" value="10.17487/RFC9847"/>
        </reference>		

	  </references>		
  </references>
  
  </back>
</rfc>
