<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.16 (Ruby 3.1.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wood-ohai-unreliable-ohttp-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.14.0 -->
  <front>
    <title abbrev="Unreliable OHTTP">An Unreliable Oblivious HTTP Extension</title>
    <seriesInfo name="Internet-Draft" value="draft-wood-ohai-unreliable-ohttp-00"/>
    <author fullname="Ralph Giles">
      <organization>Brave</organization>
      <address>
        <email>giles@thaumas.net</email>
      </address>
    </author>
    <author fullname="Christopher A. Wood">
      <organization>Cloudflare</organization>
      <address>
        <email>caw@heapingbits.net</email>
      </address>
    </author>
    <date year="2022" month="August" day="30"/>
    <area>Security</area>
    <workgroup>Oblivious HTTP Application Intermediation</workgroup>
    <keyword>oblivious</keyword>
    <keyword>unreliable</keyword>
    <abstract>
      <t>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.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://chris-wood.github.io/draft-unreliable-ohttp/draft-wood-ohai-unreliable-ohttp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wood-ohai-unreliable-ohttp/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Oblivious HTTP Application Intermediation Working Group mailing list (<eref target="mailto:ohai@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ohai/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ohai/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/chris-wood/draft-unreliable-ohttp"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>A typical HTTP transaction consists of a request and response between
a Client and Target Resource. Oblivious HTTP (<xref target="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.</t>
      <t>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 <xref target="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 <xref target="LOCALDP"/>.</t>
      <t>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.</t>
    </section>
    <section anchor="motivation-and-applicability">
      <name>Motivation and Applicability</name>
      <t>Unreliable application data transmission is sufficient for a number of applications,
as discussed in <xref target="introduction"/>. 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.</t>
      <section anchor="gateway-performance-and-security">
        <name>Gateway Performance and Security</name>
        <t><xref target="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.</t>
        <t>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.</t>
        <t>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.</t>
      </section>
      <section anchor="relay-privacy-protections">
        <name>Relay Privacy Protections</name>
        <t>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.</t>
        <t>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
<xref target="LOCALDP"/>.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
    </section>
    <section anchor="unreliable-oblivious-http">
      <name>Unreliable Oblivious HTTP</name>
      <t>Unreliable OHTTP extends the basic OHTTP protocol in the following ways:</t>
      <ol spacing="normal" type="1"><li>It introduces a new Media Type for unreliable OHTTP responses that represent a
"request acknowledgement message." A <tt>202 Accepted</tt> response with this Content-Type
signals that the corresponding Encapsulated Request was accepted and will be processed later.</li>
        <li>It extends Client and Oblivious Relay Resource behavior to accept <tt>202 Accepted</tt>
responses when Clients opt in to receive unreliable OHTTP responses.</li>
      </ol>
      <t>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.</t>
      <figure anchor="fig-overview">
        <name>Overview of Unreliable Oblivious HTTP</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="624" width="536" viewBox="0 0 536 624" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 48,80 L 48,256" fill="none" stroke="black"/>
              <path d="M 48,320 L 48,464" fill="none" stroke="black"/>
              <path d="M 48,528 L 48,608" fill="none" stroke="black"/>
              <path d="M 88,32 L 88,80" fill="none" stroke="black"/>
              <path d="M 152,32 L 152,80" fill="none" stroke="black"/>
              <path d="M 192,80 L 192,256" fill="none" stroke="black"/>
              <path d="M 192,320 L 192,464" fill="none" stroke="black"/>
              <path d="M 192,528 L 192,608" fill="none" stroke="black"/>
              <path d="M 240,32 L 240,80" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,80" fill="none" stroke="black"/>
              <path d="M 360,80 L 360,256" fill="none" stroke="black"/>
              <path d="M 360,320 L 360,464" fill="none" stroke="black"/>
              <path d="M 360,528 L 360,608" fill="none" stroke="black"/>
              <path d="M 384,32 L 384,80" fill="none" stroke="black"/>
              <path d="M 440,32 L 440,80" fill="none" stroke="black"/>
              <path d="M 480,80 L 480,256" fill="none" stroke="black"/>
              <path d="M 480,320 L 480,464" fill="none" stroke="black"/>
              <path d="M 480,528 L 480,608" fill="none" stroke="black"/>
              <path d="M 528,32 L 528,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
              <path d="M 152,32 L 240,32" fill="none" stroke="black"/>
              <path d="M 296,32 L 384,32" fill="none" stroke="black"/>
              <path d="M 440,32 L 528,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 88,80" fill="none" stroke="black"/>
              <path d="M 152,80 L 240,80" fill="none" stroke="black"/>
              <path d="M 296,80 L 384,80" fill="none" stroke="black"/>
              <path d="M 440,80 L 528,80" fill="none" stroke="black"/>
              <path d="M 48,176 L 184,176" fill="none" stroke="black"/>
              <path d="M 56,240 L 192,240" fill="none" stroke="black"/>
              <path d="M 192,384 L 352,384" fill="none" stroke="black"/>
              <path d="M 200,448 L 360,448" fill="none" stroke="black"/>
              <path d="M 360,544 L 472,544" fill="none" stroke="black"/>
              <path d="M 368,592 L 480,592" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="480,544 468,538.4 468,549.6" fill="black" transform="rotate(0,472,544)"/>
              <polygon class="arrowhead" points="376,592 364,586.4 364,597.6" fill="black" transform="rotate(180,368,592)"/>
              <polygon class="arrowhead" points="360,384 348,378.4 348,389.6" fill="black" transform="rotate(0,352,384)"/>
              <polygon class="arrowhead" points="208,448 196,442.4 196,453.6" fill="black" transform="rotate(180,200,448)"/>
              <polygon class="arrowhead" points="192,176 180,170.4 180,181.6" fill="black" transform="rotate(0,184,176)"/>
              <polygon class="arrowhead" points="64,240 52,234.4 52,245.6" fill="black" transform="rotate(180,56,240)"/>
              <g class="text">
                <text x="44" y="52">Client</text>
                <text x="184" y="52">Relay</text>
                <text x="336" y="52">Gateway</text>
                <text x="476" y="52">Target</text>
                <text x="196" y="68">Resource</text>
                <text x="340" y="68">Resource</text>
                <text x="484" y="68">Resource</text>
                <text x="80" y="116">Relay</text>
                <text x="88" y="132">Request</text>
                <text x="68" y="148">[+</text>
                <text x="132" y="148">Encapsulated</text>
                <text x="112" y="164">Request</text>
                <text x="152" y="164">]</text>
                <text x="160" y="212">Relay</text>
                <text x="120" y="228">Acknowledgement</text>
                <text x="268" y="292">..........................................................</text>
                <text x="232" y="324">Gateway</text>
                <text x="232" y="340">Request</text>
                <text x="212" y="356">[+</text>
                <text x="276" y="356">Encapsulated</text>
                <text x="256" y="372">Request</text>
                <text x="296" y="372">]</text>
                <text x="320" y="420">Gateway</text>
                <text x="288" y="436">Acknowledgement</text>
                <text x="268" y="500">..........................................................</text>
                <text x="400" y="532">Request</text>
                <text x="436" y="580">Response</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+---------+       +----------+      +----------+      +----------+
| Client  |       | Relay    |      | Gateway  |      | Target   |
|         |       | Resource |      | Resource |      | Resource |
+----+----+       +----+-----+      +-------+--+      +----+-----+
     |                 |                    |              |
     | Relay           |                    |              |
     | Request         |                    |              |
     | [+ Encapsulated |                    |              |
     |    Request ]    |                    |              |
     +---------------->|                    |              |
     |                 |                    |              |
     |           Relay |                    |              |
     | Acknowledgement |                    |              |
     |<----------------+                    |              |
     |                 |                    |              |

    ..........................................................

     |                 | Gateway            |              |
     |                 | Request            |              |
     |                 | [+ Encapsulated    |              |
     |                 |    Request ]       |              |
     |                 +------------------->|              |
     |                 |                    |              |
     |                 |            Gateway |              |
     |                 |    Acknowledgement |              |
     |                 |<-------------------+              |
     |                 |                    |              |

    ..........................................................

     |                 |                    | Request      |
     |                 |                    +------------->|
     |                 |                    |              |
     |                 |                    |     Response |
     |                 |                    |<-------------+
     |                 |                    |              |
]]></artwork>
        </artset>
      </figure>
      <t>A Client interacts with the Oblivious Relay Resource by constructing an
Encapsulated Request as described in <xref target="OHTTP"/>. This Encapsulated Request
is included as the content of a POST request to the Oblivious Relay Resource.
Importantly, this request <bcp14>MUST</bcp14> include the "message/ohttp-ack" Media Type
in the Accept header (see <xref target="iana-ack"/>). The Client receives a <tt>202 Accepted</tt>
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.</t>
      <t>Upon receipt of an unreliable OHTTP request from the Client, the Oblivious
Relay Resource <bcp14>MUST</bcp14> reply with a <tt>202 Accepted</tt> 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 <bcp14>MUST</bcp14> reply with a <tt>202 Accepted</tt> 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.</t>
      <section anchor="client-considerations">
        <name>Client Considerations</name>
        <t>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.</t>
        <t>This extension is triggered when the Client specifies <tt>message/ohttp-ack</tt>
in the <tt>Accept</tt> header in a request sent to the Oblivious Relay Resource.
Likewise, this extension can be disabled by specifying <tt>message/ohttp-res</tt>
(or sending no Accept header at all), requiring the return of an
Encapsulated Response according to <xref target="OHTTP"/>.</t>
        <t>A Client <bcp14>MAY</bcp14> signal that unreliable delivery is optional by setting a
request header of <tt>Accept: message/*</tt> or <tt>Accept: */*</tt> which matches
both the <tt>message/ohttp-res</tt> and <tt>message/ohttp-ack</tt> Media Types.</t>
        <t>If a Client does not specify unreliable delivery by setting a compatible
Accept header in its request, and receives a <tt>406 Not Acceptable</tt> status
code in the response from the Relay Resource, this means that the OHTTP
configuration for that request only supports unreliable OHTTP. The client
<bcp14>MAY</bcp14> then retry, this time allowing unreliable delivery.</t>
      </section>
      <section anchor="relay-considerations">
        <name>Relay Considerations</name>
        <t>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.</t>
        <t>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.</t>
        <t>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 <bcp14>SHOULD</bcp14> respond with <tt>406 Not Acceptable</tt> to signal this requirement
to the client. If a Relay has forwarded an Encapsulated Request and
receives a <tt>406 Not Acceptable</tt> response, it <bcp14>MUST</bcp14> return the same status
code in its response to the Client.</t>
        <t>If a Relay receives a request from the Client which allows either reliable
or unreliable OHTTP, because the <tt>Accept</tt> header is <tt>message/*</tt> or <tt>*/*</tt>,
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 <tt>202 Accepted</tt>
reponse to the Client, it <bcp14>SHOULD</bcp14> set the corresponding <tt>Accept: message/ohttp-ack</tt>
header when it forwards to request to the Gateway Resource.</t>
      </section>
      <section anchor="gateway-considerations">
        <name>Gateway Considerations</name>
        <t>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.</t>
        <t>If an Oblivious Gateway Resource requires unreliable delivery for a
request, by implementation constraint or policy, it <bcp14>SHOULD</bcp14> respond
with <tt>406 Not Acceptable</tt> 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.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>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.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Please update the "Media Types" registry at
<eref target="https://www.iana.org/assignments/media-types">https://www.iana.org/assignments/media-types</eref> for the media type
and "message/ohttp-ack" (<xref target="iana-ack"/>).</t>
      <section anchor="iana-ack">
        <name>message/ohttp-ack Media Type</name>
        <t>The "message/ohttp-ack" media type identifies a key configuration used by Oblivious HTTP.</t>
        <dl spacing="compact">
          <dt>Type name:</dt>
          <dd>
            <t>message</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>ohttp-ack</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>only "8bit" or "binary" is permitted</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>see <xref target="security"/></t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>this specification</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Unreliable Oblivious HTTP and applications that use Unreliable Oblivious HTTP</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Additional information:</dt>
          <dd>
            <dl spacing="compact">
              <dt>Magic number(s):</dt>
              <dd>N/A</dd>
              <dt>Deprecated alias names for this type:</dt>
              <dd>N/A</dd>
              <dt>File extension(s):</dt>
              <dd>N/A</dd>
              <dt>Macintosh file type code(s):</dt>
              <dd>N/A</dd>
            </dl>
          </dd>
          <dt>Person and email address to contact for further information:</dt>
          <dd>
            <t>see Authors' Addresses section</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>see Authors' Addresses section</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IESG</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="OHTTP">
          <front>
            <title>Oblivious HTTP</title>
            <author fullname="Martin Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="8" month="August" year="2022"/>
            <abstract>
              <t>   This document describes a system for forwarding encrypted HTTP
   messages.  This allows a client to make multiple requests to an
   origin server without that server being able to link those requests
   to the client or to identify the requests as having come from the
   same client, while placing only limited trust in the nodes used to
   forward the messages.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ohai-ohttp-03"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="STAR">
          <front>
            <title>STAR: Distributed Secret Sharing for Private Threshold Aggregation Reporting</title>
            <author fullname="Alex Davidson">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Shivan Kaul Sahib">
              <organization>Brave Software</organization>
            </author>
            <author fullname="Peter Snyder">
              <organization>Brave Software</organization>
            </author>
            <date day="11" month="July" year="2022"/>
            <abstract>
              <t>   Servers often need to collect data from clients that can be privacy-
   sensitive if the server is able to associate the collected data with
   a particular user.  In this document we describe STAR, an efficient
   and secure threshold aggregation protocol for collecting measurements
   from clients by an untrusted aggregation server, while maintaining
   K-anonymity guarantees.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-dss-star-01"/>
        </reference>
        <reference anchor="LOCALDP">
          <front>
            <title>Amplification by Shuffling: From Local to Central Differential Privacy via Anonymity</title>
            <author fullname="Úlfar Erlingsson" initials="Ú." surname="Erlingsson">
              <organization/>
            </author>
            <author fullname="Vitaly Feldman" initials="V." surname="Feldman">
              <organization/>
            </author>
            <author fullname="Ilya Mironov" initials="I." surname="Mironov">
              <organization/>
            </author>
            <author fullname="Ananth Raghunathan" initials="A." surname="Raghunathan">
              <organization/>
            </author>
            <author fullname="Kunal Talwar" initials="K." surname="Talwar">
              <organization/>
            </author>
            <author fullname="Abhradeep Thakurta" initials="A." surname="Thakurta">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="arXiv" value="article"/>
          <seriesInfo name="DOI" value="10.48550/ARXIV.1811.12469"/>
        </reference>
      </references>
    </references>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This draft was motivated by discussions with Martin Thomson, Tommy Pauly, and Lucas Pardue.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
mkj8H745ptm5PwAA

-->

</rfc>
