<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc2246 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2246.xml">
<!ENTITY rfc4346 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4346.xml">
<!ENTITY rfc4347 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4347.xml">
<!ENTITY rfc4106 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4106.xml">
<!ENTITY ietf-tls-rfc4346-bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-tls-rfc4346-bis.xml">
<!ENTITY ietf-tls-ecc-new-mac SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-tls-ecc-new-mac.xml">
<!ENTITY mcgrew-auth-enc SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.mcgrew-auth-enc.xml">
<!ENTITY rescorla-tls-suiteb SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.rescorla-tls-suiteb.xml">

]>
<?rfc toc="yes"?>
<?rfc tocompact="no"?>
<?rfc tocdepth="6"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<rfc ipr="full3978" category="std" docName="draft-ietf-tls-rsa-aes-gcm-01">
	<front>
		<title abbrev="RSA AES-GCM Ciphersuites">RSA based AES-GCM Cipher Suites for TLS</title>
		<author fullname="Joseph Salowey" initials="J" surname="Salowey">
			<organization> Cisco Systems, Inc. </organization>
			<address>
				<postal>
					<street>2901 3rd. Ave</street>
					<city>Seattle</city>
					<code>98121</code>
					<region>WA</region>
					<country>USA</country>
				</postal>
				<email> jsalowey@cisco.com </email>
			</address>
		</author>
		<author fullname="Abhijit Choudhury" initials="A" surname="Choudhury">
			<organization> Cisco Systems, Inc. </organization>
			<address>
				<postal>
					<street>3625 Cisco Way</street>
					<city>San Jose </city>
					<code>95134</code>
					<region>CA</region>
					<country>USA</country>
				</postal>
				<email> abhijitc@cisco.com </email>
			</address>
		</author>
		<author fullname="David McGrew" initials="D" surname="McGrew">
			<organization>Cisco Systems, Inc.</organization>
			<address><postal>
					<street>170 W Tasman Drive</street>
					<city>San Jose </city>
					<code>95134</code>
					<region>CA</region>
					<country>USA</country>
				</postal><email> mcgrew@cisco.com </email></address>
			
		</author>
		<date month="January" year="2008"/>
		<area> Security Area </area>
		<workgroup> TLS Working Group </workgroup>
		<abstract>
			<t> This memo describes the use of the Advanced Encryption Standard
(AES)
    in Galois/Counter Mode (GCM) as a Transport Layer Security (TLS)
    authenticated encryption operation.  GCM provides both confidentiality
    and data origin authentication, can be efficiently implemented in
    hardware for speeds of 10 gigabits per second and above, and is also
    well-suited to software implementations.  This memo defines TLS
    ciphersuites that use AES-GCM with RSA.
</t>
		</abstract>

	</front>
	<middle>

		<section title="Introduction">
			<t>This document describes the use of AES <xref target="AES" ></xref>in Galois Counter Mode (GCM) <xref target="GCM"></xref> (AES-GCM) with RSA based key exchange as a ciphersuite for TLS.   This mechanism is not only efficient and secure, hardware implementations can achieve high speeds with low cost and low latency, because the mode can be pipelined. Applications
       like CAPWAP, which uses DTLS, can benefit from the high-speed
       implementations when wireless termination points (WTPs) and 
       controllers (ACs) have to meet requirements to support higher throughputs in the future. AES-GCM has been specified as a mode that can be used with IPsec ESP <xref target="RFC4106"></xref> and 802.1AE MAC Security <xref target="IEEE8021AE"></xref>.  It also is part of the NSA suite B ciphersuites for TLS <xref target="I-D.rescorla-tls-suiteb"></xref>; however in order to meet Suite B requirements these ciphersuites require ECC base key exchange and TLS 1.2. The ciphersuites defined in this document are based on RSA which allows the
          use of AES-GCM in environments that have not deployed ECC algorithms and do not need to meet NSA Suite B requirements.  AES-GCM is an authenticated encryption with associated data (AEAD) cipher, as defined in TLS 1.2<xref target="I-D.ietf-tls-rfc4346-bis"></xref>.  The ciphersuites defined in this draft may be used with Datagram TLS defined in <xref target="RFC4347"></xref>. This memo uses GCM in a way similar to <xref target="I-D.ietf-tls-ecc-new-mac"></xref>.</t>
			
		</section>
		<section title="Conventions Used In This Document">
		<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in <xref target="RFC2119"></xref></t>
		</section>
		<section title="RSA Based AES-GCM Cipher Suites" anchor="rsasuite">
			<t> The following ciphersuites use the new authenticated encryption
   modes defined in TLS 1.2 with AES in Galois Counter Mode (GCM) <xref target="GCM"/>:</t>
				<t><list style="hanging" >
					<t>CipherSuite TLS_RSA_WITH_AES_128_GCM_SHA256     = {TBD1,TBD1}<vspace></vspace>
					CipherSuite TLS_RSA_WITH_AES_256_GCM_SHA384     = {TBD2,TBD2}<vspace></vspace>
					CipherSuite TLS_RSA_DHE_WITH_AES_128_GCM_SHA256 = {TBD3,TBD3}<vspace></vspace>
					CipherSuite TLS_RSA_DHE_WITH_AES_256_GCM_SHA384 = {TBD4,TBD4}</t>
				</list></t>
<t>These ciphersuites use the AES-GCM authenticated encryption with associated data (AEAD) algorithms AEAD_AES_128_GCM and AEAD_AES_256_GCM described in <xref target="I-D.mcgrew-auth-enc"></xref>.  Note that this specification uses a 128-bit authentication tag with GCM. The "nonce" SHALL be 12 bytes long and it is "partially
    implicit" (see section 3.2.1 in <xref target="I-D.mcgrew-auth-enc"></xref>).  Part of the nonce is generated as part of
   the handshake process and is static for the entire session and part
   is carried in each packet.  
</t>

<figure >
	<artwork  >
          Struct{
             opaque salt[4];
             opaque explicit_nonce_part[8]; 	   
          } GCMNonce</artwork>
</figure>

<t>    The salt is the "implicit" part of the nonce and is not sent in the packet.  It is either the client_write_IV if the client is sending or the server_write_IV if the server is sending.  These IVs SHALL be 4 bytes long.
</t>

<t>    The explicit_nonce_part is chosen by the sender and included in the
    packet.  Each value of the explicit_nonce_part MUST be distinct for each distinct invocation of GCM encrypt function for any fixed key.  Failure to meet this uniqueness
    requirement can significantly degrade security.  The explicit_nonce_part is carried in the IV field of the
   GenericAEADCipher structure.  Therefore, for all the algorithms
   defined in this section, SecurityParameters.iv_length=8.</t>

<t>In the case of TLS the explicit_nonce_part MAY be the 64-bit sequence number.   In the case of Datagram TLS <xref target="RFC4347" /> the explicit_nonce_part MAY be formed from the concatenation of the 16-bit epoch with the 48-bit DTLS seq_num.</t>

<t>The RSA and RSA-DHE key exchange is performed as defined in <xref target="I-D.ietf-tls-rfc4346-bis"></xref>.</t>
<t>The PRF algorithms SHALL be as follows:</t><t>For TLS_RSA_WITH_AES_128_GCM_SHA256 and TLS_RSA_DHE_WITH_AES_128_GCM_SHA256 the hash function is SHA256.</t>  <t>For TLS_RSA_WITH_AES_256_GCM_SHA384 and TLS_RSA_DHE_WITH_AES_256_GCM_SHA384 the hash function is SHA384.</t>

<section title="Recommendations for Multiple Cryptographic Processors">

<t>If multiple cryptographic processors are in use by the sender, then
    the sender MUST ensure that each value of the explicit_nonce_part
    that is used by each processor is distinct.  In this case each
    encryption processor SHOULD include in the explicit_nonce_part a
    a fixed value that is distinct for each processor.  The recommended
    format is</t>

<figure >
	<artwork  >
     explicit_nonce_part = FixedDistinct || Variable
         </artwork>
</figure>

<t>    where the FixedDistinct field is distinct for each encryption
    processor, but is fixed for a given processor, and the Variable
    field is distinct for each distinct nonce used by a particular
    encryption processor.  When this method is used, the FixedDistinct
    fields used by the different processors MUST have the same length.</t>

   <t> In the terms of Figure 2 in <xref target="I-D.mcgrew-auth-enc"></xref>, the Salt is the Fixed-Common
    part of the nonce (it is fixed, and it is common across all
    encryption processors), the FixedDistinct field exactly corresponds
    to the Fixed-Distinct field, and the Variable field corresponds to the Counter field, and the explicit part exactly corresponds to the explicit_nonce_part.</t>

<t> For clarity, we provide an example for TLS in which there are two distinct
    encryption processors, each of which uses a one-byte FixedDistinct
    field:</t>
<figure >
	<artwork  >
       Salt          = eedc68dc
       FixedDistinct = 01       (for the first encryption processor)
       FixedDistinct = 02       (for the second encryption processor)
</artwork>
</figure>

<t>    The GCMnonces generated by the first encryption processor, and their
    corresponding explicit_nonce_parts, are:</t>
<figure >
	<artwork  >
       GCMNonce                    explicit_nonce_part
       ------------------------    ----------------------------
       eedc68dc0100000000000000    0100000000000000
       eedc68dc0100000000000001    0100000000000001
       eedc68dc0100000000000002    0100000000000002
       ...
</artwork>
</figure>

<t>    The GCMnonces generated by the second encryption processor, and their
    corresponding explicit_nonce_parts, are</t>

<figure >
	<artwork  >
       GCMNonce                    explicit_nonce_part
       ------------------------    ----------------------------
       eedc68dc0200000000000000    0200000000000000
       eedc68dc0200000000000001    0200000000000001
       eedc68dc0200000000000002    0200000000000002
       ...

</artwork>
</figure>


</section>
		</section>
		<section title="TLS Versions">
			<t>These ciphersuites make use of the authenticated encryption with additional data defined in TLS 1.2 <xref target="I-D.ietf-tls-rfc4346-bis"></xref>.  They MUST NOT be negotiated in older versions of TLS.
   Clients MUST NOT offer these cipher suites if they do not offer TLS
   1.2 or later.  Servers which select an earlier version of TLS MUST
   NOT select one of these cipher suites.  Because TLS has no way for
   the client to indicate that it supports TLS 1.2 but not earlier, a
   non-compliant server might potentially negotiate TLS 1.1 or earlier
   and select one of the cipher suites in this document.  Clients MUST
   check the TLS version and generate a fatal "illegal_parameter" alert
   if they detect an incorrect version.</t>
			
		</section>
		<section anchor="IANA" title="IANA Considerations">
<t>IANA has assigned the following values for the ciphersuites defined in this draft:</t>
<t><list style="hanging" >
					<t>CipherSuite TLS_RSA_WITH_AES_128_GCM_SHA256     = {TBD1,TBD1}<vspace></vspace>
					CipherSuite TLS_RSA_WITH_AES_256_GCM_SHA384     = {TBD2,TBD2}<vspace></vspace>
					CipherSuite TLS_RSA_DHE_WITH_AES_128_GCM_SHA256 = {TBD3,TBD3}<vspace></vspace>
					CipherSuite TLS_RSA_DHE_WITH_AES_256_GCM_SHA384 = {TBD4,TBD4}</t>
				</list></t>
		</section>
		<section anchor="Security" title="Security Considerations">
<t> The security considerations in <xref target="I-D.ietf-tls-rfc4346-bis"></xref>  apply to this
   document as well.  The remainder of this section describes security
   considerations specific to the cipher suites described in this
   document.</t>

			<section title="Perfect Forward Secrecy">
				<t>The perfect forward secrecy properties of RSA based TLS ciphersuites are discussed in the security analysis of <xref target="I-D.ietf-tls-rfc4346-bis"></xref>.  It should be noted that only the ephemeral Diffie-Hellman based ciphersuites (RSA_DHE) are capable of providing perfect forward secrecy. </t>
			
			</section>
			<section title="Counter Reuse">
				<t>AES-GCM security requires that the counter is never reused.  The IV construction in <xref target="rsasuite"></xref> is designed to prevent counter reuse. </t>
			
			</section>
		</section>
		<section anchor="Acknowledgements" title="Acknowledgements">
			<t>This draft borrows heavily from <xref target="I-D.ietf-tls-ecc-new-mac"></xref>.</t>
		</section>
	</middle>
	<back>
		<references title="Normative References">
			
			&rfc4346;
			&rfc2119;
			&rfc4347;
			&ietf-tls-rfc4346-bis;
		
			&mcgrew-auth-enc;
			
			<reference anchor="GCM">
				<front>
					<title>Recommendation for Block Cipher Modes of Operation:
              Galois Counter Mode (GCM) for Confidentiality and
              Authentication</title>
					<author>
						<organization>National Institute of Standards and Technology</organization>
					</author>
					<date month="April" year="2006"></date>
					
				</front>
				<seriesInfo name="SP" value="800-38D"></seriesInfo>
			</reference>
			<reference anchor="AES">
				<front>
					<title>Specification for the Advanced Encryption Standard (AES)</title>
					<author>
						<organization>National Institute of Standards and Technology</organization>
					</author>
					<date month="November" year="2001"></date>
				</front>
				<seriesInfo name="FIPS" value="197"></seriesInfo>
			</reference>
		</references>
		<references title="Informative References">	
				&rfc4106;
				&rescorla-tls-suiteb;
					&ietf-tls-ecc-new-mac;
				<reference anchor="IEEE8021AE">
					<front>
						<title>Media Access Control Security</title>
						<author>
							<organization>Institute of Electrical and Electronics Engineers</organization>
						</author>
						<date month="August" year="2006"></date>
					</front>
					<seriesInfo name="IEEE Standard" value="802.1AE"></seriesInfo>
				</reference>
		</references>
	</back>
</rfc>
