| rfc8922xml2.original.xml | rfc8922.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
| -ietf-taps-transport-security-12" number="8922" obsoletes="" updates="" submissi | ||||
| onType="IETF" category="info" consensus="true" xml:lang="en" tocInclude="true" s | ||||
| ortRefs="true" symRefs="true" version="3"> | ||||
| <front> | ||||
| <title abbrev="Transport Security Survey">A Survey of the Interaction | ||||
| between Security Protocols and Transport Services</title> | ||||
| <seriesInfo name="RFC" value="8922"/> | ||||
| <author initials="T." surname="Enghardt" fullname="Theresa Enghardt"> | ||||
| <organization>TU Berlin</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Marchstr. 23</street> | ||||
| <city>Berlin</city> | ||||
| <code>10587</code> | ||||
| <country>Germany</country> | ||||
| </postal> | ||||
| <email>ietf@tenghardt.net</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="T." surname="Pauly" fullname="Tommy Pauly"> | ||||
| <organization>Apple Inc.</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>One Apple Park Way</street> | ||||
| <city>Cupertino</city><region>California</region><code>95014</code> | ||||
| <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</city><code>G12 8QQ</code> | ||||
| <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</city><region>MA</region><code>02144</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>krose@krose.org</email> | ||||
| </address> | ||||
| </author> | ||||
| <author initials="C." surname="Wood" fullname="Christopher A. Wood"> | ||||
| <organization>Cloudflare</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>101 Townsend St</street> | ||||
| <city>San Francisco</city> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>caw@heapingbits.net</email> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2020" month="October"/> | ||||
| <keyword>Transport Protocols</keyword> | ||||
| <keyword>Transport Security</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 by describing the interfaces | ||||
| required to add security protocols. 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 Transport Services system | ||||
| may need to support.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <middle> | ||||
| <section anchor="introduction" numbered="true" toc="default"> | ||||
| <name>Introduction</name> | ||||
| <t>Services and features provided by transport protocols have been | ||||
| cataloged in <xref target="RFC8095" format="default"/>. This document | ||||
| supplements that work by surveying commonly used and notable network | ||||
| security protocols, and identifying the interfaces between these | ||||
| protocols and both transport protocols and applications. It examines | ||||
| Transport Layer Security (TLS), Datagram Transport Layer Security | ||||
| (DTLS), IETF QUIC, Google QUIC (gQUIC), tcpcrypt, Internet Protocol | ||||
| Security (IPsec), Secure Real-time Transport Protocol (SRTP) with DTLS, | ||||
| WireGuard, CurveCP, and MinimaLT. For each protocol, this document | ||||
| provides a brief description. Then, it describes the interfaces between | ||||
| these protocols and transports in <xref target="transport-interface" | ||||
| format="default"/> and the interfaces between these protocols and | ||||
| applications in <xref target="application-interface" | ||||
| format="default"/>.</t> | ||||
| <t>A Transport Services system exposes an interface for applications to | ||||
| access various (secure) transport protocol features. The security | ||||
| protocols included in this survey represent a superset of functionality | ||||
| and features a Transport Services system may need to support both | ||||
| internally and externally (via an API) for applications <xref | ||||
| target="I-D.ietf-taps-arch" format="default"/>. Ubiquitous IETF | ||||
| protocols such as (D)TLS, as well as non-standard protocols such as | ||||
| gQUIC, are 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 implications for and limitations on | ||||
| application usage. In contrast, protocols such as secure shell (SSH) | ||||
| <xref target="RFC4253" format="default"/>, GRE <xref target="RFC2890" | ||||
| format="default"/>, the Layer 2 Tunneling Protocol (L2TP) <xref | ||||
| target="RFC5641" format="default"/>, and Application Layer Transport | ||||
| Security (ALTS) <xref target="ALTS" | ||||
| format="default"/> are omitted since they do not provide interfaces | ||||
| deemed unique.</t> | ||||
| <t>Authentication-only protocols such as the TCP Authentication Option | ||||
| (TCP-AO) <xref target="RFC5925" format="default"/> and the IPsec | ||||
| Authentication Header (AH) <xref target="RFC4302" format="default"/> are | ||||
| excluded from this survey. TCP-AO adds authentication to long-lived TCP | ||||
| connections, e.g., replay protection with per-packet Message | ||||
| Authentication Codes. (TCP-AO obsoletes TCP MD5 "signature" options | ||||
| specified in <xref target="RFC2385" format="default"/>.) One primary use | ||||
| case of TCP-AO is for protecting BGP connections. Similarly, AH adds | ||||
| per-datagram authentication and integrity, along with replay | ||||
| protection. Despite these improvements, neither protocol sees general | ||||
| use and both lack critical properties important for emergent transport | ||||
| security protocols, such as confidentiality and privacy | ||||
| protections. Such protocols are thus omitted from this survey.</t> | ||||
| <t>This document only surveys point-to-point protocols; multicast protocol | ||||
| s are out of scope.</t> | ||||
| <section anchor="goals" numbered="true" toc="default"> | ||||
| <name>Goals</name> | ||||
| <t>This survey is intended to help identify the most common interface | ||||
| surfaces between security protocols and transport protocols, and | ||||
| between security protocols and applications.</t> | ||||
| <t>One of the goals of the Transport Services effort is to define a | ||||
| common interface for using transport protocols that allows software | ||||
| using transport protocols to easily adopt new protocols that provide | ||||
| similar feature sets. The survey of the dependencies security | ||||
| protocols have upon transport protocols can guide implementations in | ||||
| determining which transport protocols are appropriate to be able to | ||||
| use beneath a given security protocol. For example, a security | ||||
| protocol that expects to run over a reliable stream of bytes, like | ||||
| TLS, restricts the set of transport protocols that can be used to | ||||
| those that offer a reliable stream of bytes.</t> | ||||
| <t>Defining the common interfaces that security protocols provide to | ||||
| applications also allows interfaces to be designed in a way that | ||||
| common functionality can use the same APIs. For example, many security | ||||
| protocols that provide authentication let the application be involved | ||||
| in peer identity validation. Any interface to use a secure transport | ||||
| protocol stack thus needs to allow applications to perform this action | ||||
| during connection establishment.</t> | ||||
| </section> | ||||
| <section anchor="non-goals" numbered="true" toc="default"> | ||||
| <name>Non-goals</name> | ||||
| <t>While this survey provides similar analysis to that which was perform | ||||
| ed for transport protocols in <xref target="RFC8095" format="default"/>, | ||||
| it is important to distinguish that the use of security protocols requires more | ||||
| consideration.</t> | ||||
| <t>It is not a goal to allow software implementations to automatically | ||||
| switch between different security protocols, even where their | ||||
| interfaces to transport and applications are equivalent. Even between | ||||
| versions, security protocols have subtly different guarantees and | ||||
| vulnerabilities. Thus, any implementation needs to only use the set of | ||||
| protocols and algorithms that are requested by applications or by a | ||||
| system policy.</t> | ||||
| <t>Different security protocols also can use incompatible notions of | ||||
| peer identity and authentication, and cryptographic options. It is not | ||||
| a goal to identify a common set of representations for these | ||||
| concepts.</t> | ||||
| <t>The protocols surveyed in this document represent a superset of | ||||
| functionality and features a Transport Services system may need to | ||||
| support. It does not list all transport protocols that a Transport | ||||
| Services system may need to implement, nor does it mandate that a | ||||
| Transport Service system implement any particular protocol.</t> | ||||
| <t>A Transport Services system may implement any secure transport | ||||
| protocol that provides the described features. In doing so, it may | ||||
| need to expose an interface to the application to configure these | ||||
| features.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="terminology" numbered="true" toc="default"> | ||||
| <name>Terminology</name> | ||||
| <t>The following terms are used throughout this document to describe the | ||||
| roles and interactions of transport security protocols (some of which | ||||
| are also defined in <xref target="RFC8095" format="default"/>):</t> | ||||
| <dl> | ||||
| <dt>Transport Feature:</dt><dd>a specific end-to-end feature that the | ||||
| transport layer provides to an application. Examples include | ||||
| confidentiality, reliable delivery, ordered delivery, and | ||||
| message-versus-stream orientation.</dd> | ||||
| <dt>Transport Service:</dt><dd>a set of Transport Features, without an | ||||
| association to any given framing protocol, that provides | ||||
| functionality to an application.</dd> | ||||
| <dt>Transport Services system:</dt><dd>a software component that exposes | ||||
| an | ||||
| interface to different Transport Services to an application.</dd> | ||||
| <dt>Transport Protocol:</dt><dd>an implementation that provides one or m | ||||
| ore | ||||
| different Transport Services using a specific framing and header | ||||
| format on the wire. A Transport Protocol services an application, | ||||
| whether directly or in conjunction with a security protocol.</dd> | ||||
| <dt>Application:</dt><dd>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.</dd> | ||||
| <dt>Security Protocol:</dt><dd>a defined network protocol that implement | ||||
| s one | ||||
| or more security features, such as authentication, encryption, key | ||||
| generation, session resumption, and privacy. Security protocols may be | ||||
| used alongside transport protocols, and in combination with other | ||||
| security protocols when appropriate.</dd> | ||||
| <dt>Handshake Protocol:</dt><dd>a protocol that enables peers to validat | ||||
| e each | ||||
| other and to securely establish shared cryptographic context.</dd> | ||||
| <dt>Record:</dt><dd>framed protocol messages.</dd> | ||||
| <dt>Record Protocol:</dt><dd>a security protocol that allows data to be | ||||
| divided into manageable blocks and protected using shared | ||||
| cryptographic context.</dd> | ||||
| <dt>Session:</dt><dd>an ephemeral security association between | ||||
| applications.</dd> | ||||
| <dt>Connection:</dt><dd>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.</dd> | ||||
| <dt>Peer:</dt><dd>an endpoint application party to a session.</dd> | ||||
| <dt>Client:</dt><dd>the peer responsible for initiating a session.</dd> | ||||
| <dt>Server:</dt><dd>the peer responsible for responding to a session ini | ||||
| tiation.</dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="transport-security-protocol-descriptions" numbered="true" t | ||||
| oc="default"> | ||||
| <name>Transport Security Protocol Descriptions</name> | ||||
| <t>This section contains brief transport and security descriptions of | ||||
| various security protocols currently used to protect data being sent | ||||
| over a network. These protocols are grouped based on where in the | ||||
| protocol stack they are implemented, which influences which parts of a | ||||
| packet they protect: Generic application payload, application payload | ||||
| for specific application-layer protocols, both application payload and | ||||
| transport headers, or entire IP packets.</t> | ||||
| <t>Note that not all security protocols can be easily categorized, e.g., | ||||
| as some protocols can be used in different ways or in combination with | ||||
| other protocols. One major reason for this is that channel security | ||||
| protocols often consist of two components:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>A handshake protocol, which is responsible for negotiating parameter | ||||
| s, authenticating the | ||||
| endpoints, and establishing shared keys.</li> | ||||
| <li>A record protocol, which is used to encrypt traffic using keys and p | ||||
| arameters provided by the | ||||
| handshake protocol.</li> | ||||
| </ul> | ||||
| <t>For some protocols, such as tcpcrypt, these two components are | ||||
| tightly integrated. In contrast, for IPsec, these components are | ||||
| implemented in separate protocols: AH and the Encapsulating Security Paylo | ||||
| ad | ||||
| (ESP) are record protocols, which can use keys supplied by the handshake | ||||
| protocol Internet Key Exchange Protocol Version 2 (IKEv2), by other | ||||
| handshake protocols, or by manual configuration. Moreover, some | ||||
| protocols can be used in different ways: While the base TLS protocol as | ||||
| defined in <xref target="RFC8446" format="default"/> has an integrated | ||||
| handshake and record protocol, TLS or DTLS can also be used to negotiate | ||||
| keys for other protocols, as in DTLS-SRTP, or the handshake protocol can | ||||
| be used with a separate record layer, as in QUIC <xref | ||||
| target="I-D.ietf-quic-transport" format="default"/>.</t> | ||||
| <section anchor="application-payload-security-protocols" numbered="true" t | ||||
| oc="default"> | ||||
| <name>Application Payload Security Protocols</name> | ||||
| <t>The following protocols provide security that protects application pa | ||||
| yloads sent over a | ||||
| transport. They do not specifically protect any headers used for transport-layer | ||||
| functionality.</t> | ||||
| <section anchor="tls" numbered="true" toc="default"> | ||||
| <name>TLS</name> | ||||
| <t>TLS (Transport Layer Security) <xref target="RFC8446" | ||||
| format="default"/> 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 and, once the handshake has sufficiently progressed, | ||||
| encrypt data from one peer to the other. This data may contain | ||||
| handshake messages or raw application data.</t> | ||||
| </section> | ||||
| <section anchor="dtls" numbered="true" toc="default"> | ||||
| <name>DTLS</name> | ||||
| <t>DTLS (Datagram Transport Layer Security) <xref target="RFC6347" | ||||
| format="default"/> <xref target="I-D.ietf-tls-dtls13" | ||||
| format="default"/> is based on TLS, but differs in that it is | ||||
| designed to run over unreliable datagram protocols like UDP instead | ||||
| of TCP. DTLS modifies the protocol to make sure it can still | ||||
| provide equivalent security guarantees to TLS with the exception of | ||||
| order protection/non-replayability. DTLS was designed to be as | ||||
| similar to TLS as possible, so this document assumes that all | ||||
| properties from TLS are carried over except where specified.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="application-specific-security-protocols" numbered="true" | ||||
| toc="default"> | ||||
| <name>Application-Specific Security Protocols</name> | ||||
| <t>The following protocols provide application-specific security by prot | ||||
| ecting | ||||
| application payloads used for specific use cases. Unlike the protocols above, | ||||
| these are not intended for generic application use.</t> | ||||
| <section anchor="secure-rtp" numbered="true" toc="default"> | ||||
| <name>Secure RTP</name> | ||||
| <t>Secure RTP (SRTP) is a profile for RTP that provides confidentialit | ||||
| y, | ||||
| message authentication, and replay protection for RTP data packets | ||||
| and RTP control protocol (RTCP) packets <xref target="RFC3711" format="default"/ | ||||
| >. | ||||
| SRTP provides a record layer only, and requires a separate handshake | ||||
| protocol to provide key agreement and identity management.</t> | ||||
| <t>The commonly used handshake protocol for SRTP is DTLS, in the form | ||||
| of | ||||
| DTLS-SRTP <xref target="RFC5764" format="default"/>. This is an extension to DT | ||||
| LS that negotiates | ||||
| the use of SRTP as the record layer and describes how to export keys | ||||
| for use with SRTP.</t> | ||||
| <t>ZRTP <xref target="RFC6189" format="default"/> is an alternative ke | ||||
| y agreement and identity management | ||||
| protocol for SRTP. ZRTP 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> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="transport-layer-security-protocols" numbered="true" toc=" | ||||
| default"> | ||||
| <name>Transport-Layer Security Protocols</name> | ||||
| <t>The following security protocols provide protection for both applicat | ||||
| ion payloads and | ||||
| headers that are used for Transport Services.</t> | ||||
| <section anchor="quic" numbered="true" toc="default"> | ||||
| <name>IETF QUIC</name> | ||||
| <t>QUIC 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" forma | ||||
| t="default"/> (See <xref target="gquic" format="default"/> for more details). | ||||
| The QUIC transport layer itself provides support for data confidentiality and in | ||||
| tegrity. This requires | ||||
| keys to be derived with a separate handshake protocol. A mapping for QUIC of TLS | ||||
| 1.3 <xref target="I-D.ietf-quic-tls" format="default"/> | ||||
| has been specified to provide this handshake.</t> | ||||
| </section> | ||||
| <section anchor="gquic" numbered="true" toc="default"> | ||||
| <name>Google QUIC</name> | ||||
| <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 anchor="tcpcrypt" numbered="true" toc="default"> | ||||
| <name>tcpcrypt</name> | ||||
| <t>Tcpcrypt <xref target="RFC8548" format="default"/> is a lightweight | ||||
| extension to the TCP protocol for opportunistic encryption. Applications may | ||||
| use tcpcrypt's unique session ID for further application-level authentication. A | ||||
| bsent this authentication, | ||||
| tcpcrypt is vulnerable to active attacks.</t> | ||||
| </section> | ||||
| <section anchor="minimalt" numbered="true" toc="default"> | ||||
| <name>MinimaLT</name> | ||||
| <t>MinimaLT <xref target="MinimaLT" format="default"/> is a UDP-based | ||||
| transport security protocol designed to offer confidentiality, | ||||
| mutual authentication, DoS prevention, and connection mobility. One major | ||||
| goal of the protocol is to leverage existing protocols to obtain server-side con | ||||
| figuration | ||||
| information used to more quickly bootstrap a connection. MinimaLT uses a variant | ||||
| of TCP's | ||||
| congestion control algorithm.</t> | ||||
| </section> | ||||
| <section anchor="curvecp" numbered="true" toc="default"> | ||||
| <name>CurveCP</name> | ||||
| <t>CurveCP <xref target="CurveCP" format="default"/> is a UDP-based | ||||
| transport security that, unlike many other security protocols, is | ||||
| based entirely upon public key algorithms. CurveCP provides its own | ||||
| reliability for application data as part of its protocol.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="packet-security-protocols" numbered="true" toc="default"> | ||||
| <name>Packet Security Protocols</name> | ||||
| <t>The following protocols provide protection for IP packets. These | ||||
| are generally used as tunnels, such as for Virtual Private Networks | ||||
| (VPNs). Often, applications will not interact directly with these | ||||
| protocols. However, applications that implement tunnels will interact | ||||
| directly with these protocols.</t> | ||||
| <section anchor="ipsec" numbered="true" toc="default"> | ||||
| <name>IPsec</name> | ||||
| <t>IKEv2 <xref target="RFC7296" format="default"/> and ESP <xref | ||||
| target="RFC4303" format="default"/> 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> | ||||
| <section anchor="wireguard" numbered="true" toc="default"> | ||||
| <name>WireGuard</name> | ||||
| <t>WireGuard <xref target="WireGuard" format="default"/> is an IP-laye | ||||
| r protocol designed as an alternative to IPsec | ||||
| for certain use cases. It uses UDP to encapsulate IP datagrams between peers. | ||||
| Unlike most transport security protocols, which rely on Public Key Infrastructur | ||||
| e (PKI) | ||||
| for peer authentication, WireGuard authenticates peers using pre-shared public k | ||||
| eys | ||||
| 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, nego | ||||
| tiation, | ||||
| or cryptographic agility.</t> | ||||
| </section> | ||||
| <section anchor="openvpn" numbered="true" toc="default"> | ||||
| <name>OpenVPN</name> | ||||
| <t>OpenVPN <xref target="OpenVPN" format="default"/> is a commonly use | ||||
| d protocol designed as an alternative to | ||||
| IPsec. A major goal of this protocol is to provide a VPN that is simple to | ||||
| configure and works over a variety of transports. OpenVPN encapsulates either | ||||
| IP packets or Ethernet frames within a secure tunnel and can run over either UDP | ||||
| or TCP. | ||||
| For key establishment, OpenVPN can either use TLS as a handshake protocol or use | ||||
| pre-shared keys.</t> | ||||
| </section> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="transport-interface" numbered="true" toc="default"> | ||||
| <name>Transport Dependencies</name> | ||||
| <t>Across the different security protocols listed above, the primary depen | ||||
| dency on transport | ||||
| protocols is the presentation of data: either an unbounded stream of bytes, or f | ||||
| ramed | ||||
| messages. Within protocols that rely on the transport for message framing, most | ||||
| are | ||||
| built to run over transports that inherently provide framing, like UDP, but some | ||||
| also define | ||||
| how their messages can be framed over byte-stream transports.</t> | ||||
| <section anchor="reliable-byte-stream-transports" numbered="true" toc="def | ||||
| ault"> | ||||
| <name>Reliable Byte-Stream Transports</name> | ||||
| <t>The following protocols all depend upon running on a transport protoc | ||||
| ol that provides | ||||
| a reliable, in-order stream of bytes. This is typically TCP.</t> | ||||
| <t>Application Payload Security Protocols:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| </ul> | ||||
| <t>Transport-Layer Security Protocols:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>tcpcrypt</li> | ||||
| </ul> | ||||
| </section> | ||||
| <section anchor="unreliable-datagram-transports" numbered="true" toc="defa | ||||
| ult"> | ||||
| <name>Unreliable Datagram Transports</name> | ||||
| <t>The following protocols all depend on the transport protocol to provi | ||||
| de message framing | ||||
| to encapsulate their data. These protocols are built to run using UDP, and thus | ||||
| do not | ||||
| have any requirement for reliability. Running these protocols over a protocol th | ||||
| at | ||||
| does provide reliability will not break functionality but may lead to multiple l | ||||
| ayers | ||||
| of reliability if the security protocol is encapsulating other transport protoco | ||||
| l traffic.</t> | ||||
| <t>Application Payload Security Protocols:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>DTLS</li> | ||||
| <li>ZRTP</li> | ||||
| <li>SRTP</li> | ||||
| </ul> | ||||
| <t>Transport-Layer Security Protocols:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>QUIC</li> | ||||
| <li>MinimaLT</li> | ||||
| <li>CurveCP</li> | ||||
| </ul> | ||||
| <t>Packet Security Protocols:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>IPsec</li> | ||||
| <li>WireGuard</li> | ||||
| <li>OpenVPN</li> | ||||
| </ul> | ||||
| <section anchor="datagram-protocols-with-defined-byte-stream-mappings" n | ||||
| umbered="true" toc="default"> | ||||
| <name>Datagram Protocols with Defined Byte-Stream Mappings</name> | ||||
| <t>Of the protocols listed above that depend on the transport for mess | ||||
| age framing, some | ||||
| do have well-defined mappings for sending their messages over byte-stream transp | ||||
| orts | ||||
| like TCP.</t> | ||||
| <t>Application Payload Security Protocols:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>DTLS when used as a handshake protocol for SRTP <xref target="RF | ||||
| C7850" format="default"/></li> | ||||
| <li>ZRTP <xref target="RFC6189" format="default"/></li> | ||||
| <li>SRTP <xref target="RFC4571" format="default"/><xref target="RFC3 | ||||
| 711" format="default"/></li> | ||||
| </ul> | ||||
| <t>Packet Security Protocols:</t> | ||||
| <ul spacing="normal"> | ||||
| <li>IPsec <xref target="RFC8229" format="default"/></li> | ||||
| </ul> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="transport-specific-dependencies" numbered="true" toc="def | ||||
| ault"> | ||||
| <name>Transport-Specific Dependencies</name> | ||||
| <t>One protocol surveyed, tcpcrypt, has a direct dependency on a | ||||
| feature in the transport that is needed for its | ||||
| functionality. Specifically, tcpcrypt is designed to run on top of | ||||
| TCP and uses the TCP Encryption Negotiation Option (TCP-ENO) <xref | ||||
| target="RFC8547" format="default"/> to negotiate its protocol | ||||
| support.</t> | ||||
| <t>QUIC, CurveCP, and MinimaLT provide both transport functionality and | ||||
| security functionality. They | ||||
| depend on running over a framed protocol like UDP, but they add their own layers | ||||
| of | ||||
| reliability and other Transport Services. Thus, an application that uses one of | ||||
| these protocols | ||||
| cannot decouple the security from transport functionality.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="application-interface" numbered="true" toc="default"> | ||||
| <name>Application Interface</name> | ||||
| <t>This section describes the interface exposed by the security protocols | ||||
| described above. | ||||
| We partition these interfaces into | ||||
| pre-connection (configuration), connection, and post-connection interfaces, foll | ||||
| owing | ||||
| conventions in <xref target="I-D.ietf-taps-interface" format="default"/> and <xr | ||||
| ef target="I-D.ietf-taps-arch" format="default"/>.</t> | ||||
| <t>Note that not all protocols support each interface. | ||||
| The table in <xref target="interface-protocols-table" format="default"/> summari | ||||
| zes which protocol exposes which of the interfaces. | ||||
| In the following sections, we provide abbreviations of the interface names to us | ||||
| e in the summary table.</t> | ||||
| <section anchor="pre-connection-interfaces" numbered="true" toc="default"> | ||||
| <name>Pre-connection Interfaces</name> | ||||
| <t>Configuration interfaces are used to configure the security protocols | ||||
| before a | ||||
| handshake begins or keys are negotiated.</t> | ||||
| <dl spacing="normal"> | ||||
| <dt>Identities and Private Keys (IPK):</dt> | ||||
| <dd><t>The application can provide its identity, credentials (e.g., | ||||
| certificates), and private keys, or mechanisms to access these, to | ||||
| the security protocol to use during handshakes. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>ZRTP</li> | ||||
| <li>QUIC</li> | ||||
| <li>MinimaLT</li> | ||||
| <li>CurveCP</li> | ||||
| <li>IPsec</li> | ||||
| <li>WireGuard</li> | ||||
| <li>OpenVPN</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Supported Algorithms (Key Exchange, Signatures, and Ciphersuites) (ALG):</dt | ||||
| ><dd><t> | ||||
| The application can choose the algorithms that are supported for key exchange, | ||||
| signatures, and ciphersuites. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>ZRTP</li> | ||||
| <li>QUIC</li> | ||||
| <li>tcpcrypt</li> | ||||
| <li>MinimaLT</li> | ||||
| <li>IPsec</li> | ||||
| <li>OpenVPN</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Extensions (EXT):</dt><dd><t> | ||||
| The application enables or configures extensions that are to be negotiated by | ||||
| the security protocol, such as Application-Layer Protocol Negotiation (ALPN) <xr | ||||
| ef target="RFC7301" format="default"/>. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>QUIC</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Session Cache Management (CM):</dt><dd><t>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. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>ZRTP</li> | ||||
| <li>QUIC</li> | ||||
| <li>tcpcrypt</li> | ||||
| <li>MinimaLT</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Authentication Delegation (AD):</dt><dd><t> | ||||
| The application provides access to a separate module that will provide authentic | ||||
| ation, | ||||
| using the Extensible Authentication Protocol (EAP) <xref target="RFC3748" format | ||||
| ="default"/> for example. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>IPsec</li> | ||||
| <li>tcpcrypt</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Pre-Shared Key Import (PSKI):</dt><dd><t> | ||||
| Either the handshake protocol or the application directly can supply pre-shared | ||||
| keys for use | ||||
| in encrypting (and authenticating) communication with a peer. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>ZRTP</li> | ||||
| <li>QUIC</li> | ||||
| <li>tcpcrypt</li> | ||||
| <li>MinimaLT</li> | ||||
| <li>IPsec</li> | ||||
| <li>WireGuard</li> | ||||
| <li>OpenVPN</li> | ||||
| </ul> | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="connection-interfaces" numbered="true" toc="default"> | ||||
| <name>Connection Interfaces</name> | ||||
| <dl spacing="normal"> | ||||
| <dt>Identity Validation (IV):</dt><dd><t> | ||||
| During a handshake, the security protocol will conduct identity validation of th | ||||
| e peer. | ||||
| This can offload validation or occur transparently to the application. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>ZRTP</li> | ||||
| <li>QUIC</li> | ||||
| <li>MinimaLT</li> | ||||
| <li>CurveCP</li> | ||||
| <li>IPsec</li> | ||||
| <li>WireGuard</li> | ||||
| <li>OpenVPN</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Source Address Validation (SAV):</dt><dd><t> | ||||
| The handshake protocol may interact with the transport protocol or application t | ||||
| o | ||||
| validate the address of the remote peer that has sent data. This involves sendin | ||||
| g a cookie | ||||
| exchange to avoid DoS attacks. (This list omits protocols that depend on TCP and | ||||
| therefore | ||||
| implicitly perform SAV.) | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>DTLS</li> | ||||
| <li>QUIC</li> | ||||
| <li>IPsec</li> | ||||
| <li>WireGuard</li> | ||||
| </ul> | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="post-connection-interfaces" numbered="true" toc="default" | ||||
| > | ||||
| <name>Post-connection Interfaces</name> | ||||
| <dl spacing="normal"> | ||||
| <dt>Connection Termination (CT):</dt><dd><t> | ||||
| The security protocol may be instructed to tear down its connection and session | ||||
| information. | ||||
| This is needed by some protocols, e.g., to prevent application data truncation a | ||||
| ttacks in | ||||
| which an attacker terminates an underlying insecure connection-oriented protocol | ||||
| to terminate | ||||
| the session. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>ZRTP</li> | ||||
| <li>QUIC</li> | ||||
| <li>tcpcrypt</li> | ||||
| <li>MinimaLT</li> | ||||
| <li>IPsec</li> | ||||
| <li>OpenVPN</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Key Update (KU):</dt><dd><t> | ||||
| 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 e | ||||
| vent. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>QUIC</li> | ||||
| <li>tcpcrypt</li> | ||||
| <li>MinimaLT</li> | ||||
| <li>IPsec</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Shared Secret Key Export (SSKE):</dt><dd><t> | ||||
| The handshake protocol may provide an interface for producing shared secrets for | ||||
| application-specific uses. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>TLS</li> | ||||
| <li>DTLS</li> | ||||
| <li>tcpcrypt</li> | ||||
| <li>IPsec</li> | ||||
| <li>OpenVPN</li> | ||||
| <li>MinimaLT</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Key Expiration (KE):</dt><dd><t>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. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>IPsec</li> | ||||
| </ul> | ||||
| </dd> | ||||
| <dt>Mobility Events (ME):</dt><dd><t> 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 and induce state | ||||
| changes such as use of a new Connection Identifier (CID). | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li>DTLS (version 1.3 only <xref target="I-D.ietf-tls-dtls13" form | ||||
| at="default"/>)</li> | ||||
| <li>QUIC</li> | ||||
| <li>MinimaLT</li> | ||||
| <li>CurveCP</li> | ||||
| <li>IPsec <xref target="RFC4555" format="default"/></li> | ||||
| <li>WireGuard</li> | ||||
| </ul> | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | ||||
| <section anchor="interface-protocols-table" numbered="true" toc="default"> | ||||
| <name>Summary of Interfaces Exposed by Protocols</name> | ||||
| <t>The following table summarizes which protocol exposes which interface | ||||
| .</t> | ||||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Protocol</th> | ||||
| <th align="center">IPK</th> | ||||
| <th align="center">ALG</th> | ||||
| <th align="center">EXT</th> | ||||
| <th align="center">CM</th> | ||||
| <th align="center">AD</th> | ||||
| <th align="center">PSKI</th> | ||||
| <th align="center">IV</th> | ||||
| <th align="center">SAV</th> | ||||
| <th align="center">CT</th> | ||||
| <th align="center">KU</th> | ||||
| <th align="center">SSKE</th> | ||||
| <th align="center">KE</th> | ||||
| <th align="center">ME</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">TLS</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">DTLS</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">ZRTP</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">QUIC</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">tcpcrypt</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">MinimaLT</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">CurveCP</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">IPsec</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">WireGuard</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">OpenVPN</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center">x</td> | ||||
| <td align="center"> </td> | ||||
| <td align="center"> </td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>x = Interface is exposed<br/> | ||||
| (blank) = Interface is not exposed</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="iana-considerations" numbered="true" toc="default"> | ||||
| <name>IANA Considerations</name> | ||||
| <t>This document has no IANA actions.</t> | ||||
| </section> | ||||
| <section anchor="security-considerations" numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| <t>This document summarizes existing transport security protocols and thei | ||||
| r interfaces. | ||||
| It does not propose changes to or recommend usage of reference protocols. Moreov | ||||
| er, | ||||
| no claims of security and privacy properties beyond those guaranteed by the prot | ||||
| ocols | ||||
| discussed are made. For example, metadata leakage via timing side channels and t | ||||
| raffic | ||||
| analysis may compromise any protocol discussed in this survey. Applications usin | ||||
| g | ||||
| Security Interfaces should take such limitations into consideration when using a | ||||
| particular | ||||
| protocol implementation.</t> | ||||
| </section> | ||||
| <section anchor="privacy-considerations" numbered="true" toc="default"> | ||||
| <name>Privacy Considerations</name> | ||||
| <t>Analysis of how features improve or degrade privacy is intentionally om | ||||
| itted from this survey. | ||||
| All security protocols surveyed generally improve privacy by using encryption to | ||||
| reduce information | ||||
| leakage. However, varying amounts of metadata remain in the clear across each | ||||
| protocol. For example, client and server certificates are sent in cleartext in T | ||||
| LS | ||||
| 1.2 <xref target="RFC5246" format="default"/>, whereas they are encrypted in TLS | ||||
| 1.3 <xref target="RFC8446" format="default"/>. A survey of privacy | ||||
| features, or lack thereof, for various security protocols could be addressed in | ||||
| a | ||||
| separate document.</t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <displayreference target="I-D.ietf-taps-arch" to="TAPS-ARCH"/> | ||||
| <displayreference target="I-D.ietf-quic-transport" to="QUIC-TRANSPORT"/> | ||||
| <displayreference target="I-D.ietf-tls-dtls13" to="DTLS-1.3"/> | ||||
| <displayreference target="I-D.ietf-quic-tls" to="QUIC-TLS"/> | ||||
| <displayreference target="I-D.ietf-taps-interface" to="TAPS-INTERFACE"/> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8095. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4253. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2890. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5641. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5925. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4302. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2385. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8548. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7296. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4303. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7850. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4571. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8229. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8547. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6347. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3711. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5764. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6189. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7301. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3748. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4555. | ||||
| xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5246. | ||||
| xml"/> | ||||
| ckrefs | ||||
| <reference anchor="WireGuard" target="https://www.wireguard.com/papers/wir | ||||
| eguard.pdf"> | ||||
| <front> | ||||
| <title>WireGuard: Next Generation Kernel Network Tunnel</title> | ||||
| <author initials="J" surname="Donenfeld"> | ||||
| <organization>WireGuard</organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="ALTS" target="https://cloud.google.com/security/encrypt | ||||
| ion-in-transit/application-layer-transport-security/"> | ||||
| <front> | ||||
| <title>Application Layer Transport Security</title> | ||||
| <author initials="C" surname="Ghali"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="A" surname="Stubblefield"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="E" surname="Knapp"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="J" surname="Li"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="B" surname="Schmidt"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="J" surname="Boeuf"> | ||||
| <organization/> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="CurveCP" target="https://curvecp.org/"> | ||||
| <front> | ||||
| <title>CurveCP: Usable security for the Internet</title> | ||||
| <author initials="D" surname="Bernstein"> | ||||
| <organization>CurveCP</organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="MinimaLT" target="https://dl.acm.org/citation.cfm?id=25 | ||||
| 16737"> | ||||
| <front> | ||||
| <title>MinimaLT: minimal-latency networking through better security</t | ||||
| itle> | ||||
| <author initials="W" surname="Petullo"> | ||||
| <organization>United States Military Academy, West Point, NY, USA</o | ||||
| rganization> | ||||
| </author> | ||||
| <author initials="X" surname="Zhang"> | ||||
| <organization>University of Illinois at Chicago, Chicago, IL, USA</o | ||||
| rganization> | ||||
| </author> | ||||
| <author initials="J" surname="Solworth"> | ||||
| <organization>University of Illinois at Chicago, Chicago, IL, USA</o | ||||
| rganization> | ||||
| </author> | ||||
| <author initials="D" surname="Bernstein"> | ||||
| <organization>University of Illinois at Chicago, Chicago, IL, USA</o | ||||
| rganization> | ||||
| </author> | ||||
| <author initials="T" surname="Lange"> | ||||
| <organization>TU Eindhoven, Eindhoven, Netherlands</organization> | ||||
| </author> | ||||
| </front> | ||||
| <seriesInfo name="DOI" value="10.1145/2508859.2516737"/> | ||||
| </reference> | ||||
| <reference anchor="OpenVPN" target="https://openvpn.net/community-resource | ||||
| s/openvpn-cryptographic-layer/"> | ||||
| <front> | ||||
| <title>OpenVPN cryptographic layer</title> | ||||
| <author> | ||||
| <organization>OpenVPN</organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-ta | ||||
| ps-arch.xml"/> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-qu | ||||
| ic-transport.xml"/> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-tl | ||||
| s-dtls13.xml"/> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-qu | ||||
| ic-tls.xml"/> | ||||
| <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-ta | ||||
| ps-interface.xml"/> | ||||
| </references> | ||||
| <section anchor="acknowledgments" numbered="false" toc="default"> | ||||
| <name>Acknowledgments</name> | ||||
| <t>The authors would like to thank <contact fullname="Bob Bradley"/>, | ||||
| <contact fullname="Frederic Jacobs"/>, <contact fullname="Mirja | ||||
| Kühlewind"/>, <contact fullname="Yannick Sierra"/>, <contact | ||||
| fullname="Brian Trammell"/>, and <contact fullname="Magnus Westerlund"/> | ||||
| for their input and feedback on this document.</t> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | ||||
| End of changes. 1 change blocks. | ||||
| lines changed or deleted | lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||