<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.30 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc docName="draft-zauner-tls-aes-ocb-04" category="std">

  <front>
    <title abbrev="AES-OCB Ciphersuites">AES-OCB (Offset Codebook Mode) Ciphersuites for Transport Layer Security (TLS)</title>

    <author initials="A." surname="Zauner" fullname="Aaron Zauner">
      <organization>lambda: resilient.systems</organization>
      <address>
        <email>azet@azet.org</email>
      </address>
    </author>

    <date year="2016" month="April" day="04"/>

    <area>General</area>
    <workgroup>TLS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This memo describes the use of the Advanced Encryption Standard (AES)
in the Offset Codebook Mode (OCB) of operation within Transport Layer Security (TLS)
and Datagram TLS (DTLS) to provide confidentiality and data origin authentication.
The AES-OCB algorithm is highly parallelizable, provable secure and can be
efficiently implemented in software and hardware providing high performance.
Furthermore, use of AES-OCB in TLS is exempt from former IPR claims by various parties.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">
<t>This document describes the use of the Advanced Encryption Standard (AES)
in the Offset Codebook Mode (OCB) of operation within Transport Layer Security (TLS)
and Datagram TLS (DTLS) to provide confidentiality and data origin authentication.
The AES-OCB algorithm is highly parallelizable, provable secure and can be
efficiently implemented in software and hardware providing high performance.</t>

<t>Furthermore OCB Mode <xref target="OCB"/> for AES <xref target="AES"/> provides a high performance, single-pass,
constant-time AEAD alternative to existing and deployed block-cipher modes without the 
need for special platform specific instructions.</t>

<t>Authenticated encryption, in addition to providing confidentiality for the plaintext
that is encrypted, provides a way to check its integrity and authenticity. Authenticated
Encryption with Associated Data, or AEAD <xref target="RFC5116"/>, adds the ability to check the
integrity and authenticity of some associated data that is not encrypted. This document
utilizes the AEAD facility within TLS 1.2 <xref target="RFC5246"/> and the AES-OCB-based AEAD
algorithms defined in <xref target="RFC5116"/> and <xref target="RFC7253"/>.</t>

<t>The ciphersuites defined in this document use ECDHE, DHE or Pre-Shared-Key (PSK) as their
key establishment mechanism; these ciphersuites can be used with DTLS <xref target="RFC6347"/>. Since
the abiltiy to use AEAD ciphers was introduced in DTLS version 1.2, the ciphersuites defined
in this document cannot be used with earlier versions of that protocol.</t>

</section>
<section anchor="conventions-used-in-this-document" 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"/>.</t>

</section>
<section anchor="fssuites" title="Forward-secret AES-OCB Ciphersuites">
<t>The ciphersuites defined in this document are based on the AES-OCB
authenticated encryption with associated data (AEAD) algorithms
AEAD_AES_128_OCB_TAGLEN96 and AEAD_AES_256_OCB_TAGLEN96 described
in <xref target="RFC7253"/>. The following forward-secret ciphersuites are defined:</t>

<figure><artwork><![CDATA[
  CipherSuite TLS_DHE_RSA_WITH_AES_128_OCB = {TBD1, TBD1}
  CipherSuite TLS_DHE_RSA_WITH_AES_256_OCB = {TBD2, TBD2}
  CipherSuite TLS_ECDHE_RSA_WITH_AES_128_OCB = {TBD3, TBD3}
  CipherSuite TLS_ECDHE_RSA_WITH_AES_256_OCB = {TBD4, TBD4}
  CipherSuite TLS_ECDHE_ECDSA_WITH_AES_128_OCB = {TBD5, TBD5}
  CipherSuite TLS_ECDHE_ECDSA_WITH_AES_256_OCB = {TBD6, TBD6}
]]></artwork></figure>

<t>These ciphersuites make use of the AEAD capability in TLS 1.2 <xref target="RFC5246"/>.</t>

<t>Because this document makes use of an AEAD construct, use of HMAC truncation 
in TLS (as specified in <xref target="RFC6066"/>) has no effect on the ciphersuites defined
herein.</t>

<t>The “nonce” construction is identical to that of draft-ietf-tls-chacha20-poly1305-04:</t>

<t>AES-OCB requires a 96-bit nonce, which is formed as follows:</t>

<t><list style="numbers">
  <t>The 64-bit record sequence number is serialized as an 8-byte, big-endian value and padded on the left with four 0x00 bytes.</t>
  <t>The padded sequence number is XORed with the client_write_IV (when the client is sending) or server_write_IV (when the server is sending).</t>
</list></t>

<t>In DTLS, the 64-bit seq_num is the 16-bit epoch concatenated with the 48-bit seq_num.</t>

<t>This nonce construction is different from the one used with AES-GCM
in TLS 1.2 but matches the scheme expected to be used in TLS 1.3.
The nonce is constructed from the record sequence number and shared
secret, both of which are known to the recipient.  The advantage is
that no per-record, explicit nonce need be transmitted, which saves
eight bytes per record and prevents implementations from mistakenly
using a random nonce.  Thus, in the terms of <xref target="RFC5246"></xref>,
SecurityParameters.fixed_iv_length is twelve bytes and
SecurityParameters.record_iv_length is zero bytes.</t>

<t>These ciphersuites make use of the default TLS 1.2 Pseudorandom
Function (PRF), which uses HMAC with the SHA-256 hash function.
The ECDSA-ECDHE, RSA-ECDHE and RSA-DHE key exchanges are performed 
as defined in <xref target="RFC5246"/>.</t>

</section>
<section anchor="psksuites" title="Pre-Shared-Key (PSK) AES-OCB Ciphersuites">
<t>As in <xref target="fssuites"/>, these ciphersuites follow <xref target="RFC7253"/>.
The PSK, ECDHE_PSK and DHE_PSK key exchanges are performed as specified
in <xref target="RFC4279"/>. The following Pre-Shared-Key (PSK) ciphersuites are defined:</t>

<figure><artwork><![CDATA[
  CipherSuite TLS_PSK_WITH_AES_128_OCB = {TBD7, TBD7}
  CipherSuite TLS_PSK_WITH_AES_256_OCB = {TBD8, TBD8}
  CipherSuite TLS_DHE_PSK_WITH_AES_128_OCB = {TBD9, TBD9}
  CipherSuite TLS_DHE_PSK_WITH_AES_256_OCB = {TBD10, TBD10}
  CipherSuite TLS_ECDHE_PSK_WITH_AES_128_OCB = {TBD11, TBD11}
  CipherSuite TLS_ECDHE_PSK_WITH_AES_256_OCB = {TBD12, TBD12}
]]></artwork></figure>

<t>The “nonce” input to the AEAD algorithm is identical to the one defined in
<xref target="fssuites"/>. These ciphersuites make use of the default TLS 1.2 Pseudorandom
Function (PRF), which uses HMAC with the SHA-256 hash function.</t>

</section>
<section anchor="applicable-tls-versions" title="Applicable TLS Versions">
<t>These ciphersuites make use of the authenticated encryption with associated data
(AEAD) defined in TLS 1.2 <xref target="RFC5288"/>. Earlier versions of TLS do not have support
for AEAD; for instance, the TLSCiphertext structure does not have the “aead” option
in TLS 1.1. Consequently, these ciphersuites 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
ciphersuites. A client MUST treat the selection of these cipher suites in combination
with a version of TLS that does not support AEAD (i.e., TLS 1.1 or earlier) as an error
and generate a fatal ‘illegal_parameter’ TLS alert.</t>

</section>
<section anchor="intellectual-property-rights" title="Intellectual Property Rights">
<t>Historically Offset Codebook Mode has seen difficulty with implementation, deployment
and standardization because of pending patents and intellectual rights claims on OCB
itself. In preparation of this document all involved parties have declared they will
issue IPR statements exempting use of OCB Mode in TLS from these claims.
Specifically – OCB Mode as described in this document for use in TLS – is based, and
strongly influenced, by earlier work from Charanjit Jutla on <xref target="IAPM"/>.</t>

<section anchor="resolved-ipr-claims" title="Resolved IPR Claims">
<t>The following parties have made IPR claims in the past:</t>

<t><list style="symbols">
  <t>US Patent No. 7,093,126 (Issued Aug 15, 2006) - Filed Apr 14, 2000. Inventor Name: Charanjit S. Jutla, Assignee: IBM</t>
  <t>US Patent No. 6,963,976 (Issued Nov 8, 2005) - Filed Nov 3, 2000. Inventor Name: Charanjit S. Jutla, Assignee: IBM</t>
  <t>US Patent No. 7,046,802 (Issued May 16, 2006) - Filed 30 Jul 2001. Inventor Name: Phillip W. Rogaway, Assignee: Rogaway Phillip W</t>
  <t>US Patent No. 7,200,227 (Issued Apr 3, 2007) - Filed 18 Jul 2005. Inventor Name: Phillip Rogaway, Assignee: Phillip Rogaway</t>
  <t>US Patent No. 7,949,129 (Issued May 24, 2011) - Filed 23 Mar 2007. Inventor Name: Phillip W. Rogaway, Assignee: Rogaway Phillip W</t>
</list></t>

<t>Use of technology described by these patents, when used with TLS, has been explicitly
  exempted from any previous claims by the original authors and patent holders.</t>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">
<t>IANA is requested to assign the values for the ciphersuites defined in <xref target="fssuites"/>
and <xref target="psksuites"/> from the TLS and DTLS Ciphersuite registries. IANA, please note
that the DTLS-OK column should be marked as “Y” for each of these algorithms.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">
<t>The security considerations in <xref target="RFC5246"/> apply to this document as well. The
remainder of this section describes security considerations specific to the
ciphersuites described in this document.</t>

<section anchor="perfect-forward-secrecy" title="(Perfect) Forward Secrecy">
<t>With the exception of two Pre-Shared-Key (PSK) ciphersuites intended for use in
constrained environments and embedded devices (IoT), defined in <xref target="psksuites"/>,
this document deals exclusively with ciphersuites that are inherently forward-secret.</t>

</section>
<section anchor="static-rsa-key-transport" title="Static RSA Key-transport">
<t>No ciphersuite is defined in this document that makes use of RSA as Key-Transport.</t>

</section>
<section anchor="nonce-reuse" title="Nonce reuse">
<t>AES-OCB security requires that the “nonce” (number used once) is never reused.
The IV construction in <xref target="fssuites"/> is designed to prevent nonce reuse.
Specifically, if there is any error in the nonce construction implementation,
it will simply be non-interoperable with conforming implementations.</t>

</section>
<section anchor="data-volume-limit-under-a-single-key" title="Data volume limit under a single key">
<t>There is a limitation on the total number of bytes that can be
transmitted under one set of keys. For the AES-OCB ciphersuites,
implementations MUST NOT transmit more than 2^36 bytes encrypted
under a single key: they MUST rekey or close the connection before
2^36 bytes are reached. These limitations are based on limitations
introduced in the TLS 1.3 draft for AES-GCM, this document adheres to
the same constraints. A detailed analysis can be found in <xref target="AELIMIT"/>.</t>

</section>
</section>
<section anchor="acknowledgements" title="Acknowledgements">
<t>This document borrows heavily from <xref target="RFC5288"/>, <xref target="RFC6655"/> and 
draft-ietf-tls-chacha20-poly1305-04.</t>

<t>The author would like to thank Martin Thomson for his suggested change on the client
negotiation paragraph, Nikos Mavrogiannopoulos and Peter Gutmann for the discussion on
PSK ciphersuites, Jack Lloyd for content on the clarification of the TLS Record IV length,
Samuel Neves for suggesting the data-limitation paragraph from the TLS 1.3 draft
and the TLS Working Group in general for feedback and discussion on this document.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor='RFC7253' target='http://www.rfc-editor.org/info/rfc7253'>
<front>
<title>The OCB Authenticated-Encryption Algorithm</title>
<author initials='T.' surname='Krovetz' fullname='T. Krovetz'><organization /></author>
<author initials='P.' surname='Rogaway' fullname='P. Rogaway'><organization /></author>
<date year='2014' month='May' />
<abstract><t>This document specifies OCB, a shared-key blockcipher-based encryption scheme that provides confidentiality and authenticity for plaintexts and authenticity for associated data.  This document is a product of the Crypto Forum Research Group (CFRG).</t></abstract>
</front>
<seriesInfo name='RFC' value='7253'/>
<seriesInfo name='DOI' value='10.17487/RFC7253'/>
</reference>



<reference  anchor='RFC5246' target='http://www.rfc-editor.org/info/rfc5246'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
<author initials='T.' surname='Dierks' fullname='T. Dierks'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2008' month='August' />
<abstract><t>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='5246'/>
<seriesInfo name='DOI' value='10.17487/RFC5246'/>
</reference>



<reference  anchor='RFC6066' target='http://www.rfc-editor.org/info/rfc6066'>
<front>
<title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<date year='2011' month='January' />
<abstract><t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, &quot;The Transport Layer Security (TLS) Protocol Version 1.2&quot;.  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6066'/>
<seriesInfo name='DOI' value='10.17487/RFC6066'/>
</reference>



<reference  anchor='RFC5116' target='http://www.rfc-editor.org/info/rfc5116'>
<front>
<title>An Interface and Algorithms for Authenticated Encryption</title>
<author initials='D.' surname='McGrew' fullname='D. McGrew'><organization /></author>
<date year='2008' month='January' />
<abstract><t>This document defines algorithms for Authenticated Encryption with Associated Data (AEAD), and defines a uniform interface and a registry for such algorithms.  The interface and registry can be used as an application-independent set of cryptoalgorithm suites.  This approach provides advantages in efficiency and security, and promotes the reuse of crypto implementations.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5116'/>
<seriesInfo name='DOI' value='10.17487/RFC5116'/>
</reference>



<reference  anchor='RFC4279' target='http://www.rfc-editor.org/info/rfc4279'>
<front>
<title>Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)</title>
<author initials='P.' surname='Eronen' fullname='P. Eronen' role='editor'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig' role='editor'><organization /></author>
<date year='2005' month='December' />
<abstract><t>This document specifies three sets of new ciphersuites for the Transport Layer Security (TLS) protocol to support authentication based on pre-shared keys (PSKs).  These pre-shared keys are symmetric keys, shared in advance among the communicating parties.  The first set of ciphersuites uses only symmetric key operations for authentication. The second set uses a Diffie-Hellman exchange authenticated with a pre-shared key, and the third set combines public key authentication of the server with pre-shared key authentication of the client.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4279'/>
<seriesInfo name='DOI' value='10.17487/RFC4279'/>
</reference>



<reference  anchor='RFC2119' target='http://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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='RFC5288' target='http://www.rfc-editor.org/info/rfc5288'>
<front>
<title>AES Galois Counter Mode (GCM) Cipher Suites for TLS</title>
<author initials='J.' surname='Salowey' fullname='J. Salowey'><organization /></author>
<author initials='A.' surname='Choudhury' fullname='A. Choudhury'><organization /></author>
<author initials='D.' surname='McGrew' fullname='D. McGrew'><organization /></author>
<date year='2008' month='August' />
<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 cipher suites that use AES-GCM with RSA, DSA, and Diffie-Hellman-based key exchange mechanisms.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5288'/>
<seriesInfo name='DOI' value='10.17487/RFC5288'/>
</reference>



<reference  anchor='RFC6347' target='http://www.rfc-editor.org/info/rfc6347'>
<front>
<title>Datagram Transport Layer Security Version 1.2</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<author initials='N.' surname='Modadugu' fullname='N. Modadugu'><organization /></author>
<date year='2012' month='January' />
<abstract><t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol.  The DTLS protocol provides communications privacy for datagram protocols.  The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery.  The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.  This document updates DTLS 1.0 to work with TLS version 1.2.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6347'/>
<seriesInfo name='DOI' value='10.17487/RFC6347'/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor='RFC6655' target='http://www.rfc-editor.org/info/rfc6655'>
<front>
<title>AES-CCM Cipher Suites for Transport Layer Security (TLS)</title>
<author initials='D.' surname='McGrew' fullname='D. McGrew'><organization /></author>
<author initials='D.' surname='Bailey' fullname='D. Bailey'><organization /></author>
<date year='2012' month='July' />
<abstract><t>This memo describes the use of the Advanced Encryption Standard (AES) in the Counter with Cipher Block Chaining - Message Authentication Code (CBC-MAC) Mode (CCM) of operation within Transport Layer Security (TLS) and Datagram TLS (DTLS) to provide confidentiality and data origin authentication.  The AES-CCM algorithm is amenable to compact implementations, making it suitable for constrained environments.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6655'/>
<seriesInfo name='DOI' value='10.17487/RFC6655'/>
</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 year="2001" month="November" day="26"/>
  </front>
  <seriesInfo name="NIST" value="FIPS 197"/>
</reference>
<reference anchor="OCB" >
  <front>
    <title>OCB: A Block-Cipher Mode of Operation for Efficient Authenticated Encryption</title>
    <author initials="P." surname="Rogaway">
      <organization></organization>
    </author>
    <author initials="M." surname="Bellare">
      <organization></organization>
    </author>
    <author initials="J." surname="Black">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="CCS01" value="ACM Conference on Computer and Communications Security (CCS 2001), ACM Press, pp. 196-205"/>
  <seriesInfo name="date" value="2001"/>
</reference>
<reference anchor="IAPM" >
  <front>
    <title>Encryption Modes with Almost Free Message Integrity</title>
    <author initials="C." surname="Jutla">
      <organization></organization>
    </author>
    <date year="2001"/>
  </front>
  <seriesInfo name="EUROCRYPT01" value="Proc. Eurocrypt 2001, pp. 529-544"/>
</reference>
<reference anchor="AELIMIT" >
  <front>
    <title>Limits on Authenticated Encryption Use in TLS</title>
    <author initials="A." surname="Luykx">
      <organization></organization>
    </author>
    <author initials="K." surname="Paterson">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
  <seriesInfo name="date" value="2016-03-08"/>
</reference>


    </references>



  </back>
</rfc>

