<?xml version="1.0" encoding="utf-8"?>
<!-- 
     draft-rfcxml-general-template-standard-00
  
     This template includes examples of the most commonly used features of RFCXML with comments 
     explaining how to customise them. This template can be quickly turned into an I-D by editing 
     the examples provided. Look for [REPLACE], [REPLACE/DELETE], [CHECK] and edit accordingly.
     Note - 'DELETE' means delete the element or attribute, not just the contents.
     
     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="info"
  docName="draft-http2-aes256-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">
<!-- [REPLACE] 
       * docName with name of your draft
     [CHECK] 
       * category should be one of std, bcp, info, exp, historic
       * ipr should be one of trust200902, noModificationTrust200902, noDerivativesTrust200902, pre5378Trust200902
       * updates can be an RFC number as NNNN
       * obsoletes can be an RFC number as NNNN 
-->

  <front>
    <title abbrev="Abbreviated Title">HTTP/2 AES-256</title>
    <!--  [REPLACE/DELETE] abbrev. The abbreviated title is required if the full title is longer than 39 characters -->

    <seriesInfo name="Internet-Draft" value="draft-http2-aes256-00"/>
   
    <author fullname="Jason Freedman" initials="J." role="editor" surname="Freedman">
      <organization showOnFrontPage="true">CYMERTEK</organization>
      <address>
        <email>jasonfreedman@cymertek.com</email>
      </address>
    </author>
	
	<author fullname="Larry Stark" initials="L." role="editor" surname="Stark">
      <organization showOnFrontPage="true">CYMERTEK</organization>
      <address>
        <email>larrystark@cymertek.com</email>
      </address>
    </author>

    <author fullname="Justin Oliver" initials="J." role="editor" surname="Oliver">
      <organization showOnFrontPage="true">CYMERTEK</organization>
      <address>
        <email>justinoliver@cymertek.com</email>
      </address>
    </author>
	
    <date month="05" year="2024"/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTPbis</workgroup>
    <keyword>HTTP</keyword>
    <keyword>SPDY</keyword>
    <keyword>Web</keyword>
	<abstract>
      <t>This RFC is an official specification for the Internet community.  It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to http/2.</t>
    </abstract>
  </front>

  <middle>
    
    <section>
	  <name slugifiedName="name-introduction">Introduction</name>
      <t>The optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP)<xref target="RFC9110" format="default" sectionFormat="of" derivedContent="RFC9113"/>, referred to as HTTP version 2 (HTTP/2)<xref target="RFC9113" format="default" sectionFormat="of" derivedContent="RFC9113"/> specifies a requirement of TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 which does not meet the needs of a post-quantum cryptography world.  In order to allow for stronger cryptography to be enforced, this document specifies an amendement to the original specification.</t>
      
      <section>
        <name>Requirements Language</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"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.</t>
      </section>
      <!-- [CHECK] The 'Requirements Language' section is optional -->

    </section>
    
    <section anchor="ip-identifier" numbered="true" toc="include" removeInRFC="false">
      <name slugifiedName="cipher-requirement">Cipher Requirements</name>
		<t>In the HTTP/2 specification <xref target="RFC9113" format="default" sectionFormat="of" derivedContent="RFC9113" />, section 9.2.2, paragraph 4, it is explicitly stated that any deployment of HTTP/2 using TLS 1.2 <xref target="RFC8446" format="default" sectionFormat="of" derivedContent="RFC9113" /> must adhere to certain cipher suite requirement.  In order to contend with post-quantum cryptographic abilities, this document specifies alternate cipher requirements.</t>
	  
		<t>With this document, as like the original, the need to mitigate the risk of non-intersecting sets of permitted cipher suites causing TLS handshake failures continues to be a real problem.  To avoid this problem, HTTP/2 deployments using TLS 1.2 <bcp14>MUST</bcp14> support  TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 <xref target="RFC5289" format="default" sectionFormat="of" derivedContent="TLS-ECDHE"/> and TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 <xref target="RFC5289" format="default" sectionFormat="of" derivedContent="TLS-ECDHE"/>, both with the P-256 elliptic curve <xref target="RFC8422" format="default" sectionFormat="of" derivedContent="RFC8422"/>.</t>

		<t>Additionally, server implementations of HTTP/2 <bcp14>MUST</bcp14> also include an end-user system administrator configurable option to deactivate the lower cipher option, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, in favor of the higher one, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384.  The default should always be to support TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, which maintains backward compatibility for devices with lower encryption requirements.  This end-user disabling switch is essential for those specific instances where the target application necessitates a higher level of cipher strength.</t>
    </section>
  
    <section anchor="IANA">
    <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->
      <name>IANA Considerations</name>
      <t>This addendum includes no additional request to IANA than what has been requested in HTTP/2<xref target="RFC9113" format="default" sectionFormat="of" derivedContent="RFC9113"/>.</t>
    </section>
    
    <section anchor="Security">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Security Considerations</name>
      <t>This addendum the same ciphers as defined in HTTP/2<xref target="RFC9113" format="default" sectionFormat="of" derivedContent="RFC9113"/>
	  and adds an additional required stronger cipher for post-quantum security.</t>
    </section>
    
    <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
  </middle>

  <back>
    <references>
      <name slugifiedName="name-references">References</name>
      <references>
        <name slugifiedName="name-normative-references">Normative References</name>
		<reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" quoteTitle="true" derivedAnchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author initials="R" surname="Fielding" fullname="Roy Fielding" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Nottingham" fullname="Mark Nottingham" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Reschke" fullname="Julian Reschke" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2022" month="June"/>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9113" target="https://www.rfc-editor.org/info/rfc9113" quoteTitle="true" derivedAnchor="HTTP2">
          <front>
            <title>HTTP/2</title>
            <author initials="M" surname="Thomson" fullname="Martin Thomson" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Benfield" fullname="Cory Benfield" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2022" month="June"/>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>

 
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">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" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">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="RFC8422" target="https://www.rfc-editor.org/info/rfc8422" quoteTitle="true" derivedAnchor="RFC8422">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) Versions 1.2 and Earlier</title>
            <author initials="Y." surname="Nir" fullname="Y. Nir">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Josefsson" fullname="S. Josefsson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Pegourie-Gonnard" fullname="M. Pegourie-Gonnard">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t indent="0">This document describes key exchange algorithms based on Elliptic Curve Cryptography (ECC) for the Transport Layer Security (TLS) protocol.  In particular, it specifies the use of Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) key agreement in a TLS handshake and the use of the Elliptic Curve Digital Signature Algorithm (ECDSA) and Edwards-curve Digital Signature Algorithm (EdDSA) as authentication mechanisms.</t>
              <t indent="0">This document obsoletes RFC 4492.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8422"/>
          <seriesInfo name="DOI" value="10.17487/RFC8422"/>
        </reference>
        <reference anchor="RFC5289" target="https://www.rfc-editor.org/info/rfc5289" quoteTitle="true" derivedAnchor="TLS-ECDHE">
          <front>
            <title>TLS Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois Counter Mode (GCM)</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="August"/>
            <abstract>
              <t indent="0">RFC 4492 describes elliptic curve cipher suites for Transport Layer Security (TLS).  However, all those cipher suites use HMAC-SHA-1 as their Message Authentication Code (MAC) algorithm.  This document describes sixteen new cipher suites for TLS that specify stronger MAC algorithms.  Eight use Hashed Message Authentication Code (HMAC) with SHA-256 or SHA-384, and eight use AES in Galois Counter Mode (GCM).   This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5289"/>
          <seriesInfo name="DOI" value="10.17487/RFC5289"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="TLS12">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author initials="T." surname="Dierks" fullname="T. Dierks">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="August"/>
            <abstract>
              <t indent="0">This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol.  The TLS protocol provides communications security over the Internet.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
      </references>
    </references>
 
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
		<author fullname="Jason Freedman" initials="J." role="editor" surname="Freedman">
		  <organization showOnFrontPage="true">CYMERTEK</organization>
		  <address>
			<email>jasonfreedman@cymertek.com</email>
		  </address>
		</author>
		
		<author fullname="Larry Stark" initials="L." role="editor" surname="Stark">
		  <organization showOnFrontPage="true">CYMERTEK</organization>
		  <address>
			<email>larrystark@cymertek.com</email>
		  </address>
		</author>

		<author fullname="Justin Oliver" initials="J." role="editor" surname="Oliver">
		  <organization showOnFrontPage="true">CYMERTEK</organization>
		  <address>
			<email>justinoliver@cymertek.com</email>
		  </address>
		</author>
    </section>
    
 </back>
</rfc>
