RFC 9540
Discovery of Oblivious Services via Service Binding Records
RFC 9540: Discovery of Oblivious Services via Service Binding Records π¦
Okay bestie, this one is from the IETF (Internet Engineering Task Force) and it's Request for Comments 9540 π. The authors are T. Pauly from Apple Inc. and T. Reddy.K from Nokia π. It's on the Standards Track, the ISSN is 2070-1721, and it's dated February 2024 πΈ. The title block doesn't list any RFCs that it obsoletes or updates, so it's not replacing or changing anything else β¨.
Abstract
Okay so the big idea is this π. The doc gives you a parameter you can stick inside Service Binding (SVCB) and HTTPS DNS resource records. When it's there, it says the service can be reached using Oblivious HTTP, because it offers an Oblivious Gateway Resource that you can use to get to the target π¦. It also gives you a way to learn the key configuration of that discovered Oblivious Gateway Resource π.
Status of This Memo
This is an Internet Standards Track document π .
This document is a product of the Internet Engineering Task Force (IETF) π. It represents the consensus of the IETF community. It went through public review and got approved for publication by the Internet Engineering Steering Group (IESG) π. If you want more about Internet Standards, check out Section 2 of RFC 7841 π«Ά.
For the current status of this document, any errata, and how to send feedback, go to https://www.rfc-editor.org/info/rfc9540 π.
Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved β¨.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they're in effect on the date this document was published π. Please read these carefully, because they explain your rights and restrictions for this document π. Code Components pulled out of this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Revised BSD License π.
Table of Contents
1. Introduction
2. Conventions and Definitions
3. Applicability
4. The "ohttp" SvcParamKey
4.1. Use in HTTPS Service RRs
4.2. Use in DNS Server SVCB RRs
4.2.1. Use with DDR
4.2.2. Use with DNR
5. Gateway Location
6. Key Configuration Fetching
7. Security and Privacy Considerations
7.1. Key Targeting Attacks
7.2. dohpath Targeting Attacks
8. IANA Considerations
8.1. SVCB Service Parameter
8.2. Well-Known URI
9. References
9.1. Normative References
9.2. Informative References
Authors' Addresses
1. Introduction β¨
Oblivious HTTP [OHTTP] lets clients encrypt the messages they exchange with an Oblivious Target Resource (target) π. Those messages get wrapped up in encrypted messages sent to an Oblivious Gateway Resource (gateway), which gives you Oblivious HTTP access to the target π. You reach the gateway through an Oblivious Relay Resource (relay), which proxies the wrapped messages so the client's identity stays hidden π¦. The whole setup is designed so that the relay can't look inside the messages, and the gateway and target can't figure out who the client is from a single transaction π.
Since Oblivious HTTP deployments usually need very specific coordination between clients, relays, and gateways, the key configuration is often shared in a custom way π . But some deployments have clients discovering targets and their gateways more dynamically πΈ. For example, a network might run a DNS resolver that gives more optimized or more relevant DNS answers, and that resolver is reachable over Oblivious HTTP. The network might want to advertise that support through mechanisms like Discovery of Designated Resolvers [DDR] and Discovery of Network-designated Resolvers [DNR] π. Clients can reach these gateways through trusted relays π.
This document defines a way to use DNS resource records (RRs) to advertise that an HTTP service supports Oblivious HTTP π. The advertisement is a parameter that can be included in Service Binding (SVCB) and HTTPS DNS RRs [SVCB] (Section 4) π. When the parameter is present, it means the service can act as a target and has a gateway that can give access to that target π§.
The client learns the URI to use for the gateway through the well-known URI suffix [WELLKNOWN], "ohttp-gateway", which is accessed on the target (Section 5) π«Ά. This means that for deployments that support this kind of discovery, the Gateway and Target Resources need to be on the same host π.
This document also defines a way to fetch a gateway's key configuration from the gateway (Section 6) π.
This mechanism doesn't help with discovering relays, because relay configuration is out of scope for this document π . The models where this discovery mechanism applies are described in Section 3 π.
2. Conventions and Definitions π
Okay, the key words get their own moment π. In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here π .
3. Applicability π¦
There are multiple models where you can use the discovery mechanism defined in this document. These include:
- Upgrading regular (non-proxied) HTTP to Oblivious HTTP. In this model, the client wants to talk to a specific target service and prefers Oblivious HTTP if it's available π. The target service has a gateway that it offers for Oblivious HTTP access π. Once the client learns about the gateway, it "upgrades" its requests from non-proxied HTTP to Oblivious HTTP to reach the target service β¨.
- Discovering alternative Oblivious HTTP services. In this model, the client has a default target service it already uses πΈ. For example, that could be a public DNS resolver that's reachable over Oblivious HTTP π§. The client is open to using alternative target services if it discovers them, since those might give more optimized or more relevant responses π.
In both of these deployment models, the client is set up with a relay that it trusts for Oblivious HTTP transactions π«Ά. That relay needs to provide either (1) generic access to gateways or (2) a service that lets clients check which gateways are accessible π.
4. The "ohttp" SvcParamKey π
The "ohttp" SvcParamKey is used to say that a service described in a SVCB RR can be accessed as a target through an associated gateway π. The service that the client queries hosts one or more Target Resources π.
To reach the service's Target Resources using Oblivious HTTP, the client needs to send encapsulated messages to the Gateway Resource, and it also needs the gateway's key configuration. You can get both using the method described in Section 6 π.
Both the presentation and wire-format values for the "ohttp" parameter MUST be empty π.
Services can put the "ohttp" parameter in the mandatory parameter list if they're only accessible using Oblivious HTTP π . Marking "ohttp" as mandatory means clients that don't understand the parameter will ignore that SVCB RR π¦. Including "ohttp" without marking it mandatory advertises a service that's optionally available using Oblivious HTTP πΈ. Also, multiple SVCB RRs can be provided to indicate separate configurations β¨.
The media type used for encapsulated requests to a target service depends on the scheme of the SVCB RR π§. This document defines the interpretation for the "https" scheme [SVCB] and the "dns" scheme [DNS-SVCB] π. Other schemes that want to use this parameter MUST define the interpretation and meaning of the configuration π.
4.1. Use in HTTPS Service RRs πΈ
For the "https" scheme, which uses the HTTPS RR type instead of SVCB, the presence of the "ohttp" parameter means the target being described is an Oblivious HTTP service that's accessible using the default "message/bhttp" media type [OHTTP] [BINARY-HTTP] π.
For example, an HTTPS service RR for svc.example.com that supports Oblivious HTTP could look like this:
svc.example.com. 7200 IN HTTPS 1 . ( alpn=h2 ohttp )
A similar RR for a service that only supports Oblivious HTTP could look like this:
svc.example.com. 7200 IN HTTPS 1 . ( mandatory=ohttp ohttp )
4.2. Use in DNS Server SVCB RRs π
For the "dns" scheme, as defined in [DNS-SVCB], the presence of the "ohttp" parameter means the DNS server being described has a DNS-over-HTTPS (DoH) service [DOH] that can be accessed using Oblivious HTTP π¦. Requests to the resolver are sent to the gateway using binary HTTP with the default "message/bhttp" media type [BINARY-HTTP], and the inner requests use the application/dns-message media type [DOH] π§.
If the "ohttp" parameter is included in a DNS server SVCB RR, the "alpn" parameter MUST include at least one HTTP value (such as "h2" or "h3") π.
For DoH-capable recursive resolvers to work as Oblivious HTTP targets, their associated gateways need to be reachable through a client-trusted relay π. DoH recursive resolvers used with the discovery mechanisms in this section can be publicly accessible or specific to a network π. In general, only publicly accessible DoH recursive resolvers will work as Oblivious HTTP targets, unless there's a coordinated deployment with a relay that can reach the network-specific DoH recursive resolvers π.
4.2.1. Use with DDR π¦
Clients can find out that a DoH recursive resolver supports Oblivious HTTP using DDR. They do this by either querying _dns.resolver.arpa to a locally configured resolver, or by querying using the name of a resolver [DDR] π.
For example, a DoH service advertised over DDR can be marked as supporting resolution via Oblivious HTTP with this RR:
_dns.resolver.arpa 7200 IN SVCB 1 doh.example.net (
alpn=h2 dohpath=/dns-query{?dns} ohttp )
Clients still need to verify oblivious DoH servers. Specifically, they need to do the TLS certificate checks described in Section 4.2 of [DDR] π. Since the Gateway and Target Resources for discovered oblivious services need to be on the same host, the client needs to verify that the certificate presented by the gateway passes the required checks π«Ά. These checks can be done when looking up the configuration on the gateway, as described in Section 6, and they can be performed either directly or through the relay or another proxy so client IP addresses aren't exposed πΈ.
Opportunistic Discovery [DDR], where only the IP address is validated, SHOULD NOT be used in general with Oblivious HTTP π . That's because this mode mainly exists to support resolvers that use private or local IP addresses, which usually won't be accessible when you're using a relay π. If a configuration comes up where the resolver is accessible but can't use certificate-based validation, the client MUST ensure that the relay only accesses the gateway and target using the unencrypted resolver's original IP address β οΈ.
Careful bestie: that last rule is a MUST, so the relay really has to stick to that original IP address in this case π¨.
For DoH recursive resolvers, clients also need to make sure they aren't being targeted with unique DoH paths that would reveal their identity π. See Section 7 for more discussion π.
4.2.2. Use with DNR β¨
Okay so the ohttp SvcParamKey from this doc can also be used with Discovery of Network-designated Resolvers [DNR] π§π. In this case, the oblivious configuration and path parameters can get tucked into DHCP and Router Advertisement messages π.
Now, DNR doesn't need the same kind of verification that DDR does π, BUT clients that learn about DoH recursive resolvers still need to make sure nobody is targeting them with unique DoH paths that would reveal who they are π΅οΈββοΈπ . See Section 7 for more on this, bestie π«Ά.
5. Gateway Location πΊοΈ
Once a client has found out that a service supports Oblivious HTTP through the "ohttp" parameter in an SVCB or HTTPS RR, it needs a way to send requests through a relay to the right gateway location π¦β¨.
This doc defines a well-known resource [WELLKNOWN], "/.well-known/ohttp-gateway" π, which is an Oblivious Gateway Resource that lives on the same host as the Target Resource πΈ.
Some servers might not want to run the gateway on a well-known URI, and that's totally valid π . In those cases, servers can use 3xx (Redirection) responses (Section 15.4 of [HTTP]) to point clients and relays at the correct gateway location π§. These redirects apply to both (1) requests made to fetch key configurations (as defined in Section 6) and (2) encapsulated requests made via a relay π₯.
If a client gets a redirect when fetching the key configuration from the well-known Gateway Resource, it MUST NOT pass the redirected gateway URI along to the relay as the gateway location to use π«π. Why? Because that would let the gateway target clients by encoding unique or client-identifying values in the redirected URI π. Instead, relays being used with dynamically discovered gateways MUST use the well-known Gateway Resource and follow any redirects on their own, separately from whatever redirects the client got π. The relay can remember those redirects across oblivious requests for all clients so it can avoid added latency β‘π.
6. Key Configuration Fetching π
Clients also need to know the key configuration of a gateway before they encapsulate and send requests to the relay π§.
If a client fetches the key configuration directly from the gateway, it will expose identifiers like its IP address to the gateway π. We'll talk more about the privacy and security implications of this in Section 7 π. Clients can use an HTTP proxy to hide their IP addresses when fetching key configurations π«£. Clients can also run consistency checks to make sure they aren't receiving unique key configurations, as discussed in Section 7.1 β .
To fetch the key configuration of a gateway discovered the way Section 5 describes, the client sends a GET request (either through a proxy or directly) to the gateway's URI, and it specifies the "application/ohttp-keys" media type [OHTTP] in the Accept header π.
For example, if the client knows an Oblivious Gateway URI, https://svc.example.com/.well-known/ohttp-gateway, it could fetch the key configuration with this request π§:
GET /.well-known/ohttp-gateway HTTP/1.1
Host: svc.example.com
Accept: application/ohttp-keys
Gateways that coordinate with targets advertising Oblivious HTTP support SHOULD support GET requests for their key configuration in this manner π, unless there's another out-of-band configuration model that clients can actually use π€·ββοΈ. Gateways respond with their key configuration in the response body, with a content type of "application/ohttp-keys" π.
7. Security and Privacy Considerations π‘οΈπ
β οΈ Okay bestie, this section is seriously important, so read it closely π₯Ί.
Attackers on a network can remove SVCB information from cleartext DNS answers that aren't protected by DNSSEC [DNSSEC] π±. That can effectively downgrade clients. BUT since SVCB indications for Oblivious HTTP support are just hints π , a client can mitigate this by always checking for a gateway configuration (Section 6) on the well-known gateway location (Section 5) π«Ά. Using encrypted DNS along with DNSSEC can also provide that mitigation π.
When clients fetch a gateway's configuration (Section 6), they can expose their identity in the form of an IP address if they don't connect via a proxy or some other IP-hiding mechanism π. In some circumstances this might not be a privacy concern, since revealing that a particular client IP address is preparing to use an Oblivious HTTP service can be expected π€. However, if a client is otherwise trying to hide its IP address or location (and not merely decouple its specific requests from its IP address) π ββοΈ, or if revealing its IP address facilitates key targeting attacks (if a gateway service uses IP addresses to associate specific configurations with specific clients) π, a proxy or similar mechanism can be used to fetch the gateway's configuration π¦.
When discovering designated oblivious DoH recursive resolvers using this mechanism, clients need to make sure the designation is trusted, since they can't directly check the contents of the gateway server's TLS certificate π. See Section 4.2.1 for more on this, plus Section 8 ("Security Considerations") of [DNS-SVCB] πβ¨.
7.1. Key Targeting Attacks π―
As discussed in [OHTTP], client requests using Oblivious HTTP can only be linked by recognizing the key configuration π§©. To prevent unwanted linkability and tracking, clients using any key configuration discovery mechanism need to watch out for attacks that target a specific user or population with a unique key configuration π¨.
There are several approaches clients can use to mitigate key targeting attacks π οΈ. [CONSISTENCY] gives an overview of the options for making sure key configurations are consistent between different clients π. Clients SHOULD employ some technique to mitigate key targeting attacks, such as confirming the key with a shared proxy as described in [CONSISTENCY] π€. If a client detects that a gateway is using per-client targeted key configuration, the client can stop using that gateway and, potentially, report the targeting attack so other clients can avoid the gateway in the future π ββοΈπ’.
7.2. dohpath Targeting Attacks π£οΈ
For oblivious DoH servers, an attacker could use unique "dohpath" values to target or identify specific clients π΅οΈββοΈ. This attack is very similar to the generic OHTTP key targeting attack described above π₯΄.
A client can avoid these targeting attacks by only allowing a single "dohpath" value, such as the commonly used "/dns-query{?dns}" or another pre-known value π. If the client allows arbitrary "dohpath" values, it SHOULD mitigate targeting attacks with a consistency check, such as one of the mechanisms described in [CONSISTENCY], to validate the "dohpath" value with another source π . Clients might choose to run a consistency check on only a percentage of discovery events, depending on the capacity of consistency check options and their deployment threat model π.
8. IANA Considerations π
8.1. SVCB Service Parameter π
This document adds the following entry to the "Service Parameter Keys (SvcParamKeys)" registry [SVCB] ποΈ. This parameter is defined in Section 4 β¨.
+========+=======+=======================+============+===========+
| Number | Name | Meaning | Change | Reference |
| | | | Controller | |
+========+=======+=======================+============+===========+
| 8 | ohttp | Denotes that a | IETF | RFC 9540, |
| | | service operates an | | Section 4 |
| | | Oblivious HTTP target | | |
+--------+-------+-----------------------+------------+-----------+
Table 1
8.2. Well-Known URI π
IANA has added one entry in the "Well-Known URIs" registry [WELLKNOWN] π.
URI Suffix: ohttp-gateway
Change Controller: IETF
Reference: RFC 9540
Status: permanent
Related Information: N/A
9. References π
9.1. Normative References π
[BINARY-HTTP]
Thomson, M. and C. A. Wood, "Binary Representation of HTTP
Messages", RFC 9292, DOI 10.17487/RFC9292, August 2022,
<https://www.rfc-editor.org/info/rfc9292>.
[DDR] Pauly, T., Kinnear, E., Wood, C. A., McManus, P., and T.
Jensen, "Discovery of Designated Resolvers", RFC 9462,
DOI 10.17487/RFC9462, November 2023,
<https://www.rfc-editor.org/info/rfc9462>.
[DNR] Boucadair, M., Ed., Reddy.K, T., Ed., Wing, D., Cook, N.,
and T. Jensen, "DHCP and Router Advertisement Options for
the Discovery of Network-designated Resolvers (DNR)",
RFC 9463, DOI 10.17487/RFC9463, November 2023,
<https://www.rfc-editor.org/info/rfc9463>.
[DNS-SVCB] Schwartz, B., "Service Binding Mapping for DNS Servers",
RFC 9461, DOI 10.17487/RFC9461, November 2023,
<https://www.rfc-editor.org/info/rfc9461>.
[DOH] Hoffman, P. and P. McManus, "DNS Queries over HTTPS
(DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018,
<https://www.rfc-editor.org/info/rfc8484>.
[HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/info/rfc9110>.
[OHTTP] Thomson, M. and C. A. Wood, "Oblivious HTTP", RFC 9458,
DOI 10.17487/RFC9458, January 2024,
<https://www.rfc-editor.org/info/rfc9458>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[SVCB] Schwartz, B., Bishop, M., and E. Nygren, "Service Binding
and Parameter Specification via the DNS (SVCB and HTTPS
Resource Records)", RFC 9460, DOI 10.17487/RFC9460,
November 2023, <https://www.rfc-editor.org/info/rfc9460>.
[WELLKNOWN]
Nottingham, M., "Well-Known Uniform Resource Identifiers
(URIs)", RFC 8615, DOI 10.17487/RFC8615, May 2019,
<https://www.rfc-editor.org/info/rfc8615>.
9.2. Informative References π¦
[CONSISTENCY]
Davidson, A., Finkel, M., Thomson, M., and C. A. Wood,
"Key Consistency and Discovery", Work in Progress,
Internet-Draft, draft-ietf-privacypass-key-consistency-01,
10 July 2023, <https://datatracker.ietf.org/doc/html/
draft-ietf-privacypass-key-consistency-01>.
[DNSSEC] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "DNS Security Introduction and Requirements",
RFC 4033, DOI 10.17487/RFC4033, March 2005,
<https://www.rfc-editor.org/info/rfc4033>.
Authors' Addresses π§βπ»
Tommy Pauly
Apple Inc.
Email: tpauly@apple.com
Tirumaleswar Reddy.K
Nokia
Email: kondtir@gmail.com
π¦ where this page comes from
- ietf: rfc9540 2024-02
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms