idnits 2.17.1 draft-an-fast-address-validation-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 31, 2019) is 1639 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Looks like a reference, but probably isn't: '0' on line 169 == Missing Reference: 'CH' is mentioned on line 157, but not defined -- Looks like a reference, but probably isn't: '1' on line 169 == Missing Reference: 'SH' is mentioned on line 160, but not defined == Missing Reference: 'EE' is mentioned on line 161, but not defined == Missing Reference: 'FIN' is mentioned on line 165, but not defined -- Looks like a reference, but probably isn't: '2' on line 126 == Outdated reference: A later version (-34) exists of draft-ietf-quic-transport-23 Summary: 0 errors (**), 0 flaws (~~), 6 warnings (==), 4 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 QUIC Q. An 3 Internet-Draft DP. Liu 4 Intended status: Standards Track YM. Liu 5 Expires: May 3, 2020 H. Wang 6 Alibaba Inc. 7 October 31, 2019 9 Fast Address Validation 10 draft-an-fast-address-validation-00 12 Abstract 14 This document describes a fast address validation method for QUIC. 16 Status of This Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF). Note that other groups may also distribute 23 working documents as Internet-Drafts. The list of current Internet- 24 Drafts is at https://datatracker.ietf.org/drafts/current/. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 This Internet-Draft will expire on May 3, 2020. 33 Copyright Notice 35 Copyright (c) 2019 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (https://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with respect 43 to this document. Code Components extracted from this document must 44 include Simplified BSD License text as described in Section 4.e of 45 the Trust Legal Provisions and are provided without warranty as 46 described in the Simplified BSD License. 48 Table of Contents 50 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 51 2. Notational Conventions . . . . . . . . . . . . . . . . . . . 2 52 3. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 2 53 4. Fast Address Validation During Handshake . . . . . . . . . . 4 54 5. Security Considerations . . . . . . . . . . . . . . . . . . . 4 55 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 56 7. Normative References . . . . . . . . . . . . . . . . . . . . 4 57 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 5 59 1. Introduction 61 As described in [I-D.ietf-quic-transport], a token based scheme is 62 defined to facilitate address validation of a client. The token MUST 63 be covered by integrity protection against modification or 64 falsification by clients. The server remembers the value it sends to 65 clients and validates the token sent back from a client. In its 66 design, Retry packet is used to deliver the token to a client which 67 address has not yet been validated. It voids the first transmission 68 of the Initial packet sent by the client, and triggers a second 69 Initial packet to be sent with the token. The exchange of token will 70 cause unnecessary longer connection establishment delay for a client. 72 In this document, an alternative mechanism is proposed to improve the 73 efficiency of address validation during handshake. For the first 74 connection between client and server, eliminate the use of Retry 75 packet for token delivery, and rely on handshake encryption layer to 76 prove return routability. In addition, New_Token frame is used by 77 server, via i.e. the Initial packet, to provide the client with an 78 address validation token that can be used to validate future 79 connections. 81 2. Notational Conventions 83 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 84 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 85 document are to be interpreted as described in [RFC2119]. 87 3. Problem Statement 89 Address validation is used by QUIC to avoid being used for a traffic 90 amplification attack. In such an attack, a request is sent to a 91 server with spoofed source address information that identifies a 92 victim. If a server generates more or larger packets in response to 93 that request, the attacker can use the server to send more data 94 toward the victim than it would be able to send on its own. 96 The primary defense against amplification attack is verifying that an 97 endpoint is able to receive packets at the transport address that it 98 claims. Address validation is performed both during connection 99 establishment and during connection migration. 101 Figure 1 provides an overview of the 0-RTT handshake procedure 102 jointly with address validation defined in [I-D.ietf-quic-transport]. 103 Each line shows a QUIC packet with the packet type and packet number 104 shown first, followed by the frames that are typically contained in 105 those packets. So, for instance the first packet is of type Initial, 106 with packet number 0, and contains a CRYPTO frame carrying the 107 ClientHello. 109 Client Server 111 Initial[0]: CRYPTO[CH] 112 0-RTT[0]: STREAM[0, "..."] -> 113 <- Retry+Token 115 Initial+Token[1]: CRYPTO[CH] 116 0-RTT[1]: STREAM[0, "..."] -> 118 Initial[0]: CRYPTO[SH] ACK[1] 119 Handshake[0] CRYPTO[EE, FIN] 120 <- 1-RTT[0]: STREAM[1, "..."] ACK[1] 122 Initial+Token[2]: ACK[0] 123 Handshake[0]: CRYPTO[FIN], ACK[0] 124 1-RTT[2]: STREAM[0, "..."] ACK[0] -> 126 1-RTT[1]: STREAM[3, "..."], ACK[2] 127 <- Handshake[1]: ACK[0] 129 Figure 1: Example of 0-RTT Handshake joint with address validation 131 Note that, the server acknowledges 0-RTT data at the 1-RTT encryption 132 level, and the client sends 1-RTT packets in the same packet number 133 space. 135 A server might wish to validate the client address before starting 136 the cryptographic handshake. In [I-D.ietf-quic-transport], a token 137 is defined to provide address validation prior to completing the 138 handshake. Upon receiving the client's Initial packet, the server 139 can request address validation by sending a Retry packet containing a 140 token. When this token is delivered to the client during connection 141 establishment with a Retry packet, the Initial packet has to be re- 142 transmitted from the client including the token. It in turn adds one 143 more round of packet exchange to 0-RTT handshake. 145 4. Fast Address Validation During Handshake 147 For the first connection between client and server, server can choose 148 to not use Retry packet for token delivery, but rely on handshake 149 encryption layer to prove return routability. In addition, New_Token 150 frame is used by server, via i.e. the Initial packet, to provide the 151 client with an address validation token that can be used to validate 152 future connections. A flow showing the use of a Handshake packet 153 with the token is depicted in Figure 2. 155 Client Server 157 Initial[0]: CRYPTO[CH] 158 0-RTT[0]: STREAM[0, "..."] -> 160 Initial[0]: CRYPTO[SH] ACK[0] 161 Handshake[0] CRYPTO[EE, FIN] New_Token 162 <- 1-RTT[0]: STREAM[1, "..."] ACK[0] 164 Initial[1]: ACK[0] 165 Handshake: CRYPTO[FIN], ACK[0] 166 1-RTT[1]: STREAM[0, "..."] ACK[0] -> 168 1-RTT[1]: STREAM[3, "..."], ACK[1] 169 <- Handshake[1]: ACK[0] 171 Figure 2: Example Handshake with fast address validation 173 It is the server's decision whether to exchange token in Retry or 174 just Handshake to validate client address. If server chooses to 175 accept the cost brought by token exchanging in Handshake, due to that 176 server needs to start maintaining handshake states it will bring more 177 enhanced experience in client side. 179 5. Security Considerations 181 Adding token field to Handshake packet does not add new security 182 concerns. 184 6. IANA Considerations 186 This document makes no request of IANA. 188 7. Normative References 190 [I-D.ietf-quic-transport] 191 Iyengar, J. and M. Thomson, "QUIC: A UDP-Based Multiplexed 192 and Secure Transport", draft-ietf-quic-transport-23 (work 193 in progress), September 2019. 195 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 196 Requirement Levels", BCP 14, RFC 2119, 197 DOI 10.17487/RFC2119, March 1997, 198 . 200 Authors' Addresses 202 Qing An 203 Alibaba Inc. 205 Email: anqing.aq@alibaba-inc.com 207 Dapeng Liu 208 Alibaba Inc. 210 Email: max.ldp@alibaba-inc.com 212 Yanmei Liu 213 Alibaba Inc. 215 Email: miaoji.lym@alibaba-inc.com 217 Hao Wang 218 Alibaba Inc. 220 Email: tars.wh@alibaba-inc.com