<?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" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-tls-keylogfile-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="SSLKEYLOGFILE">The SSLKEYLOGFILE Format for TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-tls-keylogfile-01"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2023" month="July" day="28"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>network transparency</keyword>
    <keyword>tls</keyword>
    <keyword>blockchain</keyword>
    <abstract>
      <?line 37?>

<t>A format that supports the logging information about the secrets used in a TLS
connection is described.  Recording secrets to a file in SSLKEYLOGFILE format
allows diagnostic and logging tools that use this file to decrypt messages
exchanged by TLS endpoints.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://martinthomson.github.io/sslkeylogfile/draft-thomson-tls-keylogfile.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-thomson-tls-keylogfile/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Layer Security Working Group mailing list (<eref target="mailto:tls@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tls/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tls/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinthomson/sslkeylogfile"/>.</t>
    </note>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Debugging or analyzing protocols can be challenging when TLS <xref target="TLS13"/> is used
to protect the content of communications.  Inspecting the content of encrypted
messages in diagnostic tools can enable more thorough analysis.</t>
      <t>Over time, multiple TLS implementations have informally adopted a file format
that logging the secret values generated by the TLS key schedule.  In many
implementations, the file that the secrets are logged to is specified in an
environment variable named "SSLKEYLOGFILE", hence the name of SSLKEYLOGFILE
format.  Note the use of "SSL" as this convention originally predates the
adoption of TLS as the name of the protocol.</t>
      <t>This document describes the SSLKEYLOGFILE format.  This format can be used for
TLS 1.2 <xref target="TLS12"/> and TLS 1.3 <xref target="TLS13"/>.  The format also
supports earlier TLS versions, though use of earlier versions is forbidden
<xref target="RFC8996"/>.  This format can also be used with DTLS <xref target="DTLS13"/>, QUIC
<xref target="RFC9000"/><xref target="RFC9001"/>, and protocols that also use the TLS key schedule.  Use
of this format could complement other protocol-specific logging such as QLOG
<xref target="QLOG"/>.</t>
      <section anchor="applicability-statement">
        <name>Applicability Statement</name>
        <t>The artifact that this document describes - if made available to entities other
than endpoints - completely undermines the core guarantees that TLS provides.
This format is intended for use in systems where TLS only protects test data.
While the access that this information provides to TLS connections can be useful
for diagnosing problems while developing systems, this mechanism <bcp14>MUST NOT</bcp14> be
used in a production system.</t>
      </section>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
        <?line -18?>

</section>
    </section>
    <section anchor="the-sslkeylogfile-format">
      <name>The SSLKEYLOGFILE Format</name>
      <t>A file in SSLKEYLOGFILE format is a text file.  This document specifies the
character encoding as UTF-8 <xref target="RFC3629"/>.  Though the format itself only
includes ASCII characters <xref target="RFC0020"/>, comments <bcp14>MAY</bcp14> contain other characters.
Though Unicode is permitted in comments, the file <bcp14>MUST NOT</bcp14> contain a unicode
byte order mark (U+FEFF).</t>
      <t>Lines are terminated using the line ending convention of the platform on which
the file is generated.  Tools that process these files <bcp14>MUST</bcp14> accept CRLF (U+13
followed by U+10), CR (U+13), or LF (U+10) as a line terminator.  Lines are
ignored if they are empty or if the first character is an octothorp character
('#', U+23).  Other lines of the file each contain a single secret.</t>
      <t>Each secret is described using a single line composed of three values that are
separated by a single space character (U+20).  These values are:</t>
      <dl>
        <dt>label:</dt>
        <dd>
          <t>The label identifies the type of secret that is being conveyed; see <xref target="labels"/>
for a description of the labels that are defined in this document.</t>
        </dd>
        <dt>client_random:</dt>
        <dd>
          <t>The 32 byte value of the Random field from the ClientHello message that
established the TLS connection.  This value is encoded as 64 hexadecimal
characters.  Including this field allows a single file to include secrets from
multiple connections and for the secrets to be applied to the correct
connection, though this depends on being able to match records to the correct
ClientHello message.</t>
        </dd>
        <dt>secret:</dt>
        <dd>
          <t>The value of the identified secret for the identified connection.  This value
is encoded in hexadecimal, with a length that depends on the size of the
secret.</t>
        </dd>
      </dl>
      <t>For the hexadecimal values of the <tt>client_random</tt> or <tt>secret</tt>, no convention
exists for the case of characters 'a' through 'f' (or 'A' through 'F').  Files
can be generated with either, so either form <bcp14>MUST</bcp14> be accepted when processing a
file.</t>
      <t>Diagnostic tools that accept files in this format might choose to ignore lines
that do not conform to this format in the interest of ensuring that secrets can
be obtained from corrupted files.</t>
      <section anchor="labels">
        <name>Secret Labels for TLS 1.3</name>
        <t>An implementation of TLS 1.3 produces a number of values as part of the key
schedule (see <xref section="7.1" sectionFormat="of" target="TLS13"/>).  Each of the following labels
correspond to the equivalent secret produced by the key schedule:</t>
        <dl newline="true">
          <dt>CLIENT_EARLY_TRAFFIC_SECRET:</dt>
          <dd>
            <t>This secret is used to protect records sent by the client as early data, if
early data is attempted by the client.  Note that a server that rejects early
data will not log this secret, though a client that attempts early data can do
so unconditionally.</t>
          </dd>
          <dt>EARLY_EXPORTER_MASTER_SECRET:</dt>
          <dd>
            <t>This secret is used for early exporters.  Like the
CLIENT_EARLY_TRAFFIC_SECRET, this is only generated when early data is
attempted and might not be logged by a server if early data is rejected.</t>
          </dd>
          <dt>CLIENT_HANDSHAKE_TRAFFIC_SECRET:</dt>
          <dd>
            <t>This secret is used to protect handshake records sent by the client.</t>
          </dd>
          <dt>SERVER_HANDSHAKE_TRAFFIC_SECRET:</dt>
          <dd>
            <t>This secret is used to protect handshake records sent by the server.</t>
          </dd>
          <dt>CLIENT_TRAFFIC_SECRET_0:</dt>
          <dd>
            <t>This secret is used to protect application_data records sent by the client
immediately after the handshake completes.  This secret is identified as
<tt>client_application_traffic_secret_0</tt> in the TLS 1.3 key schedule.</t>
          </dd>
          <dt>SERVER_TRAFFIC_SECRET_0:</dt>
          <dd>
            <t>This secret is used to protect application_data records sent by the server
immediately after the handshake completes.  This secret is identified as
<tt>server_application_traffic_secret_0</tt> in the TLS 1.3 key schedule.</t>
          </dd>
          <dt>EXPORTER_SECRET:</dt>
          <dd>
            <t>This secret is used in generating exporters <xref section="7.5" sectionFormat="of" target="TLS13"/>.</t>
          </dd>
        </dl>
        <t>Each of the preceding labels are identified using the lowercase form of the
label in <xref target="TLS13"/>, except as noted.  Note that the order that labels appear
here corresponds to the order in which they are presented in <xref target="TLS13"/>, but
there is no guarantee that implementations will log secrets strictly in this
order.</t>
        <t>Key updates (<xref section="7.2" sectionFormat="of" target="TLS13"/>) result in new secrets being generated
for protecting <tt>application_data</tt> records.  The label used for these secrets
comprises a base label of "CLIENT_TRAFFIC_SECRET_" for a client or
"SERVER_TRAFFIC_SECRET_" for a server, plus the decimal value of a counter.
This counter identifies the number of key updates that occurred to produce this
secret.  This counter starts at 0, which produces the first application data
traffic secret, as above.</t>
      </section>
      <section anchor="secret-labels-for-tls-12">
        <name>Secret Labels for TLS 1.2</name>
        <t>An implementation of TLS 1.2 <xref target="TLS12"/> (and also earlier versions) use the
label "CLIENT_RANDOM" to identify the "master" secret for the connection.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Access to the content of a file in SSLKEYLOGFILE format allows an attacker to
break the confidentiality protection on any TLS connections that are included in
the file.  This includes both active connections and connections for which
encrypted records were previously stored.  Ensuring adequate access control on
these files therefore becomes very important.</t>
      <t>Implementations that support logging this data need to ensure that logging can
only be enabled by those who are authorized.  Allowing logging to be initiated
by any entity that is not otherwise authorized to observe or modify the content
of connections for which secrets are logged could represent a privilege
escalation attack.  Implementations that enable logging also need to ensure that
access to logged secrets is limited, using appropriate file permissions or
equivalent access control mechanisms.</t>
      <t>In order to support decryption, the secrets necessary to remove record
protection are logged.  However, as the keys that can be derived from these
secrets are symmetric, an adversary with access to these secrets is also able to
encrypt data for an active connection.  This might allow for injection or
modification of application data on a connection that would otherwise be
protected by TLS.</t>
      <t>As some protocols that depend on TLS generate encryption keys, the SSLKEYLOGFILE
format includes keys that identify the secret used in TLS exporters or early
exporters (<xref section="7.5" sectionFormat="of" target="TLS13"/>.  Knowledge of these secrets can enable
more than inspection or modification of encrypted data, depending on how an
application protocol uses exporters.  For instance, exporters might be used for
session bindings (e.g., <xref target="RFC8471"/>), authentication (e.g., <xref target="RFC9261"/>), or
other derived secrets that are used in application context.  An adversary that
obtains these secrets might be able to use this information to attack these
applications.  A TLS implementation might either choose to omit these secrets in
contexts where the information might be abused or to require separate
authorization to enable logging of exporter secrets.</t>
      <t>Logging the TLS 1.2 "master" secret provides the recipient of a file in
SSLKEYLOGFILE far greater access to an active connection.  This can include the
ability to resume the connection and impersonate either endpoint, insert records
that result in renegotiation, or even forge Finished messages.  Implementations
might avoid these risks by not logging this secret value.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>The "<tt>application/sslkeylogfile</tt>" media type can be used to describe content in
the SSLKEYLOGFILE format.  IANA [has added/is requested to add] the following
information to the "Media Types" registry at
<eref target="https://www.iana.org/assignments/media-types">https://www.iana.org/assignments/media-types</eref>:</t>
      <dl spacing="compact">
        <dt>Type name:</dt>
        <dd>
          <t>application</t>
        </dd>
        <dt>Subtype name:</dt>
        <dd>
          <t>sslkeylogfile</t>
        </dd>
        <dt>Required parameters:</dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>Optional parameters:</dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>Encoding considerations:</dt>
        <dd>
          <t>8bit (Unicode without BOM or ASCII only)</t>
        </dd>
        <dt>Security considerations:</dt>
        <dd>
          <t>See <xref target="security"/>.</t>
        </dd>
        <dt>Interoperability considerations:</dt>
        <dd>
          <t>Line endings might differ from platform convention</t>
        </dd>
        <dt>Published specification:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Applications that use this media type:</dt>
        <dd>
          <t>Diagnostic and analysis tools that need to decrypt data that is otherwise
protected by TLS.</t>
        </dd>
        <dt>Fragment identifier considerations:</dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>Additional information:</dt>
        <dd>
          <dl spacing="compact">
            <dt>Deprecated alias names for this type:</dt>
            <dd>N/A</dd>
            <dt>Magic number(s):</dt>
            <dd>N/A</dd>
            <dt>File extension(s):</dt>
            <dd>N/A</dd>
            <dt>Macintosh file type code(s):</dt>
            <dd>N/A</dd>
          </dl>
        </dd>
        <dt>Person &amp; email address to contact for further information:</dt>
        <dd>
          <t>See the Authors' Addresses section.</t>
        </dd>
        <dt>Intended usage:</dt>
        <dd>
          <t>COMMON</t>
        </dd>
        <dt>Restrictions on usage:</dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>Author:</dt>
        <dd>
          <t>See the Authors' Addresses section.</t>
        </dd>
        <dt>Change controller:</dt>
        <dd>
          <t>IESG</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="TLS13">
          <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>
        <reference anchor="TLS12">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <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="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="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8996">
          <front>
            <title>Deprecating TLS 1.0 and TLS 1.1</title>
            <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <date month="March" year="2021"/>
            <abstract>
              <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
              <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
              <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="8996"/>
          <seriesInfo name="DOI" value="10.17487/RFC8996"/>
        </reference>
        <reference anchor="DTLS13">
          <front>
            <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="April" year="2022"/>
            <abstract>
              <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
              <t>This document obsoletes RFC 6347.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9147"/>
          <seriesInfo name="DOI" value="10.17487/RFC9147"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9001">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="QLOG">
          <front>
            <title>Main logging schema for qlog</title>
            <author fullname="Robin Marx" initials="R." surname="Marx">
              <organization>Akamai</organization>
            </author>
            <author fullname="Luca Niccolini" initials="L." surname="Niccolini">
              <organization>Meta</organization>
            </author>
            <author fullname="Marten Seemann" initials="M." surname="Seemann">
              <organization>Protocol Labs</organization>
            </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="10" month="July" year="2023"/>
            <abstract>
              <t>   This document defines qlog, an extensible high-level schema for a
   standardized logging format.  It allows easy sharing of data,
   benefitting common debug and analysis methods and tooling.  The high-
   level schema is independent of protocol; separate documents extend
   qlog for protocol-specific data.  The schema is also independent of
   serialization format, allowing logs to be represented in many ways
   such as JSON, CSV, or protobuf.

Note to Readers

      Note to RFC editor: Please remove this section before publication.

   Feedback and discussion are welcome at https://github.com/quicwg/qlog
   (https://github.com/quicwg/qlog).  Readers are advised to refer to
   the "editor's draft" at that URL for an up-to-date version of this
   document.

   Concrete examples of integrations of this schema in various
   programming languages can be found at https://github.com/quiclog/
   qlog/ (https://github.com/quiclog/qlog/).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qlog-main-schema-06"/>
        </reference>
        <reference anchor="RFC0020">
          <front>
            <title>ASCII format for network interchange</title>
            <author fullname="V.G. Cerf" initials="V.G." surname="Cerf"/>
            <date month="October" year="1969"/>
          </front>
          <seriesInfo name="STD" value="80"/>
          <seriesInfo name="RFC" value="20"/>
          <seriesInfo name="DOI" value="10.17487/RFC0020"/>
        </reference>
        <reference anchor="RFC8471">
          <front>
            <title>The Token Binding Protocol Version 1.0</title>
            <author fullname="A. Popov" initials="A." role="editor" surname="Popov"/>
            <author fullname="M. Nystroem" initials="M." surname="Nystroem"/>
            <author fullname="D. Balfanz" initials="D." surname="Balfanz"/>
            <author fullname="J. Hodges" initials="J." surname="Hodges"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document specifies version 1.0 of the Token Binding protocol. The Token Binding protocol allows client/server applications to create long-lived, uniquely identifiable TLS bindings spanning multiple TLS sessions and connections. Applications are then enabled to cryptographically bind security tokens to the TLS layer, preventing token export and replay attacks. To protect privacy, the Token Binding identifiers are only conveyed over TLS and can be reset by the user at any time.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8471"/>
          <seriesInfo name="DOI" value="10.17487/RFC8471"/>
        </reference>
        <reference anchor="RFC9261">
          <front>
            <title>Exported Authenticators in TLS</title>
            <author fullname="N. Sullivan" initials="N." surname="Sullivan"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document describes a mechanism that builds on Transport Layer Security (TLS) or Datagram Transport Layer Security (DTLS) and enables peers to provide proof of ownership of an identity, such as an X.509 certificate. This proof can be exported by one peer, transmitted out of band to the other peer, and verified by the receiving peer.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9261"/>
          <seriesInfo name="DOI" value="10.17487/RFC9261"/>
        </reference>
      </references>
    </references>
    <?line 335?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The SSLKEYLOGFILE format originated in the NSS project, but it has evolved over
time as TLS has changed.  Many people contributed to this evolution.  The author
is only documenting the format as it is used.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Va63LbOJb+j6fAKFWbZFbyLZnuxJukR+NLx9W+9NjOznbN
TiUUCUkYU4SaIO2ou/wu+yz7ZPudcwCQkp301O7OH5sicTnX71yA0WikGtuU
Zl8PrudGX12d/nD00+nF98cnp0f62NWLrNFTV+vr06uByiaT2txi6Nqwgcqz
xsxcvdrXtpo6pQqXV9kCaxZ1Nm1GzdwtvKtGTelHN2ZVutnUlma0s6t8O1lY
762rmtUS40+Oro9V1S4mpt5XBVbdV7mrvKl86/d1U7dGYfsXKqtNRmSYvK1t
sxqoO1ffzGrXLomPOqv80tWNPs1WptbdKGyOgcW+0iNdmYYmYVEajQWrfEXv
QST9m5Quv8nnma3UralaEKL1b2+gtfAx+AuWttVMf09T6P0isyXeY/U/WtNM
t1w9o9dZnc/xet40S7+/vU2j6JW9NVtx2Da92J7U7s6bbczfpnkz28zbCWYu
srqxVZDwtvdlJ2AaV0KGvlnboTd+S5bZsm595vbX9LY1bxblQKmsxfeaZIl9
tJ62ZSlKP+Mt9LXM5o9gI6vsL1kDTWOA+8WWZcZfjAhm0fyxdHemamq3XG1B
N0pVbHyQxL5SZFbdLzUajXQ28VBdjoFjLR91M8cf3y5JNR6/jAbJM1JDmu8q
THRtw1+9yWuDka03BYbojKycDK4yOQ+1XhfG57WdmGJL60uTw3povTizcZhE
QqHp674jG6qsBF9YxmazyvnG5jqrikRX41zphW4QgQfsyMth4QJ7rJaNXhjv
s5nxynyGPVYz0DpZEaXaVMXSQZl+K8hkYYuiNEo90SckyaJlNpQ6NJNWNoQn
Z1VWrn6hH8vaNS4nCvKs0hOjsX5ZmopH3s1Nxbv8+ut3+Lf74v6e5EGyUqCO
5kJKLEdIrIHqtJvicbFoK5uzqD1kdgJPIWkSs+tD4XDEH5aLHJIQe4IS4RBp
psomEMrC1SQjB5+azYUPb4n5i1t4YWMXZqgXbdnYJQYT6XaBpwX2E3L0PLs1
0RbKcqWzwhEBUYdBZayOpKFkJ/o2K1sQOTOVqbNG1ECfaSe4h/b53BQtHIS4
hsNXK7VBwJDHi4Ln2boRAoF4U6wL8ULSJDc7tcE0K2WqW1u7ilYDKbVlkZDH
FZt4PNTQXW54eRpA0l4boYRTEHoOLfI4Mj8Mo5UGOvNiitAWwI9dwdUW8mCp
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

-->

</rfc>
