<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.1.2 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-taps-transport-security-03" category="info">

  <front>
    <title abbrev="transport security survey">A Survey of Transport Security Protocols</title>

    <author initials="T." surname="Pauly" fullname="Tommy Pauly">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>tpauly@apple.com</email>
      </address>
    </author>
    <author initials="C." surname="Perkins" fullname="Colin Perkins">
      <organization>University of Glasgow</organization>
      <address>
        <postal>
          <street>School of Computing Science</street>
          <city>Glasgow  G12 8QQ</city>
          <country>United Kingdom</country>
        </postal>
        <email>csp@csperkins.org</email>
      </address>
    </author>
    <author initials="K." surname="Rose" fullname="Kyle Rose">
      <organization>Akamai Technologies, Inc.</organization>
      <address>
        <postal>
          <street>150 Broadway</street>
          <city>Cambridge, MA 02144</city>
          <country>United States of America</country>
        </postal>
        <email>krose@krose.org</email>
      </address>
    </author>
    <author initials="C.A." surname="Wood" fullname="Christopher A. Wood">
      <organization>Apple Inc.</organization>
      <address>
        <postal>
          <street>One Apple Park Way</street>
          <city>Cupertino, California 95014</city>
          <country>United States of America</country>
        </postal>
        <email>cawood@apple.com</email>
      </address>
    </author>

    <date year="2018" month="October" day="22"/>

    
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document provides a survey of commonly used or notable network security protocols, with a focus
on how they interact and integrate with applications and transport protocols. Its goal is to supplement
efforts to define and catalog transport services <xref target="RFC8095"/> by describing the interfaces required to
add security protocols. It examines Transport Layer Security (TLS), Datagram Transport Layer Security (DTLS),
Quick UDP Internet Connections with TLS (QUIC + TLS), MinimalT, CurveCP, tcpcrypt, Internet Key Exchange
with Encapsulating Security Protocol (IKEv2 + ESP), SRTP (with DTLS), and WireGuard. This survey is not
limited to protocols developed within the scope or context of the IETF, and those included represent a superset
of features a TAPS system may need to support.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document provides a survey of commonly used or notable network security protocols, with a focus
on how they interact and integrate with applications and transport protocols.  Its goal is to supplement
efforts to define and catalog transport services <xref target="RFC8095"/> by describing the interfaces required to
add security protocols. It examines Transport Layer Security (TLS), Datagram Transport Layer
Security (DTLS), Quick UDP Internet Connections with TLS (QUIC + TLS), MinimalT, CurveCP, tcpcrypt,
Internet Key Exchange with Encapsulating Security Protocol (IKEv2 + ESP), SRTP (with DTLS), and
WireGuard. For each protocol, this document provides a brief description, the security features it
provides, and the dependencies it has on the underlying transport. This is followed by defining the
set of transport security features shared by these protocols. Finally, we distill the application and
transport interfaces provided by the transport security protocols.</t>

<t>Selected protocols represent a superset of functionality and features a TAPS system may
need to support, both internally and externally – via an API – for applications <xref target="I-D.ietf-taps-arch"/>. Ubiquitous
IETF protocols such as (D)TLS, as well as non-standard protocols such as Google QUIC,
are both included despite overlapping features. As such, this survey is not limited to protocols
developed within the scope or context of the IETF. Outside of this candidate set, protocols
that do not offer new features are omitted. For example, newer protocols such as WireGuard make
unique design choices that have important implications on applications, such as how to
best configure peer public keys and to delegate algorithm selection to the system. In contrast,
protocols such as ALTS <xref target="ALTS"/> are omitted since they do not represent features deemed unique.</t>

<t>Also, authentication-only protocols such as TCP-AO <xref target="RFC5925"/> and IPsec AH <xref target="RFC4302"/> are excluded
from this survey. TCP-AO adds authenticity protections to long-lived TCP connections, e.g., replay
protection  with per-packet Message Authentication Codes. (This protocol obsoletes TCP MD5 “signature”
options specified in <xref target="RFC2385"/>.) One prime use case of TCP-AO is for protecting BGP connections.
Similarly, AH adds per-datagram authenticity and adds similar replay protection. Despite these
improvements, neither protocol sees general use and both lack critical properties important for emergent
transport security protocols: confidentiality, privacy protections, and agility. Thus, we omit
these and related protocols from our survey.</t>

</section>
<section anchor="terminology" title="Terminology">

<t>The following terms are used throughout this document to describe the roles and interactions of transport security protocols:</t>

<t><list style="symbols">
  <t>Transport Feature: a specific end-to-end feature that the transport layer provides to an application.
Examples include confidentiality, reliable delivery, ordered delivery, message-versus-stream orientation, etc.</t>
  <t>Transport Service: a set of Transport Features, without an association to any given framing protocol,
which provides functionality to an application.</t>
  <t>Transport Protocol: an implementation that provides one or more different transport services using a
specific framing and header format on the wire. A Transport Protocol services an application.</t>
  <t>Application: an entity that uses a transport protocol for end-to-end delivery of data across the network.
This may also be an upper layer protocol or tunnel encapsulation.</t>
  <t>Security Feature: a feature that a network security layer provides to applications. Examples
include authentication, encryption, key generation, session resumption, and privacy. Features may be
Mandatory or Optional for an application’s implementation.</t>
  <t>Security Protocol: a defined network protocol that implements one or more security features. Security
protocols may be used alongside transport protocols, and in combination with other security protocols when
appropriate.</t>
  <t>Handshake Protocol: a protocol that enables peers to validate each other and to securely establish
shared cryptographic context.</t>
  <t>Record: Framed protocol messages.</t>
  <t>Record Protocol: a security protocol that allows data to be divided into manageable blocks and protected
using shared cryptographic context.</t>
  <t>Session: an ephemeral security association between applications.</t>
  <t>Cryptographic context: a set of cryptographic parameters, including but not necessarily limited to keys for encryption, authentication, and session resumption, enabling authorized parties to a session to communicate securely.</t>
  <t>Connection: the shared state of two or more endpoints that persists across messages that are transmitted
between these endpoints. A connection is a transient participant of a session, and a session generally lasts
between connection instances.</t>
  <t>Connection Mobility: a property of a connection that allows it to be multihomed or resilient across network
interface or address changes, e.g., NAT rebindings that occur without an endpoint’s knowledge. Mobility allows
cryptographic key material and other state information to be reused in the event of a connection change.</t>
  <t>Peer: an endpoint application party to a session.</t>
  <t>Client: the peer responsible for initiating a session.</t>
  <t>Server: the peer responsible for responding to a session initiation.</t>
</list></t>

</section>
<section anchor="security-features" title="Security Features">

<t>In this section, we enumerate Security Features exposed by protocols discussed in the
remainder of this document. Security Features extend the set of Transport Features
described in <xref target="RFC8095"/> and provided by Transport Services implementations.
Protocol security properties that are unrelated to the API surface
exposed by such protocols, such as client or server identity hiding, are not listed
here as features.</t>

<t><list style="symbols">
  <t>Forward-secure key establishment: Cryptographic key establishment with forward secure properties.</t>
  <t>Cryptographic algorithm negotiation: Negotiate support of protocol algorithms, including: encryption,
hash, MAC (PRF), and digital signature algorithms.</t>
  <t>Stateful and stateless cross-connection session resumption: Connection establishment without needing
to complete an entirely new handshake.</t>
  <t>Session caching and management: Manage session state cache used for subsequent connections
aimed towards amortizing connection establishment costs.</t>
  <t>Peer authentication (certificate, raw public key, pre-shared key, or EAP-based): Peer authentication using
select or protocol-specific mechanisms.</t>
  <t>Mutual authentication: Connection establishment wherein both endpoints are authenticated.</t>
  <t>Application-layer authentication delegation: Out-of-band peer authentication performed by
applications outside of the connection establishment.</t>
  <t>Record (channel or datagram) confidentiality and integrity: Encryption and authentication of
application plaintext bytes sent between peers over a channel or in individual datagrams.</t>
  <t>Partial record confidentiality: Encryption of some portion of records.</t>
  <t>Optional record integrity: Optional authentication of certain records.</t>
  <t>Record replay prevention: Protocol detection and defense against record replays, e.g., due
to in-network retransmissions.</t>
  <t>Early data support (starting with TLS 1.3): Transmission of application data prior to connection
(handshake) establishment.</t>
  <t>Connection mobility: Connection continuation in the presence of 5-tuple changes beneath the
secure transport protocol, e.g., due to NAT rebindings.</t>
  <t>Application-layer feature negotiation: Securely negotiate application-specific functionality,
including those necessary for connection handling and management, e.g., the TLS parent connection
protocol type via ALPN <xref target="RFC7301"/> or desired application identity via SNI <xref target="RFC6066"/>.</t>
  <t>Configuration extensions: Add protocol features via extensions or configuration options. TLS
extensions are a primary example of this feature.</t>
  <t>Out-of-order record receipt: Processing of records received out-of-order.</t>
  <t>Source validation (cookie or puzzle based): Peer source validation and DoS mitigation via explicit proof
of origin (cookie) or work mechanisms (puzzles).</t>
  <t>Connection re-keying: In-band cryptographic handshake re-keying.</t>
  <t>Length-hiding padding: Protocol-drive record padding aimed at hiding plaintext message length
and mitigating amplification attack vectors.</t>
</list></t>

</section>
<section anchor="transport-security-protocol-descriptions" title="Transport Security Protocol Descriptions">

<t>This section contains descriptions of security protocols currently used to protect data
being sent over a network.</t>

<t>For each protocol, we describe its provided features and dependencies on other protocols.</t>

<section anchor="tls" title="TLS">

<t>TLS (Transport Layer Security) <xref target="RFC5246"/> is a common protocol used to establish a secure session between two endpoints. Communication
over this session “prevents eavesdropping, tampering, and message forgery.” TLS consists
of a tightly coupled handshake and record protocol. The handshake protocol is used to authenticate peers,
negotiate protocol options, such as cryptographic algorithms, and derive session-specific
keying material. The record protocol is used to marshal (possibly encrypted) data from one
peer to the other. This data may contain handshake messages or raw application data.</t>

<section anchor="protocol-description" title="Protocol Description">

<t>TLS is the composition of a handshake and record protocol <xref target="I-D.ietf-tls-tls13"/>.
The record protocol is designed to marshal an arbitrary, in-order stream of bytes from one endpoint to the other.
It handles segmenting, compressing (when enabled), and encrypting data into discrete records. When configured
to use an authenticated encryption with associated data (AEAD) algorithm, it also handles nonce
generation and encoding for each record. The record protocol is hidden from the client behind a
bytestream-oriented API.</t>

<t>The handshake protocol serves several purposes, including: peer authentication, protocol option (key exchange
algorithm and ciphersuite) negotiation, and key derivation. Peer authentication may be mutual; however, commonly,
only the server is authenticated. X.509 certificates are commonly used in this authentication step, though
other mechanisms, such as raw public keys <xref target="RFC7250"/>, exist. The client is not authenticated unless explicitly
requested by the server.</t>

<t>The handshake protocol is also extensible. It allows for a variety of extensions to be included by either the client
or server. These extensions are used to specify client preferences, e.g., the application-layer protocol to be driven
with the TLS connection <xref target="RFC7301"/>, or signals to the server to aid operation, e.g., Server Name Indication
(SNI) <xref target="RFC6066"/>. Various extensions also exist to tune the parameters of the record protocol, e.g., the
maximum fragment length <xref target="RFC6066"/> and record size limit <xref target="I-D.ietf-tls-record-limit"/>.</t>

<t>Alerts are used to convey errors and other atypical events to the endpoints. There are two classes of alerts: closure
and error alerts. A closure alert is used to signal to the other peer that the sender wishes to terminate the connection.
The sender typically follows a close alert with a TCP FIN segment to close the connection. Error alerts are used to
indicate problems with the handshake or individual records. Most errors are fatal and are followed by connection
termination. However, warning alerts may be handled at the discretion of the implementation.</t>

<t>Once a session is disconnected all session keying material must be destroyed, with
the exception of secrets previously established expressly for purposes of session resumption.
TLS supports stateful and stateless resumption. (Here, “state” refers to bookkeeping on a per-session basis
by the server. It is assumed that the client must always store some state information in order to resume a session.)</t>

</section>
<section anchor="security-features-1" title="Security Features">

<t><list style="symbols">
  <t>Forward-secure key establishment.</t>
  <t>Cryptographic algorithm negotiation.</t>
  <t>Stateful and stateless cross-connection session resumption.</t>
  <t>Session caching and management.</t>
  <t>Peer authentication (Certificate, raw public key, and pre-shared key).</t>
  <t>Mandatory server authentication, optional client authentication.</t>
  <t>Application authentication delegation.</t>
  <t>Record (channel) confidentiality and integrity.</t>
  <t>Record replay prevention.</t>
  <t>Application-layer feature negotiation.</t>
  <t>Configuration extensions.</t>
  <t>Early data support (starting with TLS 1.3).</t>
  <t>Optional record-layer padding (starting with TLS 1.3).</t>
</list></t>

</section>
<section anchor="protocol-dependencies" title="Protocol Dependencies">

<t><list style="symbols">
  <t>TCP for in-order, reliable transport.</t>
  <t>(Optionally) A PKI trust store for certificate validation.</t>
</list></t>

</section>
</section>
<section anchor="dtls" title="DTLS">

<t>DTLS (Datagram Transport Layer Security) <xref target="RFC6347"/> is based on TLS, but differs in that
it is designed to run over UDP instead of TCP. Since UDP does not guarantee datagram
ordering or reliability, DTLS modifies the protocol to make sure it can still provide
the same security guarantees as TLS. DTLS was designed to be as close to TLS as possible,
so this document will assume that all properties from TLS are carried over except where specified.</t>

<section anchor="protocol-description-1" title="Protocol Description">

<t>DTLS is modified from TLS to operate with the possibility of packet loss, reordering, and duplication
that may occur when operating over UDP. To enable out-of-order delivery of application data, the
DTLS record protocol itself has no inter-record dependencies. However, as the handshake requires
reliability, each handshake message is assigned an explicit sequence number to enable retransmissions
of lost packets and in-order processing by the receiver. Handshake message loss is remedied by sender
retransmission after a configurable period in which the expected response has not yet been received.</t>

<t>As the DTLS handshake protocol runs atop the record protocol, to account for long handshake messages
that cannot fit within a single record, DTLS supports fragmentation and subsequent reconstruction of
handshake messages across records. The receiver must reassemble records before processing.</t>

<t>DTLS relies on unique UDP 4-tuples to identify connections. Since all application-layer data is encrypted,
demultiplexing over the same 4-tuple requires the use of a connection identifier extension <xref target="I-D.ietf-tls-dtls-connection-id"/>
to permit identification of the correct connection-specific cryptographic context without the use of trial decryption.
(Note that this extension is only supported in DTLS 1.2 and 1.3 {{I-D.ietf-tls-dtls13}.)</t>

<t>Since datagrams can be replayed, DTLS provides optional anti-replay detection based on a window
of acceptable sequence numbers <xref target="RFC6347"/>.</t>

</section>
<section anchor="security-features-2" title="Security Features">

<t><list style="symbols">
  <t>Record replay protection.</t>
  <t>Record (datagram) confidentiality and integrity.</t>
  <t>Out-of-order record receipt.</t>
  <t>DoS mitigation (cookie-based).</t>
</list></t>

<t>See also the features from TLS.</t>

</section>
<section anchor="protocol-dependencies-1" title="Protocol Dependencies">

<t><list style="symbols">
  <t>The DTLS record protocol explicitly encodes record lengths, so although it runs over a datagram transport, it does not rely on the transport protocol’s framing beyond requiring transport-level reconstruction of datagrams fragmented over packets.
(Note: DTLS 1.3 short header records omit the explicit length field.)</t>
  <t>UDP 4-tuple uniqueness, or the connection identifier extension, for demultiplexing.</t>
  <t>Path MTU discovery.</t>
</list></t>

</section>
</section>
<section anchor="ietf-quic-with-tls" title="(IETF) QUIC with TLS">

<t>QUIC (Quick UDP Internet Connections) is a new standards-track transport protocol that runs over
UDP, loosely based on Google’s original proprietary gQUIC protocol <xref target="I-D.ietf-quic-transport"/>.
(See <xref target="section-gquic"/> for more details.) The QUIC transport layer itself provides support for data
confidentiality and integrity. This requires keys to be derived with a separate handshake protocol.
A mapping for QUIC over TLS 1.3 <xref target="I-D.ietf-quic-tls"/> has been specified to provide this handshake.</t>

<section anchor="protocol-description-2" title="Protocol Description">

<t>As QUIC relies on TLS to secure its transport functions, it creates specific integration points
between its security and transport functions:</t>

<t><list style="symbols">
  <t>Starting the handshake to generate keys and provide authentication (and providing the transport for the handshake).</t>
  <t>Client address validation.</t>
  <t>Key ready events from TLS to notify the QUIC transport.</t>
  <t>Exporting secrets from TLS to the QUIC transport.</t>
</list></t>

<t>The QUIC transport layer support multiple streams over a single connection. QUIC implements
a record protocol for TLS handshake messages to establish a connection. These messages are
sent in special INITIAL and CRYPTO frames <xref target="I-D.ietf-quic-transport"/>, types of which
are encrypted using different keys. INITIAL frames are encrypted using “fixed” keys derived
from the QUIC version and public packet information (Connection ID). CRYPTO frames are
encrypted using TLS handshake secrets. Once TLS completes, QUIC uses the resultant traffic
secrets to for the QUIC connection to protect the rest of the streams. QUIC supports
0-RTT (early) data using previously negotiated connection secrets. Early data is sent
in 0-RTT packets, which may be included in the same datagram as the Initial and
Handshake packets.</t>

</section>
<section anchor="security-features-3" title="Security Features">

<t><list style="symbols">
  <t>DoS mitigation (cookie-based).</t>
</list></t>

<t>See also the properties of TLS.</t>

</section>
<section anchor="protocol-dependencies-2" title="Protocol Dependencies">

<t><list style="symbols">
  <t>QUIC transport relies on UDP.</t>
  <t>QUIC transport relies on TLS 1.3 for key exchange, peer authentication, and shared secret derivation.</t>
</list></t>

</section>
<section anchor="section-gquic" title="Variant: Google QUIC">

<t>Google QUIC (gQUIC) is a UDP-based multiplexed streaming protocol designed and deployed by Google
following experience from deploying SPDY, the proprietary predecessor to HTTP/2.
gQUIC was originally known as “QUIC”: this document uses gQUIC to unambiguously distinguish
it from the standards-track IETF QUIC. The proprietary technical forebear of IETF QUIC, gQUIC
was originally designed with tightly-integrated security and application data transport protocols.</t>

</section>
</section>
<section anchor="ikev2-with-esp" title="IKEv2 with ESP">

<t>IKEv2 <xref target="RFC7296"/> and ESP <xref target="RFC4303"/> together form the modern IPsec protocol suite that encrypts
and authenticates IP packets, either for creating tunnels (tunnel-mode) or for direct transport
connections (transport-mode). This suite of protocols separates out the key generation protocol
(IKEv2) from the transport encryption protocol (ESP). Each protocol can be used independently,
but this document considers them together, since that is the most common pattern.</t>

<section anchor="protocol-descriptions" title="Protocol descriptions">

<section anchor="ikev2" title="IKEv2">

<t>IKEv2 is a control protocol that runs on UDP port 500. Its primary goal is to generate keys for Security Associations (SAs).
An SA contains shared (cryptographic) information used for establishing other SAs or keying ESP; See <xref target="ESP"/>.
IKEv2 first uses a Diffie-Hellman key exchange to generate keys for the “IKE SA”, which is a set of keys
used to encrypt further IKEv2 messages. It then goes through a phase of authentication in which both peers
present blobs signed by a shared secret or private key, after which another set of keys is derived, referred
to as the “Child SA”. These Child SA keys are used by ESP.</t>

<t>IKEv2 negotiates which protocols are acceptable to each peer for both the IKE and Child SAs using
“Proposals”. Each proposal may contain an encryption algorithm, an authentication algorithm, a
Diffie-Hellman group, and (for IKE SAs only) a pseudorandom function algorithm. Each peer may
support multiple proposals, and the most preferred mutually supported proposal is chosen during
the handshake.</t>

<t>The authentication phase of IKEv2 may use Shared Secrets, Certificates, Digital Signatures, or an
EAP (Extensible Authentication Protocol) method. At a minimum, IKEv2 takes two round trips to set
up both an IKE SA and a Child SA. If EAP is used, this exchange may be expanded.</t>

<t>Any SA used by IKEv2 can be rekeyed upon expiration, which is usually based either on time or
number of bytes encrypted.</t>

<t>There is an extension to IKEv2 that allows session resumption <xref target="RFC5723"/>.</t>

<t>MOBIKE is a Mobility and Multihoming extension to IKEv2 that allows a set of Security Associations
to migrate over different addresses and interfaces <xref target="RFC4555"/>.</t>

<t>When UDP is not available or well-supported on a network, IKEv2 may be encapsulated in TCP <xref target="RFC8229"/>.</t>

</section>
<section anchor="ESP" title="ESP">

<t>ESP is a protocol that encrypts and authenticates IPv4 and IPv6 packets. The keys used for both
encryption and authentication can be derived from an IKEv2 exchange. ESP Security Associations come
as pairs, one for each direction between two peers. Each SA is identified by a Security Parameter
Index (SPI), which is marked on each encrypted ESP packet.</t>

<t>ESP packets include the SPI, a sequence number, an optional Initialization Vector (IV), payload
data, padding, a length and next header field, and an Integrity Check Value.</t>

<t>From <xref target="RFC4303"/>, “ESP is used to provide confidentiality, data origin authentication, connectionless
integrity, an anti-replay service (a form of partial sequence integrity), and limited traffic
flow confidentiality.”</t>

<t>Since ESP operates on IP packets, it is not directly tied to the transport protocols it encrypts.
This means it requires little or no change from transports in order to provide security.</t>

<t>ESP packets may be sent directly over IP, but where network conditions warrant (e.g., when a NAT
is present or when a firewall blocks such packets) they may be encapsulated in UDP <xref target="RFC3948"/> or TCP <xref target="RFC8229"/>.</t>

</section>
</section>
<section anchor="security-features-4" title="Security Features">

<section anchor="ikev2-1" title="IKEv2">

<t><list style="symbols">
  <t>Forward-secure key establishment.</t>
  <t>Cryptographic algorithm negotiation.</t>
  <t>Peer authentication (Certificate, raw public key, pre-shared key, and EAP).</t>
  <t>Mutual authentication.</t>
  <t>Record (datagram) confidentiality and integrity.</t>
  <t>Session resumption.</t>
  <t>Connection mobility.</t>
  <t>DoS mitigation (cookie-based).</t>
</list></t>

</section>
<section anchor="esp" title="ESP">

<t><list style="symbols">
  <t>Record confidentiality and integrity.</t>
  <t>Record replay protection.</t>
</list></t>

</section>
</section>
<section anchor="protocol-dependencies-3" title="Protocol Dependencies">

<section anchor="ikev2-2" title="IKEv2">

<t><list style="symbols">
  <t>Availability of UDP to negotiate, or implementation support for TCP-encapsulation.</t>
  <t>Some EAP authentication types require accessing a hardware device, such as a SIM
card; or interacting with a user, such as password prompting.</t>
</list></t>

</section>
<section anchor="esp-1" title="ESP">

<t><list style="symbols">
  <t>Since ESP is below transport protocols, it does not have any dependencies on the
transports themselves, other than on UDP or TCP where encapsulation is employed.</t>
</list></t>

</section>
</section>
</section>
<section anchor="secure-rtp-with-dtls" title="Secure RTP (with DTLS)">

<t>Secure RTP (SRTP) is a profile for RTP that provides confidentiality, message
authentication, and replay protection for RTP data packets and RTP control
protocol (RTCP) packets <xref target="RFC3711"/>.</t>

<section anchor="protocol-description-3" title="Protocol description">

<t>SRTP adds confidentiality and optional integrity protection to RTP data packets,
and adds confidentially and mandatory integrity protection to RTCP packets.
For RTP data packets, this is done by encrypting the payload section of the packet
and optionally appending an authentication tag (MAC) as a packet trailer, with the RTP
header authenticated but not encrypted (the RTP header was left unencrypted
to enable RTP header compression <xref target="RFC2508"/> <xref target="RFC3545"/>). For RTCP packets, the first packet
in the compound RTCP packet is partially encrypted, leaving the first eight octets of
the header as clear-text to allow identification of the packet as RTCP, while the remainder
of the compound packet is fully encrypted. The entire RTCP packet is then authenticated
by appending a MAC as packet trailer.</t>

<t>Packets are encrypted using session keys, which
are ultimately derived from a master key and an additional master salt and session salt.
SRTP packets carry a 2-byte sequence number to partially identify the unique packet
index. SRTP peers maintain a separate roll-over counter (ROC) for RTP data packets that is
incremented whenever the sequence number wraps. The sequence number and ROC together
determine the packet index. RTCP packets have a similar, yet differently named, field
called the RTCP index which serves the same purpose.</t>

<t>Numerous encryption modes are supported. For popular modes of operation, e.g., AES-CTR,
the (unique) initialization vector (IV) used for each encryption mode is a function of
the RTP SSRC (synchronization source), packet index, and session “salting key”.</t>

<t>SRTP offers replay detection by keeping a replay list of already seen and processed packet indices.
If a packet arrives with an index that matches one in the replay list, it is silently discarded.</t>

<t>DTLS <xref target="RFC5764"/> is commonly used to perform mutual authentication and key
agreement for SRTP <xref target="RFC5763"/>.
Peers use DTLS to perform mutual certificate-based authentication on the
media path, and to generate the SRTP master key.
Peer certificates can be issued and signed by a certificate authority.
Alternatively, certificates used in the DTLS exchange can be self-signed.
If they are self-signed, certificate fingerprints are included in the signalling
exchange (e.g., in SIP or WebRTC), and used to bind the DTLS key exchange in
the media plane to the signaling plane.
The combination of a mutually authenticated DTLS key exchange on the media
path and a fingerprint sent in the signalling channel protects against
active attacks on the media, provided the signalling can be trusted.
Signalling needs to be protected as described in, for example, SIP
<xref target="RFC3261"/> Authenticated Identity Management <xref target="RFC4474"/> or the WebRTC
security architecture <xref target="I-D.ietf-rtcweb-security-arch"/>, to provide
complete system security.</t>

</section>
<section anchor="security-features-5" title="Security Features">

<t><list style="symbols">
  <t>Forward-secure key establishment.</t>
  <t>Cryptographic algorithm negotiation.</t>
  <t>Mutual authentication.</t>
  <t>Partial datagram confidentiality. (Packet headers are not encrypted.)</t>
  <t>Optional authentication of data packets.</t>
  <t>Mandatory authentication of control packets.</t>
  <t>Out-of-order record receipt.</t>
</list></t>

</section>
<section anchor="protocol-dependencies-4" title="Protocol Dependencies">

<t><list style="symbols">
  <t>External key derivation and management protocol, e.g., DTLS <xref target="RFC5763"/>.</t>
  <t>External identity management protocol, e.g., SIP Authenticated Identity Management
<xref target="RFC4474"/>, WebRTC Security Architecture <xref target="I-D.ietf-rtcweb-security-arch"/>.</t>
</list></t>

</section>
<section anchor="variant-zrtp-for-media-path-key-agreement" title="Variant: ZRTP for Media Path Key Agreement">

<t>ZRTP <xref target="RFC6189"/> is an alternative key agreement protocol for SRTP.
It uses standard SRTP to protect RTP data packets and RTCP packets, but
provides alternative key agreement and identity management protocols.</t>

<t>Key agreement is performed using a Diffie-Hellman key exchange that runs
on the media path. This generates a shared secret that is then used to
generate the master key and salt for SRTP.</t>

<t>ZRTP does not rely on a PKI or external identity management system.
Rather, it uses an ephemeral Diffie-Hellman key exchange with hash
commitment to allow detection of man-in-the-middle attacks.
This requires endpoints to display a short authentication string that the
users must read and verbally compare to validate the hashes and ensure security.
Endpoints cache some key material after the first call to use in subsequent
calls; this is mixed in with the Diffie-Hellman shared secret, so the short
authentication string need only be checked once for a given user.  This
gives key continuity properties analogous to the secure shell (ssh)
<xref target="RFC4253"/>.</t>

</section>
</section>
<section anchor="tcpcrypt" title="tcpcrypt">

<t>Tcpcrypt is a lightweight extension to the TCP protocol to enable opportunistic encryption with hooks
available to the application layer for implementation of endpoint authentication.</t>

<section anchor="protocol-description-4" title="Protocol Description">

<t>Tcpcrypt extends TCP to enable opportunistic encryption between the two ends of a TCP connection <xref target="I-D.ietf-tcpinc-tcpcrypt"/>.
It is a family of TCP encryption protocols (TEP), distinguished by key exchange algorithm.
The use of a TEP is negotiated with a TCP option during the initial TCP handshake via the mechanism
described by TCP Encryption Negotiation Option (ENO) <xref target="I-D.ietf-tcpinc-tcpeno"/>.
In the case of initial session establishment, once a tcpcrypt TEP has been negotiated the key exchange
occurs within the data segments of the first few packets exchanged after the handshake completes. The
initiator of a connection sends a list of supported AEAD algorithms, a random nonce, and an ephemeral public key share.
The responder typically chooses a mutually-supported AEAD algorithm and replies with this choice, its own nonce, and ephemeral key share.
An initial shared secret is derived from the ENO handshake, the tcpcrypt handshake, and the initial
keying material resulting from the key exchange. The traffic encryption keys on the initial connection
are derived from the shared secret. Connections can be re-keyed before the natural AEAD limit for a single
set of traffic encryption keys is reached.</t>

<t>Each tcpcrypt session is associated with a ladder of resumption IDs, each derived from the respective
entry in a ladder of shared secrets. These resumption IDs can be used to negotiate a stateful resumption
of the session in a subsequent connection, resulting in use of a new shared secret and traffic encryption
keys without requiring a new key exchange. Willingness to resume a session is signaled via the ENO option
during the TCP handshake. Given the length constraints imposed by TCP options, unlike stateless resumption
mechanisms (such as that provided by session tickets in TLS) resumption in tcpcrypt requires the maintenance
of state on the server, and so successful resumption across a pool of servers implies shared state.</t>

<t>Owing to middlebox ossification issues, tcpcrypt only protects the payload portion of a TCP packet.
It does not encrypt any header information, such as the TCP sequence number.</t>

<t>Tcpcrypt exposes a universally-unique connection-specific session ID to the application, suitable for
application-level endpoint authentication either in-band or out-of-band.</t>

</section>
<section anchor="security-features-6" title="Security Features">

<t><list style="symbols">
  <t>Forward-secure key establishment.</t>
  <t>Record (channel) confidentiality and integrity.</t>
  <t>Stateful cross-connection session resumption.</t>
  <t>Session caching and management.</t>
  <t>Connection re-keying.</t>
  <t>Application authentication delegation.</t>
</list></t>

</section>
<section anchor="protocol-dependencies-5" title="Protocol Dependencies">

<t><list style="symbols">
  <t>TCP.</t>
  <t>TCP Encryption Negotiation Option (ENO).</t>
</list></t>

</section>
</section>
<section anchor="wireguard" title="WireGuard">

<t>WireGuard is a layer 3 protocol designed to complement or replace IPsec <xref target="WireGuard"/>
for certain use cases. It uses UDP to encapsulate IP datagrams between peers.
Unlike most transport security protocols, which rely on PKI for peer authentication,
WireGuard authenticates peers using pre-shared public keys delivered out-of-band, each
of which is bound to one or more IP addresses.
Moreover, as a protocol suited for VPNs, WireGuard offers no extensibility, negotiation,
or cryptographic agility.</t>

<section anchor="protocol-description-5" title="Protocol description">

<t>WireGuard is a simple VPN protocol that binds a pre-shared public key to one or more
IP addresses. Users configure WireGuard by associating peer public keys with IP addresses.
These mappings are stored in a CryptoKey Routing Table. (See Section 2 of <xref target="WireGuard"/>
for more details and sample configurations.) These keys are used upon WireGuard packet
transmission and reception. For example, upon receipt of a Handshake Initiation message,
receivers use the static public key in their CryptoKey routing table to perform necessary
cryptographic computations.</t>

<t>WireGuard builds on Noise <xref target="Noise"/> for 1-RTT key exchange with identity hiding. The handshake
hides peer identities as per the SIGMA construction <xref target="SIGMA"/>. As a consequence of using Noise,
WireGuard comes with a fixed set of cryptographic algorithms:</t>

<t><list style="symbols">
  <t>x25519 <xref target="Curve25519"/> and HKDF <xref target="RFC5869"/> for ECDH and key derivation.</t>
  <t>ChaCha20+Poly1305 <xref target="RFC7539"/> for packet authenticated encryption.</t>
  <t>BLAKE2s <xref target="BLAKE2"/> for hashing.</t>
</list></t>

<t>There is no cryptographic agility. If weaknesses are found in any of
these algorithms, new message types using new algorithms must be introduced.</t>

<t>WireGuard is designed to be entirely stateless, modulo the CryptoKey routing table, which has size
linear with the number of trusted peers. If a WireGuard receiver is under heavy load and cannot process
a packet, e.g., cannot spare CPU cycles for point multiplication, it can reply with a cookie similar
to DTLS and IKEv2. This cookie only proves IP address ownership. Any rate limiting scheme can be applied
to packets coming from non-spoofed addresses.</t>

</section>
<section anchor="security-features-7" title="Security Features">

<t><list style="symbols">
  <t>Forward-secure key establishment.</t>
  <t>Peer authentication (Public-key and PSK).</t>
  <t>Mutual authentication.</t>
  <t>Record replay prevention (Stateful, timestamp-based).</t>
  <t>DoS mitigation (cookie-based).</t>
</list></t>

</section>
<section anchor="protocol-dependencies-6" title="Protocol Dependencies">

<t><list style="symbols">
  <t>Datagram transport.</t>
  <t>Out-of-band key distribution and management.</t>
</list></t>

</section>
</section>
<section anchor="minimalt" title="MinimalT">

<t>MinimalT is a UDP-based transport security protocol designed to offer confidentiality,
mutual authentication, DoS prevention, and connection mobility <xref target="MinimalT"/>. One major
goal of the protocol is to leverage existing protocols to obtain server-side configuration
information used to more quickly bootstrap a connection. MinimalT uses a variant of TCP’s
congestion control algorithm.</t>

<section anchor="protocol-description-6" title="Protocol Description">

<t>MinimalT is a secure transport protocol built on top of a widespread directory service.
Clients and servers interact with local directory services to (a) resolve server information
and (b) public ephemeral state information, respectively. Clients connect to a local
resolver once at boot time. Through this resolver they recover the IP address(es) and
public key(s) of each server to which they want to connect.</t>

<t>Connections are instances of user-authenticated, mobile sessions between two endpoints.
Connections run within tunnels between hosts. A tunnel is a server-authenticated container
that multiplexes multiple connections between the same hosts. All connections in a tunnel share the
same transport state machine and encryption. Each tunnel has a dedicated control connection
used to configure and manage the tunnel over time. Moreover, since tunnels are independent of
the network address information, they may be reused as both ends of the tunnel move about the network.
This does however imply that the connection establishment and packet encryption mechanisms are coupled.</t>

<t>Before a client connects to a remote service, it must first establish a tunnel to the host
providing or offering the service. Tunnels are established in 1-RTT using an ephemeral key
obtained from the directory service. Tunnel initiators provide their own ephemeral key and, optionally, a
DoS puzzle solution such that the recipient (server) can verify the authenticity of the
request and derive a shared secret. Within a tunnel, new connections to services may be established.</t>

</section>
<section anchor="protocol-features" title="Protocol Features">

<t><list style="symbols">
  <t>Forward-secure key establishment.</t>
  <t>DoS mitigation (puzzle-based).</t>
  <t>Connection mobility (based on tunnel identifiers).</t>
</list></t>

<t>Additional (orthogonal) transport features include: connection multiplexing between hosts across shared tunnels, and congestion control state is shared across connections between the same host pairs.</t>

</section>
<section anchor="protocol-dependencies-7" title="Protocol Dependencies">

<t><list style="symbols">
  <t>A DNS-like resolution service to obtain location information (an IP address) and ephemeral keys.</t>
  <t>A PKI trust store for certificate validation.</t>
</list></t>

</section>
</section>
<section anchor="curvecp" title="CurveCP">

<t>CurveCP <xref target="CurveCP"/> is a UDP-based transport security protocol from Daniel J. Bernstein.
Unlike other transport security protocols, it is based entirely upon highly efficient public
key algorithms. This removes many pitfalls associated with nonce reuse and key synchronization.</t>

<section anchor="protocol-description-7" title="Protocol Description">

<t>CurveCP is a UDP-based transport security protocol. It is built on three principal features: exclusive use of public key authenticated
encryption of packets, server-chosen cookies to prohibit memory and computation DoS at the server, and connection mobility with a
client-chosen ephemeral identifier.</t>

<t>There are two rounds in CurveCP. In the first round, the client sends its first initialization packet to the server, carrying its (possibly fresh)
ephemeral public key C’, with zero-padding encrypted under the server’s long-term public key. The server replies with a cookie and its own ephemeral
key S’ and a cookie that is to be used by the client. Upon receipt, the client then generates its second initialization packet carrying: the
ephemeral key C’, cookie, and an encryption of C’, the server’s domain name, and, optionally, some message data. The server verifies the cookie
and the encrypted payload and, if valid, proceeds to send data in return. At this point, the connection is established and the two
parties can communicate.</t>

<t>The use of only public-key encryption and authentication, or “boxing”, is done to simplify problems that come with symmetric key management
and synchronization. For example, it allows the sender of a message to be in complete control of each message’s nonce. It does not require
either end to share secret keying material.
Furthermore, it allows connections (or sessions) to be associated with unique ephemeral public keys as a mechanism for enabling forward secrecy given the risk of long-term private key compromise.</t>

<t>The client and server do not perform a standard key exchange. Instead, in the initial exchange of packets, each party provides its
own ephemeral key to the other end. The client can choose a new ephemeral key for every new connection. However, the server must rotate
these keys on a slower basis. Otherwise, it would be trivial for an attacker to force the server to create and store ephemeral keys
with a fake client initialization packet.</t>

<t>Servers use cookies for source validation. After receiving a client’s initial packet,
encrypted under the server’s long-term public key, a server generates and returns a stateless cookie
that must be echoed back in the client’s following message. This cookie is encrypted under the client’s
ephemeral public key. This stateless technique prevents attackers from hijacking client initialization
packets to obtain cookie values to flood clients. (A client would detect the duplicate cookies and reject
the flooded packets.) Similarly, replaying the client’s second packet, carrying the cookie, will be
detected by the server.</t>

<t>CurveCP supports a weak form of client authentication. Clients are permitted to send their long-term
public keys in the second initialization packet. A server can verify this public key and, if untrusted,
drop the connection and subsequent data.</t>

<t>Unlike some other protocols, CurveCP data packets leave only the ephemeral public key, the connection ID,
and the per-message nonce in the clear. Everything else is encrypted.</t>

</section>
<section anchor="protocol-features-1" title="Protocol Features">

<t><list style="symbols">
  <t>Datagram confidentiality and integrity (via public key encryption).</t>
  <t>Connection mobility (based on a client-chosen ephemeral identifier).</t>
  <t>Optional length-hiding and anti-amplification padding.</t>
</list></t>

</section>
<section anchor="protocol-dependencies-8" title="Protocol Dependencies">

<t><list style="symbols">
  <t>An unreliable transport protocol such as UDP.</t>
</list></t>

</section>
</section>
</section>
<section anchor="security-features-and-transport-dependencies" title="Security Features and Transport Dependencies">

<t>There exists a common set of features shared across the transport protocols surveyed in this document.
Mandatory features constitute a baseline of functionality that an application may assume for any TAPS
implementation. They were selected on the basis that they are either (a) required for any secure
transport protocol or (b) nearly ubiquitous amongst common secure transport protocols.
Optional features by contrast may vary from implementation to implementation, and so
an application cannot simply assume they are available. Applications learn of and use optional features by
querying for their presence and support. Optional features may not be implemented, or may be disabled if
their presence impacts transport services or if a necessary transport service is unavailable.</t>

<section anchor="mandatory-features" title="Mandatory Features">

<t><list style="symbols">
  <t>Segment or datagram encryption and authentication: Protect transit data with an authenticated
encryption algorithm.</t>
  <t>Forward-secure key establishment.</t>
  <t>Public-key (raw or certificate) based authentication.</t>
  <t>Unilateral responder authentication.</t>
  <t>Pre-shared key support.</t>
</list></t>

</section>
<section anchor="optional-features" title="Optional Features">

<t><list style="symbols">
  <t>Cryptographic algorithm negotiation (AN):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: Application awareness of supported or desired algorithms.</t>
    </list></t>
  <t>Application authentication delegation (AD):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: Application opt-in and policy for endpoint authentication</t>
    </list></t>
  <t>Mutual authentication (MA):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: Mutual authentication required for application support.</t>
    </list></t>
  <t>DoS mitigation (DM):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: None.</t>
    </list></t>
  <t>Connection mobility (CM):
  <list style="symbols">
      <t>Transport dependency: Connections are unreliable or can change due to unpredictable network events, e.g.,
NAT re-bindings.</t>
      <t>Application dependency: None.</t>
    </list></t>
  <t>Source validation (SV):
  <list style="symbols">
      <t>Transport dependency: Packets may arrive as datagrams instead of streams from unauthenticated sources.</t>
      <t>Application dependency: None.</t>
    </list></t>
  <t>Application-layer feature negotiation (AFN):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: Specification of application-layer features or functionality.</t>
    </list></t>
  <t>Configuration extensions (CX):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: Specification of application-specific extensions.</t>
    </list></t>
  <t>Session caching and management (SC):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: None.</t>
    </list></t>
  <t>Early data support (ED):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: Anti-replay protections or hints of data idempotency.</t>
    </list></t>
  <t>Length-hiding padding (LHP):
  <list style="symbols">
      <t>Transport dependency: None.</t>
      <t>Application dependency: Knowledge of desired padding policies.</t>
    </list></t>
</list></t>

</section>
<section anchor="optional-feature-availability" title="Optional Feature Availability">

<t>The following table lists the availability of the above-listed optional features in each of
the analyzed protocols. “Mandatory” indicates that the feature is intrinsic to the protocol
and cannot be disabled. “Supported” indicates that the feature is optionally provided natively
or through a (standardized, where applicable) extension.</t>

<texttable>
      <ttcol align='left'>Protocol</ttcol>
      <ttcol align='center'>AN</ttcol>
      <ttcol align='center'>AD</ttcol>
      <ttcol align='center'>MA</ttcol>
      <ttcol align='center'>DM</ttcol>
      <ttcol align='center'>CM</ttcol>
      <ttcol align='center'>SV</ttcol>
      <ttcol align='center'>AFN</ttcol>
      <ttcol align='center'>CX</ttcol>
      <ttcol align='center'>SC</ttcol>
      <ttcol align='center'>LHP</ttcol>
      <ttcol align='center'>ED</ttcol>
      <c>TLS</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>U*</c>
      <c>M</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>DTLS</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>M</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>U</c>
      <c>IETF QUIC</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>M</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>IKEv2+ESP</c>
      <c>S</c>
      <c>S</c>
      <c>M</c>
      <c>S</c>
      <c>S</c>
      <c>M</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>U</c>
      <c>SRTP+DTLS</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>U</c>
      <c>M</c>
      <c>S</c>
      <c>S</c>
      <c>S</c>
      <c>U</c>
      <c>U</c>
      <c>tcpcrypt</c>
      <c>S</c>
      <c>M</c>
      <c>U</c>
      <c>U**</c>
      <c>U*</c>
      <c>M</c>
      <c>U</c>
      <c>U</c>
      <c>S</c>
      <c>U</c>
      <c>U</c>
      <c>WireGuard</c>
      <c>U</c>
      <c>S</c>
      <c>M</c>
      <c>S</c>
      <c>U</c>
      <c>M</c>
      <c>U</c>
      <c>U</c>
      <c>U</c>
      <c>S+</c>
      <c>U</c>
      <c>MinimalT</c>
      <c>U</c>
      <c>U</c>
      <c>M</c>
      <c>S</c>
      <c>M</c>
      <c>M</c>
      <c>U</c>
      <c>U</c>
      <c>U</c>
      <c>S</c>
      <c>U</c>
      <c>CurveCP</c>
      <c>U</c>
      <c>U</c>
      <c>S</c>
      <c>S</c>
      <c>M</c>
      <c>M</c>
      <c>U</c>
      <c>U</c>
      <c>U</c>
      <c>S</c>
      <c>U</c>
</texttable>

<t>M=Mandatory
S=Supported but not required
U=Unsupported
*=On TCP; MPTCP would provide this ability
**=TCP provides SYN cookies natively, but these are not cryptographically strong
+=For transport packets only</t>

</section>
</section>
<section anchor="transport-security-protocol-interfaces" title="Transport Security Protocol Interfaces">

<t>This section describes the interface surface exposed by the security protocols described above.
Note that not all protocols support each interface. We partition these interfaces into
pre-connection (configuration), connection, and post-connection interfaces, following
conventions in <xref target="I-D.ietf-taps-interface"/> and <xref target="I-D.ietf-taps-arch"/>.</t>

<section anchor="pre-connection-interfaces" title="Pre-Connection Interfaces">

<t>Configuration interfaces are used to configure the security protocols before a
handshake begins or the keys are negotiated.</t>

<t><list style="symbols">
  <t>Identity and Private Keys
The application can provide its identities (certificates) and private keys, or
mechanisms to access these, to the security protocol to use during handshakes.
Protocols: TLS, DTLS, QUIC + TLS, MinimalT, CurveCP, IKEv2, WireGuard, SRTP</t>
  <t>Supported Algorithms (Key Exchange, Signatures, and Ciphersuites)
The application can choose the algorithms that are supported for key exchange,
signatures, and ciphersuites.
Protocols: TLS, DTLS, QUIC + TLS, MinimalT, tcpcrypt, IKEv2, SRTP</t>
  <t>Session Cache Management
The application provides the ability to save and retrieve session state (such as tickets,
keying material, and server parameters) that may be used to resume the security session.
Protocols: TLS, DTLS, QUIC + TLS, MinimalT</t>
  <t>Authentication Delegation
The application provides access to a separate module that will provide authentication,
using EAP for example.
Protocols: IKEv2, SRTP</t>
  <t>Pre-Shared Key Import
Either the handshake protocol or the application directly can supply pre-shared keys for the record protocol use for encryption/decryption and authentication. If the application can supply keys directly, this is considered explicit import; if the handshake protocol traditionally provides the keys directly, it is considered direct import; if the keys can only be shared by the handshake, they are considered non-importable.  <list style="symbols">
      <t>Explict import: QUIC, ESP</t>
      <t>Direct import: TLS, DTLS, MinimalT, tcpcrypt, WireGuard</t>
      <t>Non-importable: CurveCP</t>
    </list></t>
</list></t>

</section>
<section anchor="connection-interfaces" title="Connection Interfaces">

<t><list style="symbols">
  <t>Identity Validation
During a handshake, the security protocol will conduct identity validation of the peer.
This can call into the application to offload validation.
Protocols: All (TLS, DTLS, QUIC + TLS, MinimalT, CurveCP, IKEv2, WireGuard, SRTP (DTLS))</t>
  <t>Source Address Validation
The handshake protocol may delegate validation of the remote peer that has sent
data to the transport protocol or application. This involves sending a cookie
exchange to avoid DoS attacks.
Protocols: QUIC + TLS, DTLS, WireGuard</t>
</list></t>

</section>
<section anchor="post-connection-interfaces" title="Post-Connection Interfaces">

<t><list style="symbols">
  <t>Connection Termination
The security protocol may be instructed to tear down its connection and session information.
This is needed by some protocols to prevent application data truncation attacks.
Protocols: TLS, DTLS, QUIC + TLS, MinimalT, tcpcrypt, IKEv2</t>
  <t>Key Update
The handshake protocol may be instructed to update its keying material, either
by the application directly or by the record protocol sending a key expiration event.
Protocols: TLS, DTLS, QUIC + TLS, MinimalT, tcpcrypt, IKEv2</t>
  <t>Pre-Shared Key Export
The handshake protocol will generate one or more keys to be used for record encryption/decryption and authentication. These may be explicitly exportable to the application, traditionally limited to direct export to the record protocol, or inherently non-exportable because the keys must be used directly in conjunction with the record protocol.
  <list style="symbols">
      <t>Explicit export: TLS (for QUIC), tcpcrypt, IKEv2, DTLS (for SRTP)</t>
      <t>Direct export: TLS, DTLS, MinimalT</t>
      <t>Non-exportable: CurveCP</t>
    </list></t>
  <t>Key Expiration
The record protocol can signal that its keys are expiring due to reaching a time-based deadline, or a use-based deadline (number of bytes that have been encrypted with the key). This interaction is often limited to signaling between the record layer and the handshake layer.
Protocols: ESP ((Editor’s note: One may consider TLS/DTLS to also have this interface))</t>
  <t>Connection mobility
The record protocol can be signaled that it is being migrated to another transport or interface due to
connection mobility, which may reset address and state validation.
Protocols: QUIC, MinimalT, CurveCP, ESP, WireGuard (roaming)</t>
</list></t>

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

<t>This document has no request to IANA.</t>

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

<t>This document summarizes existing transport security protocols and their interfaces.
It does not propose changes to or recommend usage of reference protocols. Moreover,
no claims of security and privacy properties beyond those guaranteed by the protocols
discussed are made. For example, metadata leakage via timing side channels and traffic
analysis may compromise any protocol discussed in this survey. Applications using
Security Interfaces SHOULD take such limitations into consideration when using a particular
protocol implementation.</t>

</section>
<section anchor="acknowledgments" title="Acknowledgments">

<t>The authors would like to thank Mirja Kühlewind, Brian Trammell, Yannick Sierra,
Frederic Jacobs, and Bob Bradley for their input and feedback on earlier versions
of this draft.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC2385" target='https://www.rfc-editor.org/info/rfc2385'>
<front>
<title>Protection of BGP Sessions via the TCP MD5 Signature Option</title>
<author initials='A.' surname='Heffernan' fullname='A. Heffernan'><organization /></author>
<date year='1998' month='August' />
<abstract><t>This memo describes a TCP extension to enhance security for BGP. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2385'/>
<seriesInfo name='DOI' value='10.17487/RFC2385'/>
</reference>



<reference  anchor="RFC2508" target='https://www.rfc-editor.org/info/rfc2508'>
<front>
<title>Compressing IP/UDP/RTP Headers for Low-Speed Serial Links</title>
<author initials='S.' surname='Casner' fullname='S. Casner'><organization /></author>
<author initials='V.' surname='Jacobson' fullname='V. Jacobson'><organization /></author>
<date year='1999' month='February' />
<abstract><t>This document describes a method for compressing the headers of IP/UDP/RTP datagrams to reduce overhead on low-speed serial links. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2508'/>
<seriesInfo name='DOI' value='10.17487/RFC2508'/>
</reference>



<reference  anchor="RFC3261" target='https://www.rfc-editor.org/info/rfc3261'>
<front>
<title>SIP: Session Initiation Protocol</title>
<author initials='J.' surname='Rosenberg' fullname='J. Rosenberg'><organization /></author>
<author initials='H.' surname='Schulzrinne' fullname='H. Schulzrinne'><organization /></author>
<author initials='G.' surname='Camarillo' fullname='G. Camarillo'><organization /></author>
<author initials='A.' surname='Johnston' fullname='A. Johnston'><organization /></author>
<author initials='J.' surname='Peterson' fullname='J. Peterson'><organization /></author>
<author initials='R.' surname='Sparks' fullname='R. Sparks'><organization /></author>
<author initials='M.' surname='Handley' fullname='M. Handley'><organization /></author>
<author initials='E.' surname='Schooler' fullname='E. Schooler'><organization /></author>
<date year='2002' month='June' />
<abstract><t>This document describes Session Initiation Protocol (SIP), an application-layer control (signaling) protocol for creating, modifying, and terminating sessions with one or more participants.  These sessions include Internet telephone calls, multimedia distribution, and multimedia conferences.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3261'/>
<seriesInfo name='DOI' value='10.17487/RFC3261'/>
</reference>



<reference  anchor="RFC3545" target='https://www.rfc-editor.org/info/rfc3545'>
<front>
<title>Enhanced Compressed RTP (CRTP) for Links with High Delay, Packet Loss and Reordering</title>
<author initials='T.' surname='Koren' fullname='T. Koren'><organization /></author>
<author initials='S.' surname='Casner' fullname='S. Casner'><organization /></author>
<author initials='J.' surname='Geevarghese' fullname='J. Geevarghese'><organization /></author>
<author initials='B.' surname='Thompson' fullname='B. Thompson'><organization /></author>
<author initials='P.' surname='Ruddy' fullname='P. Ruddy'><organization /></author>
<date year='2003' month='July' />
<abstract><t>This document describes a header compression scheme for point to point links with packet loss and long delays.  It is based on Compressed Real-time Transport Protocol (CRTP), the IP/UDP/RTP header compression described in RFC 2508.  CRTP does not perform well on such links: packet loss results in context corruption and due to the long delay, many more packets are discarded before the context is repaired.  To correct the behavior of CRTP over such links, a few extensions to the protocol are specified here.  The extensions aim to reduce context corruption by changing the way the compressor updates the context at the decompressor: updates are repeated and include updates to full and differential context parameters.  With these extensions, CRTP performs well over links with packet loss, packet reordering and long delays.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3545'/>
<seriesInfo name='DOI' value='10.17487/RFC3545'/>
</reference>



<reference  anchor="RFC3711" target='https://www.rfc-editor.org/info/rfc3711'>
<front>
<title>The Secure Real-time Transport Protocol (SRTP)</title>
<author initials='M.' surname='Baugher' fullname='M. Baugher'><organization /></author>
<author initials='D.' surname='McGrew' fullname='D. McGrew'><organization /></author>
<author initials='M.' surname='Naslund' fullname='M. Naslund'><organization /></author>
<author initials='E.' surname='Carrara' fullname='E. Carrara'><organization /></author>
<author initials='K.' surname='Norrman' fullname='K. Norrman'><organization /></author>
<date year='2004' month='March' />
<abstract><t>This document describes the Secure Real-time Transport Protocol (SRTP), a profile of the Real-time Transport Protocol (RTP), which can provide confidentiality, message authentication, and replay protection to the RTP traffic and to the control traffic for RTP, the Real-time Transport Control Protocol (RTCP).   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3711'/>
<seriesInfo name='DOI' value='10.17487/RFC3711'/>
</reference>



<reference  anchor="RFC3948" target='https://www.rfc-editor.org/info/rfc3948'>
<front>
<title>UDP Encapsulation of IPsec ESP Packets</title>
<author initials='A.' surname='Huttunen' fullname='A. Huttunen'><organization /></author>
<author initials='B.' surname='Swander' fullname='B. Swander'><organization /></author>
<author initials='V.' surname='Volpe' fullname='V. Volpe'><organization /></author>
<author initials='L.' surname='DiBurro' fullname='L. DiBurro'><organization /></author>
<author initials='M.' surname='Stenberg' fullname='M. Stenberg'><organization /></author>
<date year='2005' month='January' />
<abstract><t>This protocol specification defines methods to encapsulate and decapsulate IP Encapsulating Security Payload (ESP) packets inside UDP packets for traversing Network Address Translators.  ESP encapsulation, as defined in this document, can be used in both IPv4 and IPv6 scenarios.  Whenever negotiated, encapsulation is used with Internet Key Exchange (IKE).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3948'/>
<seriesInfo name='DOI' value='10.17487/RFC3948'/>
</reference>



<reference  anchor="RFC4253" target='https://www.rfc-editor.org/info/rfc4253'>
<front>
<title>The Secure Shell (SSH) Transport Layer Protocol</title>
<author initials='T.' surname='Ylonen' fullname='T. Ylonen'><organization /></author>
<author initials='C.' surname='Lonvick' fullname='C. Lonvick' role='editor'><organization /></author>
<date year='2006' month='January' />
<abstract><t>The Secure Shell (SSH) is a protocol for secure remote login and other secure network services over an insecure network.</t><t>This document describes the SSH transport layer protocol, which typically runs on top of TCP/IP.  The protocol can be used as a basis for a number of secure network services.  It provides strong encryption, server authentication, and integrity protection.  It may also provide compression.</t><t>Key exchange method, public key algorithm, symmetric encryption algorithm, message authentication algorithm, and hash algorithm are all negotiated.</t><t>This document also describes the Diffie-Hellman key exchange method and the minimal set of algorithms that are needed to implement the SSH transport layer protocol.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4253'/>
<seriesInfo name='DOI' value='10.17487/RFC4253'/>
</reference>



<reference  anchor="RFC4302" target='https://www.rfc-editor.org/info/rfc4302'>
<front>
<title>IP Authentication Header</title>
<author initials='S.' surname='Kent' fullname='S. Kent'><organization /></author>
<date year='2005' month='December' />
<abstract><t>This document describes an updated version of the IP Authentication Header (AH), which is designed to provide authentication services in IPv4 and IPv6.  This document obsoletes RFC 2402 (November 1998).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4302'/>
<seriesInfo name='DOI' value='10.17487/RFC4302'/>
</reference>



<reference  anchor="RFC4303" target='https://www.rfc-editor.org/info/rfc4303'>
<front>
<title>IP Encapsulating Security Payload (ESP)</title>
<author initials='S.' surname='Kent' fullname='S. Kent'><organization /></author>
<date year='2005' month='December' />
<abstract><t>This document describes an updated version of the Encapsulating Security Payload (ESP) protocol, which is designed to provide a mix of security services in IPv4 and IPv6.  ESP is used to provide confidentiality, data origin authentication, connectionless integrity, an anti-replay service (a form of partial sequence integrity), and limited traffic flow confidentiality.  This document obsoletes RFC 2406 (November 1998).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4303'/>
<seriesInfo name='DOI' value='10.17487/RFC4303'/>
</reference>



<reference  anchor="RFC4474" target='https://www.rfc-editor.org/info/rfc4474'>
<front>
<title>Enhancements for Authenticated Identity Management in the Session Initiation Protocol (SIP)</title>
<author initials='J.' surname='Peterson' fullname='J. Peterson'><organization /></author>
<author initials='C.' surname='Jennings' fullname='C. Jennings'><organization /></author>
<date year='2006' month='August' />
<abstract><t>The existing security mechanisms in the Session Initiation Protocol (SIP) are inadequate for cryptographically assuring the identity of the end users that originate SIP requests, especially in an interdomain context.  This document defines a mechanism for securely identifying originators of SIP messages.  It does so by defining two new SIP header fields, Identity, for conveying a signature used for validating the identity, and Identity-Info, for conveying a reference to the certificate of the signer.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4474'/>
<seriesInfo name='DOI' value='10.17487/RFC4474'/>
</reference>



<reference  anchor="RFC4555" target='https://www.rfc-editor.org/info/rfc4555'>
<front>
<title>IKEv2 Mobility and Multihoming Protocol (MOBIKE)</title>
<author initials='P.' surname='Eronen' fullname='P. Eronen'><organization /></author>
<date year='2006' month='June' />
<abstract><t>This document describes the MOBIKE protocol, a mobility and multihoming extension to Internet Key Exchange (IKEv2).  MOBIKE allows the IP addresses associated with IKEv2 and tunnel mode IPsec Security Associations to change.  A mobile Virtual Private Network (VPN) client could use MOBIKE to keep the connection with the VPN gateway active while moving from one address to another.  Similarly, a multihomed host could use MOBIKE to move the traffic to a different interface if, for instance, the one currently being used stops working.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4555'/>
<seriesInfo name='DOI' value='10.17487/RFC4555'/>
</reference>



<reference  anchor="RFC5246" target='https://www.rfc-editor.org/info/rfc5246'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
<author initials='T.' surname='Dierks' fullname='T. Dierks'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2008' month='August' />
<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="RFC5723" target='https://www.rfc-editor.org/info/rfc5723'>
<front>
<title>Internet Key Exchange Protocol Version 2 (IKEv2) Session Resumption</title>
<author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<date year='2010' month='January' />
<abstract><t>The Internet Key Exchange version 2 (IKEv2) protocol has a certain computational and communication overhead with respect to the number of round trips required and the cryptographic operations involved. In remote access situations, the Extensible Authentication Protocol (EAP) is used for authentication, which adds several more round trips and consequently latency.</t><t>To re-establish security associations (SAs) upon a failure recovery condition is time consuming especially when an IPsec peer (such as a VPN gateway) needs to re-establish a large number of SAs with various endpoints.  A high number of concurrent sessions might cause additional problems for an IPsec peer during SA re-establishment.</t><t>In order to avoid the need to re-run the key exchange protocol from scratch, it would be useful to provide an efficient way to resume an IKE/IPsec session.  This document proposes an extension to IKEv2 that allows a client to re-establish an IKE SA with a gateway in a highly efficient manner, utilizing a previously established IKE SA.</t><t>A client can reconnect to a gateway from which it was disconnected. The proposed approach encodes partial IKE state into an opaque ticket, which can be stored on the client or in a centralized store, and is later made available to the IKEv2 responder for re-authentication.  We use the term ticket to refer to the opaque data that is created by the IKEv2 responder.  This document does not specify the format of the ticket but examples are provided.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5723'/>
<seriesInfo name='DOI' value='10.17487/RFC5723'/>
</reference>



<reference  anchor="RFC5763" target='https://www.rfc-editor.org/info/rfc5763'>
<front>
<title>Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)</title>
<author initials='J.' surname='Fischl' fullname='J. Fischl'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2010' month='May' />
<abstract><t>This document specifies how to use the Session Initiation Protocol (SIP) to establish a Secure Real-time Transport Protocol (SRTP) security context using the Datagram Transport Layer Security (DTLS) protocol.  It describes a mechanism of transporting a fingerprint attribute in the Session Description Protocol (SDP) that identifies the key that will be presented during the DTLS handshake.  The key exchange travels along the media path as opposed to the signaling path.  The SIP Identity mechanism can be used to protect the integrity of the fingerprint attribute from modification by intermediate proxies.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5763'/>
<seriesInfo name='DOI' value='10.17487/RFC5763'/>
</reference>



<reference  anchor="RFC5764" target='https://www.rfc-editor.org/info/rfc5764'>
<front>
<title>Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)</title>
<author initials='D.' surname='McGrew' fullname='D. McGrew'><organization /></author>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2010' month='May' />
<abstract><t>This document describes a Datagram Transport Layer Security (DTLS) extension to establish keys for Secure RTP (SRTP) and Secure RTP Control Protocol (SRTCP) flows.  DTLS keying happens on the media path, independent of any out-of-band signalling channel present. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5764'/>
<seriesInfo name='DOI' value='10.17487/RFC5764'/>
</reference>



<reference  anchor="RFC5869" target='https://www.rfc-editor.org/info/rfc5869'>
<front>
<title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
<author initials='H.' surname='Krawczyk' fullname='H. Krawczyk'><organization /></author>
<author initials='P.' surname='Eronen' fullname='P. Eronen'><organization /></author>
<date year='2010' month='May' />
<abstract><t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications.  The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions.  This document is not an Internet  Standards Track specification; it is published for informational  purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='5869'/>
<seriesInfo name='DOI' value='10.17487/RFC5869'/>
</reference>



<reference  anchor="RFC5925" target='https://www.rfc-editor.org/info/rfc5925'>
<front>
<title>The TCP Authentication Option</title>
<author initials='J.' surname='Touch' fullname='J. Touch'><organization /></author>
<author initials='A.' surname='Mankin' fullname='A. Mankin'><organization /></author>
<author initials='R.' surname='Bonica' fullname='R. Bonica'><organization /></author>
<date year='2010' month='June' />
<abstract><t>This document specifies the TCP Authentication Option (TCP-AO), which obsoletes the TCP MD5 Signature option of RFC 2385 (TCP MD5).  TCP-AO specifies the use of stronger Message Authentication Codes (MACs), protects against replays even for long-lived TCP connections, and provides more details on the association of security with TCP connections than TCP MD5.  TCP-AO is compatible with either a static Master Key Tuple (MKT) configuration or an external, out-of-band MKT management mechanism; in either case, TCP-AO also protects connections when using the same MKT across repeated instances of a connection, using traffic keys derived from the MKT, and coordinates MKT changes between endpoints.  The result is intended to support current infrastructure uses of TCP MD5, such as to protect long-lived connections (as used, e.g., in BGP and LDP), and to support a larger set of MACs with minimal other system and operational changes.  TCP-AO uses a different option identifier than TCP MD5, even though TCP-AO and TCP MD5 are never permitted to be used simultaneously.  TCP-AO supports IPv6, and is fully compatible with the proposed requirements for the replacement of TCP MD5.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5925'/>
<seriesInfo name='DOI' value='10.17487/RFC5925'/>
</reference>



<reference  anchor="RFC6066" target='https://www.rfc-editor.org/info/rfc6066'>
<front>
<title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
<author initials='D.' surname='Eastlake 3rd' fullname='D. Eastlake 3rd'><organization /></author>
<date year='2011' month='January' />
<abstract><t>This document provides specifications for existing TLS extensions.  It is a companion document for RFC 5246, &quot;The Transport Layer Security (TLS) Protocol Version 1.2&quot;.  The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6066'/>
<seriesInfo name='DOI' value='10.17487/RFC6066'/>
</reference>



<reference  anchor="RFC6189" target='https://www.rfc-editor.org/info/rfc6189'>
<front>
<title>ZRTP: Media Path Key Agreement for Unicast Secure RTP</title>
<author initials='P.' surname='Zimmermann' fullname='P. Zimmermann'><organization /></author>
<author initials='A.' surname='Johnston' fullname='A. Johnston' role='editor'><organization /></author>
<author initials='J.' surname='Callas' fullname='J. Callas'><organization /></author>
<date year='2011' month='April' />
<abstract><t>This document defines ZRTP, a protocol for media path Diffie-Hellman exchange to agree on a session key and parameters for establishing unicast Secure Real-time Transport Protocol (SRTP) sessions for Voice over IP (VoIP) applications.  The ZRTP protocol is media path keying because it is multiplexed on the same port as RTP and does not require support in the signaling protocol.  ZRTP does not assume a Public Key Infrastructure (PKI) or require the complexity of certificates in end devices.  For the media session, ZRTP provides confidentiality, protection against man-in-the-middle (MiTM) attacks, and, in cases where the signaling protocol provides end-to-end integrity protection, authentication.  ZRTP can utilize a Session Description Protocol (SDP) attribute to provide discovery and authentication through the signaling channel.  To provide best effort SRTP, ZRTP utilizes normal RTP/AVP (Audio-Visual Profile) profiles. ZRTP secures media sessions that include a voice media stream and can also secure media sessions that do not include voice by using an optional digital signature.  This document is not an Internet  Standards Track specification; it is published for informational purposes.</t></abstract>
</front>
<seriesInfo name='RFC' value='6189'/>
<seriesInfo name='DOI' value='10.17487/RFC6189'/>
</reference>



<reference  anchor="RFC6347" target='https://www.rfc-editor.org/info/rfc6347'>
<front>
<title>Datagram Transport Layer Security Version 1.2</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<author initials='N.' surname='Modadugu' fullname='N. Modadugu'><organization /></author>
<date year='2012' month='January' />
<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="RFC7250" target='https://www.rfc-editor.org/info/rfc7250'>
<front>
<title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
<author initials='P.' surname='Wouters' fullname='P. Wouters' role='editor'><organization /></author>
<author initials='H.' surname='Tschofenig' fullname='H. Tschofenig' role='editor'><organization /></author>
<author initials='J.' surname='Gilmore' fullname='J. Gilmore'><organization /></author>
<author initials='S.' surname='Weiler' fullname='S. Weiler'><organization /></author>
<author initials='T.' surname='Kivinen' fullname='T. Kivinen'><organization /></author>
<date year='2014' month='June' />
<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="RFC7296" target='https://www.rfc-editor.org/info/rfc7296'>
<front>
<title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
<author initials='C.' surname='Kaufman' fullname='C. Kaufman'><organization /></author>
<author initials='P.' surname='Hoffman' fullname='P. Hoffman'><organization /></author>
<author initials='Y.' surname='Nir' fullname='Y. Nir'><organization /></author>
<author initials='P.' surname='Eronen' fullname='P. Eronen'><organization /></author>
<author initials='T.' surname='Kivinen' fullname='T. Kivinen'><organization /></author>
<date year='2014' month='October' />
<abstract><t>This document describes version 2 of the Internet Key Exchange (IKE) protocol.  IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs).  This document obsoletes RFC 5996, and includes all of the errata for it.  It advances IKEv2 to be an Internet Standard.</t></abstract>
</front>
<seriesInfo name='STD' value='79'/>
<seriesInfo name='RFC' value='7296'/>
<seriesInfo name='DOI' value='10.17487/RFC7296'/>
</reference>



<reference  anchor="RFC7301" target='https://www.rfc-editor.org/info/rfc7301'>
<front>
<title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
<author initials='S.' surname='Friedl' fullname='S. Friedl'><organization /></author>
<author initials='A.' surname='Popov' fullname='A. Popov'><organization /></author>
<author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author>
<author initials='E.' surname='Stephan' fullname='E. Stephan'><organization /></author>
<date year='2014' month='July' />
<abstract><t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t></abstract>
</front>
<seriesInfo name='RFC' value='7301'/>
<seriesInfo name='DOI' value='10.17487/RFC7301'/>
</reference>



<reference  anchor="RFC7539" target='https://www.rfc-editor.org/info/rfc7539'>
<front>
<title>ChaCha20 and Poly1305 for IETF Protocols</title>
<author initials='Y.' surname='Nir' fullname='Y. Nir'><organization /></author>
<author initials='A.' surname='Langley' fullname='A. Langley'><organization /></author>
<date year='2015' month='May' />
<abstract><t>This document defines the ChaCha20 stream cipher as well as the use of the Poly1305 authenticator, both as stand-alone algorithms and as a &quot;combined mode&quot;, or Authenticated Encryption with Associated Data (AEAD) algorithm.</t><t>This document does not introduce any new crypto, but is meant to serve as a stable reference and an implementation guide.  It is a product of the Crypto Forum Research Group (CFRG).</t></abstract>
</front>
<seriesInfo name='RFC' value='7539'/>
<seriesInfo name='DOI' value='10.17487/RFC7539'/>
</reference>



<reference  anchor="RFC8095" target='https://www.rfc-editor.org/info/rfc8095'>
<front>
<title>Services Provided by IETF Transport Protocols and Congestion Control Mechanisms</title>
<author initials='G.' surname='Fairhurst' fullname='G. Fairhurst' role='editor'><organization /></author>
<author initials='B.' surname='Trammell' fullname='B. Trammell' role='editor'><organization /></author>
<author initials='M.' surname='Kuehlewind' fullname='M. Kuehlewind' role='editor'><organization /></author>
<date year='2017' month='March' />
<abstract><t>This document describes, surveys, and classifies the protocol mechanisms provided by existing IETF protocols, as background for determining a common set of transport services.  It examines the Transmission Control Protocol (TCP), Multipath TCP, the Stream Control Transmission Protocol (SCTP), the User Datagram Protocol (UDP), UDP-Lite, the Datagram Congestion Control Protocol (DCCP), the Internet Control Message Protocol (ICMP), the Real-Time Transport Protocol (RTP), File Delivery over Unidirectional Transport / Asynchronous Layered Coding (FLUTE/ALC) for Reliable Multicast, NACK- Oriented Reliable Multicast (NORM), Transport Layer Security (TLS), Datagram TLS (DTLS), and the Hypertext Transport Protocol (HTTP), when HTTP is used as a pseudotransport.  This survey provides background for the definition of transport services within the TAPS working group.</t></abstract>
</front>
<seriesInfo name='RFC' value='8095'/>
<seriesInfo name='DOI' value='10.17487/RFC8095'/>
</reference>



<reference  anchor="RFC8229" target='https://www.rfc-editor.org/info/rfc8229'>
<front>
<title>TCP Encapsulation of IKE and IPsec Packets</title>
<author initials='T.' surname='Pauly' fullname='T. Pauly'><organization /></author>
<author initials='S.' surname='Touati' fullname='S. Touati'><organization /></author>
<author initials='R.' surname='Mantha' fullname='R. Mantha'><organization /></author>
<date year='2017' month='August' />
<abstract><t>This document describes a method to transport Internet Key Exchange Protocol (IKE) and IPsec packets over a TCP connection for traversing network middleboxes that may block IKE negotiation over UDP.  This method, referred to as &quot;TCP encapsulation&quot;, involves sending both IKE packets for Security Association establishment and Encapsulating Security Payload (ESP) packets over a TCP connection.  This method is intended to be used as a fallback option when IKE cannot be negotiated over UDP.</t></abstract>
</front>
<seriesInfo name='RFC' value='8229'/>
<seriesInfo name='DOI' value='10.17487/RFC8229'/>
</reference>



<reference anchor="I-D.ietf-tls-dtls13">
<front>
<title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>

<author initials='E' surname='Rescorla' fullname='Eric Rescorla'>
    <organization />
</author>

<author initials='H' surname='Tschofenig' fullname='Hannes Tschofenig'>
    <organization />
</author>

<author initials='N' surname='Modadugu' fullname='Nagendra Modadugu'>
    <organization />
</author>

<date month='July' day='2' year='2018' />

<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.  The DTLS 1.3 protocol is intentionally based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees.  Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tls-dtls13-28' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-dtls13-28.txt' />
</reference>



<reference anchor="I-D.ietf-tls-dtls-connection-id">
<front>
<title>The Datagram Transport Layer Security (DTLS) Connection Identifier</title>

<author initials='E' surname='Rescorla' fullname='Eric Rescorla'>
    <organization />
</author>

<author initials='H' surname='Tschofenig' fullname='Hannes Tschofenig'>
    <organization />
</author>

<author initials='T' surname='Fossati' fullname='Thomas Fossati'>
    <organization />
</author>

<author initials='T' surname='Gondrom' fullname='Tobias Gondrom'>
    <organization />
</author>

<date month='July' day='2' year='2018' />

<abstract><t>This document specifies the Connection ID construct for the Datagram Transport Layer Security (DTLS) protocol.  A Connection ID is an identifier carried in the record layer header that gives the recipient additional information for selecting the appropriate security association.  In "classical" DTLS, selecting a security association of an incoming DTLS record is accomplished with the help of the 5-tuple.  If the source IP address and/or source port changes during the lifetime of an ongoing DTLS session then the receiver will be unable to locate the correct security context.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tls-dtls-connection-id-01' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-dtls-connection-id-01.txt' />
</reference>



<reference anchor="I-D.ietf-rtcweb-security-arch">
<front>
<title>WebRTC Security Architecture</title>

<author initials='E' surname='Rescorla' fullname='Eric Rescorla'>
    <organization />
</author>

<date month='July' day='17' year='2018' />

<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='Internet-Draft' value='draft-ietf-rtcweb-security-arch-15' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-rtcweb-security-arch-15.txt' />
</reference>



<reference anchor="I-D.ietf-tcpinc-tcpcrypt">
<front>
<title>Cryptographic protection of TCP Streams (tcpcrypt)</title>

<author initials='A' surname='Bittau' fullname='Andrea Bittau'>
    <organization />
</author>

<author initials='D' surname='Giffin' fullname='Daniel Giffin'>
    <organization />
</author>

<author initials='M' surname='Handley' fullname='Mark Handley'>
    <organization />
</author>

<author initials='D' surname='Mazieres' fullname='David Mazieres'>
    <organization />
</author>

<author initials='Q' surname='Slack' fullname='Quinn Slack'>
    <organization />
</author>

<author initials='E' surname='Smith' fullname='Eric Smith'>
    <organization />
</author>

<date month='September' day='6' year='2018' />

<abstract><t>This document specifies tcpcrypt, a TCP encryption protocol designed for use in conjunction with the TCP Encryption Negotiation Option (TCP-ENO).  Tcpcrypt coexists with middleboxes by tolerating resegmentation, NATs, and other manipulations of the TCP header.  The protocol is self-contained and specifically tailored to TCP implementations, which often reside in kernels or other environments in which large external software dependencies can be undesirable. Because the size of TCP options is limited, the protocol requires one additional one-way message latency to perform key exchange before application data can be transmitted.  However, the extra latency can be avoided between two hosts that have recently established a previous tcpcrypt connection.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tcpinc-tcpcrypt-13' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tcpinc-tcpcrypt-13.txt' />
</reference>



<reference anchor="I-D.ietf-tcpinc-tcpeno">
<front>
<title>TCP-ENO: Encryption Negotiation Option</title>

<author initials='A' surname='Bittau' fullname='Andrea Bittau'>
    <organization />
</author>

<author initials='D' surname='Giffin' fullname='Daniel Giffin'>
    <organization />
</author>

<author initials='M' surname='Handley' fullname='Mark Handley'>
    <organization />
</author>

<author initials='D' surname='Mazieres' fullname='David Mazieres'>
    <organization />
</author>

<author initials='E' surname='Smith' fullname='Eric Smith'>
    <organization />
</author>

<date month='June' day='29' year='2018' />

<abstract><t>Despite growing adoption of TLS, a significant fraction of TCP traffic on the Internet remains unencrypted.  The persistence of unencrypted traffic can be attributed to at least two factors. First, some legacy protocols lack a signaling mechanism (such as a "STARTTLS" command) by which to convey support for encryption, making incremental deployment impossible.  Second, legacy applications themselves cannot always be upgraded, requiring a way to implement encryption transparently entirely within the transport layer.  The TCP Encryption Negotiation Option (TCP-ENO) addresses both of these problems through a new TCP option-kind providing out-of-band, fully backward-compatible negotiation of encryption.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tcpinc-tcpeno-19' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tcpinc-tcpeno-19.txt' />
</reference>



<reference anchor="I-D.ietf-quic-transport">
<front>
<title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>

<author initials='J' surname='Iyengar' fullname='Jana Iyengar'>
    <organization />
</author>

<author initials='M' surname='Thomson' fullname='Martin Thomson'>
    <organization />
</author>

<date month='October' day='3' year='2018' />

<abstract><t>This document defines the core of the QUIC transport protocol.  This document describes connection establishment, packet format, multiplexing, and reliability.  Accompanying documents describe the cryptographic handshake and loss detection.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-quic-transport-15' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-transport-15.txt' />
</reference>



<reference anchor="I-D.ietf-quic-tls">
<front>
<title>Using Transport Layer Security (TLS) to Secure QUIC</title>

<author initials='M' surname='Thomson' fullname='Martin Thomson'>
    <organization />
</author>

<author initials='S' surname='Turner' fullname='Sean Turner'>
    <organization />
</author>

<date month='October' day='4' year='2018' />

<abstract><t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.  Note to Readers  Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org), which is archived at https://mailarchive.ietf.org/arch/search/?email_list=quic [1].  Working Group information can be found at https://github.com/quicwg [2]; source code and issues list for this draft can be found at https://github.com/quicwg/base-drafts/labels/-tls [3].</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-quic-tls-15' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-quic-tls-15.txt' />
</reference>



<reference anchor="I-D.ietf-tls-tls13">
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>

<author initials='E' surname='Rescorla' fullname='Eric Rescorla'>
    <organization />
</author>

<date month='March' day='20' 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.  This document updates RFCs 4492, 5705, and 6066 and it obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tls-tls13-28' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-tls13-28.txt' />
</reference>



<reference anchor="I-D.ietf-taps-arch">
<front>
<title>An Architecture for Transport Services</title>

<author initials='T' surname='Pauly' fullname='Tommy Pauly'>
    <organization />
</author>

<author initials='B' surname='Trammell' fullname='Brian Trammell'>
    <organization />
</author>

<author initials='A' surname='Brunstrom' fullname='Anna Brunstrom'>
    <organization />
</author>

<author initials='G' surname='Fairhurst' fullname='Gorry Fairhurst'>
    <organization />
</author>

<author initials='C' surname='Perkins' fullname='Colin Perkins'>
    <organization />
</author>

<author initials='P' surname='Tiesel' fullname='Philipp Tiesel'>
    <organization />
</author>

<author initials='C' surname='Wood' fullname='Christopher Wood'>
    <organization />
</author>

<date month='October' day='22' year='2018' />

<abstract><t>This document provides an overview of the architecture of Transport Services, a system for exposing the features of transport protocols to applications.  This architecture serves as a basis for Application Programming Interfaces (APIs) and implementations that provide flexible transport networking services.  It defines the common set of terminology and concepts to be used in more detailed discussion of Transport Services.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-taps-arch-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-taps-arch-02.txt' />
</reference>


<reference anchor="BLAKE2" >
  <front>
    <title>BLAKE2 -- simpler, smaller, fast as MD5</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="Noise" >
  <front>
    <title>The Noise Protocol Framework</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="WireGuard" >
  <front>
    <title>WireGuard -- Next Generation Kernel Network Tunnel</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="ALTS" >
  <front>
    <title>Application Layer Transport Security</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="SIGMA" >
  <front>
    <title>SIGMA -- The ‘SIGn-and-MAc’ Approach to Authenticated Diffie-Hellman and Its Use in the IKE-Protocols</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="CurveCP" >
  <front>
    <title>CurveCP -- Usable security for the Internet</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="Curve25519" >
  <front>
    <title>Curve25519 - new Diffie-Hellman speed records</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="MinimalT" >
  <front>
    <title>MinimaLT -- Minimal-latency Networking Through Better Security</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>




<reference anchor="I-D.ietf-tls-record-limit">
<front>
<title>Record Size Limit Extension for Transport Layer Security (TLS)</title>

<author initials='M' surname='Thomson' fullname='Martin Thomson'>
    <organization />
</author>

<date month='May' day='17' year='2018' />

<abstract><t>An extension to Transport Layer Security (TLS) is defined that allows endpoints to negotiate the maximum size of protected records that each will send the other.  This replaces the maximum fragment length extension defined in RFC 6066.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-tls-record-limit-03' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-tls-record-limit-03.txt' />
</reference>



<reference anchor="I-D.ietf-taps-interface">
<front>
<title>An Abstract Application Layer Interface to Transport Services</title>

<author initials='B' surname='Trammell' fullname='Brian Trammell'>
    <organization />
</author>

<author initials='M' surname='Welzl' fullname='Michael Welzl'>
    <organization />
</author>

<author initials='T' surname='Enghardt' fullname='Theresa Enghardt'>
    <organization />
</author>

<author initials='G' surname='Fairhurst' fullname='Gorry Fairhurst'>
    <organization />
</author>

<author initials='M' surname='Kuehlewind' fullname='Mirja Kuehlewind'>
    <organization />
</author>

<author initials='C' surname='Perkins' fullname='Colin Perkins'>
    <organization />
</author>

<author initials='P' surname='Tiesel' fullname='Philipp Tiesel'>
    <organization />
</author>

<author initials='C' surname='Wood' fullname='Christopher Wood'>
    <organization />
</author>

<date month='October' day='22' year='2018' />

<abstract><t>This document describes an abstract programming interface to the transport layer, following the Transport Services Architecture.  It supports the asynchronous, atomic transmission of messages over transport protocols and network paths dynamically selected at runtime.  It is intended to replace the traditional BSD sockets API as the lowest common denominator interface to the transport layer, in an environment where endpoints have multiple interfaces and potential transport protocols to select from.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-taps-interface-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-taps-interface-02.txt' />
</reference>




    </references>




  </back>

<!-- ##markdown-source:
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

-->

</rfc>

