Internet DRAFT - draft-wood-ohai-unreliable-ohttp
draft-wood-ohai-unreliable-ohttp
Oblivious HTTP Application Intermediation R. Giles
Internet-Draft Brave
Intended status: Informational C. A. Wood
Expires: 3 March 2023 Cloudflare
30 August 2022
An Unreliable Oblivious HTTP Extension
draft-wood-ohai-unreliable-ohttp-00
Abstract
This document describes an extension to Oblivious HTTP (OHTTP) that
supports unreliable application data transfer from Client to Target.
Beyond enabling application uses that do not require explicit
responses from the Target, such as privacy-preserving data
collection, this extension allows the Oblivious Relay Resource to
buffer, batch, and shuffle requests to Oblivious Gateway Resources as
a way of amplifying end-to-end client privacy protections.
About This Document
This note is to be removed before publishing as an RFC.
The latest revision of this draft can be found at https://chris-
wood.github.io/draft-unreliable-ohttp/draft-wood-ohai-unreliable-
ohttp.html. Status information for this document may be found at
https://datatracker.ietf.org/doc/draft-wood-ohai-unreliable-ohttp/.
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/chris-wood/draft-unreliable-ohttp.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
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/.
Giles & Wood Expires 3 March 2023 [Page 1]
Internet-Draft Unreliable OHTTP August 2022
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 3 March 2023.
Copyright Notice
Copyright (c) 2022 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) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Revised BSD License text as
described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Revised BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Motivation and Applicability . . . . . . . . . . . . . . . . 3
2.1. Gateway Performance and Security . . . . . . . . . . . . 4
2.2. Relay Privacy Protections . . . . . . . . . . . . . . . . 4
3. Conventions and Definitions . . . . . . . . . . . . . . . . . 4
4. Unreliable Oblivious HTTP . . . . . . . . . . . . . . . . . . 5
4.1. Client Considerations . . . . . . . . . . . . . . . . . . 7
4.2. Relay Considerations . . . . . . . . . . . . . . . . . . 8
4.3. Gateway Considerations . . . . . . . . . . . . . . . . . 8
5. Security Considerations . . . . . . . . . . . . . . . . . . . 9
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
6.1. message/ohttp-ack Media Type . . . . . . . . . . . . . . 9
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.1. Normative References . . . . . . . . . . . . . . . . . . 10
7.2. Informative References . . . . . . . . . . . . . . . . . 10
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 10
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10
Giles & Wood Expires 3 March 2023 [Page 2]
Internet-Draft Unreliable OHTTP August 2022
1. Introduction
A typical HTTP transaction consists of a request and response between
a Client and Target Resource. Oblivious HTTP ([OHTTP]) adds an
Oblivious Relay Resource and Oblivious Gateway Resource between
Client and Target Resource to help process HTTP transactions. In
particular, requests flow from the Client to the Target through the
Oblivious Relay Resource and Oblivious Gateway Resource in sequence.
In effect, an OHTTP transaction decouples the identity of the Client,
i.e. its IP address, from the request to the Target Resource. Only
the Client knows both its identity and the contents of the Target
Resource request.
In a typical OHTTP transaction, Clients receive an Encapsulated
Response from the Oblivious Gateway Resource containing the response
from the Target Resource. This is useful for applications that
require a response from the Target Resource. However, there are many
settings in which Clients do not require a response from the Target
Resource, including privacy-preserving data collection [STAR],
publish-subscribe applications, and more generally applications which
submit data under a "best effort" policy. Beyond these application
use cases, unreliable requests also allow the relay to play a more
active role towards improving client privacy, e.g. by batching,
buffering, and shuffling requests to mitigate traffic analysis by
network eavesdroppers or amplify local differential privacy
protections used by clients [LOCALDP].
This document describes an extension to OHTTP that supports
unreliable requests. An unreliable request is one wherein the client
does not have explicit confirmation of receipt from the Target
Resource, and therefore has limited application uses.
2. Motivation and Applicability
Unreliable application data transmission is sufficient for a number
of applications, as discussed in Section 1. However, the primary
motivations for this feature are agnostic to most applications. In
particular, unreliable data transmission allows the Oblivious Gateway
Resource to be deployed in a more performant and secure manner, and
it also allows the Oblivious Relay Resource to be deployed to improve
Client request privacy. We describe these motivating properties
below.
Giles & Wood Expires 3 March 2023 [Page 3]
Internet-Draft Unreliable OHTTP August 2022
2.1. Gateway Performance and Security
[STAR] is a proposed system for privacy-preserving data collection
aimed at the heavy hitters problem. For privacy reasons, it is
important that client reports, containing their individual
measurements, are separated from any client identifying information,
including their IP address. STAR can use OHTTP to send client
reports, but it requires the Oblivious Gateway Resource to produce an
encrypted acknowledgement to the clients for every report.
Depending on the Oblivious Gateway Resource implementation and scale
of deployment, this can lead to reduced performance. It also
requires the Oblivious Gateway Resource to have access to the private
key necessary to process the Encapsulated Request carrying a report
and produce a response.
Unreliable data transmission would allow the Oblivious Gateway
Resource to return an unencrypted acknowledgement of receipt, buffer
Encapsulated Requests for future processing, and even allow the
Oblivious Gateway Resource to operate without access to any private
key material.
2.2. Relay Privacy Protections
In OHTTP, the Oblivious Relay Resource simply forwards Encapuslated
Requests and Encapsulated Responses between Client and Oblivious
Gateway Resource. Depending on the implementation, the Oblivious
Relay Resource can introduce delays before forwarding each request or
response. This can help mitigate traffic analysis by passive
eavesdroppers observing traffic between the Oblivious Relay Resource
and Oblivious Gateway Resource.
Unreliable data transmission gives the Oblivious Relay Resource more
leeway in how these delays are introduced. In particular, the
Oblivious Relay Resource can buffer Encapsulated Requests for an
arbitrary amount of time, optionally shuffle them, and send them to
the Oblivious Gateway Resource in batches. Beyond making traffic
analysis by passive eavesdroppers more difficult, this is sometimes a
necessary function for differential privacy protections [LOCALDP].
3. Conventions and Definitions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
Giles & Wood Expires 3 March 2023 [Page 4]
Internet-Draft Unreliable OHTTP August 2022
4. Unreliable Oblivious HTTP
Unreliable OHTTP extends the basic OHTTP protocol in the following
ways:
1. It introduces a new Media Type for unreliable OHTTP responses
that represent a "request acknowledgement message." A 202
Accepted response with this Content-Type signals that the
corresponding Encapsulated Request was accepted and will be
processed later.
2. It extends Client and Oblivious Relay Resource behavior to accept
202 Accepted responses when Clients opt in to receive unreliable
OHTTP responses.
At a high level, an unreliable OHTTP request can be accepted by
either the Oblivious Relay Resource or Oblivious Gateway Resource.
In other words, the Oblivious Relay Resource and the Oblivious
Gateway Resource can both buffer and acknowledge an Encapsulated
Request. This end-to-end interaction is shown below.
Giles & Wood Expires 3 March 2023 [Page 5]
Internet-Draft Unreliable OHTTP August 2022
+---------+ +----------+ +----------+ +----------+
| Client | | Relay | | Gateway | | Target |
| | | Resource | | Resource | | Resource |
+----+----+ +----+-----+ +-------+--+ +----+-----+
| | | |
| Relay | | |
| Request | | |
| [+ Encapsulated | | |
| Request ] | | |
+---------------->| | |
| | | |
| Relay | | |
| Acknowledgement | | |
|<----------------+ | |
| | | |
..........................................................
| | Gateway | |
| | Request | |
| | [+ Encapsulated | |
| | Request ] | |
| +------------------->| |
| | | |
| | Gateway | |
| | Acknowledgement | |
| |<-------------------+ |
| | | |
..........................................................
| | | Request |
| | +------------->|
| | | |
| | | Response |
| | |<-------------+
| | | |
Figure 1: Overview of Unreliable Oblivious HTTP
Giles & Wood Expires 3 March 2023 [Page 6]
Internet-Draft Unreliable OHTTP August 2022
A Client interacts with the Oblivious Relay Resource by constructing
an Encapsulated Request as described in [OHTTP]. This Encapsulated
Request is included as the content of a POST request to the Oblivious
Relay Resource. Importantly, this request MUST include the "message/
ohttp-ack" Media Type in the Accept header (see Section 6.1). The
Client receives a 202 Accepted response with content type "message/
ohttp-ack" and an empty body upon successful transmission of the
request. If the Accept header also allows the normal "message/bhttp"
content type, the client has left the choice of reliable or
unreliable delivery up to the Relay and Gateway Resources.
Upon receipt of an unreliable OHTTP request from the Client, the
Oblivious Relay Resource MUST reply with a 202 Accepted response with
the "message/ohttp-ack" content type to the Client. It can buffer
the request to be sent to the Oblivious Gateway Resource at some
point in the future, or choose to forward it immediately. Similarly,
upon receipt of an unreliable OHTTP request from the Oblivious Relay
Resource, the Oblivious Gateway Resource MUST reply with a 202
Accepted response and the "message/ohttp-ack" content type to the
Oblivious Relay Resource and buffer the request for decapsulation and
processing at some point in the future.
4.1. Client Considerations
By the nature of this extension, unreliable OHTTP has some
limitations for applications. In particular, Clients do not receive
authenticated confirmation that their requests were processed by the
Oblivious Gateway Resource. Moreover, Clients cannot implement any
sort of retry mechanism in the event that their requests are too old.
This means that applications using unreliable OHTTP should tolerate
some amount of data loss.
This extension is triggered when the Client specifies message/ohttp-
ack in the Accept header in a request sent to the Oblivious Relay
Resource. Likewise, this extension can be disabled by specifying
message/ohttp-res (or sending no Accept header at all), requiring the
return of an Encapsulated Response according to [OHTTP].
A Client MAY signal that unreliable delivery is optional by setting a
request header of Accept: message/* or Accept: */* which matches both
the message/ohttp-res and message/ohttp-ack Media Types.
If a Client does not specify unreliable delivery by setting a
compatible Accept header in its request, and receives a 406 Not
Acceptable status code in the response from the Relay Resource, this
means that the OHTTP configuration for that request only supports
unreliable OHTTP. The client MAY then retry, this time allowing
unreliable delivery.
Giles & Wood Expires 3 March 2023 [Page 7]
Internet-Draft Unreliable OHTTP August 2022
4.2. Relay Considerations
Unreliable OHTTP allows the Oblivious Relay Resource to buffer
Encapsulated Requests for future transmission to an Oblivious Gateway
Resource. The relay can choose to buffer Client requests until a
sufficiently large number of requests is reached and then send all
requests in a single batch to the gateway. Additionally, the relay
can shuffle requests before forwarding them to the gateway to further
obscure the request timing.
The choice of minimum buffer size is an implementation detail.
Relays should take care to not introduce too much delay between when
a request was received and when it is forwarded. Such delay may
cause the gateway to drop the request due to a variety of reasons,
e.g., because the gateway configuration changed or rotated or the
decapsulated request became too old.
A Relay which supports unreliable OHTTP may be configured to enforce
unreliable delivery. In such cases, if the Relay receives a normal
OHTTP request, i.e., without an Accept header matching "message/
ohttp-ack", it SHOULD respond with 406 Not Acceptable to signal this
requirement to the client. If a Relay has forwarded an Encapsulated
Request and receives a 406 Not Acceptable response, it MUST return
the same status code in its response to the Client.
If a Relay receives a request from the Client which allows either
reliable or unreliable OHTTP, because the Accept header is message/*
or */*, it can choose to interpret it as one or the other, or it can
delegate the decision to the Gateway Resource. If it chooses to
interpret the request as an unreliable OHTTP request, and has already
returned a 202 Accepted reponse to the Client, it SHOULD set the
corresponding Accept: message/ohttp-ack header when it forwards to
request to the Gateway Resource.
4.3. Gateway Considerations
Similar to the Oblivious Relay Resource, the Oblivious Gateway
Resource can buffer requests for future processing. This can be
helpful if the key material needed to process each request is
isolated to a different process. Similar to the relay, the choice of
how to buffer incoming requests is an implementation decision, and
any delay in processing a request can increase the likelihood that
the request is dropped or discarded due to it being stale.
Giles & Wood Expires 3 March 2023 [Page 8]
Internet-Draft Unreliable OHTTP August 2022
If an Oblivious Gateway Resource requires unreliable delivery for a
request, by implementation constraint or policy, it SHOULD respond
with 406 Not Acceptable to any requests which require reliable return
of an Encapsulated Response. The Relay Resource will forward this to
the Client, and the Client can then fail or retry with unreliable
delivery according to its own requirements.
5. Security Considerations
Unreliable OHTTP does not change the security profile of OHTTP since
an Oblivious Relay Resource and Oblivious Gateway Resource could
always reply with non-2xx and no body to clients. Nevertheless,
unreliable OHTTP is only appropriate for applications that do not
require explicit confirmation of response or otherwise require
privacy amplification by the Oblivious Relay Resource.
6. IANA Considerations
Please update the "Media Types" registry at
https://www.iana.org/assignments/media-types
(https://www.iana.org/assignments/media-types) for the media type and
"message/ohttp-ack" (Section 6.1).
6.1. message/ohttp-ack Media Type
The "message/ohttp-ack" media type identifies a key configuration
used by Oblivious HTTP.
Type name: message
Subtype name: ohttp-ack
Required parameters: N/A
Optional parameters: None
Encoding considerations: only "8bit" or "binary" is permitted
Security considerations: see Section 5
Interoperability considerations: N/A
Published specification: this specification
Applications that use this media type: Unreliable Oblivious HTTP and
applications that use Unreliable Oblivious HTTP
Fragment identifier considerations: N/A
Additional information: Magic number(s): N/A
Deprecated alias names for this type: N/A
File extension(s): N/A
Macintosh file type code(s): N/A
Person and email address to contact for further information: see Aut
hors' Addresses section
Intended usage: COMMON
Restrictions on usage: N/A
Author: see Authors' Addresses section
Giles & Wood Expires 3 March 2023 [Page 9]
Internet-Draft Unreliable OHTTP August 2022
Change controller: IESG
7. References
7.1. Normative References
[OHTTP] Thomson, M. and C. A. Wood, "Oblivious HTTP", Work in
Progress, Internet-Draft, draft-ietf-ohai-ohttp-03, 8
August 2022, <https://datatracker.ietf.org/doc/html/draft-
ietf-ohai-ohttp-03>.
[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/rfc/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/rfc/rfc8174>.
7.2. Informative References
[LOCALDP] Erlingsson, Ú., Feldman, V., Mironov, I., Raghunathan, A.,
Talwar, K., and A. Thakurta, "Amplification by Shuffling:
From Local to Central Differential Privacy via Anonymity",
arXiv article, DOI 10.48550/ARXIV.1811.12469, 2018,
<https://doi.org/10.48550/ARXIV.1811.12469>.
[STAR] Davidson, A., Sahib, S. K., and P. Snyder, "STAR:
Distributed Secret Sharing for Private Threshold
Aggregation Reporting", Work in Progress, Internet-Draft,
draft-dss-star-01, 11 July 2022,
<https://datatracker.ietf.org/doc/html/draft-dss-star-01>.
Acknowledgments
This draft was motivated by discussions with Martin Thomson, Tommy
Pauly, and Lucas Pardue.
Authors' Addresses
Ralph Giles
Brave
Email: giles@thaumas.net
Christopher A. Wood
Cloudflare
Giles & Wood Expires 3 March 2023 [Page 10]
Internet-Draft Unreliable OHTTP August 2022
Email: caw@heapingbits.net
Giles & Wood Expires 3 March 2023 [Page 11]