<?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.17 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-tls-keylogfile-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.1 -->
  <front>
    <title abbrev="SSLKEYLOGFILE">The SSLKEYLOGFILE Format for TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-tls-keylogfile-00"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2022" month="October" day="24"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>network transparency</keyword>
    <keyword>tls</keyword>
    <keyword>blockchain</keyword>
    <abstract>
      <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>
    <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 strongly
discouraged <xref target="RFC8996"/>.  This format can also be used with the corresponding
DTLS version <xref target="DTLS13"/> and QUIC <xref target="RFC9000"/><xref target="RFC9001"/>, which use
the TLS key schedule.</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>
    </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.  Lines are ignored if they are empty or if the first
character with 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 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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Farrell" initials="S." surname="Farrell">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization/>
            </author>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner">
              <organization/>
            </author>
            <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="RFC0020">
          <front>
            <title>ASCII format for network interchange</title>
            <author fullname="V.G. Cerf" initials="V.G." surname="Cerf">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="M. Nystroem" initials="M." surname="Nystroem">
              <organization/>
            </author>
            <author fullname="D. Balfanz" initials="D." surname="Balfanz">
              <organization/>
            </author>
            <author fullname="J. Hodges" initials="J." surname="Hodges">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <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>
    <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:
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
UrF3HsMypuH4YZMnMUIvcFv9A1VoiLntKwAA

-->

</rfc>
