<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-lennox-sdp-raw-key-fingerprints-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="SDP Fingerprints for Raw Keys in (D)TLS">Session Description Protocol Fingerprints for Raw Public Keys in (Datagram) Transport Layer Security</title>
    <seriesInfo name="Internet-Draft" value="draft-lennox-sdp-raw-key-fingerprints-00"/>
    <author fullname="Jonathan Lennox">
      <organization>8x8, Inc / Jitsi</organization>
      <address>
        <email>jonathan.lennox@8x8.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="18"/>
    <area>ART</area>
    <keyword>sdp</keyword>
    <keyword>fingerprints</keyword>
    <keyword>raw public keys</keyword>
    <abstract>
      <?line 31?>

<t>This document defines how to negotiate the use of raw keys for TLS and DTLS
with the Session Description Protocol (SDP). Raw keys are more efficient
than certificates for typical uses of TLS and DTLS negotiated with
SDP, without loss of security.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-lennox-sdp-raw-key-fingerprints/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/JonathanLennox/raw-key-fingerprints"/>.</t>
    </note>
  </front>
  <middle>
    <?line 38?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>When a Transport-Layer Security (TLS) <xref target="RFC8446"/> <xref target="RFC5246"/> or Datagram
Transport-Layer Security (DTLS) <xref target="RFC9147"/> <xref target="RFC6347"/>
connection is negotiated using the Session Description Protocol <xref target="RFC8866"/>,
certificates are validated using certificate fingerprints specified in
the SDP <xref target="RFC8122"/>, rather than by any information carried in the certificate.
Typically these certificates are self-signed.
The only information carried in these certificates that is used by the
process are the public keys; the rest of the information is useless.
This other information can be large, and once post-quantum
public keys are needed, the self-signed signature in particular will
be very large.</t>
      <t>TLS and DTLS now
support using raw keys, rather than X.509 certificates, in
circumstances such as these <xref target="RFC7250"/>.  This document defines how such raw key
certificates can be negotiated in SDP.</t>
      <section anchor="certificate-overheads">
        <name>Certificate overheads</name>
        <t>As an illustration of the overheads of self-signed certificates, the
self-signed certificate in a WebRTC DTLS handshake negotiated by a
recent version of Chrome is 282 bytes, of which only 91 bytes are the
public key (the subjectPublicKeyInfo in id-ecPublicKey format
<xref target="RFC5480"/>).</t>
        <ul empty="true">
          <li>
            <t>TODO: calculate equivalent figures for a PQ X.509 certificate</t>
          </li>
        </ul>
      </section>
    </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 anchor="protocol">
      <name>Protocol</name>
      <section anchor="sdp-attribute">
        <name>The "raw-key-fingerprint" attribute.</name>
        <t>This document defines an SDP attribute, "raw-key-fingerprint".
Its syntax is the same as the "fingerprint" attribute defined in
<xref target="RFC8122"/>, as specified in <xref target="figabnf"/>.</t>
        <figure anchor="figabnf">
          <name>ABNF for the raw-key-fingerprint attribute</name>
          <artwork><![CDATA[
attribute /= raw-key-fingerprint-attribute

raw-key-fingerprint-attribute = \
                      "raw-key-fingerprint" ":" hash-func fingerprint
                      ; hash-func and fingerprint are defined
                      ; in [RFC8122]
]]></artwork>
        </figure>
        <t>A raw key fingerprint is a secure one-way hash of the distinguished
Encoding Rules (DER) form of the subjectPublicKeyInfo (SPKI) of the
raw key, in the form specified in <xref section="3" sectionFormat="of" target="RFC7250"/> when the
appropriate certificate_type value is RawPublicKey.</t>
        <ul empty="true">
          <li>
            <t>The subjectPublicKeyInfo structure encodes the key type as well as
its value, so the meaning of the key is unambiguous.</t>
          </li>
        </ul>
        <t>The one-way hash is performed using the hash function specified in the
'hash-func' field, which <bcp14>MUST</bcp14> be a hash function from the IANA table
"Hash Function Textual Names" defined in <xref target="RFC8122"/>, with 'SHA-256'
preferred.  As in <xref target="RFC8122"/>, the hash functions 'MD2' and 'MD5'
<bcp14>MUST NOT</bcp14> be used either for generating or verifying raw key fingerprints.</t>
        <t>Also as in <xref target="RFC8122"/>, the raw key fingerprint is represented as
upper-case hexadecimal bytes, separated by colons.  The number of
bytes is defined by the hash function.</t>
      </section>
      <section anchor="sdp-offeranswer-procedures">
        <name>SDP Offer/Answer procedures</name>
        <t>In SDP offer/answer <xref target="RFC3264"/>, if the endpoint creating an SDP
offer wishes to use raw public keys for TLS or DTLS, the offerer
includes an SDP "raw-key-fingerprint" attribute describing its raw
public key at the session level or the appropriate media levels.  In
an initial offer, it <bcp14>SHOULD</bcp14> also include a valid SDP "fingerprint"
attribute for a self-signed X.509 certificate as defined in
<xref target="RFC8122"/>, unless it knows for certain through out-of-band means
that the peer that will be performing the answer definitely supports
raw keys.</t>
        <t>In its answer, the answerer then includes a "raw-key-fingerprint" with
the fingerprint of its own raw public key.  It <bcp14>MAY</bcp14> omit the SDP
"fingerprint" attribute.</t>
        <t>Either the offerer or the answerer <bcp14>MAY</bcp14> include multiple
"raw-key-fingerprint" attributes, for example if they want to provide
a fingerprint hashed with multiple different hash functions, or if the
media negotiated by the offer/answer might end up at one of several
different endpoints which have different public keys.</t>
        <t>In subsequent offers, an offerer <bcp14>MUST</bcp14> send the
"raw-key-fingerprint" value of the raw public key that it used in the
TLS/DTLS session as long as that TLS/DTLS session
remains.  It <bcp14>MAY</bcp14> omit "fingerprint" attributes, and
"raw-key-fingerprint" attributes for unused raw public keys,
when the state of the connection attribute <xref target="RFC4145"/> is "existing"
and the value of the raw key fingerprint is unchanged.
If it sends an offer with "connection:new", or the fingerprint
changes, it <bcp14>SHOULD</bcp14> include both "fingerprint" and
"raw-key-fingerprint" attributes under the same rules as it would use
for an initial offer.</t>
        <section anchor="tlsdtls-procedures-for-sdp-offeranswer-connections">
          <name>TLS/DTLS procedures for SDP Offer/Answer connections.</name>
          <t>The TLS client and server roles are negotiated for the session
following the mechanisms defined in <xref target="RFC4145"/>; the endpoint in the
"active" role will be the client.</t>
          <t>If raw keys have been offered in SDP, the initial ClientHello of the
transaction <bcp14>MUST</bcp14> include both a ClientCertTypeExtension and a
ServerCertTypeExtension including RawPublicKey as one of the types.
If the client has already seen its peer's offer or answer including a
"raw-key-fingerprint" SDP attribute, this <bcp14>MAY</bcp14> be the only type listed
in the extensions; otherwise, if the client's offer or answer included
a "fingerprint" attribute, the extension lists <bcp14>MUST</bcp14> also include X509.</t>
          <t>The server's ServerHello <bcp14>MUST</bcp14> then send a ClientCertTypeExtension
and a ServerCertTypeExtension listing RawPublicKey as the type, as
well as its own raw public key in the Certificate and a certificate
request for the client.  The client then sends its own raw key.</t>
          <t>Both client and server <bcp14>MUST</bcp14> verify that the raw key fingerprint
signaled in SDP matches that of the raw public key received over TLS
or DTLS,
and terminate the TLS or DTLS connection with a bad_certificate error
if it does not.  Note that in some circumstances a ClientHello or ServerHello
may arrive before an SDP answer; application data <bcp14>MUST NOT</bcp14> be sent over the
TLS connection until the raw key fingerprint has been received and
validated.</t>
          <t>If multiple raw key fingerprints are present, a certificate is valid
if at least one raw key fingerprint matches the raw key using a hash
function that the entity considers sufficiently secure.</t>
          <t>If a remote SDP offer or answer does not contain a "raw-key-fingerprint"
attribute, or TLS does not contain a CertTypeExtension containing
RawPublicKey, then the peer
does not support (or does not wish to use) raw keys in fingerprints,
and the standard procedures of <xref target="RFC8122"/> <bcp14>MUST</bcp14> be used instead.</t>
          <t>If an SDP offer or answer is inconsistent with TLS messaging (e.g., a
CertType of X509 is provided when SDP contained only
"raw-key-fingerprint" attributes, or a CertType of RawPublicKey when SDP
contained only "fingerprint" attributes), then the TLS connection <bcp14>MUST</bcp14>
be terminated with a bad_certificate error.</t>
          <ul empty="true">
            <li>
              <t>TODO: Do we want to support asymmetric cases, where one endpoint is
willing to receive raw keys but cannot present one?  This would be
relatively straightforward for answerers, but would require an
additional SDP attribute for an offerer to indicate its willingness
to receive a raw key.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="sdp-advertisements">
        <name>SDP Advertisements</name>
        <t>Older uses of SDP (such as RTSP <xref target="RFC7826"/>) use advertised SDP
rather than offer/answer.  In this mode, an entity presents an SDP
description that other endpoints can then connect to freely, without
providing a matching SDP description.</t>
        <t>When raw key fingerprints are used in this case, the SDP describes the
TLS server.  Clients connect using the standard TLS client/server
procdure. Clients <bcp14>MUST</bcp14> validate that the raw key provided in the
connection matches the raw key fingerprint in the SDP.</t>
      </section>
    </section>
    <section anchor="follow-ons">
      <name>Possible follow-ons</name>
      <t>Two protocols have defined mechanisms by which SDP fingerprints can be
signed to ensure their end-to-end security: PASSPorT <xref target="RFC8225"/> and
WebRTC Identity Providers <xref target="RFC8827"/>.  Unfortunately, the latter has
seen no deployment as far as the author is aware; and the former,
while widely implemented to authenticate calling party telephone
numbers, has not seen much if any adoption of the mode that signs
certificate fingerprints.</t>
      <t>Nonetheless, both of these mechanisms could easily be extended so as
to secure raw key fingerprints as well.</t>
      <ul empty="true">
        <li>
          <t>TODO: Should we actually define these extensions?  Is it worth the
trouble?</t>
        </li>
      </ul>
    </section>
    <section anchor="design-alternatives">
      <name>Design alternatives</name>
      <t>As an alternative to a new "a=raw-key-fingerprint" attribute, an
alternative signaling mechanism would be to define new values for the
"hash-func" field of the existing "a=fingerprint" attribute, e.g. the
"hash-func" value "raw-key-SHA-256" in an "a=fingerprint" attribute
would mean to use the mechanisms defined in this document.</t>
      <t>This would have the advantage of allowing existing mechanisms that use
and transport "a=fingerprint" values (both existing code, and
mechanisms such as those discussed in <xref target="follow-ons"/>) to support the
raw key mechanism, without requiring new code to be written or new
extension points to be defined.</t>
      <t>This would be at the cost of somewhat less clean signaling; and in
particular, the definition of the "Hash function textual names"
IANA registry would get complicated.</t>
      <t>This would require discussion during the consensus process as this
mechanism is standardized.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security of a TLS or DTLS connection negotiated using the
mechanisms defined in this document is identical to that of a
connection negotiated via the mechanism in <xref target="RFC8122"/>.  All the
security considerations of that document also apply to this one.  As
identity information is normally not used from the SDP-negotiated
certificates, this mechanism should have identical security properties
to that of <xref target="RFC8122"/>.</t>
      <t>As with <xref target="RFC8122"/> fingerprints, the mechanism in this document is
vulnerable to an attacker who can modify the signaled fingerprints and
launch a meddler-in-the-middle attack.  See <xref target="follow-ons"/> for various
proposed methods to prevent this attack.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document defines an SDP session and media-level attribute:
'raw-key-fingerprint'.  Its format is defined in Section
<xref target="sdp-attribute"/>.  This attribute should registered by IANA under the
"att-field (both session and media level)" registry within the
"Session Description Protocol (SDP) Parameters" registry.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC5246">
          <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="RFC9147">
          <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="RFC6347">
          <front>
            <title>Datagram Transport Layer Security Version 1.2</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
            <date month="January" year="2012"/>
            <abstract>
              <t>This document specifies version 1.2 of the Datagram Transport Layer Security (DTLS) protocol. The DTLS protocol provides communications privacy for datagram protocols. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. The DTLS protocol is based on the Transport Layer Security (TLS) protocol and provides equivalent security guarantees. Datagram semantics of the underlying transport are preserved by the DTLS protocol. This document updates DTLS 1.0 to work with TLS version 1.2. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6347"/>
          <seriesInfo name="DOI" value="10.17487/RFC6347"/>
        </reference>
        <reference anchor="RFC8866">
          <front>
            <title>SDP: Session Description Protocol</title>
            <author fullname="A. Begen" initials="A." surname="Begen"/>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This memo defines the Session Description Protocol (SDP). SDP is intended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of multimedia session initiation. This document obsoletes RFC 4566.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8866"/>
          <seriesInfo name="DOI" value="10.17487/RFC8866"/>
        </reference>
        <reference anchor="RFC8122">
          <front>
            <title>Connection-Oriented Media Transport over the Transport Layer Security (TLS) Protocol in the Session Description Protocol (SDP)</title>
            <author fullname="J. Lennox" initials="J." surname="Lennox"/>
            <author fullname="C. Holmberg" initials="C." surname="Holmberg"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>This document specifies how to establish secure connection-oriented media transport sessions over the Transport Layer Security (TLS) protocol using the Session Description Protocol (SDP). It defines the SDP protocol identifier, 'TCP/TLS'. It also defines the syntax and semantics for an SDP 'fingerprint' attribute that identifies the certificate that will be presented for the TLS session. This mechanism allows media transport over TLS connections to be established securely, so long as the integrity of session descriptions is assured.</t>
              <t>This document obsoletes RFC 4572 by clarifying the usage of multiple fingerprints.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8122"/>
          <seriesInfo name="DOI" value="10.17487/RFC8122"/>
        </reference>
        <reference anchor="RFC7250">
          <front>
            <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
            <author fullname="S. Weiler" initials="S." surname="Weiler"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7250"/>
          <seriesInfo name="DOI" value="10.17487/RFC7250"/>
        </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="RFC3264">
          <front>
            <title>An Offer/Answer Model with Session Description Protocol (SDP)</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <date month="June" year="2002"/>
            <abstract>
              <t>This document defines a mechanism by which two entities can make use of the Session Description Protocol (SDP) to arrive at a common view of a multimedia session between them. In the model, one participant offers the other a description of the desired session from their perspective, and the other participant answers with the desired session from their perspective. This offer/answer model is most useful in unicast sessions where information from both participants is needed for the complete view of the session. The offer/answer model is used by protocols like the Session Initiation Protocol (SIP). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3264"/>
          <seriesInfo name="DOI" value="10.17487/RFC3264"/>
        </reference>
        <reference anchor="RFC4145">
          <front>
            <title>TCP-Based Media Transport in the Session Description Protocol (SDP)</title>
            <author fullname="D. Yon" initials="D." surname="Yon"/>
            <author fullname="G. Camarillo" initials="G." surname="Camarillo"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes how to express media transport over TCP using the Session Description Protocol (SDP). It defines the SDP 'TCP' protocol identifier, the SDP 'setup' attribute, which describes the connection setup procedure, and the SDP 'connection' attribute, which handles connection reestablishment. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4145"/>
          <seriesInfo name="DOI" value="10.17487/RFC4145"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5480">
          <front>
            <title>Elliptic Curve Cryptography Subject Public Key Information</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="K. Yiu" initials="K." surname="Yiu"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="T. Polk" initials="T." surname="Polk"/>
            <date month="March" year="2009"/>
            <abstract>
              <t>This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography. This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5480"/>
          <seriesInfo name="DOI" value="10.17487/RFC5480"/>
        </reference>
        <reference anchor="RFC7826">
          <front>
            <title>Real-Time Streaming Protocol Version 2.0</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="A. Rao" initials="A." surname="Rao"/>
            <author fullname="R. Lanphier" initials="R." surname="Lanphier"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="M. Stiemerling" initials="M." role="editor" surname="Stiemerling"/>
            <date month="December" year="2016"/>
            <abstract>
              <t>This memorandum defines the Real-Time Streaming Protocol (RTSP) version 2.0, which obsoletes RTSP version 1.0 defined in RFC 2326.</t>
              <t>RTSP is an application-layer protocol for the setup and control of the delivery of data with real-time properties. RTSP provides an extensible framework to enable controlled, on-demand delivery of real-time data, such as audio and video. Sources of data can include both live data feeds and stored clips. This protocol is intended to control multiple data delivery sessions; provide a means for choosing delivery channels such as UDP, multicast UDP, and TCP; and provide a means for choosing delivery mechanisms based upon RTP (RFC 3550).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7826"/>
          <seriesInfo name="DOI" value="10.17487/RFC7826"/>
        </reference>
        <reference anchor="RFC8225">
          <front>
            <title>PASSporT: Personal Assertion Token</title>
            <author fullname="C. Wendt" initials="C." surname="Wendt"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <date month="February" year="2018"/>
            <abstract>
              <t>This document defines a method for creating and validating a token that cryptographically verifies an originating identity or, more generally, a URI or telephone number representing the originator of personal communications. The Personal Assertion Token, PASSporT, is cryptographically signed to protect the integrity of the identity of the originator and to verify the assertion of the identity information at the destination. The cryptographic signature is defined with the intention that it can confidently verify the originating persona even when the signature is sent to the destination party over an insecure channel. PASSporT is particularly useful for many personal-communications applications over IP networks and other multi-hop interconnection scenarios where the originating and destination parties may not have a direct trusted relationship.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8225"/>
          <seriesInfo name="DOI" value="10.17487/RFC8225"/>
        </reference>
        <reference anchor="RFC8827">
          <front>
            <title>WebRTC Security Architecture</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This document defines the security architecture for WebRTC, a protocol suite intended for use with real-time applications that can be deployed in browsers -- "real-time communication on the Web".</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8827"/>
          <seriesInfo name="DOI" value="10.17487/RFC8827"/>
        </reference>
      </references>
    </references>
    <?line 290?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Martin Thomson and Harald Alvestrand for their comments on
this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
