RFC 8922
A Survey of the Interaction between Security Protocols and Transport Services
RFC 8922: A Survey of the Interaction between Security Protocols and Transport Services β¨
- Stream and organisation: IETF (Internet Engineering Task Force) π
- Category: Informational π
- Date: October 2020 πΈ
- ISSN: 2070-1721
- Authors: T. Enghardt (TU Berlin), T. Pauly (Apple Inc.), C. Perkins (University of Glasgow), K. Rose (Akamai Technologies, Inc.), C. Wood (Cloudflare) π«Ά
- Obsoletes / Updates: the title block doesn't list anything this RFC obsoletes or updates π¦
Abstract
okay so this doc is a survey of security protocols that are commonly used or just plain notable π, and it's especially focused on how they interact and integrate with applications and transport protocols π . The goal is to supplement the work of defining and cataloguing Transport Services by spelling out the interfaces you need in order to add security protocols β¨. It's not limited to protocols made inside the IETF, and the ones included are a superset of features a Transport Services system may need to support π.
Status of This Memo
this document is not an Internet Standards Track specification, it's published for informational purposes π§
it's a product of the IETF, so it represents the consensus of the IETF community π. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) π. Not every document the IESG approves is a candidate for any level of Internet Standard, so check Section 2 of RFC 7841 if you want the details π.
for info on the current status of this document, any errata, and how to send feedback, head to https://www.rfc-editor.org/info/rfc8922 π.
Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved. π
this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the publication date π. Please read these carefully, because they spell out your rights and restrictions for this document π«Ά. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Simplified BSD License β οΈ.
Table of Contents
1. Introduction
1.1. Goals
1.2. Non-goals
2. Terminology
3. Transport Security Protocol Descriptions
3.1. Application Payload Security Protocols
3.1.1. TLS
3.1.2. DTLS
3.2. Application-Specific Security Protocols
3.2.1. Secure RTP
3.3. Transport-Layer Security Protocols
3.3.1. IETF QUIC
3.3.2. Google QUIC
3.3.3. tcpcrypt
3.3.4. MinimaLT
3.3.5. CurveCP
3.4. Packet Security Protocols
3.4.1. IPsec
3.4.2. WireGuard
3.4.3. OpenVPN
4. Transport Dependencies
4.1. Reliable Byte-Stream Transports
4.2. Unreliable Datagram Transports
4.2.1. Datagram Protocols with Defined Byte-Stream Mappings
4.3. Transport-Specific Dependencies
5. Application Interface
5.1. Pre-connection Interfaces
5.2. Connection Interfaces
5.3. Post-connection Interfaces
5.4. Summary of Interfaces Exposed by Protocols
6. IANA Considerations
7. Security Considerations
8. Privacy Considerations
9. Informative References
Acknowledgments
Authors' Addresses
1. Introduction β¨
services and features provided by transport protocols were already catalogued in [RFC8095] π. This document builds on that work by surveying commonly used and notable network security protocols π, and by identifying the interfaces between these protocols and both transport protocols and applications π¦. It looks at 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, you get a brief description π. Then Section 4 covers the interfaces between these protocols and transports, and Section 5 covers the interfaces between these protocols and applications π.
a Transport Services system exposes an interface so applications can reach various (secure) transport protocol features π . The security protocols in this survey are a superset of the functionality and features a Transport Services system may need to support, both internally and externally (via an API) for applications [TAPS-ARCH] π«Ά. Ubiquitous IETF protocols like (D)TLS are included, and so are non-standard protocols like gQUIC, even though they overlap in features π. That's why this survey isn't limited to protocols developed inside the IETF π. Anything outside this candidate set that doesn't offer new features gets left out π. For example, newer protocols like WireGuard make unique design choices that have implications for, and limitations on, application usage β. By contrast, protocols like secure shell (SSH) [RFC4253], GRE [RFC2890], the Layer 2 Tunneling Protocol (L2TP) [RFC5641], and Application Layer Transport Security (ALTS) [ALTS] are omitted, because they don't provide interfaces considered unique π.
authentication-only protocols like the TCP Authentication Option (TCP-AO) [RFC5925] and the IPsec Authentication Header (AH) [RFC4302] 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 the TCP MD5 "signature" options specified in [RFC2385].) One primary use case of TCP-AO is protecting BGP connections π‘οΈ. AH similarly adds per-datagram authentication and integrity, along with replay protection π§©. Even with these improvements, neither protocol sees general use, and both lack critical properties that matter for emerging transport security protocols, like confidentiality and privacy protections π. So those protocols get left out too π« .
this document only surveys point-to-point protocols, and multicast protocols are out of scope π.
1.1. Goals
this survey is meant to help identify the most common interface surfaces between security protocols and transport protocols, and between security protocols and applications π.
one of the goals of the Transport Services effort is to define a common interface for using transport protocols, so software can easily adopt new protocols that provide similar feature sets π¦. Surveying the dependencies security protocols have on transport protocols can guide implementations in figuring out which transport protocols are appropriate 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 offering a reliable stream of bytes π.
defining the common interfaces that security protocols provide to applications also lets interfaces be designed so common functionality can use the same APIs π. For example, many security protocols that provide authentication let the application take part in peer identity validation πͺͺ. So any interface for using a secure transport protocol stack needs to let applications perform this action during connection establishment π€.
1.2. Non-goals
this survey does similar analysis to what was done for transport protocols in [RFC8095], but it's important to notice that using security protocols requires more consideration π§ .
it is not a goal to let software implementations 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 π¬. So any implementation needs to only use the set of protocols and algorithms that applications request or that a system policy allows π.
different security protocols can also use incompatible notions of peer identity, authentication, and cryptographic options π. It's not a goal to identify a common set of representations for these concepts π ββοΈ.
the protocols surveyed here are a superset of the functionality and features a Transport Services system may need to support π. This document doesn't list all the transport protocols a Transport Services system may need to implement, and it doesn't mandate that a Transport Services system implement any particular protocol π .
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 so the features can be configured π.
2. Terminology β¨
okay bestie, let's get the vocab down first π these terms show up everywhere in this doc, and [RFC8095] uses some of them too, so no mixing them up π«Ά
Transport Feature: a specific end-to-end feature the transport layer gives an app π Examples are confidentiality, reliable delivery, ordered delivery, and whether it's message-oriented or stream-oriented π
Transport Service: a set of Transport Features that isn't tied to any particular framing protocol, and that gives an app its functionality π§
Transport Services system: a software component that shows an app an interface to different Transport Services π
Transport Protocol: an implementation that provides one or more Transport Services using a specific framing and header format on the wire π¦ It services an app, either on its own or together with a security protocol π€
Application: an entity that uses a transport protocol for end-to-end delivery of data across the network π± This can also be an upper layer protocol or a tunnel encapsulation π
Security Protocol: a defined network protocol that implements one or more security features, like authentication, encryption, key generation, session resumption, and privacy π Security protocols can be used alongside transport protocols, and combined with other security protocols when it makes sense π
Handshake Protocol: a protocol that lets peers validate each other and securely set up shared cryptographic context π€β¨
Record: framed protocol messages π¦
Record Protocol: a security protocol that lets data get divided into manageable blocks, which are then protected using shared cryptographic context π§±
Session: an ephemeral (short-lived) security association between applications π¦
Connection: the shared state of two or more endpoints that persists across the messages sent between them π A connection is a transient participant of a session, and a session generally lasts between connection instances π
Peer: an endpoint application party to a session π―
Client: the peer responsible for starting a session π
Server: the peer responsible for responding when a session gets initiated π
3. Transport Security Protocol Descriptions π‘οΈ
okay so this section is a quick tour of the security protocols people use to protect data going over a network π They're grouped by where they sit in the protocol stack, because that decides 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 π¦
Not every security protocol fits neatly into one box, though π Some can be used in different ways, or stacked with other protocols. A big reason is that channel security protocols are often made of two components:
- A handshake protocol, which is responsible for negotiating parameters, authenticating the endpoints, and establishing shared keys π€
- A record protocol, which is used to encrypt traffic using keys and parameters provided by the handshake protocol π
For some protocols, like tcpcrypt, these two components are tightly integrated π But for IPsec, they're separate protocols π§© AH and the Encapsulating Security Payload (ESP) are record protocols, and they can use keys supplied by the handshake protocol Internet Key Exchange Protocol Version 2 (IKEv2), by other handshake protocols, or by manual configuration βοΈ Some protocols are also flexible about how they're used π€ΈββοΈ The base TLS protocol as defined in [RFC8446] has an integrated handshake and record protocol, but TLS or DTLS can also be used to negotiate keys for other protocols, like DTLS-SRTP πΆ Or the handshake protocol can be paired with a separate record layer, like in QUIC [QUIC-TRANSPORT] πΈ
3.1. Application Payload Security Protocols π
These protocols give security that protects application payloads sent over a transport π They don't specifically protect any headers used for transport-layer functionality π ββοΈ
3.1.1. TLS
TLS (Transport Layer Security) [RFC8446] is a super common protocol for setting up a secure session between two endpoints π Communication over that session prevents "eavesdropping, tampering, and message forgery." π«π TLS is made of a tightly coupled handshake and record protocol π The handshake protocol authenticates peers, negotiates protocol options like cryptographic algorithms, and derives session-specific keying material ποΈ The record protocol marshals data and, once the handshake has progressed enough, encrypts it from one peer to the other π¬ That data can include handshake messages or raw application data π
3.1.2. DTLS
DTLS (Datagram Transport Layer Security) [RFC6347] [DTLS-1.3] is based on TLS, but it's designed to run over unreliable datagram protocols like UDP instead of TCP π DTLS changes the protocol so it can still provide security guarantees equivalent 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 carry over, except where specified π§
3.2. Application-Specific Security Protocols π¦
These protocols give application-specific security by protecting application payloads used for specific use cases π― Unlike the protocols above, these aren't meant for generic application use π ββοΈ
3.2.1. Secure RTP
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 [RFC3711] ποΈ SRTP only provides a record layer, and it requires a separate handshake protocol to handle key agreement and identity management π€
The commonly used handshake protocol for SRTP is DTLS, in the form of DTLS-SRTP [RFC5764] πΆ It's an extension to DTLS that negotiates the use of SRTP as the record layer, and it describes how to export keys for use with SRTP π
ZRTP [RFC6189] is an alternative key agreement and identity management protocol for SRTP π ZRTP key agreement runs a Diffie-Hellman key exchange on the media path π That generates a shared secret, which is then used to make the master key and salt for SRTP π§
3.3. Transport-Layer Security Protocols π
These security protocols protect both application payloads and the headers that are used for Transport Services π
3.3.1. IETF QUIC
QUIC is a new standards-track transport protocol that runs over UDP π It's loosely based on Google's original proprietary gQUIC protocol [QUIC-TRANSPORT] (see Section 3.3.2 for more details) π¦ The QUIC transport layer itself supports data confidentiality and integrity π That requires keys to be derived with a separate handshake protocol, and a mapping for QUIC of TLS 1.3 [QUIC-TLS] has been specified to provide that handshake π€
3.3.2. Google QUIC
Google QUIC (gQUIC) is a UDP-based multiplexed streaming protocol that Google designed and deployed, building on experience from deploying SPDY, the proprietary predecessor to HTTP/2 π It was originally called "QUIC," but this document uses gQUIC to tell it apart from the standards-track IETF QUIC π·οΈ As the proprietary technical forebear of IETF QUIC, gQUIC was originally designed with tightly integrated security and application data transport protocols π
3.3.3. tcpcrypt
Tcpcrypt [RFC8548] is a lightweight extension to the TCP protocol for opportunistic encryption π· Applications may use tcpcrypt's unique session ID for further application-level authentication π Without that authentication, tcpcrypt is vulnerable to active attacks π Be careful with this one, babe β οΈ
3.3.4. MinimaLT
MinimaLT [MinimaLT] is a UDP-based transport security protocol designed to offer confidentiality, mutual authentication, DoS prevention, and connection mobility π§ββοΈ One major goal is to reuse existing protocols to get server-side configuration information, which is used to bootstrap a connection more quickly β‘ MinimaLT uses a variant of TCP's congestion control algorithm π
3.3.5. CurveCP
CurveCP [CurveCP] is a UDP-based transport security protocol that, unlike many other security protocols, is based entirely on public key algorithms ποΈ CurveCP provides its own reliability for application data as part of its protocol πͺ
3.4. Packet Security Protocols π¦
These protocols protect IP packets π‘οΈ They're generally used as tunnels, like for Virtual Private Networks (VPNs) π³οΈ Applications often don't interact with these protocols directly π But applications that implement tunnels will interact with them directly π
3.4.1. IPsec
IKEv2 [RFC7296] and ESP [RFC4303] together make up the modern IPsec protocol suite, which encrypts and authenticates IP packets π They can be used either to create tunnels (tunnel-mode) or for direct transport connections (transport-mode) π The suite separates 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's the most common pattern π―ββοΈ
3.4.2. WireGuard
WireGuard [WireGuard] is an IP-layer protocol designed as an alternative to IPsec for certain use cases π It uses UDP to encapsulate IP datagrams between peers π¨ Most transport security protocols rely on Public Key Infrastructure (PKI) for peer authentication, but WireGuard authenticates peers using pre-shared public keys delivered out of band, and each key is bound to one or more IP addresses π As a protocol suited for VPNs, WireGuard offers no extensibility, negotiation, or cryptographic agility π«Ά
3.4.3. OpenVPN
OpenVPN [OpenVPN] is a commonly used protocol designed as an alternative to IPsec π A major goal is to provide a VPN that's simple to configure and works over a variety of transports πͺ OpenVPN encapsulates either IP packets or Ethernet frames inside a secure tunnel, and it can run over either UDP or TCP π For key establishment, OpenVPN can use TLS as a handshake protocol or use pre-shared keys ποΈ
4. Transport Dependencies π
okay so across all the security protocols above, the main thing they need from the transport is how the data is presented: either an unbounded stream of bytes, or framed messages ππ¦ Protocols that rely on the transport for message framing are mostly built to run over transports that already provide framing, like UDP π«Ά Some also define how their messages can be framed over byte-stream transports π§΅
4.1. Reliable Byte-Stream Transports π§΅
The following protocols all depend on running over a transport protocol that provides a reliable, in-order stream of bytes π That's typically TCP π·
Application Payload Security Protocols:
- TLS π
Transport-Layer Security Protocols:
- tcpcrypt π
4.2. Unreliable Datagram Transports π¦
okay bestie, this group of protocols all count on the transport to do message framing so they can wrap up their data π¦. They're built to run over UDP, so they don't need reliability at all π. Running them over something that is reliable won't break anything β¨, but it can stack up multiple layers of reliability, which gets messy if the security protocol is wrapping other transport traffic π.
Application Payload Security Protocols:
- DTLS
- ZRTP
- SRTP
Transport-Layer Security Protocols:
- QUIC
- MinimaLT
- CurveCP
Packet Security Protocols:
- IPsec
- WireGuard
- OpenVPN
4.2.1. Datagram Protocols with Defined Byte-Stream Mappings π
so, of the protocols above that rely on the transport for framing, some do have well-defined ways to send their messages over byte-stream transports like TCP π§. It's giving flexibility, periodt π .
Application Payload Security Protocols:
Packet Security Protocols:
- IPsec [RFC8229]
4.3. Transport-Specific Dependencies π
one protocol we looked at, tcpcrypt, has a direct dependency on a transport feature it needs to actually function π. Specifically, tcpcrypt is designed to run on top of TCP and uses the TCP Encryption Negotiation Option (TCP-ENO) [RFC8547] to negotiate its protocol support π₯.
QUIC, CurveCP, and MinimaLT are giving both transport functionality and security functionality π«Ά. They rely on running over a framed protocol like UDP, but they add their own layers of reliability and other Transport Services π. So an application using one of these can't pull the security apart from the transport stuff π.
5. Application Interface β¨
this section is all about the interface the security protocols above expose π. We split these into pre-connection (configuration), connection, and post-connection interfaces, following the conventions in [TAPS-INTERFACE] and [TAPS-ARCH] π¦.
heads up, not every protocol supports every interface π. The table in Section 5.4 summarizes who exposes what π . Below, we give short abbreviations for each interface name so the summary table stays readable π.
5.1. Pre-connection Interfaces πΈ
these are the configuration interfaces, used to set up the security protocols before a handshake starts or keys get negotiated π§.
Identities and Private Keys (IPK): the application can hand over its identity, credentials (like certificates), and private keys, or mechanisms to access them, for the security protocol to use during handshakes π.
- TLS
- DTLS
- ZRTP
- QUIC
- MinimaLT
- CurveCP
- IPsec
- WireGuard
- OpenVPN
Supported Algorithms (Key Exchange, Signatures, and Ciphersuites) (ALG): the application can pick which algorithms are supported for key exchange, signatures, and ciphersuites β¨.
- TLS
- DTLS
- ZRTP
- QUIC
- tcpcrypt
- MinimaLT
- IPsec
- OpenVPN
Extensions (EXT): the application turns on or configures extensions that the security protocol will negotiate, like Application-Layer Protocol Negotiation (ALPN) [RFC7301] π.
- TLS
- DTLS
- QUIC
Session Cache Management (CM): the application can save and retrieve session state (things like tickets, keying material, and server parameters) that can be used to resume the security session πΎ.
- TLS
- DTLS
- ZRTP
- QUIC
- tcpcrypt
- MinimaLT
Authentication Delegation (AD): the application gets access to a separate module that handles authentication, using the Extensible Authentication Protocol (EAP) [RFC3748] for example π.
- IPsec
- tcpcrypt
Pre-Shared Key Import (PSKI): either the handshake protocol or the application itself can supply pre-shared keys for encrypting (and authenticating) communication with a peer ποΈ.
- TLS
- DTLS
- ZRTP
- QUIC
- tcpcrypt
- MinimaLT
- IPsec
- WireGuard
- OpenVPN
5.2. Connection Interfaces π¦
Identity Validation (IV): during a handshake, the security protocol checks the identity of the peer π΅οΈ. This can be offloaded, or it can happen quietly without the application noticing π«§.
- TLS
- DTLS
- ZRTP
- QUIC
- MinimaLT
- CurveCP
- IPsec
- WireGuard
- OpenVPN
Source Address Validation (SAV): the handshake protocol may work with the transport protocol or the application to validate the address of the remote peer that sent data π. This involves a cookie exchange to avoid DoS attacks π‘οΈ. (This list leaves out protocols that depend on TCP, since they implicitly do SAV already π .)
- DTLS
- QUIC
- IPsec
- WireGuard
5.3. Post-connection Interfaces π
Connection Termination (CT): the security protocol can be told to tear down its connection and session info π§Ή. Some protocols need this, for example to stop application data truncation attacks, where an attacker kills an underlying insecure connection-oriented protocol just to end the session π.
- TLS
- DTLS
- ZRTP
- QUIC
- tcpcrypt
- MinimaLT
- IPsec
- OpenVPN
Key Update (KU): the handshake protocol can be told to update its keying material, either by the application directly or by the record protocol sending a key expiration event π.
- TLS
- DTLS
- QUIC
- tcpcrypt
- MinimaLT
- IPsec
Shared Secret Key Export (SSKE): the handshake protocol may offer an interface for producing shared secrets for application-specific uses π¬.
- TLS
- DTLS
- tcpcrypt
- IPsec
- OpenVPN
- MinimaLT
Key Expiration (KE): the record protocol can signal that its keys are expiring, either because a time-based deadline or a use-based deadline (a number of bytes encrypted with the key) has been reached β°. This is often limited to signaling between the record layer and the handshake layer π€.
- IPsec
Mobility Events (ME): the record protocol can be signaled that it's being moved to another transport or interface because of connection mobility π±. That can reset address and state validation and cause state changes, like switching to a new Connection Identifier (CID) π¦.
- DTLS (version 1.3 only [DTLS-1.3])
- QUIC
- MinimaLT
- CurveCP
- IPsec [RFC4555]
- WireGuard
5.4. Summary of Interfaces Exposed by Protocols π
here's the cheat sheet πΈ. It shows which protocol exposes which interface π.
+===========+===+====+=====+==+==+======+==+=====+==+==+======+==+==+
| Protocol |IPK|ALG | EXT |CM|AD| PSKI |IV| SAV |CT|KU| SSKE |KE|ME|
+===========+===+====+=====+==+==+======+==+=====+==+==+======+==+==+
| TLS | x | x | x |x | | x |x | |x |x | x | | |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| DTLS | x | x | x |x | | x |x | x |x |x | x | |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| ZRTP | x | x | |x | | x |x | |x | | | | |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| QUIC | x | x | x |x | | x |x | x |x |x | | |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| tcpcrypt | | x | |x |x | x | | |x |x | x | | |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| MinimaLT | x | x | |x | | x |x | |x |x | x | |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| CurveCP | x | | | | | |x | | | | | |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| IPsec | x | x | | |x | x |x | x |x |x | x |x |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| WireGuard | x | | | | | x |x | x | | | | |x |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
| OpenVPN | x | x | | | | x |x | |x | | x | | |
+-----------+---+----+-----+--+--+------+--+-----+--+--+------+--+--+
Table 1
x = Interface is exposed
(blank) = Interface is not exposed
6. IANA Considerations π·
this document has no IANA actions π·, so nothing to register here, bestie π«Ά.
7. Security Considerations π¨
this document sums up existing transport security protocols and their interfaces π. It doesn't propose changes to the reference protocols or recommend using any of them π . It also doesn't claim any security or privacy properties beyond what the discussed protocols already guarantee π. For example, metadata leakage through timing side channels and traffic analysis may affect any protocol in this survey π±π. Applications using Security Interfaces should take these limitations into account when they use a particular protocol implementation π¨π.
8. Privacy Considerations π«£
this survey intentionally skips analysis of how features help or hurt privacy π. All the security protocols covered generally improve privacy by using encryption to cut down on information leakage β¨. But different amounts of metadata still show up in the clear depending on the protocol πΆοΈ. For example, client and server certificates are sent in cleartext in TLS 1.2 [RFC5246], but they're encrypted in TLS 1.3 [RFC8446] ππ₯Ή. A survey of privacy features (or the lack of them) for different security protocols could be covered in a separate document ππ.
9. Informative References β¨
okay bestie, this is the reading list π every single one of these is a source the spec leans on, so I'm keeping the full details for each. no skipping! π
[ALTS]Ghali, C., Stubblefield, A., Knapp, E., Li, J., Schmidt, B., and J. Boeuf, "Application Layer Transport Security", <https://cloud.google.com/security/encryption-in-transit/application-layer-transport-security/>.[CurveCP]Bernstein, D., "CurveCP: Usable security for the Internet", <https://curvecp.org/>.[DTLS-1.3]Rescorla, E., Tschofenig, H., and N. Modadugu, "The Datagram Transport Layer Security (DTLS) Protocol Version 1.3", Work in Progress, Internet-Draft, draft-ietf-tls-dtls13-38, 29 May 2020, <https://tools.ietf.org/html/draft-ietf-tls-dtls13-38>.[MinimaLT]Petullo, W., Zhang, X., Solworth, J., Bernstein, D., and T. Lange, "MinimaLT: minimal-latency networking through better security", DOI 10.1145/2508859.2516737, <https://dl.acm.org/citation.cfm?id=2516737>.[OpenVPN]OpenVPN, "OpenVPN cryptographic layer", <https://openvpn.net/community-resources/openvpn-cryptographic-layer/>.[QUIC-TLS]Thomson, M. and S. Turner, "Using TLS to Secure QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-tls-31, 24 September 2020, <https://tools.ietf.org/html/draft-ietf-quic-tls-31>.[QUIC-TRANSPORT]Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-31, 24 September 2020, <https://tools.ietf.org/html/draft-ietf-quic-transport-31>.[RFC2385]Heffernan, A., "Protection of BGP Sessions via the TCP MD5 Signature Option", RFC 2385, DOI 10.17487/RFC2385, August 1998, <https://www.rfc-editor.org/info/rfc2385>.[RFC2890]Dommety, G., "Key and Sequence Number Extensions to GRE", RFC 2890, DOI 10.17487/RFC2890, September 2000, <https://www.rfc-editor.org/info/rfc2890>.[RFC3711]Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. Norrman, "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, DOI 10.17487/RFC3711, March 2004, <https://www.rfc-editor.org/info/rfc3711>.[RFC3748]Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J., and H. Levkowetz, Ed., "Extensible Authentication Protocol (EAP)", RFC 3748, DOI 10.17487/RFC3748, June 2004, <https://www.rfc-editor.org/info/rfc3748>.[RFC4253]Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) Transport Layer Protocol", RFC 4253, DOI 10.17487/RFC4253, January 2006, <https://www.rfc-editor.org/info/rfc4253>.[RFC4302]Kent, S., "IP Authentication Header", RFC 4302, DOI 10.17487/RFC4302, December 2005, <https://www.rfc-editor.org/info/rfc4302>.[RFC4303]Kent, S., "IP Encapsulating Security Payload (ESP)", RFC 4303, DOI 10.17487/RFC4303, December 2005, <https://www.rfc-editor.org/info/rfc4303>.[RFC4555]Eronen, P., "IKEv2 Mobility and Multihoming Protocol (MOBIKE)", RFC 4555, DOI 10.17487/RFC4555, June 2006, <https://www.rfc-editor.org/info/rfc4555>.[RFC4571]Lazzaro, J., "Framing Real-time Transport Protocol (RTP) and RTP Control Protocol (RTCP) Packets over Connection-Oriented Transport", RFC 4571, DOI 10.17487/RFC4571, July 2006, <https://www.rfc-editor.org/info/rfc4571>.[RFC5246]Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <https://www.rfc-editor.org/info/rfc5246>.[RFC5641]McGill, N. and C. Pignataro, "Layer 2 Tunneling Protocol Version 3 (L2TPv3) Extended Circuit Status Values", RFC 5641, DOI 10.17487/RFC5641, August 2009, <https://www.rfc-editor.org/info/rfc5641>.[RFC5764]McGrew, D. and E. Rescorla, "Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)", RFC 5764, DOI 10.17487/RFC5764, May 2010, <https://www.rfc-editor.org/info/rfc5764>.[RFC5925]Touch, J., Mankin, A., and R. Bonica, "The TCP Authentication Option", RFC 5925, DOI 10.17487/RFC5925, June 2010, <https://www.rfc-editor.org/info/rfc5925>.[RFC6189]Zimmermann, P., Johnston, A., Ed., and J. Callas, "ZRTP: Media Path Key Agreement for Unicast Secure RTP", RFC 6189, DOI 10.17487/RFC6189, April 2011, <https://www.rfc-editor.org/info/rfc6189>.[RFC6347]Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, January 2012, <https://www.rfc-editor.org/info/rfc6347>.[RFC7296]Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. Kivinen, "Internet Key Exchange Protocol Version 2 (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October 2014, <https://www.rfc-editor.org/info/rfc7296>.[RFC7301]Friedl, S., Popov, A., Langley, A., and E. Stephan, "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301, July 2014, <https://www.rfc-editor.org/info/rfc7301>.[RFC7850]Nandakumar, S., "Registering Values of the SDP 'proto' Field for Transporting RTP Media over TCP under Various RTP Profiles", RFC 7850, DOI 10.17487/RFC7850, April 2016, <https://www.rfc-editor.org/info/rfc7850>.[RFC8095]Fairhurst, G., Ed., Trammell, B., Ed., and M. Kuehlewind, Ed., "Services Provided by IETF Transport Protocols and Congestion Control Mechanisms", RFC 8095, DOI 10.17487/RFC8095, March 2017, <https://www.rfc-editor.org/info/rfc8095>.[RFC8229]Pauly, T., Touati, S., and R. Mantha, "TCP Encapsulation of IKE and IPsec Packets", RFC 8229, DOI 10.17487/RFC8229, August 2017, <https://www.rfc-editor.org/info/rfc8229>.[RFC8446]Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>.[RFC8547]Bittau, A., Giffin, D., Handley, M., Mazieres, D., and E. Smith, "TCP-ENO: Encryption Negotiation Option", RFC 8547, DOI 10.17487/RFC8547, May 2019, <https://www.rfc-editor.org/info/rfc8547>.[RFC8548]Bittau, A., Giffin, D., Handley, M., Mazieres, D., Slack, Q., and E. Smith, "Cryptographic Protection of TCP Streams (tcpcrypt)", RFC 8548, DOI 10.17487/RFC8548, May 2019, <https://www.rfc-editor.org/info/rfc8548>.[TAPS-ARCH]Pauly, T., Trammell, B., Brunstrom, A., Fairhurst, G., Perkins, C., Tiesel, P. S., and C. A. Wood, "An Architecture for Transport Services", Work in Progress, Internet-Draft, draft-ietf-taps-arch-08, 13 July 2020, <https://tools.ietf.org/html/draft-ietf-taps-arch-08>.[TAPS-INTERFACE]Trammell, B., Welzl, M., Enghardt, T., Fairhurst, G., Kuehlewind, M., Perkins, C., Tiesel, P. S., Wood, C. A., and T. Pauly, "An Abstract Application Layer Interface to Transport Services", Work in Progress, Internet-Draft, draft-ietf-taps-interface-09, 27 July 2020, <https://tools.ietf.org/html/draft-ietf-taps-interface-09>.[WireGuard]Donenfeld, J., "WireGuard: Next Generation Kernel Network Tunnel", <https://www.wireguard.com/papers/wireguard.pdf>.
Acknowledgments π«Ά
the authors want to give a huge thank-you to Bob Bradley, Frederic Jacobs, Mirja KΓΌhlewind, Yannick Sierra, Brian Trammell, and Magnus Westerlund π for their input and feedback on this document. you're the real MVPs π
Authors' Addresses π
Theresa Enghardt πΈ
Theresa Enghardt
TU Berlin
Marchstr. 23
10587 Berlin
Germany
Email: ietf@tenghardt.net
Tommy Pauly π¦
Tommy Pauly
Apple Inc.
One Apple Park Way
Cupertino, California 95014
United States of America
Email: tpauly@apple.com
Colin Perkins π
Colin Perkins
University of Glasgow
School of Computing Science
Glasgow
G12 8QQ
United Kingdom
Email: csp@csperkins.org
Kyle Rose π§
Kyle Rose
Akamai Technologies, Inc.
150 Broadway
Cambridge, MA 02144
United States of America
Email: krose@krose.org
Christopher A. Wood π
Christopher A. Wood
Cloudflare
101 Townsend St
San Francisco,
United States of America
Email: caw@heapingbits.net
π¦ where this page comes from
- ietf: rfc8922 2020-10
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms