idnits 2.17.1 draft-thomson-http-bc-01.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 : ---------------------------------------------------------------------------- ** The document seems to lack an Introduction section. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (October 30, 2016) is 2728 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) == Outdated reference: A later version (-09) exists of draft-ietf-httpbis-encryption-encoding-02 == Outdated reference: A later version (-03) exists of draft-thomson-http-mice-01 ** Obsolete normative reference: RFC 2818 (Obsoleted by RFC 9110) ** Obsolete normative reference: RFC 7230 (Obsoleted by RFC 9110, RFC 9112) ** Obsolete normative reference: RFC 7234 (Obsoleted by RFC 9111) ** Obsolete normative reference: RFC 7540 (Obsoleted by RFC 9113) -- Possible downref: Non-RFC (?) normative reference: ref. 'SCD' == Outdated reference: A later version (-12) exists of draft-reschke-http-oob-encoding-07 -- Obsolete informational reference (is this intentional?): RFC 7231 (Obsoleted by RFC 9110) Summary: 5 errors (**), 0 flaws (~~), 5 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Thomson 3 Internet-Draft Mozilla 4 Intended status: Standards Track G. Eriksson 5 Expires: May 3, 2017 C. Holmberg 6 Ericsson 7 October 30, 2016 9 Caching Secure HTTP Content using Blind Caches 10 draft-thomson-http-bc-01 12 Abstract 14 A mechanism is described whereby a server can use client-selected 15 shared cache. 17 Status of This Memo 19 This Internet-Draft is submitted in full conformance with the 20 provisions of BCP 78 and BCP 79. 22 Internet-Drafts are working documents of the Internet Engineering 23 Task Force (IETF). Note that other groups may also distribute 24 working documents as Internet-Drafts. The list of current Internet- 25 Drafts is at http://datatracker.ietf.org/drafts/current/. 27 Internet-Drafts are draft documents valid for a maximum of six months 28 and may be updated, replaced, or obsoleted by other documents at any 29 time. It is inappropriate to use Internet-Drafts as reference 30 material or to cite them other than as "work in progress." 32 This Internet-Draft will expire on May 3, 2017. 34 Copyright Notice 36 Copyright (c) 2016 IETF Trust and the persons identified as the 37 document authors. All rights reserved. 39 This document is subject to BCP 78 and the IETF Trust's Legal 40 Provisions Relating to IETF Documents 41 (http://trustee.ietf.org/license-info) in effect on the date of 42 publication of this document. Please review these documents 43 carefully, as they describe your rights and restrictions with respect 44 to this document. Code Components extracted from this document must 45 include Simplified BSD License text as described in Section 4.e of 46 the Trust Legal Provisions and are provided without warranty as 47 described in the Simplified BSD License. 49 Table of Contents 51 1. Shared Caching for HTTPS . . . . . . . . . . . . . . . . . . 2 52 1.1. Notational Conventions . . . . . . . . . . . . . . . . . 3 53 2. Same-Host Secure Content Delegation . . . . . . . . . . . . . 3 54 2.1. Signaling Presence of a Proxy . . . . . . . . . . . . . . 3 55 2.2. Proxy Identification and Authentication . . . . . . . . . 4 56 3. Performance Optimizations . . . . . . . . . . . . . . . . . . 5 57 3.1. Proxy Cache Priming . . . . . . . . . . . . . . . . . . . 5 58 4. Security Considerations . . . . . . . . . . . . . . . . . . . 5 59 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 60 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 61 6.1. Normative References . . . . . . . . . . . . . . . . . . 6 62 6.2. Informative References . . . . . . . . . . . . . . . . . 7 63 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 7 65 1. Shared Caching for HTTPS 67 Shared caches allow an HTTP server to offload the responsibility for 68 delivering certain content. Content in the shared cache can be 69 accessed efficiently by multiple clients, saving the origin server 70 from having to serve those requests and ensuring that clients receive 71 responses to cached requests more quickly. 73 Proxy caching is the most common configuration for shared caching. A 74 proxy cache is either explicitly configured by a client, discovered 75 as a result of being automatically configured. 77 HTTPS [RFC2818] prevents the use of proxies by creating an 78 authenticated end-to-end connection to the origin server or its 79 gateway that is authenticated. This provides a critical protection 80 against man-in-the-middle attacks, but it also prevents the proxy 81 from acting as a shared cache. 83 Clients do not direct queries for "https" URIs to proxies. Clients 84 configured with a proxy use the CONNECT pseudo-method (Section 4.3.6 85 of [RFC7231]) with any explicitly configured or discovered proxies to 86 create an end-to-end tunnel. Transparent proxies are unable to 87 intercept connections that are protected with TLS. 89 This document describes a method that enables shared caching for a 90 limited set of "https" resources, as selected by the server. The 91 server conditionally delegates the hosting of secure content to 92 itself. This delegation includes a marker that signals permission 93 for a client to send a request for an "https" resource via a proxy 94 rather than insisting on an end-to-end TLS connection. 96 1.1. Notational Conventions 98 The words "MUST", "MUST NOT", "SHOULD", and "MAY" are used in this 99 document. It's not shouting; when they are capitalized, they have 100 the special meaning defined in [RFC2119]. 102 This document uses the term "proxy cache" to refer to a proxy 103 [RFC7230] that operates an HTTP cache [RFC7234]. 105 2. Same-Host Secure Content Delegation 107 The secure content delegation mechanism defined in [SCD] is used to 108 create a separate resource that contains encrypted and integrity 109 protected content. To enable caching, the primary and secondary 110 servers can be the same server. 112 A client that signals a willingness to support delegation is provided 113 with a response that uses a proxy-enabled out-of-band encoding that 114 behaves identically to the out-of-band encoding defined in 115 [I-D.reschke-http-oob-encoding]. The out-of-band encoding identifies 116 a secondary resource and implicitly indicates that the client is 117 willing to use a proxy and that the server allows this use. The 118 client is then able to request the secondary resource from a proxy 119 cache rather than directly to the origin server. 121 In this document, the origin server is able to act in the role of the 122 secondary server in [SCD]. However, all of the considerations that 123 apply to having a secondary server host content apply instead to the 124 proxy cache. Thus, integrity and confidentiality protections against 125 the proxy cache are the primary consideration. 127 2.1. Signaling Presence of a Proxy 129 Without a clear signal from the client that a caching proxy is 130 present, an origin server is unable to send a response with out-of- 131 band encoding. A value of "out-of-band" in the Accept-Encoding 132 header field only indicates willingness to use the secure content 133 delegation mechanism. 135 A new "oobp" content encoding is defined. The "oobp" content 136 encoding is identical to the "out-of-band" content encoding, with the 137 following additional conditions: 139 o A client MUST NOT signal support for "oobp" content encoding 140 unless it is using a proxy cache and it is willing to direct 141 requests to that proxy. 143 o A server MUST NOT encode a response using the "oobp" content 144 encoding unless it permits the request to be made to a proxy 145 cache. 147 o The "oobp" content encoding MUST NOT be used to encode the 148 contents of a request. The "out-of-band" content encoding is 149 sufficient for that purpose. 151 Using a different content encoding name means that a resource using 152 secure content delegation to a secondary server [SCD] does not 153 inadvertently trigger a request via a proxy. 155 The security properties of delegation via a secondary server and via 156 a caching proxy are similar only to the extent that a third party is 157 involved. However, it might be the case that a secondary server has 158 a stronger relationship with the primary server and additional 159 constraints on its actions, such as contractual limitations. Such 160 constraints might make it feasible to delegate to a secondary server 161 selected by the primary server. A caching proxy might not be 162 considered acceptable in the same way. 164 The "oobp" content encoding clearly indicates that the client is 165 permitted to retrieve content from a proxy-cache. 167 Servers that use the "oobp" content encoding MUST include header 168 fields for message integrity and encryption, such as the M-I header 169 field [I-D.thomson-http-mice] or the Crypto-Key header field 170 [I-D.ietf-httpbis-encryption-encoding]. Clients MUST NOT send a 171 request via a proxy if these headers are not present. Absence of 172 these header fields indicate an error on the part of the origin 173 server, since integrity and confidentiality protection are mandatory. 175 2.2. Proxy Identification and Authentication 177 This mechanism does not work with a transparent caching proxy. Since 178 the request is made over end-to-end HTTPS in the absence of a proxy, 179 the feature will not be used unless the proxy is known to the client. 181 A proxy cache MUST therefore be expressly configured or discovered. 182 This produces a name and possibly a port number for the proxy. The 183 proxy MUST be contacted using HTTPS [RFC2818] and authenticated using 184 the configured or discovered domain name. 186 Issue: What signal do we need from the proxy cache that it supports 187 receiving requests with an "https://" scheme? Can we expect that 188 a proxy cache will happily accept a request for an HTTPS URL? 189 What if they ignore the scheme and send the request in the clear? 191 3. Performance Optimizations 193 As noted in [SCD], the secondary request required by out-of-band 194 content encoding imposes a performance penalty. This can be 195 mitigated by priming clients with information about the location and 196 disposition of resources prior to the client making a request. A 197 resource map described in [SCD] might be provided to clients to 198 eliminate the latency involved in making requests of the origin 199 server for resources that might be cached. 201 3.1. Proxy Cache Priming 203 A client that makes a request of an origin server via an unprimed 204 proxy cache will suffer additional latency as a consequence of the 205 cache having to make a request to the origin server. 207 The following options are possible: 209 o Clients can speculatively make requests to a proxy cache based on 210 information it learns from a resource map, or from hints like the 211 "prefetch" link relation [HINTS]. To avoid a potential waste of 212 resources as a result of receiving complete responses, speculative 213 requests might be limited to HEAD requests; alternatively, HTTP/2 214 [RFC7540] flow control might be used to allow only limited 215 information to be sent. 217 o The origin server might provide the proxy cache with "prefetch" 218 link relations in responses to requests for secondary resources. 219 These link relations might identify other resources that the proxy 220 might retrieve speculatively. This does not improve the latency 221 of the initial request, but could improve subsequent requests. 223 4. Security Considerations 225 All the considerations of [SCD] apply. In particular, content that 226 is distributed with the assistance of a proxy cache MUST include 227 integrity and confidentiality protection. That means that the M-I 228 header field [I-D.thomson-http-mice] and the Crypto-Key header field 229 [I-D.ietf-httpbis-encryption-encoding] or equivalent information MUST 230 be present in responses that include an out-of-band content encoding. 232 Clients that receive a response without the information necessary to 233 ensure integrity and confidentiality protection against a proxy cache 234 MUST NOT make a request to a proxy to retrieve that response. 235 Clients could treat such a response as failed. Clients MAY then make 236 the request directly to the origin server, or - if request can be 237 safely retried - retry a request without the out-of-band token in the 238 Accept-Encoding header field. 240 5. IANA Considerations 242 This document has no IANA actions. It should. 244 6. References 246 6.1. Normative References 248 [I-D.ietf-httpbis-encryption-encoding] 249 Thomson, M., "Encrypted Content-Encoding for HTTP", draft- 250 ietf-httpbis-encryption-encoding-02 (work in progress), 251 June 2016. 253 [I-D.thomson-http-mice] 254 Thomson, M., "Merkle Integrity Content Encoding", draft- 255 thomson-http-mice-01 (work in progress), June 2016. 257 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 258 Requirement Levels", BCP 14, RFC 2119, 259 DOI 10.17487/RFC2119, March 1997, 260 . 262 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, 263 DOI 10.17487/RFC2818, May 2000, 264 . 266 [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer 267 Protocol (HTTP/1.1): Message Syntax and Routing", 268 RFC 7230, DOI 10.17487/RFC7230, June 2014, 269 . 271 [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, 272 Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", 273 RFC 7234, DOI 10.17487/RFC7234, June 2014, 274 . 276 [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext 277 Transfer Protocol Version 2 (HTTP/2)", RFC 7540, 278 DOI 10.17487/RFC7540, May 2015, 279 . 281 [SCD] Ericsson, G., Holmberg, C., and M. Thomson, "An 282 Architecture for Secure Content Delegation using HTTP", 283 February 2016. 285 6.2. Informative References 287 [HINTS] Grigorik, I., "Resource Hints", W3C TR , May 2015. 289 [I-D.reschke-http-oob-encoding] 290 Reschke, J. and S. Loreto, "'Out-Of-Band' Content Coding 291 for HTTP", draft-reschke-http-oob-encoding-07 (work in 292 progress), July 2016. 294 [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer 295 Protocol (HTTP/1.1): Semantics and Content", RFC 7231, 296 DOI 10.17487/RFC7231, June 2014, 297 . 299 Authors' Addresses 301 Martin Thomson 302 Mozilla 304 Email: martin.thomson@gmail.com 306 Goeran AP Eriksson 307 Ericsson 309 Email: goran.ap.eriksson@ericsson.com 311 Christer Holmberg 312 Ericsson 314 Email: christer.holmberg@ericsson.com