| < draft-ietf-httpbis-http2-encryption-04.txt | draft-ietf-httpbis-http2-encryption-05.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: September 18, 2016 Mozilla | Expires: December 2, 2016 Mozilla | |||
| March 17, 2016 | May 31, 2016 | |||
| Opportunistic Security for HTTP | Opportunistic Security for HTTP | |||
| draft-ietf-httpbis-http2-encryption-04 | draft-ietf-httpbis-http2-encryption-05 | |||
| 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 | Note to Readers | |||
| Discussion of this draft takes place on the HTTP working group | Discussion of this draft takes place on the HTTP working group | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| 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 September 18, 2016. | This Internet-Draft will expire on December 2, 2016. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 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 | |||
| skipping to change at page 2, line 34 ¶ | skipping to change at page 2, line 34 ¶ | |||
| 5.1. Opportunistic Commitment . . . . . . . . . . . . . . . . 6 | 5.1. Opportunistic Commitment . . . . . . . . . . . . . . . . 6 | |||
| 5.2. Client Handling of A Commitment . . . . . . . . . . . . . 6 | 5.2. Client Handling of A Commitment . . . . . . . . . . . . . 6 | |||
| 5.3. Operational Considerations . . . . . . . . . . . . . . . 7 | 5.3. Operational Considerations . . . . . . . . . . . . . . . 7 | |||
| 6. The "http-opportunistic" well-known URI . . . . . . . . . . . 7 | 6. The "http-opportunistic" well-known URI . . . . . . . . . . . 7 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.1. Security Indicators . . . . . . . . . . . . . . . . . . . 8 | 8.1. Security Indicators . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.2. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 8 | 8.2. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 8 | |||
| 8.3. Privacy Considerations . . . . . . . . . . . . . . . . . 9 | 8.3. Privacy Considerations . . . . . . . . . . . . . . . . . 9 | |||
| 8.4. Confusion Regarding Request Scheme . . . . . . . . . . . 9 | 8.4. Confusion Regarding Request Scheme . . . . . . . . . . . 9 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 8.5. Server Controls . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 10 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 11 | ||||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 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 [RFC7838] | |||
| [I-D.ietf-httpbis-alt-svc] to decouple the URI scheme from the use | to decouple the URI scheme from the use and configuration of | |||
| and configuration of underlying encryption, allowing a "http" URI | underlying encryption, allowing a "http" URI [RFC7230] to be accessed | |||
| [RFC7230] to be accessed using TLS [RFC5246] opportunistically. | using Transport Layer Security (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. | |||
| Normally, users will not be able to tell that it is in use (i.e., | Normally, users will not be able to tell that it is in use (i.e., | |||
| there will be no "lock icon"). | there will be no "lock icon"). | |||
| By its nature, this technique is vulnerable to active attacks. A | A mechanism for partially mitigating active attacks is described in | |||
| mechanism for partially mitigating them is described in Section 5. | Section 5. | |||
| 1.1. Goals and Non-Goals | 1.1. Goals and Non-Goals | |||
| The immediate goal is to make the use of HTTP more robust in the face | The immediate goal is to make the use of HTTP more robust in the face | |||
| of pervasive passive monitoring [RFC7258]. | of pervasive passive monitoring [RFC7258]. | |||
| A secondary goal is to limit the potential for active attacks. It is | A secondary goal is to limit the potential for active attacks. It is | |||
| not intended to offer the same level of protection as afforded to | not intended to offer the same level of protection as afforded to | |||
| "https" URIs, but instead to increase the likelihood that an active | "https" URIs, but instead to increase the likelihood that an active | |||
| attack can be detected. | attack can be detected. | |||
| skipping to change at page 3, line 39 ¶ | skipping to change at page 3, line 39 ¶ | |||
| 1.2. Notational Conventions | 1.2. Notational Conventions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 2. Using HTTP URIs over TLS | 2. Using HTTP URIs over TLS | |||
| An origin server that supports the resolution of "http" URIs can | An origin server that supports the resolution of "http" URIs can | |||
| indicate support for this specification by providing an alternative | indicate support for this specification by providing an alternative | |||
| service advertisement [I-D.ietf-httpbis-alt-svc] for a protocol | service advertisement [RFC7838] for a protocol identifier that uses | |||
| identifier that uses TLS, such as "h2" [RFC7540]. | TLS, such as "h2" [RFC7540]. | |||
| A client that receives such an advertisement MAY make future requests | A client that receives such an advertisement MAY make future requests | |||
| intended for the associated origin ([RFC6454]) to the identified | intended for the associated origin ([RFC6454]) to the identified | |||
| service (as specified by [I-D.ietf-httpbis-alt-svc]). | service (as specified by [RFC7838]). | |||
| A client that places the importance of protection against passive | A client that places the importance of protection against passive | |||
| attacks over performance might choose to withhold requests until an | attacks over performance might choose to withhold requests until an | |||
| encrypted connection is available. However, if such a connection | encrypted connection is available. However, if such a connection | |||
| cannot be successfully established, the client can resume its use of | cannot be successfully established, the client can resume its use of | |||
| the cleartext connection. | the cleartext connection. | |||
| 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 | |||
| [I-D.ietf-httpbis-alt-svc] requires that an alternative service only | [RFC7838] requires that an alternative service only be used when | |||
| be used when there are "reasonable assurances" that it is under | there are "reasonable assurances" that it is under control of and | |||
| control of and valid for the whole origin. | valid for the whole origin. | |||
| As defined in that specification, one way of establishing this is | As defined in that specification, a client can establish reasonable | |||
| using a TLS-based protocol with the certificate checks defined in | assurances when using a TLS-based protocol with the certificate | |||
| [RFC2818]. Clients MAY impose additional criteria for establishing | checks defined in [RFC2818]. | |||
| reasonable assurances. | ||||
| For the purposes of this specification, an additional way of | For the purposes of this specification, an additional way of | |||
| establishing reasonable assurances is available when the alternative | establishing reasonable assurances is available when the alternative | |||
| is on the same host as the origin, using the "http-opportunistic" | is on the same host as the origin, using the "http-opportunistic" | |||
| well-known URI defined in Section 6. | well-known URI defined in Section 6. | |||
| This allows deployment without the use of valid certificates, to | This allows deployment without the use of valid certificates, to | |||
| encourage deployment of opportunistic security. When it is in use, | encourage deployment of opportunistic security. When it is in use, | |||
| the alternative service can provide any certificate, or even select | the alternative service can provide any certificate, or even select | |||
| TLS cipher suites that do not include authentication. | TLS cipher suites that do not include authentication. | |||
| When the client has a valid http-opportunistic response for an | When a client has a valid http-opportunistic response for an origin | |||
| origin, it MAY consider there to be reasonable assurances when: | (as per Section 6), it MAY consider there to be reasonable assurances | |||
| as long as: | ||||
| o The origin and alternative service's hostnames are the same when | o The origin and alternative service's hostnames are the same when | |||
| compared in a case-insensitive fashion, and | compared in a case-insensitive fashion, and | |||
| o The chosen alternative service returns the same response as above. | o The origin object of the http-opportunistic response has a `tls- | |||
| ports' member, whose value is an array of numbers, one of which | ||||
| matches the port of the alternative service in question, and | ||||
| o The chosen alternative service returns the same representation as | ||||
| the origin did for the http-opportunistic resource. | ||||
| For example, this request/response pair would constitute reasonable | For example, this request/response pair would constitute reasonable | |||
| assurances for the origin "http://www.example.com" for any | assurances for the origin "http://www.example.com" for an alternative | |||
| alternative service also on "www.example.com": | service on port 443 or 8000 of the host "www.example.com": | |||
| GET /.well-known/http-opportunistic HTTP/1.1 | GET /.well-known/http-opportunistic HTTP/1.1 | |||
| Host: www.example.com | Host: www.example.com | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Type: application/json | Content-Type: application/json | |||
| Connection: close | Connection: close | |||
| { | { | |||
| "origins": ["http://example.com", "http://www.example.com:81"] | "http://www.example.com": { | |||
| "tls-ports": [443, 8000] | ||||
| } | ||||
| } | } | |||
| Note that this mechanism is only defined to establish reasonable | Note that this mechanism is only defined to establish reasonable | |||
| assurances for the purposes of this specification; it does not apply | assurances for the purposes of this specification; it does not apply | |||
| to other uses of alternative services unless they explicitly invoke | to other uses of alternative services unless they explicitly invoke | |||
| it. | 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. | Section 2.1 of [RFC7838] 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) | |||
| suites), cannot be used for "https" URIs. | cannot be used for "https" URIs. | |||
| 5. Requiring Use of TLS | 5. Requiring Use of TLS | |||
| Even when the alternative service is strongly authenticated, | Even when the alternative service is strongly authenticated, | |||
| opportunistically upgrading cleartext HTTP connections to use TLS is | opportunistically upgrading cleartext HTTP connections to use TLS is | |||
| subject to active attacks. In particular: | subject to active attacks. In particular: | |||
| o Because the original HTTP connection is in cleartext, it is | o Because the original HTTP connection is in cleartext, it is | |||
| vulnerable to man-in-the-middle attacks, and | vulnerable to man-in-the-middle attacks, and | |||
| skipping to change at page 6, line 16 ¶ | skipping to change at page 6, line 20 ¶ | |||
| When an origin is able to commit to providing service for a | When an origin is able to commit to providing service for a | |||
| particular origin over TLS for a bounded period of time, clients can | particular origin over TLS for a bounded period of time, clients can | |||
| choose to rely upon its availability, failing when it cannot be | choose to rely upon its availability, failing when it cannot be | |||
| contacted. Effectively, this makes the choice to use a secured | contacted. Effectively, this makes the choice to use a secured | |||
| protocol "sticky". | protocol "sticky". | |||
| 5.1. Opportunistic Commitment | 5.1. Opportunistic Commitment | |||
| An origin can reduce the risk of attacks on opportunistically secured | An origin can reduce the risk of attacks on opportunistically secured | |||
| connections by committing to provide an secured, authenticated | connections by committing to provide a secured, authenticated | |||
| alternative service. This is done by including the optional "commit" | alternative service. This is done by including the optional "tls- | |||
| member in the http-opportunistic well-known resource (see Section 6). | commit" member in the origin object of the http-opportunistic well- | |||
| known response (see Section 6). | ||||
| This feature is optional due to the requirement for server | This feature is optional due to the requirement for server | |||
| authentication and the potential risk entailed (see Section 5.3). | authentication and the potential risk entailed (see Section 5.3). | |||
| The value of the "commit" member is a number ([RFC7159], Section 6) | The value of the "tls-commit" member is a number ([RFC7159], | |||
| indicating the duration of the commitment interval in seconds. | Section 6) indicating the duration of the commitment interval in | |||
| seconds. | ||||
| { | { | |||
| "origins": ["http://example.com", "http://www.example.com:81"], | "http://www.example.com": { | |||
| "commit": 86400 | "tls-ports": [443,8080], | |||
| "tls-commit": 3600 | ||||
| } | ||||
| } | } | |||
| Including "commit" creates a commitment to provide a secured | Including "tls-commit" creates a commitment to provide a secured | |||
| alternative service for the advertised period. Clients that receive | alternative service for the advertised period. Clients that receive | |||
| this commitment can assume that a secured alternative service will be | this commitment can assume that a secured alternative service will be | |||
| available for the indicated period. Clients might however choose to | available for the indicated period. Clients might however choose to | |||
| limit this time (see Section 5.3). | limit this time (see Section 5.3). | |||
| 5.2. Client Handling of A Commitment | 5.2. Client Handling of A Commitment | |||
| The value of the "commit" member MUST be ignored unless the | The value of the "tls-commit" member MUST be ignored unless the | |||
| alternative service can be strongly authenticated. The same | alternative service can be strongly authenticated. The same | |||
| authentication requirements that apply to "https://" resources SHOULD | authentication requirements that apply to "https://" resources SHOULD | |||
| be applied to authenticating the alternative. Minimum authentication | be applied to authenticating the alternative. Minimum authentication | |||
| requirements for HTTP over TLS are described in Section 2.1 of | requirements for HTTP over TLS are described in Section 2.1 of | |||
| [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 | [RFC7838] and Section 3.1 of [RFC2818]. As noted in [RFC7838], | |||
| addition to this minimum set. For instance, a client might choose to | clients can impose other checks in addition to this minimum set. For | |||
| apply key pinning [RFC7469]. | instance, a client might choose to apply key pinning [RFC7469]. | |||
| A client that receives a commitment and that successfully | A client that receives a commitment and that successfully | |||
| authenticates the alternative service can assume that a secured | authenticates the alternative service can assume that a secured | |||
| alternative will remain available for the commitment interval. The | alternative will remain available for the commitment interval. The | |||
| commitment interval starts when the commitment is received and | commitment interval starts when the commitment is received and | |||
| authenticated and runs for a number of seconds equal to value of the | authenticated and runs for a number of seconds equal to value of the | |||
| "commit" member, less the current age of the http-opportunistic | "tls-commit" member, less the current age of the http-opportunistic | |||
| response (as defined in Section 4.2.3 of [RFC7234]). A client SHOULD | response (as defined in Section 4.2.3 of [RFC7234]). Note that the | |||
| avoid sending requests via cleartext protocols or to unauthenticated | commitment interval MAY exceed the freshness lifetime of the "http- | |||
| alternative services for the duration of the commitment interval, | opportunistic" resource. | |||
| except to discover new potential alternatives. | ||||
| A commitment only applies to the origin of the http-opportunistic | A client SHOULD avoid sending requests via cleartext protocols or to | |||
| well-known resource that was retrieved; other origins listed in the | unauthenticated alternative services for the duration of the | |||
| "origins" member MUST be independently discovered and authenticated. | commitment interval, except to discover new potential alternatives. | |||
| A commitment is not bound to a particular alternative service. | A commitment is not bound to a particular alternative service. | |||
| Clients are able to use alternative services that they become aware | Clients are able to use alternative services that they become aware | |||
| of. However, once a valid and authenticated commitment has been | of. However, once a valid and authenticated commitment has been | |||
| received, clients SHOULD NOT use an unauthenticated alternative | received, clients SHOULD NOT use an unauthenticated alternative | |||
| service. Where there is an active commitment, clients SHOULD ignore | service. Where there is an active commitment, clients SHOULD ignore | |||
| advertisements for unsecured alternative services. A client MAY send | advertisements for unsecured alternative services. A client MAY send | |||
| requests to an unauthenticated origin in an attempt to discover | requests to an unauthenticated origin in an attempt to discover | |||
| potential alternative services, but these requests SHOULD be entirely | potential alternative services, but these requests SHOULD be entirely | |||
| generic and avoid including credentials. | generic and avoid including credentials. | |||
| skipping to change at page 7, line 44 ¶ | skipping to change at page 7, line 51 ¶ | |||
| To avoid situations where a commitment causes errors, clients MAY | To avoid situations where a commitment causes errors, clients MAY | |||
| limit the time over which a commitment is respected for a given | limit the time over which a commitment is respected for a given | |||
| origin. A lower limit might be appropriate for initial commitments; | origin. A lower limit might be appropriate for initial commitments; | |||
| the certainty that a site has set a correct value - and the | the certainty that a site has set a correct value - and the | |||
| corresponding limit on persistence - might increase as a commitment | corresponding limit on persistence - might increase as a commitment | |||
| is renewed multiple times. | is renewed multiple times. | |||
| 6. The "http-opportunistic" well-known URI | 6. The "http-opportunistic" well-known URI | |||
| This specification defines the "http-opportunistic" well-known URI | This specification defines the "http-opportunistic" well-known URI | |||
| [RFC5785]. An origin is said to have a valid http-opportunistic | [RFC5785]. A client is said to have a valid http-opportunistic | |||
| resource when: | response for a given origin when: | |||
| o The client has obtained a 200 (OK) response for the well-known URI | o The client has obtained a 200 (OK) response for the well-known URI | |||
| from the origin, or refreshed one in cache [RFC7234], and | from the origin, and it is fresh [RFC7234] (potentially through | |||
| revalidation [RFC7232]), and | ||||
| o That response has the media type "application/json", and | o That response has the media type "application/json", and | |||
| o That response's payload, when parsed as JSON [RFC7159], contains | o That response's payload, when parsed as JSON [RFC7159], contains | |||
| an object as the root. | an object as the root. | |||
| o The "origins" member of the root object has a value of an array of | o The root object contains a member whose name is a case-insensitive | |||
| strings, one of which is a case-insensitive character-for- | character-for-character match for the origin in question, | |||
| character match for the origin in question, serialised into | serialised into Unicode as per Section 6.1 of [RFC6454], and whose | |||
| Unicode as per [RFC6454], Section 6.1, and | value is an object (hereafter, the "origin object"). | |||
| This specification defines one additional, optional member of the | ||||
| root object, "commit" in Section 5. Unrecognised members MUST be | ||||
| ignored. | ||||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This specification registers a Well-known URI [RFC5785]: | This specification registers a Well-Known URI [RFC5785]: | |||
| o URI Suffix: http-opportunistic | o URI Suffix: http-opportunistic | |||
| o Change Controller: IETF | o Change Controller: IETF | |||
| o Specification Document(s): [this specification] | o Specification Document(s): Section 6 of [this specification] | |||
| o Related Information: | o Related Information: | |||
| 8. Security Considerations | 8. Security Considerations | |||
| 8.1. Security Indicators | 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., a "lock device"). | used (e.g., a "lock device"). | |||
| 8.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 | |||
| commitment Section 5, this is limited to occasions where clients have | commitment (see Section 5), this is limited to occasions where | |||
| no prior information (see Section 8.3), or when persisted commitments | clients have no prior information (see Section 8.3), or when | |||
| have expired. | persisted commitments have expired. | |||
| For example, because the "Alt-Svc" header field | For example, because the "Alt-Svc" header field [RFC7838] likely | |||
| [I-D.ietf-httpbis-alt-svc] likely appears in an unauthenticated and | appears in an unauthenticated and unencrypted channel, it is subject | |||
| unencrypted channel, it is subject to downgrade by network attackers. | to downgrade by network attackers. In its simplest form, an attacker | |||
| In its simplest form, an attacker that wants the connection to remain | that wants the connection to remain in the clear need only strip the | |||
| in the clear need only strip the "Alt-Svc" header field from | "Alt-Svc" header field from responses. | |||
| responses. | ||||
| Downgrade attacks can be partially mitigated using the "commit" | Downgrade attacks can be partially mitigated using the "tls-commit" | |||
| member of the http-opportunistic well-known resource, because when it | member of the http-opportunistic well-known resource, because when it | |||
| is used, a client can avoid using cleartext to contact a supporting | is used, a client can avoid using cleartext to contact a supporting | |||
| server. However, this only works when a previous connection has been | server. However, this only works when a previous connection has been | |||
| established without an active attacker present; a continuously | established without an active attacker present; a continuously | |||
| present active attacker can either prevent the client from ever using | present active attacker can either prevent the client from ever using | |||
| TLS, or offer its own certificate. | TLS, or offer its own certificate. | |||
| 8.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). | |||
| 8.4. Confusion Regarding Request Scheme | 8.4. Confusion Regarding Request Scheme | |||
| Many existing HTTP/1.1 implementations use the presence or absence of | HTTP implementations and applications sometimes use ambient signals | |||
| TLS in the stack to determine whether requests are for "http" or | to determine if a request is for an "https" resource; for example, | |||
| "https" resources. This is necessary in many cases because the most | they might look for TLS on the stack, or a server port number of 443. | |||
| common form of an HTTP/1.1 request does not carry an explicit | ||||
| indication of the URI scheme. | ||||
| HTTP/1.1 MUST NOT be used for opportunistically secured requests. | This might be due to limitations in the protocol (the most common | |||
| HTTP/1.1 request form does not carry an explicit indication of the | ||||
| URI scheme), or it may be because how the server and application are | ||||
| implemented (often, they are two separate entities, with a variety of | ||||
| possible interfaces between them). | ||||
| Some HTTP/1.1 implementations use ambient signals to determine if a | Any security decisions based upon this information could be misled by | |||
| request is for an "https" resource. For example, implementations | the deployment of this specification, because it violates the | |||
| might look for TLS on the stack or a port number of 443. An | assumption that the use of TLS (or port 443) means that the client is | |||
| implementation that supports opportunistically secured requests | accessing a HTTPS URI, and operating in the security context implied | |||
| SHOULD suppress these signals if there is any potential for | by HTTPS. | |||
| confusion. | ||||
| Therefore, servers need to carefully examine the use of such signals | ||||
| before deploying this specification. | ||||
| 8.5. Server Controls | ||||
| Because this specification allows "reasonable assurances" to be | ||||
| established by the content of a well-known URI, servers SHOULD take | ||||
| suitable measures to assure that its content remains under their | ||||
| control. Likewise, because the Alt-Svc header field is used to | ||||
| describe policies across an entire origin, servers SHOULD NOT permit | ||||
| user content to set or modify the value of this header. | ||||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [I-D.ietf-httpbis-alt-svc] | ||||
| mnot, m., McManus, P., and J. Reschke, "HTTP Alternative | ||||
| Services", draft-ietf-httpbis-alt-svc-14 (work in | ||||
| 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 | |||
| skipping to change at page 10, line 32 ¶ | skipping to change at page 10, line 41 ¶ | |||
| [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | [RFC7159] Bray, T., Ed., "The JavaScript Object Notation (JSON) Data | |||
| Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March | Interchange Format", RFC 7159, DOI 10.17487/RFC7159, March | |||
| 2014, <http://www.rfc-editor.org/info/rfc7159>. | 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>. | |||
| [RFC7232] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
| Protocol (HTTP/1.1): Conditional Requests", RFC 7232, | ||||
| DOI 10.17487/RFC7232, June 2014, | ||||
| <http://www.rfc-editor.org/info/rfc7232>. | ||||
| [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>. | |||
| [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>. | |||
| [RFC7838] Nottingham, M., McManus, P., and J. Reschke, "HTTP | ||||
| Alternative Services", RFC 7838, DOI 10.17487/RFC7838, | ||||
| April 2016, <http://www.rfc-editor.org/info/rfc7838>. | ||||
| 9.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 | [RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning | |||
| Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April | Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April | |||
| 2015, <http://www.rfc-editor.org/info/rfc7469>. | 2015, <http://www.rfc-editor.org/info/rfc7469>. | |||
| Appendix A. Acknowledgements | Appendix A. Acknowledgements | |||
| Thanks to Patrick McManus, Eliot Lear, Stephen Farrell, Guy Podjarny, | Mike Bishop contributed significant text to this document. | |||
| Stephen Ludin, Erik Nygren, Paul Hoffman, Adam Langley, Eric Rescorla | ||||
| and Richard Barnes for their feedback and suggestions. | Thanks to Patrick McManus, Stefan Eissing, Eliot Lear, Stephen | |||
| Farrell, Guy Podjarny, Stephen Ludin, Erik Nygren, Paul Hoffman, Adam | ||||
| Langley, Eric Rescorla, Julian Reschke, Kari Hurtta, and Richard | ||||
| Barnes for their feedback and suggestions. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Mark Nottingham | Mark Nottingham | |||
| Email: mnot@mnot.net | Email: mnot@mnot.net | |||
| URI: http://www.mnot.net/ | URI: http://www.mnot.net/ | |||
| Martin Thomson | Martin Thomson | |||
| Mozilla | Mozilla | |||
| End of changes. 40 change blocks. | ||||
| 96 lines changed or deleted | 125 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/ | ||||