| rfc9540.original | rfc9540.txt | |||
|---|---|---|---|---|
| Oblivious HTTP Application Intermediation T. Pauly | Internet Engineering Task Force (IETF) T. Pauly | |||
| Internet-Draft Apple Inc. | Request for Comments: 9540 Apple Inc. | |||
| Intended status: Standards Track T. Reddy | Category: Standards Track T. Reddy.K | |||
| Expires: 8 April 2024 Nokia | ISSN: 2070-1721 Nokia | |||
| 6 October 2023 | February 2024 | |||
| Discovery of Oblivious Services via Service Binding Records | Discovery of Oblivious Services via Service Binding Records | |||
| draft-ietf-ohai-svcb-config-07 | ||||
| Abstract | Abstract | |||
| This document defines a parameter that can be included in SVCB and | This document defines a parameter that can be included in Service | |||
| HTTPS DNS resource records to denote that a service is accessible | Binding (SVCB) and HTTPS DNS resource records to denote that a | |||
| using Oblivious HTTP, by offering an Oblivious Gateway Resource | service is accessible using Oblivious HTTP, by offering an Oblivious | |||
| through which to access the target. This document also defines a | Gateway Resource through which to access the target. This document | |||
| mechanism to learn the key configuration of the discovered Oblivious | also defines a mechanism for learning the key configuration of the | |||
| Gateway Resource. | discovered Oblivious Gateway Resource. | |||
| About This Document | ||||
| This note is to be removed before publishing as an RFC. | ||||
| Status information for this document may be found at | ||||
| https://datatracker.ietf.org/doc/draft-ietf-ohai-svcb-config/. | ||||
| Discussion of this document takes place on the Oblivious HTTP | ||||
| Application Intermediation Working Group mailing list | ||||
| (mailto:ohai@ietf.org), which is archived at | ||||
| https://mailarchive.ietf.org/arch/browse/ohai/. Subscribe at | ||||
| https://www.ietf.org/mailman/listinfo/ohai/. | ||||
| Source for this draft and an issue tracker can be found at | ||||
| https://github.com/ietf-wg-ohai/draft-ohai-svcb-config. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 8 April 2024. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9540. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2024 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
| 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 4 | 2. Conventions and Definitions | |||
| 3. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Applicability | |||
| 4. The ohttp SvcParamKey . . . . . . . . . . . . . . . . . . . . 4 | 4. The "ohttp" SvcParamKey | |||
| 4.1. Use in HTTPS service RRs . . . . . . . . . . . . . . . . 5 | 4.1. Use in HTTPS Service RRs | |||
| 4.2. Use in DNS server SVCB RRs . . . . . . . . . . . . . . . 5 | 4.2. Use in DNS Server SVCB RRs | |||
| 4.2.1. Use with DDR . . . . . . . . . . . . . . . . . . . . 6 | 4.2.1. Use with DDR | |||
| 4.2.2. Use with DNR . . . . . . . . . . . . . . . . . . . . 6 | 4.2.2. Use with DNR | |||
| 5. Gateway Location . . . . . . . . . . . . . . . . . . . . . . 7 | 5. Gateway Location | |||
| 6. Key Configuration Fetching . . . . . . . . . . . . . . . . . 7 | 6. Key Configuration Fetching | |||
| 7. Security and Privacy Considerations . . . . . . . . . . . . . 8 | 7. Security and Privacy Considerations | |||
| 7.1. Key Targeting Attacks . . . . . . . . . . . . . . . . . . 9 | 7.1. Key Targeting Attacks | |||
| 7.2. dohpath Targeting Attacks . . . . . . . . . . . . . . . . 9 | 7.2. dohpath Targeting Attacks | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 8. IANA Considerations | |||
| 8.1. SVCB Service Parameter . . . . . . . . . . . . . . . . . 9 | 8.1. SVCB Service Parameter | |||
| 8.2. Well-Known URI . . . . . . . . . . . . . . . . . . . . . 10 | 8.2. Well-Known URI | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 9. References | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 10 | 9.1. Normative References | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 11 | 9.2. Informative References | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| Oblivious HTTP [OHTTP] allows clients to encrypt messages exchanged | Oblivious HTTP [OHTTP] allows clients to encrypt messages exchanged | |||
| with an Oblivious Target Resource (target). The messages are | with an Oblivious Target Resource (target). The messages are | |||
| encapsulated in encrypted messages to an Oblivious Gateway Resource | encapsulated in encrypted messages to an Oblivious Gateway Resource | |||
| (gateway), which offers Oblivious HTTP access to the target. The | (gateway), which offers Oblivious HTTP access to the target. The | |||
| gateway is accessed via an Oblivious Relay Resource (relay), which | gateway is accessed via an Oblivious Relay Resource (relay), which | |||
| proxies the encapsulated messages to hide the identity of the client. | proxies the encapsulated messages to hide the identity of the client. | |||
| Overall, this architecture is designed in such a way that the relay | Overall, this architecture is designed in such a way that the relay | |||
| skipping to change at page 3, line 25 ¶ | skipping to change at line 91 ¶ | |||
| cannot learn the client's identity from a single transaction. | cannot learn the client's identity from a single transaction. | |||
| Since Oblivious HTTP deployments typically involve very specific | Since Oblivious HTTP deployments typically involve very specific | |||
| coordination between clients, relays, and gateways, the key | coordination between clients, relays, and gateways, the key | |||
| configuration is often shared in a bespoke fashion. However, some | configuration is often shared in a bespoke fashion. However, some | |||
| deployments involve clients discovering targets and their associated | deployments involve clients discovering targets and their associated | |||
| gateways more dynamically. For example, a network might operate a | gateways more dynamically. For example, a network might operate a | |||
| DNS resolver that provides more optimized or more relevant DNS | DNS resolver that provides more optimized or more relevant DNS | |||
| answers and is accessible using Oblivious HTTP, and might want to | answers and is accessible using Oblivious HTTP, and might want to | |||
| advertise support for Oblivious HTTP via mechanisms like Discovery of | advertise support for Oblivious HTTP via mechanisms like Discovery of | |||
| Designated Resolvers ([DDR]) and Discovery of Network-designated | Designated Resolvers [DDR] and Discovery of Network-designated | |||
| Resolvers ([DNR]). Clients can access these gateways through trusted | Resolvers [DNR]. Clients can access these gateways through trusted | |||
| relays. | relays. | |||
| This document defines a way to use DNS resource records (RRs) to | This document defines a way to use DNS resource records (RRs) to | |||
| advertise that an HTTP service supports Oblivious HTTP. This | advertise that an HTTP service supports Oblivious HTTP. This | |||
| advertisement is a parameter that can be included in SVCB and HTTPS | advertisement is a parameter that can be included in Service Binding | |||
| DNS RRs [SVCB] (Section 4). The presence of this parameter indicates | (SVCB) and HTTPS DNS RRs [SVCB] (Section 4). The presence of this | |||
| that a service can act as a target and has a gateway that can provide | parameter indicates that a service can act as a target and has a | |||
| access to the target. | gateway that can provide access to the target. | |||
| The client learns the URI to use for the gateway using a well-known | The client learns the URI to use for the gateway using a well-known | |||
| URI suffix [WELLKNOWN], "ohttp-gateway", which is accessed on the | URI suffix [WELLKNOWN], "ohttp-gateway", which is accessed on the | |||
| target (Section 5). This means that for deployments that support | target (Section 5). This means that for deployments that support | |||
| this kind of discovery, the gateway and target resources need to be | this kind of discovery, the Gateway and Target Resources need to be | |||
| located on the same host. | located on the same host. | |||
| This document also defines a way to fetch a gateway's key | This document also defines a way to fetch a gateway's key | |||
| configuration from the gateway (Section 6). | configuration from the gateway (Section 6). | |||
| This mechanism does not aid in the discovery of relays; relay | This mechanism does not aid in the discovery of relays; relay | |||
| configuration is out of scope for this document. Models in which | configuration is out of scope for this document. Models in which | |||
| this discovery mechanism is applicable are described in Section 3. | this discovery mechanism is applicable are described in Section 3. | |||
| 2. Conventions and Definitions | 2. Conventions and Definitions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3. Applicability | 3. Applicability | |||
| There are multiple models in which the discovery mechanism defined in | There are multiple models in which the discovery mechanism defined in | |||
| this document can be used. | this document can be used. These include: | |||
| * Upgrading regular (non-proxied) HTTP to Oblivious HTTP. In this | * Upgrading regular (non-proxied) HTTP to Oblivious HTTP. In this | |||
| model, the client intends to communicate with a specific target | model, the client intends to communicate with a specific target | |||
| service, and prefers to use Oblivious HTTP if it is available. | service and prefers to use Oblivious HTTP if it is available. The | |||
| The target service has a gateway that it offers to allow access | target service has a gateway that it offers to allow access using | |||
| using Oblivious HTTP. Once the client learns about the gateway, | Oblivious HTTP. Once the client learns about the gateway, it | |||
| it "upgrades" its requests from non-proxied HTTP to Oblivious HTTP | "upgrades" its requests from non-proxied HTTP to Oblivious HTTP to | |||
| to access the target service. | access the target service. | |||
| * Discovering alternative Oblivious HTTP services. In this model, | * Discovering alternative Oblivious HTTP services. In this model, | |||
| the client has a default target service that it uses. For | the client has a default target service that it uses. For | |||
| example, this may be a public DNS resolver that is accessible over | example, this may be a public DNS resolver that is accessible over | |||
| Oblivious HTTP. The client is willing to use alternative target | Oblivious HTTP. The client is willing to use alternative target | |||
| services if they are discovered, which may provide more optimized | services if they are discovered, which may provide more optimized | |||
| or more relevant responses. | or more relevant responses. | |||
| In both deployment models, the client is configured with a relay that | In both of these deployment models, the client is configured with a | |||
| it trusts for Oblivious HTTP transactions. This relay either needs | relay that it trusts for Oblivious HTTP transactions. This relay | |||
| to provide generic access to gateways, or provide a service to | needs to provide either (1) generic access to gateways or (2) a | |||
| clients to allow them to check which gateways are accessible. | service to clients to allow them to check which gateways are | |||
| accessible. | ||||
| 4. The ohttp SvcParamKey | 4. The "ohttp" SvcParamKey | |||
| The "ohttp" SvcParamKey is used to indicate that a service described | The "ohttp" SvcParamKey is used to indicate that a service described | |||
| in an SVCB RR can be accessed as a target using an associated | in a SVCB RR can be accessed as a target using an associated gateway. | |||
| gateway. The service that is queried by the client hosts one or more | The service that is queried by the client hosts one or more Target | |||
| target resources. | Resources. | |||
| In order to access the service's target resources using Oblivious | In order to access the service's Target Resources using Oblivious | |||
| HTTP, the client needs to send encapsulated messages to the gateway | HTTP, the client needs to send encapsulated messages to the Gateway | |||
| resource and the gateway's key configuration (both of which can be | Resource and the gateway's key configuration (both of which can be | |||
| retrieved using the method described in Section 6). | retrieved using the method described in Section 6). | |||
| Both the presentation and wire format values for the "ohttp" | Both the presentation and wire-format values for the "ohttp" | |||
| parameter MUST be empty. | parameter MUST be empty. | |||
| Services can include the "ohttp" parameter in the mandatory parameter | Services can include the "ohttp" parameter in the mandatory parameter | |||
| list if the service is only accessible using Oblivious HTTP. Marking | list if the service is only accessible using Oblivious HTTP. Marking | |||
| the "ohttp" parameter as mandatory will cause clients that do not | the "ohttp" parameter as mandatory will cause clients that do not | |||
| understand the parameter to ignore that SVCB RR. Including the | understand the parameter to ignore that SVCB RR. Including the | |||
| "ohttp" parameter without marking it mandatory advertises a service | "ohttp" parameter without marking it mandatory advertises a service | |||
| that is optionally available using Oblivious HTTP. Note also that | that is optionally available using Oblivious HTTP. Note also that | |||
| multiple SVCB RRs can be provided to indicate separate | multiple SVCB RRs can be provided to indicate separate | |||
| configurations. | configurations. | |||
| The media type to use for encapsulated requests made to a target | The media type to use for encapsulated requests made to a target | |||
| service depends on the scheme of the SVCB RR. This document defines | service depends on the scheme of the SVCB RR. This document defines | |||
| the interpretation for the "https" [SVCB] and "dns" [DNS-SVCB] | the interpretation for the "https" scheme [SVCB] and the "dns" scheme | |||
| schemes. Other schemes that want to use this parameter MUST define | [DNS-SVCB]. Other schemes that want to use this parameter MUST | |||
| the interpretation and meaning of the configuration. | define the interpretation and meaning of the configuration. | |||
| 4.1. Use in HTTPS service RRs | 4.1. Use in HTTPS Service RRs | |||
| For the "https" scheme, which uses the HTTPS RR type instead of SVCB, | For the "https" scheme, which uses the HTTPS RR type instead of SVCB, | |||
| the presence of the "ohttp" parameter means that the target being | the presence of the "ohttp" parameter means that the target being | |||
| described is an Oblivious HTTP service that is accessible using the | described is an Oblivious HTTP service that is accessible using the | |||
| default "message/bhttp" media type [OHTTP] [BINARY-HTTP]. | default "message/bhttp" media type [OHTTP] [BINARY-HTTP]. | |||
| For example, an HTTPS service RR for svc.example.com that supports | For example, an HTTPS service RR for svc.example.com that supports | |||
| Oblivious HTTP could look like this: | Oblivious HTTP could look like this: | |||
| svc.example.com. 7200 IN HTTPS 1 . ( alpn=h2 ohttp ) | svc.example.com. 7200 IN HTTPS 1 . ( alpn=h2 ohttp ) | |||
| A similar RR for a service that only supports Oblivious HTTP could | A similar RR for a service that only supports Oblivious HTTP could | |||
| look like this: | look like this: | |||
| svc.example.com. 7200 IN HTTPS 1 . ( mandatory=ohttp ohttp ) | svc.example.com. 7200 IN HTTPS 1 . ( mandatory=ohttp ohttp ) | |||
| 4.2. Use in DNS server SVCB RRs | 4.2. Use in DNS Server SVCB RRs | |||
| For the "dns" scheme, as defined in [DNS-SVCB], the presence of the | For the "dns" scheme, as defined in [DNS-SVCB], the presence of the | |||
| "ohttp" parameter means that the DNS server being described has a DNS | "ohttp" parameter means that the DNS server being described has a | |||
| over HTTP (DoH) [DOH] service that can be accessed using Oblivious | DNS-over-HTTPS (DoH) service [DOH] that can be accessed using | |||
| HTTP. Requests to the resolver are sent to the gateway using binary | Oblivious HTTP. Requests to the resolver are sent to the gateway | |||
| HTTP with the default "message/bhttp" media type [BINARY-HTTP], | using binary HTTP with the default "message/bhttp" media type | |||
| containing inner requests that use the "application/dns-message" | [BINARY-HTTP], containing inner requests that use the "application/ | |||
| media type [DOH]. | dns-message" media type [DOH]. | |||
| If the "ohttp" parameter is included in an DNS server SVCB RR, the | If the "ohttp" parameter is included in a DNS server SVCB RR, the | |||
| "alpn" MUST include at least one HTTP value (such as "h2" or "h3"). | "alpn" parameter MUST include at least one HTTP value (such as "h2" | |||
| or "h3"). | ||||
| In order for DoH-capable recursive resolvers to function as Oblivious | In order for DoH-capable recursive resolvers to function as Oblivious | |||
| HTTP targets, their associated gateways need to be accessible via a | HTTP targets, their associated gateways need to be accessible via a | |||
| client-trusted relay. DoH recursive resolvers used with the | client-trusted relay. DoH recursive resolvers used with the | |||
| discovery mechanisms described in this section can either be publicly | discovery mechanisms described in this section can be either publicly | |||
| accessible, or specific to a network. In general, only publicly | accessible or specific to a network. In general, only publicly | |||
| accessible DoH recursive resolvers will work as Oblivious HTTP | accessible DoH recursive resolvers will work as Oblivious HTTP | |||
| targets, unless there is a coordinated deployment with a relay to | targets, unless there is a coordinated deployment with a relay to | |||
| access the network-specific DoH recursive resolvers. | access the network-specific DoH recursive resolvers. | |||
| 4.2.1. Use with DDR | 4.2.1. Use with DDR | |||
| Clients can discover that a DoH recursive resolvers support Oblivious | Clients can discover that a DoH recursive resolver supports Oblivious | |||
| HTTP using DDR, either by querying _dns.resolver.arpa to a locally | HTTP using DDR, by either querying _dns.resolver.arpa to a locally | |||
| configured resolver or by querying using the name of a resolver | configured resolver or querying using the name of a resolver [DDR]. | |||
| [DDR]. | ||||
| For example, a DoH service advertised over DDR can be annotated as | For example, a DoH service advertised over DDR can be annotated as | |||
| supporting resolution via Oblivious HTTP using the following RR: | supporting resolution via Oblivious HTTP using the following RR: | |||
| _dns.resolver.arpa 7200 IN SVCB 1 doh.example.net ( | _dns.resolver.arpa 7200 IN SVCB 1 doh.example.net ( | |||
| alpn=h2 dohpath=/dns-query{?dns} ohttp ) | alpn=h2 dohpath=/dns-query{?dns} ohttp ) | |||
| Clients still need to perform verification of oblivious DoH servers, | Clients still need to perform verification of oblivious DoH servers | |||
| specifically the TLS certificate checks described in Section 4.2 of | -- specifically, the TLS certificate checks described in Section 4.2 | |||
| [DDR]. Since the gateway and target resources for discovered | of [DDR]. Since the Gateway and Target Resources for discovered | |||
| oblivious services need to be on the same host, this means that the | oblivious services need to be on the same host, this means that the | |||
| client needs to verify that the certificate presented by the gateway | client needs to verify that the certificate presented by the gateway | |||
| passes the required checks. These checks can be performed when | passes the required checks. These checks can be performed when | |||
| looking up the configuration on the gateway as described in | looking up the configuration on the gateway as described in Section 6 | |||
| Section 6, which can either be done directly or via the relay or | and can be done either directly or via the relay or another proxy to | |||
| another proxy to avoid exposing client IP addresses. | avoid exposing client IP addresses. | |||
| Opportunistic discovery [DDR], where only the IP address is | Opportunistic Discovery [DDR], where only the IP address is | |||
| validated, SHOULD NOT be used in general with Oblivious HTTP, since | validated, SHOULD NOT be used in general with Oblivious HTTP, since | |||
| this mode primarily exists to support resolvers that use private or | this mode primarily exists to support resolvers that use private or | |||
| local IP addresses, which will usually not be accessible when using a | local IP addresses, which will usually not be accessible when using a | |||
| relay. If a configuration occurs where the resolver is accessible, | relay. If a configuration occurs where the resolver is accessible | |||
| but cannot use certificate-based validation, the client MUST ensure | but cannot use certificate-based validation, the client MUST ensure | |||
| that the relay only accesses the gateway and target using the | that the relay only accesses the gateway and target using the | |||
| unencrypted resolver's original IP address. | unencrypted resolver's original IP address. | |||
| For the case of DoH recursive resolvers, clients also need to ensure | For the case of DoH recursive resolvers, clients also need to ensure | |||
| that they are not being targeted with unique DoH paths that would | that they are not being targeted with unique DoH paths that would | |||
| reveal their identity. See Section 7 for more discussion. | reveal their identity. See Section 7 for more discussion. | |||
| 4.2.2. Use with DNR | 4.2.2. Use with DNR | |||
| The SvcParamKeys defined in this document also can be used with | The SvcParamKey defined in this document also can be used with | |||
| Discovery of Network-designated Resolvers (DNR) [DNR]. In this case, | Discovery of Network-designated Resolvers [DNR]. In this case, the | |||
| the oblivious configuration and path parameters can be included in | oblivious configuration and path parameters can be included in DHCP | |||
| DHCP and Router Advertisement messages. | and Router Advertisement messages. | |||
| While DNR does not require the same kind of verification as DDR, | While DNR does not require the same kind of verification as DDR, | |||
| clients that learn about DoH recursive resolvers still need to ensure | clients that learn about DoH recursive resolvers still need to ensure | |||
| that they are not being targeted with unique DoH paths that would | that they are not being targeted with unique DoH paths that would | |||
| reveal their identity. See Section 7 for more discussion. | reveal their identity. See Section 7 for more discussion. | |||
| 5. Gateway Location | 5. Gateway Location | |||
| Once a client has discovered that a service supports Oblivious HTTP | Once a client has discovered that a service supports Oblivious HTTP | |||
| via the "ohttp" parameter in a SVCB or HTTPS RR, it needs to be able | via the "ohttp" parameter in a SVCB or HTTPS RR, it needs to be able | |||
| to send requests via a relay to the correct gateway location. | to send requests via a relay to the correct gateway location. | |||
| This document defines a well-known resource ([WELLKNOWN]), "/.well- | This document defines a well-known resource [WELLKNOWN], "/.well- | |||
| known/ohttp-gateway", which is an Oblivious Gateway Resource | known/ohttp-gateway", which is an Oblivious Gateway Resource | |||
| available on the same host as the target resource. | available on the same host as the Target Resource. | |||
| Some servers might not want to operate the gateway on a well-known | Some servers might not want to operate the gateway on a well-known | |||
| URI. In such cases, these servers can use 3xx redirection responses | URI. In such cases, these servers can use 3xx (Redirection) | |||
| (Section 15.4 of [HTTP]) to direct clients and relays to the correct | responses (Section 15.4 of [HTTP]) to direct clients and relays to | |||
| location of the gateway. Such redirects would apply both to requests | the correct location of the gateway. Such redirects would apply to | |||
| made to fetch key configurations (as defined in Section 6) and to | both (1) requests made to fetch key configurations (as defined in | |||
| encapsulated requests made via a relay. | Section 6) and (2) encapsulated requests made via a relay. | |||
| If a client receives a redirect when fetching the key configuration | If a client receives a redirect when fetching the key configuration | |||
| from the well-known gateway resource, it MUST NOT communicate the | from the well-known Gateway Resource, it MUST NOT communicate the | |||
| redirected gateway URI to the relay as the location of the gateway to | redirected gateway URI to the relay as the location of the gateway to | |||
| use. Doing so would allow the gateway to target clients by encoding | use. Doing so would allow the gateway to target clients by encoding | |||
| unique or client-identifying values in the redirected URI. Instead, | unique or client-identifying values in the redirected URI. Instead, | |||
| relays being used with dynamically discovered gateways MUST use the | relays being used with dynamically discovered gateways MUST use the | |||
| well-known gateway resource and follow any redirects independently of | well-known Gateway Resource and follow any redirects independently of | |||
| redirects that clients received. The relay can remember such | redirects that clients received. The relay can remember such | |||
| redirects across oblivious requests for all clients in order to avoid | redirects across oblivious requests for all clients in order to avoid | |||
| added latency. | added latency. | |||
| 6. Key Configuration Fetching | 6. Key Configuration Fetching | |||
| Clients also need to know the key configuration of a gateway before | Clients also need to know the key configuration of a gateway before | |||
| encapsulating and sending requests to the relay. | encapsulating and sending requests to the relay. | |||
| If a client fetches the key configuration directly from the gateway, | If a client fetches the key configuration directly from the gateway, | |||
| skipping to change at page 8, line 8 ¶ | skipping to change at line 311 ¶ | |||
| The privacy and security implications of fetching the key | The privacy and security implications of fetching the key | |||
| configuration are discussed more in Section 7. Clients can use an | configuration are discussed more in Section 7. Clients can use an | |||
| HTTP proxy to hide their IP addresses when fetching key | HTTP proxy to hide their IP addresses when fetching key | |||
| configurations. Clients can also perform consistency checks to | configurations. Clients can also perform consistency checks to | |||
| validate that they are not receiving unique key configurations, as | validate that they are not receiving unique key configurations, as | |||
| discussed in Section 7.1. | discussed in Section 7.1. | |||
| In order to fetch the key configuration of a gateway discovered in | In order to fetch the key configuration of a gateway discovered in | |||
| the manner described in Section 5, the client issues a GET request | the manner described in Section 5, the client issues a GET request | |||
| (either through a proxy or directly) to the URI of the gateway | (either through a proxy or directly) to the URI of the gateway | |||
| specifying the "application/ohttp-keys" ([OHTTP]) media type in the | specifying the "application/ohttp-keys" media type [OHTTP] in the | |||
| Accept header. | Accept header. | |||
| For example, if the client knows an oblivious gateway URI, | For example, if the client knows an Oblivious Gateway URI, | |||
| "https://svc.example.com/.well-known/ohttp-gateway", it could fetch | https://svc.example.com/.well-known/ohttp-gateway, it could fetch the | |||
| the key configuration with the following request: | key configuration with the following request: | |||
| GET /.well-known/ohttp-gateway HTTP/1.1 | GET /.well-known/ohttp-gateway HTTP/1.1 | |||
| Host: svc.example.com | Host: svc.example.com | |||
| Accept: application/ohttp-keys | Accept: application/ohttp-keys | |||
| Gateways that coordinate with targets that advertise Oblivious HTTP | Gateways that coordinate with targets that advertise Oblivious HTTP | |||
| support SHOULD support GET requests for their key configuration in | support SHOULD support GET requests for their key configuration in | |||
| this manner, unless there is another out-of-band configuration model | this manner, unless there is another out-of-band configuration model | |||
| that is usable by clients. Gateways respond with their key | that is usable by clients. Gateways respond with their key | |||
| configuration in the response body, with a content type of | configuration in the response body, with a content type of | |||
| "application/ohttp-keys". | "application/ohttp-keys". | |||
| 7. Security and Privacy Considerations | 7. Security and Privacy Considerations | |||
| Attackers on a network can remove SVCB information from cleartext DNS | Attackers on a network can remove SVCB information from cleartext DNS | |||
| answers that are not protected by DNSSEC [DNSSEC]. This can | answers that are not protected by DNSSEC [DNSSEC]. This can | |||
| effectively downgrade clients. However, since SVCB indications for | effectively downgrade clients. However, since SVCB indications for | |||
| Oblivious HTTP support are just hints, a client can mitigate this by | Oblivious HTTP support are just hints, a client can mitigate this by | |||
| always checking for a gateway configuration (Section 6) on the well- | always checking for a gateway configuration (Section 6) on the well- | |||
| known gateway location (Section 5). Use of encrypted DNS along with | known gateway location (Section 5). Using encrypted DNS along with | |||
| DNSSEC can also be used as a mitigation. | DNSSEC can also provide such a mitigation. | |||
| When clients fetch a gateway's configuration (Section 6), they can | When clients fetch a gateway's configuration (Section 6), they can | |||
| expose their identity in the form of an IP address if they do not | expose their identity in the form of an IP address if they do not | |||
| connect via a proxy or some other IP-hiding mechanism. In some | connect via a proxy or some other IP-hiding mechanism. In some | |||
| circumstances, this might not be a privacy concern, since revealing | circumstances, this might not be a privacy concern, since revealing | |||
| that a particular client IP address is preparing to use an Oblivious | that a particular client IP address is preparing to use an Oblivious | |||
| HTTP service can be expected. However, if a client is otherwise | HTTP service can be expected. However, if a client is otherwise | |||
| trying to hide its IP address or location (and not merely decouple | trying to hide its IP address or location (and not merely decouple | |||
| its specific requests from its IP address), or if revealing its IP | its specific requests from its IP address), or if revealing its IP | |||
| address facilitates key targeting attacks (if a gateway service uses | address facilitates key targeting attacks (if a gateway service uses | |||
| IP addresses to associate specific configurations with specific | IP addresses to associate specific configurations with specific | |||
| clients), a proxy or similar mechanism can be used to fetch the | clients), a proxy or similar mechanism can be used to fetch the | |||
| gateway's configuration. | gateway's configuration. | |||
| When discovering designated oblivious DoH recursive resolvers using | When discovering designated oblivious DoH recursive resolvers using | |||
| this mechanism, clients need to ensure that the designation is | this mechanism, clients need to ensure that the designation is | |||
| trusted in lieu of being able to directly check the contents of the | trusted in lieu of being able to directly check the contents of the | |||
| gateway server's TLS certificate. See Section 4.2.1 for more | gateway server's TLS certificate. See Section 4.2.1 for more | |||
| discussion, as well as the Security Considerations of [DNS-SVCB]. | discussion, as well as Section 8 ("Security Considerations") of | |||
| [DNS-SVCB]. | ||||
| 7.1. Key Targeting Attacks | 7.1. Key Targeting Attacks | |||
| As discussed in [OHTTP], client requests using Oblivious HTTP can | As discussed in [OHTTP], client requests using Oblivious HTTP can | |||
| only be linked by recognizing the key configuration. In order to | only be linked by recognizing the key configuration. In order to | |||
| prevent unwanted linkability and tracking, clients using any key | prevent unwanted linkability and tracking, clients using any key | |||
| configuration discovery mechanism need to be concerned with attacks | configuration discovery mechanism need to be concerned with attacks | |||
| that target a specific user or population with a unique key | that target a specific user or population with a unique key | |||
| configuration. | configuration. | |||
| There are several approaches clients can use to mitigate key | There are several approaches clients can use to mitigate key | |||
| targeting attacks. [CONSISTENCY] provides an overview of the options | targeting attacks. [CONSISTENCY] provides an overview of the options | |||
| for ensuring the key configurations are consistent between different | for ensuring that the key configurations are consistent between | |||
| clients. Clients SHOULD employ some technique to mitigate key | different clients. Clients SHOULD employ some technique to mitigate | |||
| targeting attacks, such as the option of confirming the key with a | key targeting attacks, such as the option of confirming the key with | |||
| shared proxy as described in [CONSISTENCY]. If a client detects that | a shared proxy as described in [CONSISTENCY]. If a client detects | |||
| a gateway is using per-client targeted key configuration, the client | that a gateway is using per-client targeted key configuration, the | |||
| can stop using the gateway, and potentially report the targeting | client can stop using the gateway and, potentially, report the | |||
| attack to let other clients avoid using this gateway in the future. | targeting attack so that other clients can avoid using this gateway | |||
| in the future. | ||||
| 7.2. dohpath Targeting Attacks | 7.2. dohpath Targeting Attacks | |||
| For oblivious DoH servers, an attacker could use unique dohpath | For oblivious DoH servers, an attacker could use unique "dohpath" | |||
| values to target or identify specific clients. This attack is very | values to target or identify specific clients. This attack is very | |||
| similar to the generic OHTTP key targeting attack described above. | similar to the generic OHTTP key targeting attack described above. | |||
| A client can avoid these targeting attacks by only allowing a single | A client can avoid these targeting attacks by only allowing a single | |||
| dohpath value, such as the commonly used "/dns-query{?dns}" or | "dohpath" value, such as the commonly used "/dns-query{?dns}" or | |||
| another pre-known value. If the client allows arbitrary dohpath | another pre-known value. If the client allows arbitrary "dohpath" | |||
| values, it SHOULD mitigate targeting attacks with a consistency | values, it SHOULD mitigate targeting attacks with a consistency | |||
| check, such as using a mechanism described in [CONSISTENCY] to | check, such as using one of the mechanisms described in [CONSISTENCY] | |||
| validate the dohpath value with another source. Clients might choose | to validate the "dohpath" value with another source. Clients might | |||
| to only employ a consistency check on a percentage of discovery | choose to only employ a consistency check on a percentage of | |||
| events, depending on the capacity of consistency check options and | discovery events, depending on the capacity of consistency check | |||
| their deployment threat model. | options and their deployment threat model. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 8.1. SVCB Service Parameter | 8.1. SVCB Service Parameter | |||
| This document adds the following entry to the SVCB Service Parameters | This document adds the following entry to the "Service Parameter Keys | |||
| registry ([SVCB]). The definition of this parameter is in Section 4. | (SvcParamKeys)" registry [SVCB]. This parameter is defined in | |||
| Section 4. | ||||
| +=============+=======+=================================+===========+ | +========+=======+=======================+============+===========+ | |||
| | Number | Name | Meaning | Reference | | | Number | Name | Meaning | Change | Reference | | |||
| +=============+=======+=================================+===========+ | | | | | Controller | | | |||
| | 8 (Early | ohttp | Denotes that a | (This | | +========+=======+=======================+============+===========+ | |||
| | Allocation) | | service operates an | document) | | | 8 | ohttp | Denotes that a | IETF | RFC 9540, | | |||
| | | | Oblivious HTTP target | | | | | | service operates an | | Section 4 | | |||
| +-------------+-------+---------------------------------+-----------+ | | | | Oblivious HTTP target | | | | |||
| +--------+-------+-----------------------+------------+-----------+ | ||||
| Table 1 | Table 1 | |||
| 8.2. Well-Known URI | 8.2. Well-Known URI | |||
| IANA is requested to add one new entry in the "Well-Known URIs" | IANA has added one entry in the "Well-Known URIs" registry | |||
| registry [WELLKNOWN]. | [WELLKNOWN]. | |||
| URI suffix: ohttp-gateway | URI Suffix: ohttp-gateway | |||
| Change controller: IETF | Change Controller: IETF | |||
| Specification document: This document | Reference: RFC 9540 | |||
| Status: permanent | Status: permanent | |||
| Related information: N/A | Related Information: N/A | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [BINARY-HTTP] | [BINARY-HTTP] | |||
| Thomson, M. and C. A. Wood, "Binary Representation of HTTP | Thomson, M. and C. A. Wood, "Binary Representation of HTTP | |||
| Messages", RFC 9292, DOI 10.17487/RFC9292, August 2022, | Messages", RFC 9292, DOI 10.17487/RFC9292, August 2022, | |||
| <https://www.rfc-editor.org/rfc/rfc9292>. | <https://www.rfc-editor.org/info/rfc9292>. | |||
| [DDR] Pauly, T., Kinnear, E., Wood, C. A., McManus, P., and T. | [DDR] Pauly, T., Kinnear, E., Wood, C. A., McManus, P., and T. | |||
| Jensen, "Discovery of Designated Resolvers", Work in | Jensen, "Discovery of Designated Resolvers", RFC 9462, | |||
| Progress, Internet-Draft, draft-ietf-add-ddr-10, 5 August | DOI 10.17487/RFC9462, November 2023, | |||
| 2022, <https://datatracker.ietf.org/doc/html/draft-ietf- | <https://www.rfc-editor.org/info/rfc9462>. | |||
| add-ddr-10>. | ||||
| [DNR] Boucadair, M., Reddy.K, T., Wing, D., Cook, N., and T. | [DNR] Boucadair, M., Ed., Reddy.K, T., Ed., Wing, D., Cook, N., | |||
| Jensen, "DHCP and Router Advertisement Options for the | and T. Jensen, "DHCP and Router Advertisement Options for | |||
| Discovery of Network-designated Resolvers (DNR)", Work in | the Discovery of Network-designated Resolvers (DNR)", | |||
| Progress, Internet-Draft, draft-ietf-add-dnr-16, 27 April | RFC 9463, DOI 10.17487/RFC9463, November 2023, | |||
| 2023, <https://datatracker.ietf.org/doc/html/draft-ietf- | <https://www.rfc-editor.org/info/rfc9463>. | |||
| add-dnr-16>. | ||||
| [DNS-SVCB] Schwartz, B. M., "Service Binding Mapping for DNS | [DNS-SVCB] Schwartz, B., "Service Binding Mapping for DNS Servers", | |||
| Servers", Work in Progress, Internet-Draft, draft-ietf- | RFC 9461, DOI 10.17487/RFC9461, November 2023, | |||
| add-svcb-dns-09, 26 June 2023, | <https://www.rfc-editor.org/info/rfc9461>. | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-add- | ||||
| svcb-dns-09>. | ||||
| [DOH] Hoffman, P. and P. McManus, "DNS Queries over HTTPS | [DOH] Hoffman, P. and P. McManus, "DNS Queries over HTTPS | |||
| (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, | (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, | |||
| <https://www.rfc-editor.org/rfc/rfc8484>. | <https://www.rfc-editor.org/info/rfc8484>. | |||
| [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP Semantics", STD 97, RFC 9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
| DOI 10.17487/RFC9110, June 2022, | DOI 10.17487/RFC9110, June 2022, | |||
| <https://www.rfc-editor.org/rfc/rfc9110>. | <https://www.rfc-editor.org/info/rfc9110>. | |||
| [OHTTP] Thomson, M. and C. A. Wood, "Oblivious HTTP", Work in | [OHTTP] Thomson, M. and C. A. Wood, "Oblivious HTTP", RFC 9458, | |||
| Progress, Internet-Draft, draft-ietf-ohai-ohttp-10, 25 | DOI 10.17487/RFC9458, January 2024, | |||
| August 2023, <https://datatracker.ietf.org/doc/html/draft- | <https://www.rfc-editor.org/info/rfc9458>. | |||
| ietf-ohai-ohttp-10>. | ||||
| [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, | |||
| <https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [SVCB] Schwartz, B. M., Bishop, M., and E. Nygren, "Service | [SVCB] Schwartz, B., Bishop, M., and E. Nygren, "Service Binding | |||
| binding and parameter specification via the DNS (DNS SVCB | and Parameter Specification via the DNS (SVCB and HTTPS | |||
| and HTTPS RRs)", Work in Progress, Internet-Draft, draft- | Resource Records)", RFC 9460, DOI 10.17487/RFC9460, | |||
| ietf-dnsop-svcb-https-12, 11 March 2023, | November 2023, <https://www.rfc-editor.org/info/rfc9460>. | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-dnsop- | ||||
| svcb-https-12>. | ||||
| [WELLKNOWN] | [WELLKNOWN] | |||
| Nottingham, M., "Well-Known Uniform Resource Identifiers | Nottingham, M., "Well-Known Uniform Resource Identifiers | |||
| (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | (URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019, | |||
| <https://www.rfc-editor.org/rfc/rfc8615>. | <https://www.rfc-editor.org/info/rfc8615>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [CONSISTENCY] | [CONSISTENCY] | |||
| Davidson, A., Finkel, M., Thomson, M., and C. A. Wood, | Davidson, A., Finkel, M., Thomson, M., and C. A. Wood, | |||
| "Key Consistency and Discovery", Work in Progress, | "Key Consistency and Discovery", Work in Progress, | |||
| Internet-Draft, draft-ietf-privacypass-key-consistency-01, | Internet-Draft, draft-ietf-privacypass-key-consistency-01, | |||
| 10 July 2023, <https://datatracker.ietf.org/doc/html/ | 10 July 2023, <https://datatracker.ietf.org/doc/html/ | |||
| draft-ietf-privacypass-key-consistency-01>. | draft-ietf-privacypass-key-consistency-01>. | |||
| [DNSSEC] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [DNSSEC] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "DNS Security Introduction and Requirements", | Rose, "DNS Security Introduction and Requirements", | |||
| RFC 4033, DOI 10.17487/RFC4033, March 2005, | RFC 4033, DOI 10.17487/RFC4033, March 2005, | |||
| <https://www.rfc-editor.org/rfc/rfc4033>. | <https://www.rfc-editor.org/info/rfc4033>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Tommy Pauly | Tommy Pauly | |||
| Apple Inc. | Apple Inc. | |||
| Email: tpauly@apple.com | Email: tpauly@apple.com | |||
| Tirumaleswar Reddy | Tirumaleswar Reddy.K | |||
| Nokia | Nokia | |||
| Email: kondtir@gmail.com | Email: kondtir@gmail.com | |||
| End of changes. 65 change blocks. | ||||
| 204 lines changed or deleted | 183 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||