| < draft-ietf-httpbis-http2-encryption-03.txt | draft-ietf-httpbis-http2-encryption-04.txt > | |||
|---|---|---|---|---|
| HTTP Working Group M. Nottingham | HTTP Working Group M. Nottingham | |||
| Internet-Draft | Internet-Draft | |||
| Intended status: Experimental M. Thomson | Intended status: Experimental M. Thomson | |||
| Expires: June 19, 2016 Mozilla | Expires: September 18, 2016 Mozilla | |||
| December 17, 2015 | March 17, 2016 | |||
| Opportunistic Security for HTTP | Opportunistic Security for HTTP | |||
| draft-ietf-httpbis-http2-encryption-03 | draft-ietf-httpbis-http2-encryption-04 | |||
| Abstract | Abstract | |||
| This document describes how "http" URIs can be accessed using | This document describes how "http" URIs can be accessed using | |||
| Transport Layer Security (TLS) to mitigate pervasive monitoring | Transport Layer Security (TLS) to mitigate pervasive monitoring | |||
| attacks. | attacks. | |||
| Note to Readers | ||||
| Discussion of this draft takes place on the HTTP working group | ||||
| mailing list (ietf-http-wg@w3.org), which is archived at | ||||
| https://lists.w3.org/Archives/Public/ietf-http-wg/ . | ||||
| Working Group information can be found at http://httpwg.github.io/ ; | ||||
| source code and issues list for this draft can be found at | ||||
| https://github.com/httpwg/http-extensions/labels/opp-sec . | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on June 19, 2016. | This Internet-Draft will expire on September 18, 2016. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Goals and Non-Goals . . . . . . . . . . . . . . . . . . . 3 | 1.1. Goals and Non-Goals . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 3 | 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 3 | |||
| 2. Using HTTP URIs over TLS . . . . . . . . . . . . . . . . . . 3 | 2. Using HTTP URIs over TLS . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Server Authentication . . . . . . . . . . . . . . . . . . . . 4 | 3. Server Authentication . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Interaction with "https" URIs . . . . . . . . . . . . . . . . 4 | 4. Interaction with "https" URIs . . . . . . . . . . . . . . . . 5 | |||
| 5. Requiring Use of TLS . . . . . . . . . . . . . . . . . . . . 5 | 5. Requiring Use of TLS . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5.1. The HTTP-TLS Header Field . . . . . . . . . . . . . . . . 5 | 5.1. Opportunistic Commitment . . . . . . . . . . . . . . . . 6 | |||
| 5.2. Operational Considerations . . . . . . . . . . . . . . . 7 | 5.2. Client Handling of A Commitment . . . . . . . . . . . . . 6 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 5.3. Operational Considerations . . . . . . . . . . . . . . . 7 | |||
| 6.1. Security Indicators . . . . . . . . . . . . . . . . . . . 7 | 6. The "http-opportunistic" well-known URI . . . . . . . . . . . 7 | |||
| 6.2. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 7 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6.3. Privacy Considerations . . . . . . . . . . . . . . . . . 8 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 6.4. Confusion Regarding Request Scheme . . . . . . . . . . . 8 | 8.1. Security Indicators . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 8.2. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 8.3. Privacy Considerations . . . . . . . . . . . . . . . . . 9 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 9 | 8.4. Confusion Regarding Request Scheme . . . . . . . . . . . 9 | |||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 9 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 10 | ||||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | ||||
| 1. Introduction | 1. Introduction | |||
| This document describes a use of HTTP Alternative Services | This document describes a use of HTTP Alternative Services | |||
| [I-D.ietf-httpbis-alt-svc] to decouple the URI scheme from the use | [I-D.ietf-httpbis-alt-svc] to decouple the URI scheme from the use | |||
| and configuration of underlying encryption, allowing a "http" URI to | and configuration of underlying encryption, allowing a "http" URI | |||
| be accessed using TLS [RFC5246] opportunistically. | [RFC7230] to be accessed using TLS [RFC5246] opportunistically. | |||
| Serving "https" URIs require acquiring and configuring a valid | Serving "https" URIs require acquiring and configuring a valid | |||
| certificate, which means that some deployments find supporting TLS | certificate, which means that some deployments find supporting TLS | |||
| difficult. This document describes a usage model whereby sites can | difficult. This document describes a usage model whereby sites can | |||
| serve "http" URIs over TLS without being required to support strong | serve "http" URIs over TLS without being required to support strong | |||
| server authentication. | server authentication. | |||
| Opportunistic Security [RFC7435] does not provide the same guarantees | Opportunistic Security [RFC7435] does not provide the same guarantees | |||
| as using TLS with "https" URIs; it is vulnerable to active attacks, | as using TLS with "https" URIs; it is vulnerable to active attacks, | |||
| and does not change the security context of the connection. | and does not change the security context of the connection. | |||
| skipping to change at page 4, line 7 ¶ | skipping to change at page 4, line 14 ¶ | |||
| A client can also explicitly probe for an alternative service | A client can also explicitly probe for an alternative service | |||
| advertisement by sending a request that bears little or no sensitive | advertisement by sending a request that bears little or no sensitive | |||
| information, such as one with the OPTIONS method. Likewise, clients | information, such as one with the OPTIONS method. Likewise, clients | |||
| with existing alternative services information could make such a | with existing alternative services information could make such a | |||
| request before they expire, in order minimize the delays that might | request before they expire, in order minimize the delays that might | |||
| be incurred. | be incurred. | |||
| 3. Server Authentication | 3. Server Authentication | |||
| By their nature, "http" URIs do not require cryptographically strong | [I-D.ietf-httpbis-alt-svc] requires that an alternative service only | |||
| server authentication; that is only implied by "https" URIs. | be used when there are "reasonable assurances" that it is under | |||
| Furthermore, doing so (as per [RFC2818]) creates a number of | control of and valid for the whole origin. | |||
| operational challenges. For these reasons, server authentication is | ||||
| not mandatory for "http" URIs when using the mechanism described in | ||||
| this specification. | ||||
| When connecting to an alternative service for an "http" URI, clients | As defined in that specification, one way of establishing this is | |||
| are not required to perform the server authentication procedure | using a TLS-based protocol with the certificate checks defined in | |||
| described in Section 3.1 of [RFC2818]. The server certificate, if | [RFC2818]. Clients MAY impose additional criteria for establishing | |||
| one is proffered by the alternative service, is not necessarily | reasonable assurances. | |||
| checked for validity, expiration, issuance by a trusted certificate | ||||
| authority or matched against the name in the URI. Therefore, the | ||||
| alternative service can provide any certificate, or even select TLS | ||||
| cipher suites that do not include authentication. | ||||
| A client MAY perform additional checks on the offered certificate if | For the purposes of this specification, an additional way of | |||
| the server does not select an unauthenticated TLS cipher suite. This | establishing reasonable assurances is available when the alternative | |||
| document doesn't define any such checks, though clients could be | is on the same host as the origin, using the "http-opportunistic" | |||
| configured with a policy that defines what is acceptable. | well-known URI defined in Section 6. | |||
| As stipulated by [I-D.ietf-httpbis-alt-svc], clients MUST NOT use | This allows deployment without the use of valid certificates, to | |||
| alternative services with a host other than the origin's, unless the | encourage deployment of opportunistic security. When it is in use, | |||
| alternative service itself is strongly authenticated (as the origin's | the alternative service can provide any certificate, or even select | |||
| host); for example, using TLS with a certificate that validates as | TLS cipher suites that do not include authentication. | |||
| per [RFC2818]. | ||||
| When the client has a valid http-opportunistic response for an | ||||
| origin, it MAY consider there to be reasonable assurances when: | ||||
| o The origin and alternative service's hostnames are the same when | ||||
| compared in a case-insensitive fashion, and | ||||
| o The chosen alternative service returns the same response as above. | ||||
| For example, this request/response pair would constitute reasonable | ||||
| assurances for the origin "http://www.example.com" for any | ||||
| alternative service also on "www.example.com": | ||||
| GET /.well-known/http-opportunistic HTTP/1.1 | ||||
| Host: www.example.com | ||||
| HTTP/1.1 200 OK | ||||
| Content-Type: application/json | ||||
| Connection: close | ||||
| { | ||||
| "origins": ["http://example.com", "http://www.example.com:81"] | ||||
| } | ||||
| Note that this mechanism is only defined to establish reasonable | ||||
| assurances for the purposes of this specification; it does not apply | ||||
| to other uses of alternative services unless they explicitly invoke | ||||
| it. | ||||
| 4. Interaction with "https" URIs | 4. Interaction with "https" URIs | |||
| When using alternative services, requests for resources identified by | When using alternative services, requests for resources identified by | |||
| both "http" and "https" URIs might use the same connection, because | both "http" and "https" URIs might use the same connection, because | |||
| HTTP/2 permits requests for multiple origins on the same connection. | HTTP/2 permits requests for multiple origins on the same connection. | |||
| Since "https" URIs rely on server authentication, a connection that | Since "https" URIs rely on server authentication, a connection that | |||
| is initially created for "http" URIs without authenticating the | is initially created for "http" URIs without authenticating the | |||
| server cannot be used for "https" URIs until the server certificate | server cannot be used for "https" URIs until the server certificate | |||
| is successfully authenticated. Section 3.1 of [RFC2818] describes | is successfully authenticated. Section 3.1 of [RFC2818] describes | |||
| the basic mechanism, though the authentication considerations in | the basic mechanism, though the authentication considerations in | |||
| [I-D.ietf-httpbis-alt-svc] also apply. | [I-D.ietf-httpbis-alt-svc] also apply. | |||
| Connections that are established without any means of server | Connections that are established without any means of server | |||
| authentication (for instance, the purely anonymous TLS cipher | authentication (for instance, the purely anonymous TLS cipher | |||
| suites), cannot be used for "https" URIs. | suites), cannot be used for "https" URIs. | |||
| 5. Requiring Use of TLS | 5. Requiring Use of TLS | |||
| Editors' Note: this is a very rough take on an approach that would | Even when the alternative service is strongly authenticated, | |||
| provide a limited form of protection against downgrade attack. It's | opportunistically upgrading cleartext HTTP connections to use TLS is | |||
| unclear at this point whether the additional effort (and modest | subject to active attacks. In particular: | |||
| operational cost) is worthwhile. | ||||
| The mechanism described in this specification is trivial to mount an | ||||
| active attack against, for two reasons: | ||||
| o A client that doesn't perform authentication is an easy victim of | o Because the original HTTP connection is in cleartext, it is | |||
| server impersonation, through man-in-the-middle attacks. | vulnerable to man-in-the-middle attacks, and | |||
| o A client that is willing to use HTTP over cleartext to resolve the | o By default, if clients cannot reach the alternative service, they | |||
| resource will do so if access to any TLS-enabled alternative | will fall back to using the original cleartext origin. | |||
| services is blocked at the network layer. | ||||
| Given that the primary goal of this specification is to prevent | Given that the primary goal of this specification is to prevent | |||
| passive attacks, these are not critical failings (especially | passive attacks, these are not critical failings (especially | |||
| considering the alternative - HTTP over cleartext). However, a | considering the alternative - HTTP over cleartext). However, a | |||
| modest form of protection against active attacks can be provided for | modest form of protection against active attacks can be provided for | |||
| clients on subsequent connections. | clients on subsequent connections. | |||
| When an alternative service is able to commit to providing service | When an origin is able to commit to providing service for a | |||
| for a particular origin over TLS for a bounded period of time, | particular origin over TLS for a bounded period of time, clients can | |||
| clients can choose to rely upon its availability, failing when it | choose to rely upon its availability, failing when it cannot be | |||
| cannot be contacted. Effectively, this makes the choice to use a | contacted. Effectively, this makes the choice to use a secured | |||
| secured protocol "sticky" in the client. | protocol "sticky". | |||
| 5.1. The HTTP-TLS Header Field | 5.1. Opportunistic Commitment | |||
| A alternative service can make this commitment by sending a "HTTP- | An origin can reduce the risk of attacks on opportunistically secured | |||
| TLS" header field, described here using the '#' ABNF extension | connections by committing to provide an secured, authenticated | |||
| defined in Section 7 of [RFC7230]: | alternative service. This is done by including the optional "commit" | |||
| member in the http-opportunistic well-known resource (see Section 6). | ||||
| This feature is optional due to the requirement for server | ||||
| authentication and the potential risk entailed (see Section 5.3). | ||||
| HTTP-TLS = 1#parameter | The value of the "commit" member is a number ([RFC7159], Section 6) | |||
| indicating the duration of the commitment interval in seconds. | ||||
| When it appears in a HTTP response from a strongly authenticated | { | |||
| alternative service, this header field indicates that the | "origins": ["http://example.com", "http://www.example.com:81"], | |||
| availability of the origin through TLS-protected alternative services | "commit": 86400 | |||
| is "sticky", and that the client MUST NOT fall back to cleartext | } | |||
| protocols while this information is considered fresh. | ||||
| For example: | Including "commit" creates a commitment to provide a secured | |||
| alternative service for the advertised period. Clients that receive | ||||
| this commitment can assume that a secured alternative service will be | ||||
| available for the indicated period. Clients might however choose to | ||||
| limit this time (see Section 5.3). | ||||
| GET /index.html HTTP/1.1 | 5.2. Client Handling of A Commitment | |||
| Host: example.com | ||||
| HTTP/1.1 200 OK | The value of the "commit" member MUST be ignored unless the | |||
| Content-Type: text/html | alternative service can be strongly authenticated. The same | |||
| Cache-Control: max-age=600 | authentication requirements that apply to "https://" resources SHOULD | |||
| Age: 30 | be applied to authenticating the alternative. Minimum authentication | |||
| Date: Thu, 1 May 2014 16:20:09 GMT | requirements for HTTP over TLS are described in Section 2.1 of | |||
| HTTP-TLS: ma=3600 | [I-D.ietf-httpbis-alt-svc] and Section 3.1 of [RFC2818]. As noted in | |||
| [I-D.ietf-httpbis-alt-svc], clients can impose other checks in | ||||
| addition to this minimum set. For instance, a client might choose to | ||||
| apply key pinning [RFC7469]. | ||||
| This header field creates a commitment from the origin [RFC6454] of | A client that receives a commitment and that successfully | |||
| the associated resource (in the example, "http://example.com"). For | authenticates the alternative service can assume that a secured | |||
| the duration of the commitment, clients SHOULD strongly authenticate | alternative will remain available for the commitment interval. The | |||
| the server for all subsequent requests made to that origin, though | commitment interval starts when the commitment is received and | |||
| this creates some risks for clients (see Section 5.2). | authenticated and runs for a number of seconds equal to value of the | |||
| "commit" member, less the current age of the http-opportunistic | ||||
| response (as defined in Section 4.2.3 of [RFC7234]). A client SHOULD | ||||
| avoid sending requests via cleartext protocols or to unauthenticated | ||||
| alternative services for the duration of the commitment interval, | ||||
| except to discover new potential alternatives. | ||||
| Authentication for HTTP over TLS is described in Section 3.1 of | A commitment only applies to the origin of the http-opportunistic | |||
| [RFC2818], noting the additional requirements in Section 2.1 of | well-known resource that was retrieved; other origins listed in the | |||
| [I-D.ietf-httpbis-alt-svc]. The header field MUST be ignored if | "origins" member MUST be independently discovered and authenticated. | |||
| strong authentication fails; otherwise, an attacker could create a | ||||
| persistent denial of service by falsifying a commitment. | ||||
| The commitment to use authenticated TLS persists for a period | A commitment is not bound to a particular alternative service. | |||
| determined by the value of the "ma" parameter. See Section 4.2.3 of | Clients are able to use alternative services that they become aware | |||
| [RFC7234] for details of determining response age. | of. However, once a valid and authenticated commitment has been | |||
| received, clients SHOULD NOT use an unauthenticated alternative | ||||
| service. Where there is an active commitment, clients SHOULD ignore | ||||
| advertisements for unsecured alternative services. A client MAY send | ||||
| requests to an unauthenticated origin in an attempt to discover | ||||
| potential alternative services, but these requests SHOULD be entirely | ||||
| generic and avoid including credentials. | ||||
| ma-parameter = delta-seconds | 5.3. Operational Considerations | |||
| The commitment made by the "HTTP-TLS" header field applies only to | Errors in configuration of commitments has the potential to render | |||
| the origin of the resource that generates the "HTTP-TLS" header | even the unsecured origin inaccessible for the duration of a | |||
| field. | commitment. Initial deployments are encouraged to use short duration | |||
| commitments so that errors can be detected without causing the origin | ||||
| to become inaccessible to clients for extended periods. | ||||
| Requests for an origin that has a persisted, unexpired value for | To avoid situations where a commitment causes errors, clients MAY | |||
| "HTTP-TLS" MUST fail if they cannot be made over an authenticated TLS | limit the time over which a commitment is respected for a given | |||
| connection. | origin. A lower limit might be appropriate for initial commitments; | |||
| the certainty that a site has set a correct value - and the | ||||
| corresponding limit on persistence - might increase as a commitment | ||||
| is renewed multiple times. | ||||
| Note that the commitment is not bound to a particular alternative | 6. The "http-opportunistic" well-known URI | |||
| service. Clients SHOULD use alternative services that they become | ||||
| aware of. However, clients MUST NOT use an unauthenticated | ||||
| alternative service for an origin with this commitment. Where there | ||||
| is an active commitment, clients MAY instead ignore advertisements | ||||
| for unsecured alternatives services. | ||||
| 5.2. Operational Considerations | This specification defines the "http-opportunistic" well-known URI | |||
| [RFC5785]. An origin is said to have a valid http-opportunistic | ||||
| resource when: | ||||
| To avoid situations where a persisted value of "HTTP-TLS" causes a | o The client has obtained a 200 (OK) response for the well-known URI | |||
| client to be unable to contact a site, clients SHOULD limit the time | from the origin, or refreshed one in cache [RFC7234], and | |||
| that a value is persisted for a given origin. A lower limit might be | ||||
| appropriate for initial observations of "HTTP-TLS"; the certainty | ||||
| that a site has set a correct value - and the corresponding limit on | ||||
| persistence - can increase as the value is seen more over time. | ||||
| Once a server has indicated that it will support authenticated TLS, a | o That response has the media type "application/json", and | |||
| client MAY use key pinning [RFC7469] or any other mechanism that | o That response's payload, when parsed as JSON [RFC7159], contains | |||
| would otherwise be restricted to use with "https" URIs, provided that | an object as the root. | |||
| the mechanism can be restricted to a single HTTP origin. | ||||
| 6. Security Considerations | o The "origins" member of the root object has a value of an array of | |||
| strings, one of which is a case-insensitive character-for- | ||||
| character match for the origin in question, serialised into | ||||
| Unicode as per [RFC6454], Section 6.1, and | ||||
| 6.1. Security Indicators | This specification defines one additional, optional member of the | |||
| root object, "commit" in Section 5. Unrecognised members MUST be | ||||
| ignored. | ||||
| 7. IANA Considerations | ||||
| This specification registers a Well-known URI [RFC5785]: | ||||
| o URI Suffix: http-opportunistic | ||||
| o Change Controller: IETF | ||||
| o Specification Document(s): [this specification] | ||||
| o Related Information: | ||||
| 8. Security Considerations | ||||
| 8.1. Security Indicators | ||||
| User Agents MUST NOT provide any special security indicia when an | User Agents MUST NOT provide any special security indicia when an | |||
| "http" resource is acquired using TLS. In particular, indicators | "http" resource is acquired using TLS. In particular, indicators | |||
| that might suggest the same level of security as "https" MUST NOT be | that might suggest the same level of security as "https" MUST NOT be | |||
| used (e.g., using a "lock device"). | used (e.g., a "lock device"). | |||
| 6.2. Downgrade Attacks | 8.2. Downgrade Attacks | |||
| A downgrade attack against the negotiation for TLS is possible. With | A downgrade attack against the negotiation for TLS is possible. With | |||
| the "HTTP-TLS" header field, this is limited to occasions where | commitment Section 5, this is limited to occasions where clients have | |||
| clients have no prior information (see Section 6.3), or when | no prior information (see Section 8.3), or when persisted commitments | |||
| persisted commitments have expired. | have expired. | |||
| For example, because the "Alt-Svc" header field | For example, because the "Alt-Svc" header field | |||
| [I-D.ietf-httpbis-alt-svc] likely appears in an unauthenticated and | [I-D.ietf-httpbis-alt-svc] likely appears in an unauthenticated and | |||
| unencrypted channel, it is subject to downgrade by network attackers. | unencrypted channel, it is subject to downgrade by network attackers. | |||
| In its simplest form, an attacker that wants the connection to remain | In its simplest form, an attacker that wants the connection to remain | |||
| in the clear need only strip the "Alt-Svc" header field from | in the clear need only strip the "Alt-Svc" header field from | |||
| responses. | responses. | |||
| Downgrade attacks can be partially mitigated using the "HTTP-TLS" | Downgrade attacks can be partially mitigated using the "commit" | |||
| header field, because when it is used, a client can avoid using | member of the http-opportunistic well-known resource, because when it | |||
| cleartext to contact a supporting server. However, this only works | is used, a client can avoid using cleartext to contact a supporting | |||
| when a previous connection has been established without an active | server. However, this only works when a previous connection has been | |||
| attacker present; a continuously present active attacker can either | established without an active attacker present; a continuously | |||
| prevent the client from ever using TLS, or offer its own certificate. | present active attacker can either prevent the client from ever using | |||
| TLS, or offer its own certificate. | ||||
| 6.3. Privacy Considerations | 8.3. Privacy Considerations | |||
| Cached alternative services can be used to track clients over time; | Cached alternative services can be used to track clients over time; | |||
| e.g., using a user-specific hostname. Clearing the cache reduces the | e.g., using a user-specific hostname. Clearing the cache reduces the | |||
| ability of servers to track clients; therefore clients MUST clear | ability of servers to track clients; therefore clients MUST clear | |||
| cached alternative service information when clearing other origin- | cached alternative service information when clearing other origin- | |||
| based state (i.e., cookies). | based state (i.e., cookies). | |||
| 6.4. Confusion Regarding Request Scheme | 8.4. Confusion Regarding Request Scheme | |||
| Many existing HTTP/1.1 implementations use the presence or absence of | Many existing HTTP/1.1 implementations use the presence or absence of | |||
| TLS in the stack to determine whether requests are for "http" or | TLS in the stack to determine whether requests are for "http" or | |||
| "https" resources. This is necessary in many cases because the most | "https" resources. This is necessary in many cases because the most | |||
| common form of an HTTP/1.1 request does not carry an explicit | common form of an HTTP/1.1 request does not carry an explicit | |||
| indication of the URI scheme. | indication of the URI scheme. | |||
| HTTP/1.1 MUST NOT be used for opportunistically secured requests. | HTTP/1.1 MUST NOT be used for opportunistically secured requests. | |||
| Some HTTP/1.1 implementations use ambient signals to determine if a | Some HTTP/1.1 implementations use ambient signals to determine if a | |||
| request is for an "https" resource. For example, implementations | request is for an "https" resource. For example, implementations | |||
| might look for TLS on the stack or a port number of 443. An | might look for TLS on the stack or a port number of 443. An | |||
| implementation that supports opportunistically secured requests | implementation that supports opportunistically secured requests | |||
| SHOULD suppress these signals if there is any potential for | SHOULD suppress these signals if there is any potential for | |||
| confusion. | confusion. | |||
| 7. References | 9. References | |||
| 7.1. Normative References | 9.1. Normative References | |||
| [I-D.ietf-httpbis-alt-svc] | [I-D.ietf-httpbis-alt-svc] | |||
| mnot, m., McManus, P., and J. Reschke, "HTTP Alternative | mnot, m., McManus, P., and J. Reschke, "HTTP Alternative | |||
| Services", draft-ietf-httpbis-alt-svc-09 (work in | Services", draft-ietf-httpbis-alt-svc-14 (work in | |||
| progress), November 2015. | progress), March 2016. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | |||
| DOI 10.17487/RFC2818, May 2000, | DOI 10.17487/RFC2818, May 2000, | |||
| <http://www.rfc-editor.org/info/rfc2818>. | <http://www.rfc-editor.org/info/rfc2818>. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
| <http://www.rfc-editor.org/info/rfc5246>. | <http://www.rfc-editor.org/info/rfc5246>. | |||
| [RFC5785] Nottingham, M. and E. Hammer-Lahav, "Defining Well-Known | ||||
| Uniform Resource Identifiers (URIs)", RFC 5785, | ||||
| DOI 10.17487/RFC5785, April 2010, | ||||
| <http://www.rfc-editor.org/info/rfc5785>. | ||||
| [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, | [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, | |||
| DOI 10.17487/RFC6454, December 2011, | DOI 10.17487/RFC6454, December 2011, | |||
| <http://www.rfc-editor.org/info/rfc6454>. | <http://www.rfc-editor.org/info/rfc6454>. | |||
| [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | ||||
| Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March | ||||
| 2014, <http://www.rfc-editor.org/info/rfc7159>. | ||||
| [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
| Protocol (HTTP/1.1): Message Syntax and Routing", | Protocol (HTTP/1.1): Message Syntax and Routing", | |||
| RFC 7230, DOI 10.17487/RFC7230, June 2014, | RFC 7230, DOI 10.17487/RFC7230, June 2014, | |||
| <http://www.rfc-editor.org/info/rfc7230>. | <http://www.rfc-editor.org/info/rfc7230>. | |||
| [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | |||
| RFC 7234, DOI 10.17487/RFC7234, June 2014, | RFC 7234, DOI 10.17487/RFC7234, June 2014, | |||
| <http://www.rfc-editor.org/info/rfc7234>. | <http://www.rfc-editor.org/info/rfc7234>. | |||
| [RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning | ||||
| Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April | ||||
| 2015, <http://www.rfc-editor.org/info/rfc7469>. | ||||
| [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | |||
| Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | |||
| DOI 10.17487/RFC7540, May 2015, | DOI 10.17487/RFC7540, May 2015, | |||
| <http://www.rfc-editor.org/info/rfc7540>. | <http://www.rfc-editor.org/info/rfc7540>. | |||
| 7.2. Informative References | 9.2. Informative References | |||
| [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an | [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an | |||
| Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May | Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May | |||
| 2014, <http://www.rfc-editor.org/info/rfc7258>. | 2014, <http://www.rfc-editor.org/info/rfc7258>. | |||
| [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | |||
| Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | |||
| December 2014, <http://www.rfc-editor.org/info/rfc7435>. | December 2014, <http://www.rfc-editor.org/info/rfc7435>. | |||
| [RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning | ||||
| Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April | ||||
| 2015, <http://www.rfc-editor.org/info/rfc7469>. | ||||
| Appendix A. Acknowledgements | Appendix A. Acknowledgements | |||
| Thanks to Patrick McManus, Eliot Lear, Stephen Farrell, Guy Podjarny, | Thanks to Patrick McManus, Eliot Lear, Stephen Farrell, Guy Podjarny, | |||
| Stephen Ludin, Erik Nygren, Paul Hoffman, Adam Langley, Eric Rescorla | Stephen Ludin, Erik Nygren, Paul Hoffman, Adam Langley, Eric Rescorla | |||
| and Richard Barnes for their feedback and suggestions. | and Richard Barnes for their feedback and suggestions. | |||
| Authors' Addresses | Authors' Addresses | |||
| Mark Nottingham | Mark Nottingham | |||
| End of changes. 49 change blocks. | ||||
| 140 lines changed or deleted | 214 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/ | ||||