<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='./rfc2629.xslt' ?>

<?rfc toc="yes"?>
<?rfc symrefs="no"?>
<?rfc compact="no" ?>
<?rfc sortrefs="yes" ?>
<?rfc strict="yes" ?>
<?rfc linkmailto="yes" ?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" >

<?xml-stylesheet type='text/xsl' href='./rfc2629.xslt' ?>

<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="no" ?>
<?rfc subcompact="yes" ?>
<?rfc sortrefs="yes" ?>
<rfc ipr="trust200902" docName="draft-gutmann-tls-lts-04" category="std">

  <!-- ======================================================================== -->
  <front>
    <title abbrev="TLS-LTS">TLS 1.2 Update for Long-term Support</title>
    <author initials="P." surname="Gutmann" fullname="Peter Gutmann">
      <organization abbrev="University of Auckland">University of Auckland</organization>
      <address>
        <postal>
          <street>Department of Computer Science</street>
          <city>University of Auckland</city>
          <city>Auckland</city>
          <country>New Zealand</country>
        </postal>
        <email>pgut001@cs.auckland.ac.nz</email>
      </address>
    </author>
    <date year="2016"/>
    <area>Security Area</area>
    <workgroup>TLS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>

This document specifies an update of TLS 1.2 for long-term support, one that
incoporates as far as possible what's already deployed for TLS 1.2 but with
the security holes and bugs fixed.  This represents a stable, known-good
version that can be deployed to systems that can't roll out a new set of
patches every month or two when the next attack on TLS is published.

      </t>
    </abstract>
  </front>
  <!-- ======================================================================== -->
  <middle>

    <!-- ====================================================================== -->
    <section anchor="introduction" title="Introduction">
      <t>

<xref target="TLS">TLS</xref> and <xref target="DTLS">DTLS</xref>, by nature
of their enormous complexity and the inclusion of large amounts of legacy
material, contain numerous security issues that have been known to be a
problem for many years and that keep coming up again and again in attacks
(there are simply too many of these to provide references for, and in any case
more will have been published by the time you read this).  This document
presents a minimal, known-good set of mechanisms that defend against all
currently-known weaknesses in TLS, that would have defended against them ten
years ago, and that have a good chance of defending against them ten years
from now, providing the long-term stability that's required by many systems in
the field.

      </t>
      <t>

In particular, this document takes inspiration from numerous published
analyses of TLS

<xref target="TLS-Analysis-1"/> <xref target="TLS-Analysis-2"/>
<xref target="TLS-Analysis-3"/> <xref target="TLS-Analysis-4"/>
<xref target="TLS-Analysis-5"/> <xref target="TLS-Analysis-6"/>
<xref target="TLS-Analysis-7"/> <xref target="TLS-Analysis-8"/>
<xref target="TLS-Analysis-9"/>

along with two decades of implementation and deployment experience to select a
standard interoperable feature set that provides the best chance of long-term
stability and resistance to attack.  This is intended for use in systems that
need to run in a fixed configuration for a long period of time after they're
deployed, with little or no ability to roll out patches every month or two
when the next attack on TLS is published.

      </t>
      <t>

Unlike the full TLS 1.2, TLS-LTS is not meant to be all things to all people.
It represents a fixed, safe solution that's appropriate for users who require
a simple, secure, and long-term stable means of getting data from A to B. This
represents the majority of the non-browser uses of TLS, particularly for
embedded systems that are most in need of a long-term stable protocol
definition.

      </t>
      <t>

<figure><artwork><![CDATA[
    [Note: There is currently a TLS 1.2 LTS test server running
     at https://82.94.251.205:8443.  This uses the extension
     value 26 until a value is permanently assigned for LTS
     use.  To connect, your implementation should accept
     whatever certificate is presented by the server or use PSK
     with name = "plc", password = "test".  For embedded
     systems testing, note that the server talks HTTP and not
     DNP3 or ICCP, so you'll get an error if you try and connect
     with a PLC control centre that expects one of those
     protocols].
]]></artwork></figure>

      </t>
      <section anchor="mustshouldmay" 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>
    <!-- ====================================================================== -->
    <section anchor="negotiation" title="TLS-LTS Negotiation">
      <t>

The use of TLS-LTS is negotiated via TLS/DTLS extensions as defined in <xref
target="TLS-Ext">TLS Extensions</xref>.  On connecting, the client includes
the tls_lts extension in its client_hello if it wishes to use TLS-LTS.  If the
server is capable of meeting this requirement, it responds with a tls_lts
extension in its server_hello.  The "extension_type" value for this extension
MUST be TBD (0xTBD) and the "extension_data" field of this extension is empty.
The client and server MUST NOT use TLS-LTS unless both sides have successfully
exchanged tls_lts extensions.

      </t>
      <t>

The use of TLS-LTS can potentially change during one or more rehandshakes.
Implementations MUST retain the current TLS-LTS session state across all
rehandshakes for that session.  In other words if TLS-LTS is enabled for the
current session then the renegotiated session MUST also use TLS-LTS.

      </t>
    </section>
    <!-- ====================================================================== -->
    <section anchor="tls-lts" title="TLS-LTS">
        <t>

TLS-LTS specifies a few simple restrictions on the huge range of TLS suites,
options and parameters to limit the protocol to a known-good subset, as well
as making minor corrections to limit various attacks.

        </t>
      <section title="Encryption/Authentication">
        <t>

TLS-LTS restricts the more or less unlimited TLS 1.2 with its more than three
hundred cipher suites, over forty ECC parameter sets, and zoo of supplementary
algorithms, parameters, and parameter formats, to just two, one traditional
one with DHE + AES-CBC + HMAC-SHA-256 + RSA-SHA-256/PSK and one ECC one with
ECDHE-P256 + AES-GCM + HMAC-SHA-256 + ECDSA-P256-SHA-256/PSK with uncompressed
points:

        </t>
        <t><list style="symbols"><t>

TLS-LTS implementations MUST support TLS_DHE_RSA_WITH_AES_128_CBC_SHA256,
TLS_DHE_PSK_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
and TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256.  For these suites, SHA-256 is used
in all locations in the protocol where a hash function is required,
specifically in the PRF and per-packet MAC calculations (as indicated by the
_SHA256 in the suite) and also in the client and server signatures in the
CertificateVerify and ServerKeyExchange messages.

        </t></list></t>

<figure><artwork><![CDATA[
    [Note: There's a gap in the suites with
     TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256 missing, there's
     currently a draft in progress to fill the gap,
     draft-mattsson-tls-ecdhe-psk-aead, which can be used to
     replace the placeholder TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256].
]]></artwork></figure>

        <t>

TLS-LTS only permits encrypt-then-MAC, not MAC-then-encrypt, fixing 20 years
of attacks on this mechanism:

        </t>
        <t><list style="symbols"><t>

TLS-LTS implementations MUST implement
<xref target="EtM">encrypt-then-MAC</xref> rather than the earlier
MAC-then-encrypt.

        </t></list></t>
        <t>

TLS-LTS adds a hash of all messages leading up to the calculation of the
master secret into the master secret to protect against the use of manipulated
handshake parameters:

        </t>
        <t><list style="symbols"><t>

TLS-LTS implementations MUST implement <xref target="EMS">extended master
secret</xref> to protect handshake and crypto parameters.

        </t></list></t>
        <t>

TLS-LTS drops the IPsec cargo-cult MAC truncation in the Finished message,
which serves no obvious purpose and leads to security concerns:

        </t>
        <t><list style="symbols"><t>

The length of verify_data (verify_data_length) in the Finished message MUST be
equal to the length of the output of the hash function used for the PRF.  For
TLS-LTS this is always SHA-256, so the value of verify_data_length is 32
bytes.

        </t></list></t>

<figure><artwork><![CDATA[
    [Note: There has been some debate among implementers as to
     what should happen when a suite with e.g. SHA-512 is
     negotiated.  The LTS mandatory suites all use SHA-256,
     but it's possible negotiate a suite with SHA-512 while
     still using LTS.  Presumably this means the hash size
     will change to 64 bytes rather than 32].
]]></artwork></figure>

        <t>

TLS-LTS signs a hash of the client and server hello messages for the
ServerKeyExchange rather than signing just the client and server nonces,
avoiding various attacks that build on the fact that standard TLS doesn't
authenticate previously-exchanged parameters when the ServerKeyExchange
message is sent:

        </t>
        <t><list style="symbols"><t>

When generating the ServerKeyExchange signature, the signed_params value is
updated to replace the client_random and server_random with a hash of the full
ClientHello and ServerHello.  In other words the value being signed is
changed from:

          <figure><artwork><![CDATA[
digitally-signed struct {
    opaque client_random[32];
    opaque server_random[32];
    ServerDHParams params;
    } signed_params;
          ]]></artwork></figure>

to:

          <figure><artwork><![CDATA[
digitally-signed struct {
    opaque client_server_hello_hash[32];
    ServerDHParams params;
    } signed_params;
          ]]></artwork></figure>

As with the hash used in verify_data in the Finished message, the hash of the
helo messages is always SHA-256, so the length of the client_server_hello_hash
is 32 bytes.

        </t></list></t>
        <t>

The choice of key sizes is something that will never get any consensus because
there are so many different worldviews involved.  TLS-LTS makes only general
recommendations on best practices and leaves the choice of which key sizes are
appropriate to implementers and policy makers:

        </t>
        <t><list style="symbols"><t>

Implementations SHOULD choose public-key algorithm key sizes that are
appropriate for the situation, weighted by the value of the information being
protected, the probability of attack and capabilities of the attacker(s), any
relevant security policies, and the ability of the system running the TLS
implementation to deal with the computational load of large keys.  For example
a SCADA system being used to switch a ventilator on and off doesn't require
anywhere near the keysize-based security of a system used to transfer
classified data.

        </t></list></t>
        <t>

One way to avoid having to use very large public keys is to switch the keys
periodically.  For example for DH keys this can be done by regenerating DH
parameters in a background thread and rolling them over from time to time.  If
this isn't possible, an alternative option is to pre-generate a selection of
DH parameters and choose one set at random for each new handshake, or again
roll them over from time to time from the pre-generated selection, so that an
attacker has to attack n sets of parameters rather than just one.

        </t>
      </section>
      <section title="Message Formats">
        <t>

TLS-LTS sends the full set of DH parameters, X9.42/FIPS 186 style, not p and g
only, PKCS #3 style.  This allows verification of the DH parameters, which the
current format doesn't allow:

        </t>
        <t><list style="symbols"><t>

TLS-LTS implementations MUST send the DH domain parameters as { p, g, q }
rather than { p, g }.  This makes the ServerDHParams field:

          <figure><artwork><![CDATA[
struct {
    opaque dh_p<1..2^16-1>;
    opaque dh_g<1..2^16-1>;
    opaque dh_q<1..2^16-1>;
    opaque dh_Ys<1..2^16-1>;
    } ServerDHParams;     /* Ephemeral DH parameters */
          ]]></artwork></figure>

The domain parameters MUST be verified as specified in <xref
target="FIPS-186">FIPS 186</xref>.

        </t></list></t>
      </section>
      <section title="Miscellaneous">
        <t>

TLS-LTS drops the need to send the current time in the random data, which
serves no obvious purpose and leaks the client/server's time to attackers:

        </t>
        <t><list style="symbols"><t>

TLS-LTS implementations SHOULD NOT include the time in the Client/ServerHello
random data.  The data SHOULD consists entirely of random bytes.

        </t></list></t>
        <t>

TLS-LTS drops compression and rehandshake, which have led to a number of
attacks:

        </t>
        <t><list style="symbols"><t>

TLS-LTS implementations MUST NOT implement compression or rehandshake.

        </t></list></t>
      </section>
      <section title="Implementation Issues">
        <t>

TLS-LTS requires that RSA signature verification be done as
encode-then-compare, which fixes all known padding-manipulation issues:

        </t>
        <t><list style="symbols"><t>

TLS-LTS implementations MUST verify RSA signatures by using
encode-then-compare as described in <xref target="PKCS1">PKCS #1</xref>,
meaning that they encode the expected signature result and perform a
constant-time compare against the recovered signature data.

        </t></list></t>
        <t>

The constant-time compare isn't strictly necessary for security in this case,
but it's generally good hygiene and is explicitly required when comparing
secret data values:

        </t>
        <t><list style="symbols"><t>

All operations on crypto- or security-related values SHOULD be performed in a
manner that's as timing-independent as possible.  For example compares of MAC
values such as those used in the Finished message and data packets SHOULD be
performed using a constant-time memcmp() or equivalent so as not to leak
timing data to an attacker.

        </t></list></t>
        <t>

TLS-LTS recommends that implementations take measures to protect against
side-channel attacks:

        </t>
        <t><list style="symbols"><t>

Implementations SHOULD take steps to protect against timing attacks, for
example by using constant-time implementations of algorithms and by using
blinding for non-randomised algorithms like RSA.

        </t></list></t>
        <t><list style="symbols"><t>

Implementations SHOULD take steps to protect against fault attacks, in
particular for the extremely brittle ECC algorithms whose typical failure mode
if a fault occurs is to leak the private key.  One simple countermeasure is to
use the public key to verify any signatures generated before they are sent
over the wire.

        </t></list></t>
        <t>

The TLS protocol has historically and somewhat arbitrarily been described as a
state machine, which has led to a number of implementation flaws when state
transitions weren't very carefully considered and enforced.  A more logical
means of representing the protocol is as a ladder diagram, which hardcodes the
transitions into the diagram and removes the need to juggle a large amount of
state:

        </t>
        <t><list style="symbols"><t>

Implementations SHOULD consider representing/implementing the protocol as a
ladder diagram rather than a state machine, since the state-diagram form has
led to a number of implementation errors in the past which are avoided through
the use of the ladder diagram form.

        </t></list></t>
        <t>

TLS-LTS mandates the use of cipher suites that provide so-called Perfect
Forward Secrecy (PFS), in which an attacker can't record sessions and decrypt
them at a later date.  The PFS property is however impacted by the TLS session
cache and session tickets, which allow an attacker to decrypt old sessions.
The session cache is relatively short-term and only allows decryption while a
session is held in the cache, but the use of long-term keys in combination
with session tickets means that an attacker can decrypt any session used with
that key, defeating PFS:

        </t>
        <t><list style="symbols"><t>

Implementations SHOULD consider the impact of using session caches and session
tickets on PFS.  Security issues in this area can be mitigated by using short
session cache expiry times, and avoiding session tickets or changing the key
used to encrypt them periodically.

        </t></list></t>
        <t>

TLS-LTS protects its handshake by including cryptographic integrity checks of
preceding messages in subsequent messages, defeating attacks that build on the
ability to manipulate handshake messages to compromise security.  What's
authenticated at various stages is a log of preceding messages in the
exchange.  The simplest way to implement this, if the underlying API supports
it, is to keep a running hash of all messages (which will be required for the
final Finished computation) and peel off a copy of the current hash state to
generate the hash value required at various stages during the handshake.  If
only the traditional { Begin, [ Update, Update, ... ], Final } hash API
interface is available then several parallel chains of hashing will need to be
run in order to terminate the hashing at different points during the
handshake.

        </t>
      </section>
      <section title="Use of TLS Extensions">
        <t>

TLS-LTS is inspired by Grigg's Law that "there is only one mode and that is
secure".  Because it mandates the use of known-good mechanisms, much of the
signalling and negotiation that's required in standard TLS to reach the same
state becomes redundant.  In particular, TLS-LTS removes the need to use the
following extensions:

        </t>
        <t><list style="symbols"><t>

The signature_algorithms extension, since the use of SHA-256 with RSA or ECDSA
is implicit in TLS-LTS.

        </t></list></t>
        <t><list style="symbols"><t>

The elliptic_curves and ec_point_formats extensions, since the use of P256
with uncompressed points is implicit in TLS-LTS.

        </t></list></t>
        <t><list style="symbols"><t>

The universally-ignored requirement that all certificates provided by the
server must be signed by the algorithm(s) specified in the
signature_algorithms extension is removed both implicitly by not sending the
extension and explicitly by removing this requirement.

        </t></list></t>
        <t><list style="symbols"><t>

The encrypt_then_mac extension, since the use of encrypt-then-MAC is implicit
in TLS-LTS.

        </t></list></t>
        <t><list style="symbols"><t>

The extended_master_secret extension, since the use of extended Master Secret
is implicit in TLS-LTS.

        </t></list></t>
        <t>

TLS-LTS implementations that wish to communicate only with other TLS-LTS
implementations MAY omit these extensions.  Implementations that wish to
communicate with legacy implementations and wish to use the capabilities
described by the extensions MUST include these extensions.

        </t>
        <t>

Conversely, although encrypt_then_mac and extended_master_secret are implied
by TLS-LTS, a client requesting TLS-LTS but not encrypt_then_mac and/or
extended_master_secret in its Client Hello doesn't expect to see either of
these indicators returned in the Server Hello.  TLS-LTS servers MUST NOT
return encrypt_then_mac and/or extended_master_secret indicators to the client
unless this has been explicitly requested by the client.

        </t>
        <t>

Note that TLS-LTS capabilities are indicated by the presence of the tls_lts
extension, not the plethora of other extensions that it's comprised of.  This
allows an implementation that needs to be backwards-compatible with legacy
implementations to specify individual options for use with non-TLS-LTS
implementations via a range of extensions, and specify the use of TLS-LTS via
the tls_lts extension.

        </t>
      </section>
      <section title="Downgrade Attack Prevention">
        <t>

The use of the TLS-LTS improvements relies on an attacker not being able to
delete the TLS-LTS extension from the Client/Server Hello messages.  This is
achieved through the <xref target="SCSV">SCSV</xref> signalling mechanism.

[If SCSV is used then insert required boilerplate here, however this will also
require banning weak cipher suites like export ones, which is a bit
interesting in that it'll required banning something that in theory has
already been extinct for 15 years.  A better option is to refer to a currently
work-in-progress draft on anti-downgrade signalling, which is a more reliable
mechanism than SCSV].

        </t>
      </section>
      <section anchor="tls-lts_rationale" title="Rationale">
        <t>

A question that may be asked at this point is, why not use TLS 1.3 instead of
creating a secure update of TLS 1.2?  The reason is that TLS 1.3 rolls back
the 20 years of experience that we have with all the things that can go wrong
in TLS and starts again from scratch with an almost entirely new protocol
based on bleeding-edge/experimental ideas, mechanisms, and algorithms.  When
SSLv3 was introduced, it used ideas that were 10-20 years old (DH, RSA, DES,
and so on were all long-established algorithms, only SHA-1 was relatively
new). These were mature algorithms with large amounts of of research published
on them, and yet we're still fixing issues with them 20 years later (the DH
algorithm was published in 1976, SSLv3 dates from 1996, and the latest DH
issue, Logjam, dates from 2015).

        </t>
        <t>

With TLS 1.3 we currently have zero implementation and deployment experience,
which means that we're likely to have another 10-20 years of patching holes
and fixing protocol and implementation problems ahead of us.  It's for this
reason that this specification uses the decades of experience we have with SSL
and TLS to simplify TLS 1.2 into a known-good subset that leverages about 15
years of analysis and 20 years of implementation experience, rather than
betting on what's almost an entirely new protocol based on bleeding-
edge/experimental ideas, mechanisms, and algorithms.  The intent is to create
a long-term stable protocol specification that can be deployed once, not
deployed and then patched, updated, and fixed constantly for the lifetime of
the equipment that it's used with.

        </t>
      </section>
    </section>
    <!-- ====================================================================== -->
    <section anchor="security" title="Security Considerations">
      <t>

This document defines a minimal, known-good subset of TLS 1.2 that attempts to
address all known weaknesses in the protocol, mostly by simply removing
known-insecure mechanisms but also by updating the ones that remain to take
advantage of many years of security research and implementation experience.

      </t>
    </section>
    <!-- ====================================================================== -->
    <section anchor="iana" title="IANA Considerations">
      <t>

IANA has added the extension code point TBD (0xTBD) for the tls_lts extension
to the TLS ExtensionType values registry as specified in
<xref target="TLS">TLS</xref>.

      </t>
    </section>
    <!-- ====================================================================== -->
    <section anchor="ack" title="Acknowledgements">
      <t>

The author would like to thank the members of the TLS mailing list for their
feedback on this document.

      </t>
    </section>
    <!-- ====================================================================== -->

  </middle>
  <!-- ======================================================================== -->
  <back>

    <references title="Normative References">

      <reference anchor='RFC2119'>
        <front>
          <title abbrev='RFC Key Words'>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials='S.' surname='Bradner' fullname='Scott Bradner'>
            <organization>Harvard University</organization>
          </author>
          <date year='1997' month='March' />
          <area>General</area>
          <keyword>keyword</keyword>
        </front>
        <seriesInfo name='BCP' value='14' />
        <seriesInfo name='RFC' value='2119' />
        <format type='TXT' target='ftp://ftp.isi.edu/in-notes/rfc2119.txt' />
        <format type='HTML' target='http://xml.resource.org/public/rfc/html/rfc2119.html' />
        <format type='XML' target='http://xml.resource.org/public/rfc/xml/rfc2119.xml' />
      </reference>

      <reference anchor='TLS'>
        <front>
          <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
          <author fullname="Tim Dierks" initials="T" surname="Dierks">
            <organization>Independent</organization>
          </author>
          <author fullname="Eric Rescorla" initials="E" surname="Rescorla">
            <organization>RTFM, Inc.</organization>
          </author>
          <date year='2008' month='August' />
        </front>
        <seriesInfo name='RFC' value='5246' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc5246.txt' />
      </reference>

      <reference anchor='TLS-Ext'>
        <front>
          <title>Transport Layer Security (TLS) Extensions</title>
          <author fullname="Donald Eastlake 3rd" initials="D" surname="Eastlake 3rd">
            <organization>Huawei</organization>
          </author>
          <date year='2011' month='January' />
        </front>
        <seriesInfo name='RFC' value='6066' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc6066.txt' />
      </reference>

      <reference anchor='DTLS'>
        <front>
          <title>Datagram Transport Layer Security Version 1.2</title>
          <author fullname="Eric Rescorla" initials="E" surname="Rescorla">
            <organization>RTFM, Inc.</organization>
          </author>
          <author fullname="Nagendra Modadugu" initials="N" surname="Modadugu">
            <organization>Stanford University</organization>
          </author>
          <date year='2012' month='January' />
        </front>
        <seriesInfo name='RFC' value='6347' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc6347.txt' />
      </reference>

      <reference anchor='EtM'>
        <front>
          <title>Encrypt-then-MAC for Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
          <author fullname="Peter Gutmann" initials="P" surname="Gutmann">
            <organization>University of Auckland</organization>
          </author>
          <date year='2014' month='September' />
        </front>
        <seriesInfo name='RFC' value='7366' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc7366.txt' />
      </reference>

      <reference anchor='SCSV'>
        <front>
          <title>TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks</title>
          <author fullname="Bodo Moeller" initials="B" surname="Moeller">
            <organization>Google Switzerland Gmbh</organization>
          </author>
          <author fullname="Adam Langley" initials="A" surname="Langley">
            <organization>Google Inc.</organization>
          </author>
          <date year='2015' month='April' />
        </front>
        <seriesInfo name='RFC' value='7507' />
      </reference>

      <reference anchor='EMS'>
        <front>
          <title>Transport Layer Security (TLS) Session Hash and Extended Master Secret Extension</title>
          <author fullname="Karthikeyan Bhargavan" initials="K" surname="Bhargavan">
            <organization>Inria Paris-Rocquencourt</organization>
          </author>
          <author fullname="Antoine Delignat-Lavaud" initials="A" surname="Delignat-Lavaud">
            <organization>Inria Paris-Rocquencourt</organization>
          </author>
          <author fullname="Alfredo Pironti" initials="A" surname="Pironti">
            <organization>Inria Paris-Rocquencourt</organization>
          </author>
          <author fullname="Adam Langley" initials="A" surname="Langley">
            <organization>Google Inc.</organization>
          </author>
          <author fullname="Marsh Ray" initials="M" surname="Ray">
            <organization>Microsoft Corp.</organization>
          </author>
          <date year='2015' month='September' />
        </front>
        <seriesInfo name='RFC' value='7627' />
        <format type='TXT' target='http://www.ietf.org/rfc/rfc7627.txt' />
      </reference>

      <reference anchor='FIPS-186'>
        <front>
          <title>Digital Signature Standard (DSS)</title>
          <author fullname="NIST"></author>
          <date year='2013' month='July' />
        </front>
        <seriesInfo name='FIPS' value='186' />
      </reference>

      <reference anchor='PKCS1'>
        <front>
          <title>Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1</title>
          <author fullname="Jakob Jonsson" initials="J" surname="Jonsson">
            <organization>Philipps-Universitaet Marburg</organization>
          </author>
          <author fullname="Burt Kaliski" initials="B" surname="Kaliski">
            <organization>RSA Laboratories</organization>
          </author>
          <date year='2003' month='February' />
        </front>
        <seriesInfo name='RFC' value='3447' />
      </reference>

    </references>
    <references title="Informative References">

      <reference anchor='TLS-Analysis-1'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>Proving the TLS handshake secure (as is)</title>
          <author fullname="Karthikeyan Bhargavan" initials="K" surname="Bhargavan"></author>
          <author fullname="Cedric Fournet" initials="C" surname="Fournet"></author>
          <author fullname="Markulf Kohlweiss" initials="M" surname="Kohlweiss"></author>
          <author fullname="Alfredo Pironti" initials="A" surname="Pironti"></author>
          <author fullname="Pierre-Yves Strub" initials="P" surname="Strub"></author>
          <author fullname="Santiago Zanella-Beguelin" initials="S" surname="Zanella-Beguelin"></author>
          <date year='2014' month='August' />
<!--      <note>Proceedings of Crypto'14, Springer-Verlag LNCS No.8617, p.235</note> -->
        </front>
        <seriesInfo name='Springer-Verlag LNCS' value='8617' />
      </reference>

      <reference anchor='TLS-Analysis-2'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>Less is more: relaxed yet compatible security notions for key exchange</title>
          <author fullname="C. Brzuska" initials="C" surname="Brzuska"></author>
          <author fullname="M. Fischlin" initials="M" surname="Fischlin"></author>
          <author fullname="N.P. Smart" initials="N" surname="Smart"></author>
          <author fullname="B. Warinschi" initials="B" surname="Warinschi"></author>
          <author fullname="S.C. Williams" initials="S" surname="Williams"></author>
          <date year='2012' month='April' />
<!--      <note>IACR ePrint archive, Report 2012/242</note> -->
        </front>
        <seriesInfo name='IACR ePrint archive' value='2012/242' />
      </reference>

      <reference anchor='TLS-Analysis-3'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>Modelling ciphersuite and version negotiation in the TLS protocol</title>
          <author fullname="Benjamin Dowling" initials="B" surname="Dowling"></author>
          <author fullname="Douglas Stebila" initials="D" surname="Stebila"></author>
          <date year='2015' month='June' />
<!--      <note>Proceedings of ACISP'15, Springer-Verlag LNCS No.9144, p.270</note> -->
        </front>
        <seriesInfo name='Springer-Verlag LNCS' value='9144' />
      </reference>

      <reference anchor='TLS-Analysis-4'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>Analysis of the Transport Layer Security protocol</title>
          <author fullname="Tia Helene Firing" initials="T" surname="Firing"></author>
          <date year='2010' month='June' />
<!--      <note>Norwegian University of Science and Technology MSc Thesis</note> -->
        </front>
      </reference>

      <reference anchor='TLS-Analysis-5'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>Universally Composable Security Analysis of TLS</title>
          <author fullname="Sebastian Gajek" initials="S" surname="Gajek"></author>
          <author fullname="Mark Manulis" initials="M" surname="Manulis"></author>
          <author fullname="Olivier Pereira" initials="O" surname="Pereira"></author>
          <author fullname="Ahmad-Reza Sadeghi" initials="A" surname="Sadeghi"></author>
          <author fullname="Joerg Schwenk" initials="J" surname="Schwenk"></author>
          <date year='2008' month='November' />
<!--      <note>Proceedings of ProvSec'08, Springer-Verlag LNCS No.5324, p.313</note> -->
        </front>
        <seriesInfo name='Springer-Verlag LNCS' value='5324' />
      </reference>

      <reference anchor='TLS-Analysis-6'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>On the security of TLS-DHE in the standard model</title>
          <author fullname="Tibor Jager" initials="T" surname="Jager"></author>
          <author fullname="Florian Kohlar" initials="F" surname="Kohlar"></author>
          <author fullname="Sven Schaege" initials="S" surname="Schaege"></author>
          <author fullname="Joerg Schwenk" initials="J" surname="Schwenk"></author>
          <date year='2012' month='August' />
<!--      <note>Proceedings of Crypto'12, Springer-Verlag LNCS No.7417, p.273</note> -->
        </front>
        <seriesInfo name='Springer-Verlag LNCS' value='7417' />
      </reference>

      <reference anchor='TLS-Analysis-7'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>On the security of TLS renegotiation</title>
          <author fullname="Florian Giesen" initials="F" surname="Giesen"></author>
          <author fullname="Florian Kohlar" initials="F" surname="Kohlar"></author>
          <author fullname="Douglas Stebila" initials="D" surname="Stebila"></author>
          <date year='2013' month='November' />
<!--      <note>Proceedings of CCS'13, p.387</note> -->
        </front>
        <seriesInfo name='ACM CCS' value='2013' />
      </reference>

      <reference anchor='TLS-Analysis-8'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>Lessons Learned From Previous SSL/TLS Attacks - A Brief Chronology Of Attacks And Weaknesses</title>
          <author fullname="Christopher Meyer" initials="C" surname="Meyer"></author>
          <author fullname="Joerg Schwenk" initials="J" surname="Schwenk"></author>
          <date year='2013' month='January' />
<!--      <note>IACR ePrint Archiv, Report 2013/049</note> -->
        </front>
        <seriesInfo name='Cryptology ePrint Archive' value='2013/049' />
      </reference>

      <reference anchor='TLS-Analysis-9'>
        <!-- No-one seems to know how to reference publications like
             conference proceedings in RFC-XML, this is one attempt... -->
        <front>
          <title>On the security of the TLS protocol</title>
          <author fullname="Hugo Krawczyk" initials="H" surname="Krawczyk"></author>
          <author fullname="Kenneth Paterson" initials="K" surname="Paterson"></author>
          <author fullname="Hoeteck Wee" initials="H" surname="Wee"></author>
          <date year='2013' month='August' />
<!--      <note>Proceedings of Crypto'13, Springer-Verlag LNCS No.8042, p.429</note> -->
        </front>
        <seriesInfo name='Springer-Verlag LNCS' value='8042' />
      </reference>

    </references>
    <!-- ====================================================================== -->
  </back>
</rfc>
