<?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.7.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thomson-ppm-dap-bulk-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="Bulk DAP Submission">Bulk Report Submission for Distributed Aggregation Protocol (DAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-thomson-ppm-dap-bulk-00"/>
    <author fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <author initials="A." surname="Koshelev" fullname="Alex Koshelev">
      <organization>Meta</organization>
      <address>
        <email>koshelev@meta.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="18"/>
    <area>Security</area>
    <workgroup>Privacy Preserving Measurement</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 41?>

<t>A bulk report submission endpoint and format are described
for the Distributed Aggregation Protocol (DAP).
This provides modest, but meaningful, efficiency benefits
over the core protocol for cases where an intermediary
is able to collect large numbers of reports.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://martinthomson.github.io/dap-bulk/draft-thomson-ppm-dap-bulk.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-thomson-ppm-dap-bulk/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Privacy Preserving Measurement Working Group mailing list (<eref target="mailto:ppm@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/ppm/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/ppm/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/martinthomson/dap-bulk"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Distributed Aggregation Protocol (DAP) <xref target="DAP"/>
accepts reports from many clients
and aggregates them in a manner that protects individual contributions.
The core protocol requires that each report be submitted to the DAP leader.</t>
      <t>The assumption implicit in this design is that reports are submitted
directly by clients.
This is not necessary for security reasons
due to the encryption used
(this encryption is necessary for the portion of reports
that is intended for DAP helpers).
Clients could instead pass their reports to an intermediary for forwarding.</t>
      <t>Use of an intermediary reduces the availability requirements of aggregators
and might remove the need for anonymizing proxy
to protect client identity from the server
(such as the use of Oblivious HTTP <xref target="RFC9458"/>
as described in <xref section="7.4" sectionFormat="of" target="DAP"/>).
It also creates an opportunity to amortize the overheads
involved in report submission.</t>
      <t>This document defines a bulk submissions endpoint for DAP
and defines a report submission format for use with that endpoint.</t>
    </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>
      <?line -18?>

</section>
    <section anchor="bulk-submissions-endpoint">
      <name>Bulk Submissions Endpoint</name>
      <t>DAP defines the <tt>{leader}/tasks/{task-id}/reports</tt> resource
for report submission for a task.
This document extends DAP
to define the <tt>{leader}/tasks/{task-id}/reports/bulk</tt> resource
for bulk report submission for a task.</t>
      <t>Clients can send a HTTP POST request to this resource
with a payload in the bulk submission format (<xref target="format"/>).
A bulk request is equivalent to multiple separate submissions.</t>
      <t>A DAP leader <bcp14>MAY</bcp14> accept bulk submissions
at the regular "reports" resource.</t>
    </section>
    <section anchor="format">
      <name>Bulk Submission Format</name>
      <t>The "application/dap-bulk-report" format contains a header
that encodes extensions that are common to all reports.
The header is followed by any number of reports,
from which those shared fields are removed.</t>
      <figure anchor="syn-bulk-report">
        <name>Bulk Report Format</name>
        <sourcecode type="tls-syntax"><![CDATA[
struct {
  Extension common_extensions<0..2^16-1>;
  Report report[REPORT_COUNT];
} BulkReport;
]]></sourcecode>
      </figure>
      <t>The <tt>common_extensions</tt> field contains
common extensions that are added
to the set of public report extensions
in each report that follows.
Reports that include values for any common extension
override the value in the common extension.</t>
      <aside>
        <t>It is slightly more intrusive and fragile,
but we should consider removing the <tt>extensions</tt> field
from <tt>ReportMetadata</tt> as well.
Repeating those two bytes isn't a huge problem,
but it's pretty cheap.
It also removes the last clause from the preceding paragraph.</t>
      </aside>
      <t>The header is followed by any number of reports,
which are encoded exactly as described in <xref target="DAP"/>,
except as noted in <xref target="changes"/>.
The use of <tt>REPORT_COUNT</tt> in <xref target="syn-bulk-report"/>
is a small abuse of the TLS syntax to signify
that any number of reports are included.
This "value" could be any positive integer.
Unlike a variable-length field,
as denoted with <tt>&amp;lt;</tt> and <tt>&gt;</tt>,
this format does not require that the size of all included reports
be known before constructing a request.</t>
      <section anchor="changes">
        <name>Necessary Changes to DAP Report Formats</name>
        <t>DAP currently encodes report extensions
in the plaintext of shares.
For extensions that contain public information
this is inefficient for a couple of reasons:</t>
        <ul spacing="normal">
          <li>
            <t>Multiple copies of the data is included.</t>
          </li>
          <li>
            <t>The use of per-record encryption prevents compression.</t>
          </li>
        </ul>
        <t>This document recommends
the addition of a new public report extensions field
to the <tt>ReportMetadata</tt> structure.
This would be modified to include extensions that are public,
as shown in <xref target="syn-metadata-change"/>.</t>
        <figure anchor="syn-metadata-change">
          <name>Proposed Report Metadata Format</name>
          <sourcecode type="tls-syntax"><![CDATA[
struct {
  ReportID report_id;
  Time time;
  Extension extensions<0..2^16-1>; /* new */
} ReportMetadata;
]]></sourcecode>
        </figure>
        <t>This would be sufficient for many extensions,
such as those that are defined in <xref target="DAP-DP-EXT"/>.
As with the current design (<xref section="4.5.3" sectionFormat="of" target="DAP"/>),
unknown extensions would result in the report being rejected.
The primary difference being that the leader
can determine this before initiating the preparation phase.</t>
      </section>
      <section anchor="removal">
        <name>Optional Removal of Existing Report Extensions</name>
        <t>The existing report extensions could also potentially be removed,
as shown in <xref target="syn-plaintext-change"/>.</t>
        <figure anchor="syn-plaintext-change">
          <name>Proposed Plaintext Share Format</name>
          <sourcecode type="tls-syntax"><![CDATA[
opaque PlaintextInputShare<0..2^32-1>;

/* the old format, for reference:
struct {
  Extension extensions<0..2^16-1>;
  opaque payload<0..2^32-1>;
} PlaintextInputShare;
*/
]]></sourcecode>
        </figure>
        <t>These private extensions currently have no defined purpose
and add two bytes per aggregator to every report.
The risk of removing them is that a purpose for a generic extension
is discovered at some point in the future.
Though specific VDAF instantiations might
define their own extension container,
this decision might limit
the availability of extensions that apply to any VDAF.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <t>Report metadata,
which would include the extensions
if the recommendations in <xref target="changes"/> are adopted,
are included in the additional associated data
for every report.
Bulk submission is therefore strictly a performance optimization
as far as the operation of DAP is concerned.</t>
      <t>The potential for a single client
to generate large amounts of work for a DAP service
is a serious threat to service availability.
Any DAP leader <bcp14>SHOULD</bcp14> implement measures to defend
against resource exhaustion attacks through this interface.
This might include strong authentication of the requester.
The logical entity to make this request is a collector,
which is likely to be known to the leader.</t>
      <t>The addition of public extensions exposes more information
to the leader.
This might be used by a malicious leader
to selectively remove reports.
A leader is already able to do this without helper awareness,
but the added information might allow this to be more selective.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>IANA is requested to register
at time of publication
the "application/dap-bulk-report" media type
in the "Media Types" registry at
<eref brackets="angle" target="https://iana.org/assignments/media-types"/>,
following the procedures of <xref target="RFC6838"/>.
That registration includes the following:</t>
      <dl spacing="compact">
        <dt>Type name:</dt>
        <dd>
          <t>application</t>
        </dd>
        <dt>Subtype name:</dt>
        <dd>
          <t>dap-bulk-report</t>
        </dd>
        <dt>Required parameters:</dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>Optional parameters:</dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>Encoding considerations:</dt>
        <dd>
          <t>"binary"</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 document</t>
        </dd>
        <dt>Applications that use this media type:</dt>
        <dd>
          <t>This type identifies a bulk report submission
for the Distributed Aggregation Protocol.</t>
        </dd>
        <dt>Fragment identifier considerations:</dt>
        <dd>
          <t>N/A</t>
        </dd>
        <dt>Additional information:</dt>
        <dd>
          <t>      <br/>
          </t>
          <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><br/>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>IETF</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="DAP">
          <front>
            <title>Distributed Aggregation Protocol for Privacy Preserving Measurement</title>
            <author fullname="Tim Geoghegan" initials="T." surname="Geoghegan">
              <organization>ISRG</organization>
            </author>
            <author fullname="Christopher Patton" initials="C." surname="Patton">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Brandon Pitman" initials="B." surname="Pitman">
              <organization>ISRG</organization>
            </author>
            <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
              <organization>Independent</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="10" month="October" year="2024"/>
            <abstract>
              <t>   There are many situations in which it is desirable to take
   measurements of data which people consider sensitive.  In these
   cases, the entity taking the measurement is usually not interested in
   people's individual responses but rather in aggregated data.
   Conventional methods require collecting individual responses and then
   aggregating them, thus representing a threat to user privacy and
   rendering many such measurements difficult and impractical.  This
   document describes a multi-party distributed aggregation protocol
   (DAP) for privacy preserving measurement (PPM) which can be used to
   collect aggregate data without revealing any individual user's data.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ppm-dap-12"/>
        </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"/>
            <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"/>
            <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>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9458">
          <front>
            <title>Oblivious HTTP</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="January" year="2024"/>
            <abstract>
              <t>This document describes Oblivious HTTP, a protocol for forwarding encrypted HTTP messages. Oblivious HTTP 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="RFC" value="9458"/>
          <seriesInfo name="DOI" value="10.17487/RFC9458"/>
        </reference>
        <reference anchor="DAP-DP-EXT">
          <front>
            <title>Distributed Aggregation Protocol (DAP) Extensions for Improved Application of Differential Privacy</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="17" month="October" year="2024"/>
            <abstract>
              <t>   The Distributed Aggregation Protocol (DAP) can be a key component of
   a system that provides differentially-private guarantees for
   participants.  Extensions to DAP are defined to support these
   guarantees.  This includes bindings of reports to specific options,
   so that the aggregation service can better implement privacy
   budgeting and replay protections.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-thomson-ppm-dap-dp-ext-00"/>
        </reference>
      </references>
    </references>
    <?line 331?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA5Va63IbtxX+j6dA6ZnG8YhkFDuJI8tyGEtuNLUuteS2mUwa
gbsgiWpvBbCUaI3yLH2WPlm/cwAsSZF23ZnElnaBg3P9znew7vf7whtf6D3Z
+7EtruU73dTWy4t2XBrnTF3JSW3loXHemnHrdS5H06nVU+Xp3bmtfZ3VhXx8
ODr/sifUeGz1PMnCsxVBPZEpr6e1XexJU01qIfI6q1SJo3OrJr7vZ3Xp6qrf
NGU/V01/DBn9r74SrhPhFw1WHx9dvhFVW4613RM5ZO6JrK6crlzr9qS3rRZQ
4alQViuocqGz1hq/6Imb2l5Pbd02eHpuzVxlC1ignbZzU03liVautbrUle+J
a73A8nxPyL6s9K2XU11py1bTo7YyWW35R9coe12QgHzFS4XOp9qKua5a6Cfl
554rZTCy9zcoS2//RBvpealMgefwzg9G+8mgtlN6rGw2w+OZ943bGw5pFT0y
cz1Iy4b0YDi29Y3TQ+wf0r6p8bN2jJ2lst5U0fnD5HhaUsC3zq8JX1k6CBIG
pu42DT8eyMHMl0VPCNXirSW34gApJ21RhBzonbBweRk29/g1lFeV+cBu35Mn
9QdTFIrf6OiO0v9Q1Ddwna2bxaDS5MIgOogdFfpW/rl2M13o+TaZ2q8JvI5L
fyjxYpDVpRBVbUusniOOghJ3+Zvo9/tSjRF1lXkhRpIslTaU0DJtpa7ypobj
pKpyGQQgblrm2mVIGJ0LKjI/059ZaANxOTNONraeG8iQZY0//Q6O97LUsK6a
wrE7Uk8mJjO6Qr6Nkb4T452o5zochfzVJCLIJQUy5SDsZqbxQlUoUq9tqXOj
7ELgODUutPQ1NhaFzjzSw061DIXoZD2JhrtBdExp8rzQQjySxxSevM24eqD7
59op7+7+gL9fHvcPOZlTRt3fC5VluvEunSknti5RItVCZgUshqHkaxVFwyyY
XMIkqWhVxT5AFMh+2OLwJjdwZqsK2FcF3aCQG7C6676y+l+tsSwTIrTKZinm
Yx3C7skuuIpDChQstMq1HQTblXNt2bC5pmwKRMiTYp5CijiaKZ5H2ck6SpZO
sMhxeOYLBLWzNmYE/qtqD8DKtHMIG4fVRQCENIXKciJvdVIOuWEXQZfWQfRj
1mLlKUlck0a7SCl6uYy5YHVJAyRNles8tA2YjmpqkB/I2ddBVTizLXIsdB5e
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
qm4lQPW/Td9bxuUiAAA=

-->

</rfc>
