<?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.7.23 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-tls-keylogfile-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.26.0 -->
  <front>
    <title abbrev="SSLKEYLOGFILE">The SSLKEYLOGFILE Format for TLS</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-tls-keylogfile-03"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <author fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <date year="2025" month="February" day="04"/>
    <area>Security</area>
    <workgroup>Transport Layer Security</workgroup>
    <keyword>network transparency</keyword>
    <keyword>tls</keyword>
    <keyword>blockchain</keyword>
    <abstract>
      <?line 46?>

<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://tlswg.github.io/sslkeylogfile/draft-ietf-tls-keylogfile.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-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/tlswg/sslkeylogfile"/>.</t>
    </note>
  </front>
  <middle>
    <?line 54?>

<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"/><xref target="RFC9325"/>.  This format can also be used with DTLS <xref target="DTLS13"/>, QUIC
<xref target="RFC9000"/><xref target="RFC9001"/>, and other 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>
      <t>This document also defines labels that can be used to log information
about exchanges that use Encrypted Client Hello (ECH) <xref target="ECH"/>.</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>Implementations that record secrets to a file do so continuously as those
secrets are generated.</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>
      <t>Logged secret values are not annotated with the cipher suite or other connection
parameters.  A record of the TLS handshake might therefore be needed to use the
logged secrets.</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"/>). If ECH was successfully negotiated for a
given connection, these labels <bcp14>MUST</bcp14> be followed by the Random from the Inner ClientHello.
Otherwise, the Random from the Outer ClientHello <bcp14>MUST</bcp14> be used.</t>
        <t>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>These labels all appear in uppercase in the key log, but they correspond to
lowercase labels in the TLS key schedule (<xref section="7.1" sectionFormat="of" target="TLS13"/>), except for
the application data secrets as noted.  For example, "EXPORTER_SECRET" in the
log file corresponds to the secret named <tt>exporter_secret</tt>.</t>
        <t>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>
      </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 anchor="secret-labels-for-ech">
        <name>Secret Labels for ECH</name>
        <t>With ECH <xref target="ECH"/>, additional secrets are derived
during the handshake to encrypt the Inner ClientHello message using Hybrid Public
Key Encryption (HPKE) <xref target="RFC9180"/>. A client can log the ECH labels described below
if it offered ECH regardless of server acceptance. The server can log the labels only if it
successfully decrypted the ECH offered by the client, though it could choose to do so
only when it accepts ECH.</t>
        <t>These labels <bcp14>MUST</bcp14> always use the Random from the Outer ClientHello.</t>
        <dl>
          <dt>ECH_SECRET:</dt>
          <dd>
            <t>This label corresponds to the KEM shared secret used by HPKE
(<tt>shared_secret</tt> in the algorithms in <xref section="5.1.1" sectionFormat="of" target="HPKE"/>).
Length of the secret is defined by the KEM negotiated for use with ECH.</t>
          </dd>
          <dt>ECH_CONFIG:</dt>
          <dd>
            <t>The ECHConfig used to construct the ECH extension. The value is logged
in hexadecimal representation.</t>
          </dd>
        </dl>
      </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 and integrity 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 rely on TLS for generating 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 require separate
authorization to enable logging of exporter secrets.</t>
      <t>Using an environment variable, such as <tt>SSLKEYLOGFILE</tt>, to enable logging
implies that access to the launch context for the application is needed to
authorize logging.  On systems that support specially-named files, logs might be
directed to these names so that logging does not result in storage, but enable
consumption by other programs.  In both cases, applications might require
special authorization or they might rely on system-level access control to limit
access to these capabilities.</t>
      <t>Forward secrecy guarantees provided in TLS 1.3 (see Section <xref target="RFC8446" section="1.2" sectionFormat="bare"/> and Appendix <xref target="RFC8446" section="E.1" sectionFormat="bare"/> of <xref target="RFC8446"/>) and some modes of TLS 1.2 (such as those in Sections <xref target="RFC4492" section="2.2" sectionFormat="bare"/> and <xref target="RFC4492" section="2.4" sectionFormat="bare"/> of <xref target="RFC4492"/>) do not hold if key material is recorded.  Access to key
material allows an attacker to decrypt data exchanged in any previously logged TLS
connections.</t>
      <t>Logging the TLS 1.2 "master" secret provides the recipient of that secret far
greater access to an active connection than TLS 1.3 secrets.  In addition to
reading and altering protected messages, the TLS 1.2 "master" secret confers the
ability to resume the connection and impersonate either endpoint, insert records
that result in renegotiation, and forge Finished messages.  Implementations can
avoid the risks associated with these capabilities by not logging this secret
value.</t>
      <t>Access to the ECH_SECRET record in the SSLKEYLOGFILE allows the attacker to decrypt
the ECH extension and thereby reveal the content of the Inner ClientHello message,
including the payload of the Server Name Indication (SNI) extension.</t>
      <t>Access to the HPKE-established shared secret used in ECH introduces a potential
attack surface against the HPKE library since access to this keying material
is normally not available otherwise.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers a media type (<xref target="iana-media"/>)
and creates a registry for labels (<xref target="iana-labels-registry"/>).</t>
      <section anchor="iana-media">
        <name>SSLKEYLOGFILE Media Type</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>UTF-8 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>RFC XXXX (RFC Editor: please update)</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>TLS WG (tls@ietf.org)</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>IETF TLS Working Group</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
        </dl>
      </section>
      <section anchor="iana-labels-registry">
        <name>SSLKEYLOGFILE Labels Registry</name>
        <t>IANA is requested to create a new registry "SSLKEYLOGFILE Labels", within the
existing "Transport Layer Security (TLS) Parameters" registry page.
This new registry reserves labels used for SSLKEYLOGFILE entries.
The initial contents of this registry are as follows.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CLIENT_RANDOM</td>
              <td align="left">Master secret in TLS 1.2 and earlier</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">CLIENT_EARLY_TRAFFIC_SECRET</td>
              <td align="left">Secret for client early data records</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">EARLY_EXPORTER_MASTER_SECRET</td>
              <td align="left">Early exporters secret</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">CLIENT_HANDSHAKE_TRAFFIC_SECRET</td>
              <td align="left">Secret protecting client handshake</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">SERVER_HANDSHAKE_TRAFFIC_SECRET</td>
              <td align="left">Secret protecting server handshake</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">CLIENT_TRAFFIC_SECRET_0</td>
              <td align="left">Secret protecting client records post handshake</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">SERVER_TRAFFIC_SECRET_0</td>
              <td align="left">Secret protecting server records post handshake</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">EXPORTER_SECRET</td>
              <td align="left">Exporter secret after handshake</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">ECH_SECRET</td>
              <td align="left">HPKE KEM shared secret used in the ECH</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">ECH_CONFIG</td>
              <td align="left">ECHConfig used for construction of the ECH</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
        <t>New assignments in the "SSLKEYLOGFILE Labels" registry will be administered by IANA through
Specification Required procedure <xref target="RFC8126"/>. The role of the designated expert is described
in <xref section="17" sectionFormat="of" target="RFC8447"/>. The designated expert <xref target="RFC8126"/> ensures that the specification is
publicly available.  It is sufficient to have an Internet-Draft (that is posted and never published
as an RFC) or to cite a document from another standards body, industry consortium, or any other location.
An expert may provide more in depth reviews, but their approval should not be taken as an endorsement
of the SSLKEYLOGFILE label.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="TLS13">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <date day="14" month="September" year="2024"/>
            <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.

   This document updates RFCs 5705, 6066, 7627, and 8422 and obsoletes
   RFCs 5077, 5246, 6961, 8422, and 8446.  This document also specifies
   new requirements for TLS 1.2 implementations.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-rfc8446bis-11"/>
        </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="ECH">
          <front>
            <title>TLS Encrypted Client Hello</title>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Kazuho Oku" initials="K." surname="Oku">
              <organization>Fastly</organization>
            </author>
            <author fullname="Nick Sullivan" initials="N." surname="Sullivan">
              <organization>Cryptography Consulting LLC</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="15" month="September" year="2024"/>
            <abstract>
              <t>   This document describes a mechanism in Transport Layer Security (TLS)
   for encrypting a ClientHello message under a server public key.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/tlswg/draft-ietf-tls-esni
   (https://github.com/tlswg/draft-ietf-tls-esni).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tls-esni-22"/>
        </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>
        <reference anchor="HPKE">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </reference>
      </references>
      <references anchor="sec-informative-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="RFC9325">
          <front>
            <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="November" year="2022"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
              <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="195"/>
          <seriesInfo name="RFC" value="9325"/>
          <seriesInfo name="DOI" value="10.17487/RFC9325"/>
        </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>qlog: Structured Logging for Network Protocols</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">
         </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   qlog provides extensible structured logging for network protocols,
   allowing for easy sharing of data that benefits common debug and
   analysis methods and tooling.  This document describes key concepts
   of qlog: formats, files, traces, events, and extension points.  This
   definition includes the high-level log file schemas, and generic
   event schemas.  Requirements and guidelines for creating protocol-
   specific event schemas are also presented.  All schemas are defined
   independent of serialization format, allowing logs to be represented
   in various 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-10"/>
        </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="RFC9180">
          <front>
            <title>Hybrid Public Key Encryption</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="K. Bhargavan" initials="K." surname="Bhargavan"/>
            <author fullname="B. Lipp" initials="B." surname="Lipp"/>
            <author fullname="C. Wood" initials="C." surname="Wood"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>This document describes a scheme for hybrid public key encryption (HPKE). This scheme provides a variant of public key encryption of arbitrary-sized plaintexts for a recipient public key. It also includes three authenticated variants, including one that authenticates possession of a pre-shared key and two optional ones that authenticate possession of a key encapsulation mechanism (KEM) private key. HPKE works for any combination of an asymmetric KEM, key derivation function (KDF), and authenticated encryption with additional data (AEAD) encryption function. Some authenticated variants may not be supported by all KEMs. We provide instantiations of the scheme using widely used and efficient primitives, such as Elliptic Curve Diffie-Hellman (ECDH) key agreement, HMAC-based key derivation function (HKDF), and SHA2.</t>
              <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9180"/>
          <seriesInfo name="DOI" value="10.17487/RFC9180"/>
        </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>
        <reference anchor="RFC8446">
          <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="RFC4492">
          <front>
            <title>Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)</title>
            <author fullname="S. Blake-Wilson" initials="S." surname="Blake-Wilson"/>
            <author fullname="N. Bolyard" initials="N." surname="Bolyard"/>
            <author fullname="V. Gupta" initials="V." surname="Gupta"/>
            <author fullname="C. Hawk" initials="C." surname="Hawk"/>
            <author fullname="B. Moeller" initials="B." surname="Moeller"/>
            <date month="May" year="2006"/>
            <abstract>
              <t>This document describes new key exchange algorithms based on Elliptic Curve Cryptography (ECC) for the Transport Layer Security (TLS) protocol. In particular, it specifies the use of Elliptic Curve Diffie-Hellman (ECDH) key agreement in a TLS handshake and the use of Elliptic Curve Digital Signature Algorithm (ECDSA) as a new authentication mechanism. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4492"/>
          <seriesInfo name="DOI" value="10.17487/RFC4492"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8447">
          <front>
            <title>IANA Registry Updates for TLS and DTLS</title>
            <author fullname="J. Salowey" initials="J." surname="Salowey"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document describes a number of changes to TLS and DTLS IANA registries that range from adding notes to the registry all the way to changing the registration policy. These changes were mostly motivated by WG review of the TLS- and DTLS-related registries undertaken as part of the TLS 1.3 development process.</t>
              <t>This document updates the following RFCs: 3749, 5077, 4680, 5246, 5705, 5878, 6520, and 7301.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8447"/>
          <seriesInfo name="DOI" value="10.17487/RFC8447"/>
        </reference>
      </references>
    </references>
    <?line 431?>

<section anchor="example">
      <name>Example</name>
      <t>The following is a sample of a file in this format, including secrets from two
TLS 1.3 connections.</t>
      <artwork><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

CLIENT_HANDSHAKE_TRAFFIC_SECRET \
  cf34899b3dcb8c9fe7160ceaf95d354a294793b67a2e49cb9cca4d69b43593a0 \
  be4a28d81ce41242ff31c6d8a6615852178f2cd75eaca2ee8768f9ed51282b38
SERVER_HANDSHAKE_TRAFFIC_SECRET \
  cf34899b3dcb8c9fe7160ceaf95d354a294793b67a2e49cb9cca4d69b43593a0 \
  258179721fa704e2f1ee16688b4b0419967ddea5624cd5ad0863288dc5ead35f
CLIENT_HANDSHAKE_TRAFFIC_SECRET \
  b2eb93b8ddab8c228993567947bca1e133736980c22754687874e3896f7d6d0a \
  59ec0981b211a743f22d5a46a1fc77a2b230e16ef0de6d4e418abfe90eff10bf
SERVER_HANDSHAKE_TRAFFIC_SECRET \
  b2eb93b8ddab8c228993567947bca1e133736980c22754687874e3896f7d6d0a \
  a37fe4d3b6c9a6a372396b1562f6f8a40c1c3f85f1aa9b02d5ed46c4a1301365
CLIENT_TRAFFIC_SECRET_0 \
  cf34899b3dcb8c9fe7160ceaf95d354a294793b67a2e49cb9cca4d69b43593a0 \
  e9ca165bcb762fab8086068929d26c532e90ef2e2daa762d8b52346951a34c02
SERVER_TRAFFIC_SECRET_0 \
  cf34899b3dcb8c9fe7160ceaf95d354a294793b67a2e49cb9cca4d69b43593a0 \
  4f93c61ac1393008d4c820f3723db3c67494f06574b65fcc21c9eef22f90071a
EXPORTER_SECRET \
  cf34899b3dcb8c9fe7160ceaf95d354a294793b67a2e49cb9cca4d69b43593a0 \
  011c900833468f837f7c55d836b2719beebd39b1648fdeda58772f48d94a1ffa
CLIENT_TRAFFIC_SECRET_0 \
  b2eb93b8ddab8c228993567947bca1e133736980c22754687874e3896f7d6d0a \
  e9160bca1a531d871f5ecf51943d8cfb88833adeccf97701546b5fb93e030d79
SERVER_TRAFFIC_SECRET_0 \
  b2eb93b8ddab8c228993567947bca1e133736980c22754687874e3896f7d6d0a \
  fb1120b91e48d402fac20faa33880e77bace82c85d6688df0aa99bf5084430e4
EXPORTER_SECRET \
  b2eb93b8ddab8c228993567947bca1e133736980c22754687874e3896f7d6d0a \
  db1f4fa1a6942fb125d4cc47e02938b6f8030c6956bb81b9e3269f1cf855a8f8
]]></artwork>
      <t>Note that secrets from the two connections might be interleaved as shown here,
because secrets could be logged as they are generated.</t>
      <t>The following shows a log entry for a TLS 1.2 connection.</t>
      <artwork><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

CLIENT_RANDOM \
  ad52329fcadd34ee3aa07092680287f09954823e26d7b5ae25c0d47714152a6a \
  97af4c8618cfdc0b2326e590114c2ec04b43b08b7e2c3f8124cc61a3b068ba966\
  9517e744e3117c3ce6c538a2d88dfdf
]]></artwork>
      <t>The following shows a log entry for a TLS 1.3 connection that successfully
negotiated ECH.</t>
      <artwork><![CDATA[
# NOTE: '\' line wrapping per RFC 8792

ECH_SECRET \
  0ba587ee6b65ce21a726630efb881206a7cd995611095b5f4c244bb2b23f1ee1 \
  e8828ec09909cc9363179dc13b62498550c8637129345263011a1678370ca52a
ECH_CONFIG \
  0ba587ee6b65ce21a726630efb881206a7cd995611095b5f4c244bb2b23f1ee1 \
  fe0d003c5500200020d5260ae4cdda08bcbdc37bd0dc53c29aea5f0fdd2b2d594\
  e4235e99b134ac904000400010001000d636f7665722e6465666f2e69650000
CLIENT_HANDSHAKE_TRAFFIC_SECRET \
  8726180bb24718089a4c5c8c93e0ea1c6d6649d7dd3c978fc1413854a20e9647 \
  a195b63ec4270609692a204c08e63e74d9ae58e377d11a383bfe641a63c01140
SERVER_HANDSHAKE_TRAFFIC_SECRET \
  8726180bb24718089a4c5c8c93e0ea1c6d6649d7dd3c978fc1413854a20e9647 \
  022d1cb827a90f27dadde0c99110c2b7d0f362fdfe420a04818aa223e5f2c14c
CLIENT_TRAFFIC_SECRET_0 \
  8726180bb24718089a4c5c8c93e0ea1c6d6649d7dd3c978fc1413854a20e9647 \
  c2310f7db71109de88bab6f2f433fdc1704aecc0d57349cbf9113e5033178172
SERVER_TRAFFIC_SECRET_0 \
  8726180bb24718089a4c5c8c93e0ea1c6d6649d7dd3c978fc1413854a20e9647 \
  04ffc7c154f71ba5f530c7344b0496f60ce71b9b7c6b0e203ea574bfcdf14e27
EXPORTER_SECRET \
  8726180bb24718089a4c5c8c93e0ea1c6d6649d7dd3c978fc1413854a20e9647 \
  befb5db5ac6785b5dd4c6a8c4693c379ec0a1486b5fd035b25e50c3c95abc500
]]></artwork>
    </section>
    <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 authors
are only documenting the format as it is used while extending it to cover ECH.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Vc6XLcRpL+j6fAUBEraZekcDUOrS+aIi2GJdFDUuPxzmxI
BaDQxKgbaANoUm1Z8yz7LPtk+2VWFY5mU/bMahRBsRsoVGXl8eVRCR4cHFhd
2S3kU3vv6lral5cvvj/56cX5d6dnL07s07pZis4u6sa+enG5Z4k0beQNhk6G
7VmZ6OS8bjZP7bIqasvK66wSS8yZN6LoDkrZFQfdoj14JzeLel6UC3ng+Fa7
Tpdl25Z11W1WGHx2cnVqVetlKpunVo4pn1pZXbWyatftU7tr1tLC2r4lGimI
Bpmtm7Lb7Fm3dfNu3tTrFW2iEVW7qpvOfiE2srGHUVgcA/Onln1gV7KjhzAp
jcaEVbah6yCSfqWLOnuXXYuysm5ktQYhtv3bC9i22sfej5i6rOb2d/QIXV+K
coHrmP0b4sVh3czpsmiya1y+7rpV+/TJExpFl8obeWiGPaELT9Kmvm3lEzz/
hJ6bl931OlUT3s6ftO1iYCzdX4B3bTeamccdqscOy3r6xJN7hXR43S0Xe5Yl
1t113RDjMLltF+vFQon3pWi6srKvrutlW1d8EzSLqvxFdBArBtS/lIuF4DtS
cWHZfbOob2XVNfVqcwhB3J32J9HU7ULc2Bd1Wy/Fu+t6x9T/1WZiIZvx1JvG
jP/mF3X3MKuXd+d/LqpKtvZVm13XhazK+Y7pX1cQQ9NCsHZd2Eer1aKUuX2Z
lVAVPPttXVUHF9eyrA4uS6kmMNbx/ODbi8sxXWq9w2G9b+bL97x1q2ILw1JP
LYtsZ/hmHRwcYMoWKpph4JGtbtrdNf5r1ytSwRbfpA1pzUnd+ufrCg/W647v
tjJrJEauW9APYQkyZTKsSmY8tGztXLZZU6YyP7TtC5nBSmg+82RX4yHSB3p8
ChBqQUssIFJMU4p5Vbddmdmiynu6urpetIpuEIEPWJGnw8Q51tisOnsp21bM
ZWvJ97C7ag5a0w1RassqX9Vl1bWHmifLMs8X0rIe2GekRPmat2FZz2S6VgsC
rkQlFptf6Muqqbs6IwoyUdmptDH/YiErHnl7LSte5cOHr/HL9T9+JH4QryxQ
R8+CS8xHcKyD1pI2QKmW66rMmNUteHYGRCBu0manQ6EttD9MZ3ZITBwxSjGH
SJOVSMGUZd0Qj2pgx/xa7aMtafPn0Ee7K5dy316uF125wmAivVzi0xLrKXLs
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
eXAdnfPTslMVbsr6Ger/D+vArVl1TwAA

-->

</rfc>
