<?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.17 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-case-ppm-binomial-dp-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.22.0 -->
  <front>
    <title abbrev="Binomal DP in MPC">Simple and Efficient Binomial Protocols for Differential Privacy in MPC</title>
    <seriesInfo name="Internet-Draft" value="draft-case-ppm-binomial-dp-01"/>
    <author initials="B." surname="Case" fullname="Ben Case">
      <organization>Meta</organization>
      <address>
        <email>bmcase@meta.com</email>
      </address>
    </author>
    <author initials="M." surname="Thomson" fullname="Martin Thomson">
      <organization>Mozilla</organization>
      <address>
        <email>mt@lowentropy.net</email>
      </address>
    </author>
    <date year="2024" month="July" day="08"/>
    <area>Security</area>
    <workgroup>Privacy Preserving Measurement</workgroup>
    <keyword>oneplusoneplusoneplus</keyword>
    <keyword>noise</keyword>
    <keyword>counting coins</keyword>
    <abstract>
      <?line 75?>

<t>A method for computing a binomial noise in Multiparty Computation (MPC) is
described.  The binomial mechanism for differential privacy (DP) is a simple
mechanism that is well suited to MPC, where computation of more complex
algorithms can be expensive.  This document describes how to select the correct
parameters and apply binomial noise in MPC.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://private-attribution.github.io/i-d/draft-case-ppm-binomial-dp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-case-ppm-binomial-dp/"/>.
      </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/private-attribution/i-d"/>.</t>
    </note>
  </front>
  <middle>
    <?line 84?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Using Multiparty Computation (MPC) to compute aggregate statistics has some very
promising privacy characteristics. MPC provides strong assurances about the
confidentiality of input values, relying only on the assumption that the parties
performing the computation do not collude. Depending on the MPC system in use,
the cryptographic assumptions involved can be conservative.  For instance, MPC
is the basis of the Verifiable, Distributed Aggregation Functions (VDAFs)
<xref target="VDAF"/> used in DAP <xref target="DAP"/>.</t>
      <t>Depending on how the system is used, particularly for systems where the MPC
system offers some flexibility in how it can be queried, concrete privacy
guarantees are harder to provide.  Multiple aggregations over similar input data
might be computed, leading to aggregates that can be compared to reveal
aggregates over a small set of inputs or even the value of specific inputs.</t>
      <t>Differential privacy (DP) <xref target="DWORK"/>) offers a framework
for both analyzing and protecting privacy that can be applied to this problem to
great effect.  By adding some amount of noise to aggregates, strong guarantees
can be made about the amount of privacy loss that applies to any given input.</t>
      <t>There are multiple methods for applying noise to aggregates, but the one that
offers the lowest amount of noise — and therefore the most useful outputs — is
one where a single entity samples and adds noise, known as central
DP. Alternatives include local DP, where each noise is added to each input to
the aggregation, or shuffle DP, which reduces noise requirements for local DP by
shuffling inputs.</t>
      <t>Applying noise in a single place ensures that the amount of noise is directly
proportional to the sensitivity (that is, the maximum amount that any input
might contribute to the output) rather than being in some way proportional to
the number of inputs.  The amount of noise relative to aggregates decreases as
the number of inputs increases, meaning that central DP effectively provides an
optimal amount of noise.</t>
      <section anchor="dp-noise-in-mpc">
        <name>DP Noise in MPC</name>
        <t>There are several approaches to adding noise in MPC.</t>
        <t>Use of local or shuffle DP is possible. As noted, these methods can add more
noise than is ideal.</t>
        <t>Noise can be added by each party independently. Each party adds noise in a
fraction that is based on its understanding of the number of honest parties
present. In two-party MPC, each party has to assume the other is dishonest, so
each adds the entire noise quantity, ultimately doubling the overall noise that
is added. In a three-party honest majority MPC, each party can add half of the
required noise on the assumption that one other party is honest, resulting in a
50% increase in the amount of noise.</t>
        <t>Finally, an MPC protocol can be executed to add noise. The primary drawback of
this approach is that there is an increased cost to generating the noise in MPC.
However, MPC protocols can avoid having to include additional noise in order to
compensate for the risk of information leakage from a dishonest participant.
Adding noise using MPC provides strong assurances that noise is not known to any
party, including the parties that perform the computation, up to the limits of
the MPC scheme in use.  Finally, the costs of computation in MPC scale only with
the privacy parameters for the differential privacy, not the number of inputs.
Amortizing this cost over large sets of inputs can make the additional cost
small.</t>
      </section>
      <section anchor="binomal-noise">
        <name>Binomal Noise</name>
        <t>The Bernoulli distribution provides approximate differential privacy (DP)
<xref target="DWORK"/>. This is sometimes named (epsilon, delta)-differential privacy or (ε,
δ)-differential privacy.  The epsilon value in approximate DP bounds privacy
loss for most contributions to the output, however the delta value is a non-zero
bound on the probability that a higher privacy loss occurs.</t>
        <t>A binomial, <tt>Bin(N, p)</tt>, distribution is the number of successes out of <tt>N</tt>
Bernoulli trials, where each Bernoulli trial is a coin flip with success
probability <tt>p</tt>.</t>
        <t>Due to the central limit theorem, a binomial distribution with large <tt>N</tt> is a
close approximation of a Normal or Gaussian distribution, which has a number of
useful properties.</t>
        <t>This document describes a simple MPC protocol, with several instantiations, for
efficiently computing binomial noise.</t>
      </section>
      <section anchor="requirements-language">
        <name>Requirements Language</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="BCP14"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="the-binomial-mechanism-for-mpc">
      <name>The Binomial Mechanism for MPC</name>
      <t>The binomial mechanism for DP generates binomial noise in MPC and adds it to
outputs before they are released.</t>
      <t>Our parameter choices rely on an analysis from <xref target="CPSGD"/>, which provides more
comprehensive formulae for a range of parameters.</t>
      <t>To sample from a <tt>Bin(N, p)</tt> distribution in MPC, two things are needed:</t>
      <ul spacing="normal">
        <li>
          <t>A protocol for Bernoulli trials, or coin-flipping protocol, that produces a
value of 1 with probability <tt>p</tt> and 0 otherwise.</t>
        </li>
        <li>
          <t>A means to sum the value of <tt>N</tt> trials.</t>
        </li>
      </ul>
      <t>This protocol sets <tt>p</tt> to 0.5. This value of <tt>p</tt> provides both an optimal
privacy/utility trade off and good efficiency for computation in MPC. Each
Bernoulli sample requires a single, uniformly distributed bit, which can be done
very efficiently. Using <tt>p = 0.5</tt> also requires the fewest samples for any set
of parameters, except for cases with extremely low variance requirements, which
we consider to be out of scope; see Section 2 of <xref target="CPSGD"/>.</t>
      <t>There are several ways to instantiate a coin flipping protocol in MPC depending
what MPC protocol is being used.  <xref target="protocols"/> describes some basic protocol
instantiations.</t>
      <t>For any given set of privacy parameters (epsilon, delta) and for a known
sensitivity, <xref target="compute-n"/> describes how to determine the number of Bernoulli
samples needed.</t>
      <t>To count the number of successes across these <tt>N</tt> trials, the MPC helpers simply
run an aggregation circuit over the secret shared results of the <tt>N</tt> Bernoulli
trials, each or which is either 0 or 1.  The result of this sum is a sample from
a <tt>Bin(N, p)</tt> distribution. This binomial noise value is then added to the
output inside the MPC and then the final noised result revealed to the
appropriate output parties.  That is, if the MPC computes <tt>f(D)</tt>, it outputs
shares of the result <tt>f(D) + Bin(N,p)</tt>.</t>
      <t>The party receiving the output can then postprocess this output to get an
unbiased estimate for <tt>f(D)</tt> by subtracting the mean of the <tt>Bin(N,p)</tt>
distribution, which is <tt>N·p</tt>.</t>
      <section anchor="document-organization">
        <name>Document Organization</name>
        <t>In the remainder of this document is organized as follows:</t>
        <ul spacing="normal">
          <li>
            <t><xref target="scale"/> introduces an additional quantization scaling parameter that can
be used to optimize the privacy/utility tradeoff.</t>
          </li>
          <li>
            <t><xref target="compute-n"/> details the process of determining for a given function <tt>f()</tt>
and privacy parameters how to determine the optimal number of trials, <tt>N</tt>.</t>
          </li>
          <li>
            <t><xref target="protocols"/> describes some instantiations of the coin flipping protocol and
the aggregation protocol.</t>
          </li>
          <li>
            <t><xref target="cost"/> includes a cost analysis of different instantiations in both
computation and communication costs.</t>
          </li>
          <li>
            <t><xref target="comparison"/> compares the binomial mechanism to other DP approaches that
might be used in MPC.</t>
          </li>
        </ul>
        <!-- TODO: overview of some use cases where this approach would be beneficial to use. -->

</section>
    </section>
    <section anchor="scale">
      <name>Quantization Scale</name>
      <t><xref target="CPSGD"/> provides an additional "quantization scale" parameter, <tt>s</tt>, for the
binomial mechanism that can be tuned to make it more closely approximate the
Gaussian mechanism and get an improved privacy/utility tradeoff.</t>
      <t>The paper defines the application of the binomial mechanism as:</t>
      <sourcecode type="pseudocode"><![CDATA[
f(D) + (X - Np) * s
]]></sourcecode>
      <t>where <tt>f(D)</tt> is the value that is protected and <tt>X</tt> is a sample from a <tt>Bin(N,
p)</tt> distribution.  This produces a scaled and unbiased output.</t>
      <t>The value of <tt>s</tt> is typically smaller than one, meaning that the sample noise is
effectively able to produce non-integer values. However, operating on
non-integer values in MPC is more complex, so this documents uses a modified
version where the MPC computes:</t>
      <sourcecode type="pseudocode"><![CDATA[
o = f(D) / s + X
]]></sourcecode>
      <t>For an MPC system, the output of the system is shares of this scaled and biased
value. The recipient can reconstruct the an unbiased, unscaled, noised value by:</t>
      <ul spacing="normal">
        <li>
          <t>Adding the shares it receives: <tt>o = sum(oᵢ, o₂, …)</tt></t>
        </li>
        <li>
          <t>Correcting for bias: <tt>o - N·p</tt></t>
        </li>
        <li>
          <t>Scaling the value: <tt>f′(D) = s * (o - N·p)</tt></t>
        </li>
      </ul>
      <t>The resulting value is always within <tt>N·p·s</tt> of the computed aggregate, but it
could be negative if that aggregate is smaller than <tt>N·p·s</tt>.</t>
      <section anchor="compute-n">
        <name>Determining number of Bernoulli trials</name>
        <t>Applying noise for differential privacy requires understanding the function
being computed, <tt>f()</tt>, and the private dataset, <tt>D</tt>.  For an <tt>f</tt> that is a
<tt>d</tt>-dimensional query with integer outputs, the output vector is in <tt>ℤ&lt;sup&gt;d&lt;/sup&gt;</tt>.  That
is, the output is a <tt>d</tt>-dimensional vector of natural numbers.</t>
        <t>The binomial mechanism requires understanding the sensitivity of the result
under three separate norms.</t>
        <section anchor="sensitivity">
          <name>Sensitivity</name>
          <t>Differential privacy describes sensitivity in terms of databases.  In this,
databases are considering "neighboring" if the additional, removal, or sometimes
the substitution of inputs related to a single subject turns one database into
the other.</t>
          <t>For two neighboring databases <tt>D₁</tt>, <tt>D₂</tt>, the sensitivity of <tt>f</tt> is:</t>
          <sourcecode type="pseudocode"><![CDATA[
||f(D₁) - f(D₂)||ₚ
]]></sourcecode>
          <t>For <tt>f(D)</tt> that produces output that is a <tt>d</tt>-dimensional vector of integer
values, the <tt>p</tt>-norms of interest for use with the binomial mechanism is the L1,
L2, and L∞ (or Linfty) norms.</t>
          <t>The L1 norm of <tt>x∊ℤ&lt;sup&gt;d&lt;/sup&gt;</tt> is:</t>
          <sourcecode type="pseudocode"><![CDATA[
sensitivity_1 = ||x||₁ = sum(i=1..d, |xᵢ|)
]]></sourcecode>
          <t>The L2 norm is:</t>
          <sourcecode type="pseudocode"><![CDATA[
sensitivity_2 = ||x||₂ = sqrt(sum(i=1..d,xᵢ²))
]]></sourcecode>
          <t>Finally, the L∞ norm is:</t>
          <sourcecode type="pseudocode"><![CDATA[
sensitivity_infty = ||x||∞ = maxᵢ(|xᵢ|)
]]></sourcecode>
          <t>These properties of the function <tt>f()</tt> are all specific to the use case and need
to be known.</t>
        </section>
      </section>
      <section anchor="epsilon-and-delta-constraints">
        <name>Epsilon and Delta Constraints</name>
        <t>The privacy parameters for approximate DP are epsilon, ε, and delta, δ.  These
parameters determine the bounds on privacy loss.</t>
        <t>Epsilon may vary considerably, though is typically in the range <tt>[0.01,
10]</tt>. Often, multiple queries spend proportions of a larger epsilon privacy
budget.  For example, a privacy budget of <tt>epsilon=3</tt> might be spent in three
separate queries with epsilon 1 or as four queries with epsilon of 2, 0.1, 0.3,
and 0.6.</t>
        <t>Delta is often be fixed in the range
(2<sup>-29</sup>..2<sup>-24</sup>). Typically, the only constraint on delta is
to ensure that <tt>1/delta &gt; population</tt>; that is, expected number of contributions
that will suffer privacy loss greater than epsilon is kept less than one.  For
MPC functions that include very large numbers of inputs, delta might need to be
reduced.</t>
        <t>Theorem 1 of <xref target="CPSGD"/> gives a way to determine the fewest Bernoulli trials,
<tt>N</tt>, needed to achieve approximate DP.  There are two main constraints that need
to be satisfied which we call the <tt>delta_constraint</tt> and
<tt>epsilon_delta_constraint</tt>.</t>
        <t>As the number Bernoulli trials increases, each constraint monotonically allows
for smaller epsilon and delta values to be achieved.  To find the smallest
number of Bernoullis that simultaneously satisfies both constraints, find the
minimum <tt>N</tt> determined by the <tt>delta_constraint</tt> and the minimum <tt>N</tt> determined
by the <tt>epsilon_delta_contraint</tt> and then take the maximum of these two values.</t>
        <t>A possible approach to satisfying both constraints is to perform a binary search
over <tt>N</tt> to find the smallest one satisfying both constraints simultaneously.  A
search might be acceptable as the computation only needs to be performed once
for each set of parameters.  An alternative and more direct approach is
described in the following sections.</t>
        <section anchor="bounding-n-by-deltaconstraint">
          <name>Bounding <tt>N</tt> by <tt>delta_constraint</tt></name>
          <t>The <tt>delta_constraint</tt> is a function of delta, the dimension, <tt>d</tt>, the
<tt>sensitivityᵢnfty</tt>, the quantization scale, <tt>s</tt>, and <tt>p</tt> (which is fixed to 0.5
in this document).  This produces a simple formula for determining the minimum
value of <tt>N</tt>:</t>
          <sourcecode type="pseudocode"><![CDATA[
N >= 4·max(23·ln(10·d/delta), 2·sensitivity_infty/s)
]]></sourcecode>
        </section>
        <section anchor="bounding-n-by-epsilondeltaconstraint">
          <name>Bounding <tt>N</tt> by <tt>epsilon_delta_constraint</tt></name>
          <t>The <tt>epsilon_delta_constraint</tt> is a function of epsilon, delta, <tt>s</tt>, <tt>d</tt>,
<tt>sensitivity_1</tt>, <tt>sensitivity_2</tt>, <tt>sensitivity_infty</tt>, and <tt>p</tt> (0.5).  It is a
more complicated formula.</t>
          <t>For the <tt>epsilon_delta constraint</tt>, <xref target="CPSGD"/> defines some intermediate
functions of the success probability, <tt>p</tt>. For <tt>p = 0.5</tt>, these become fixed
constants:</t>
          <sourcecode type="pseudocode"><![CDATA[
bₚ = 1/3
cₚ = sqrt(2)·7/4
dₚ = 2/3
]]></sourcecode>
          <t>The <tt>epsilon_delta_constraint</tt>, as written in formula (7) of <xref target="CPSGD"/>,
determines what epsilon is currently attained by the provided <tt>N</tt> and other
parameters:</t>
          <sourcecode type="pseudocode"><![CDATA[
epsilon =
  sensitivity_2·sqrt(2·ln(1.25/delta))
    / (s/2·sqrt(N))
  + (sensitivity_2·cₚ·sqrt(ln(10/delta)) + sensitivity_1·bₚ)
    / ((s/4)·(1-delta/10) · N)
  + (2/3·sensitivity_infty·ln(1.25/delta)
      + sensitivity_infty·dₚ·ln(20·d/delta)·ln(10/delta))
    / ((s/4)·N)
]]></sourcecode>
          <t>The value of <tt>N</tt> for a fixed set of values for epsilon, delta, sensitivity, and
<tt>s</tt>, is a quadratic equation in <tt>N</tt>.</t>
          <t>To see this first write equation (7) as with other variables gathered into
constants <tt>c₁</tt> and <tt>c₂</tt>:</t>
          <sourcecode type="pseudocode"><![CDATA[
epsilon = c₁ / sqrt(N) + c₂ / N
c₁ = 2·sensitivity_2·sqrt(2·ln(1.25/delta))
c₂ = 4 / s·(
    (sensitivity_2·cₚ·sqrt(ln(10/delta)) + sensitivity_1·bₚ)
      / (1-delta/10)
    + 2·sensitivity_infty·ln(1.25/delta) / 3
    + sensitivity_infty·dₚ·ln(20·d/delta)·ln(10/delta)
  )
]]></sourcecode>
          <t>The formula for epsilon can then be written as a quadratic equation in <tt>N</tt>:</t>
          <sourcecode type="pseudocode"><![CDATA[
0 = (epsilon / c₁)^2·N² + (2·epsilon·c₂ / c₁² - 1)·N + (c₂ / c₁)^2
]]></sourcecode>
          <t>Once the values of all the other parameters are fixed, this can be solved with
the quadratic formula.</t>
        </section>
        <section anchor="setting-the-quantization-scale">
          <name>Setting the Quantization Scale</name>
          <t>Setting the quantization scale correctly can help get the best privacy/utility
trade offs for the mechanism.  An additional equation to note is the error of
the mechanism which we would like to minimize subject to the privacy constraints</t>
          <sourcecode type="pseudocode"><![CDATA[
error = d·s²·N·p·(1-p) = 4·d·s²·N
]]></sourcecode>
          <t><xref target="CPSGD"/> discusses more about why 0.5 is the optimal choice for <tt>p</tt>.  When it
comes to setting the quantization scale s, making it smaller will decrease the
error directly but also require a larger <tt>N</tt>.</t>
          <t>It is generally the case that making <tt>s</tt> smaller will continually decrease the
error, but at some point there is necessarily a performance constraint from the
MPC cost of how large an <tt>N</tt> is practical.</t>
          <t>One approach to setting the scale parameter would be to first determine an upper
bound allowed for <tt>N</tt> and then set <tt>s</tt> as small as possible within that
constraint.  Another approach would be to look for a point at which decreasing
<tt>s</tt> and increasing <tt>N</tt> leads to diminishing returns in reducing the error of the
mechanism.</t>
        </section>
      </section>
    </section>
    <section anchor="noise-generation-algorithm">
      <name>Noise Generation Algorithm</name>
      <t>Once the optimal number of Bernoulli trials has been determined, there are two
phases to the algorithm:</t>
      <ol spacing="normal" type="1"><li>
          <t>Perform a distributed coin flipping protocol so that all helpers hold secret
shares of 0 or 1 with probability, <tt>p</tt>.</t>
        </li>
        <li>
          <t>Sum up these secret shared samples into a sample from a <tt>Bin(N, p)</tt>.</t>
        </li>
      </ol>
      <t>This document uses <tt>p = 0.5</tt>, so the coin flipping protocol can use a
uniformly-distributed source of entropy.</t>
      <section anchor="protocols">
        <name>Coin Flipping and Aggregation Protocols</name>
        <t>The use of the binomial mechanism for <tt>p = 0.5</tt> in a concrete MPC requires a
protocol for jointly computing a number of random bits. Different systems will
have different requirements. This section describes three basic protocols that
can be used to compute the binomial distribution.</t>
        <section anchor="three-party-honest-majority">
          <name>Three Party Honest Majority</name>
          <t>A three party honest majority system is appealing because there are very
efficient protocols for performing multiplication; see <xref target="MPC-MUL"/>.</t>
          <t>Two protocols are described:</t>
          <ul spacing="normal">
            <li>
              <t>A binary circuit allows the coin flip to be performed without any
communication cost using PRSS <xref target="PRSS"/>. Aggregation requires the use of an
addition circuit, which requires one binary multiplication per bit.</t>
            </li>
            <li>
              <t>A circuit using prime fields allows the aggregation to be performed without
communication, but the coin flip protocol, which also uses PRSS, requires a
modulus conversion operation.</t>
            </li>
          </ul>
          <t>Overall, the binary circuit is more efficient in terms of communication costs,
but it might be easier to integrate the prime field circuit into a system that
uses prime fields.</t>
        </section>
        <section anchor="three-party-binary-field-protocol">
          <name>Three Party Binary Field Protocol</name>
          <t>A coin flip protocol in a three party honest majority system simply samples a
random share using PRSS.  The result is a three-way, replicated sharing of a
random binary value.</t>
          <t>Aggregating these values can be performed using a binary circuit in a tree.  Two
bits, <tt>a</tt> and <tt>b</tt>, are added to form a binary value, <tt>{a∧b, a⊕b}</tt>.</t>
          <t>This process is continued pairwise. The resulting pairs, <tt>{a1, a2}</tt> and <tt>{b1,
b2}</tt>, are also added pairwise to produce a three-bit value, <tt>{a1∧b1,
a1⊕b1⊕(a2∧b2), a2⊕b2}</tt>.</t>
          <t>Each successive iteration involves one more bit and half as many values, until a
single value with <tt>log₂(N)</tt> bits is produced.</t>
          <t>This aggregation process requires at most <tt>4N</tt> binary multiplications.</t>
        </section>
        <section anchor="three-party-large-prime-field-protocol">
          <name>Three Party Large Prime Field Protocol</name>
          <t>Addition of values in a prime field with a modulus greater than the number of
samples (N) can be performed trivially. However, producing a replicated secret
sharing across three parties using a single bit sample from PRSS results in a
value that is uniformly distributed between 0 and 2 inclusive.</t>
          <t>A modulus conversion operation can be used to convert that into a sharing in the
prime field.  This requires two multiplications, though some parts of those
multiplications can be avoided; see <xref target="KIMHC"/>.</t>
          <t>Three bits are sampled by each pair of parties.  These are turned into three
shared values, where two of the shared values are filled with zeros. The
exclusive OR of these three values is computed using two multiplications in the
form: <tt>x⊕y = x + y - 2xy</tt>.  This produces a three-way replicated sharing of a
bit in the prime field.</t>
          <t>Shares can then be aggregated through simple addition.</t>
        </section>
        <section anchor="two-party-protocols">
          <name>Two Party Protocols</name>
          <t>Obtaining multiple random bits in a two party protocol might involve the use of
an oblivious transfer protocol.  Ideally, these are obtained in a large prime
field so that addition is free.</t>
          <t>Details of OT protocol TBD.</t>
        </section>
      </section>
    </section>
    <section anchor="performance-characteristics">
      <name>Performance Characteristics</name>
      <t>A binomial function is relatively inexpensive to compute in MPC.</t>
      <section anchor="cost">
        <name>Cost Analysis</name>
        <t>With large epsilon and delta values (that is, low privacy) the use of the
binomial mechanism can be very efficient.  However, smaller values for epsilon
or delta can require significant numbers of Bernoulli trials.</t>
        <t>The following table shows some typical values and the resulting number of
trials, along with approximate values for the quantization scaling factor (<tt>s</tt>)
and error.</t>
        <table>
          <thead>
            <tr>
              <th align="right">epsilon</th>
              <th align="right">delta</th>
              <th align="right">N</th>
              <th align="right">s</th>
              <th align="right">error</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">3</td>
              <td align="right">10e-6</td>
              <td align="right">TODO</td>
              <td align="right">TODO</td>
              <td align="right">TODO</td>
            </tr>
            <tr>
              <td align="right">1</td>
              <td align="right">10e-6</td>
              <td align="right">TODO</td>
              <td align="right">TODO</td>
              <td align="right">TODO</td>
            </tr>
            <tr>
              <td align="right">0.1</td>
              <td align="right">10e-6</td>
              <td align="right">TODO</td>
              <td align="right">TODO</td>
              <td align="right">TODO</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="comparison">
        <name>Comparison with Alternative Approaches</name>
        <t>Two other approaches that should be compared with are:</t>
        <ul spacing="normal">
          <li>
            <t>simply having each helper party add noise independently <xref target="DWORK"/></t>
          </li>
          <li>
            <t>amplification by shuffling <xref target="SHUFLDP"/> where
local DP is added by clients and used to get a central DP guarantee</t>
          </li>
        </ul>
        <t>A binomial will alway give better privacy/utility trade offs compared to
independent noise.  An MPC system has to ensure that <tt>t</tt> out of <tt>P</tt> parties can
reveal their shares without degrading the privacy of outputs.  Consequently, the
noise that each party adds needs to be proportional to <tt>P/(P-t)</tt> times the
target amount, assuming that noise can be simply added.  For a three party
honest majority system, <tt>P</tt> is 3 and <tt>t</tt> is 1, producing 50% more noise than is
ideal.  For a two party system, the amount of noise needs to be doubled.</t>
        <t>Shuffling and any scheme that makes use of noised inputs results in noise that
increases in magnitude as the number of inputs increases, which degrades
utility.  The binomial mechanism does not result in any additional noise.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA considerations.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="PRSS">
          <front>
            <title>High Performance Pseudorandom Secret Sharing (PRSS)</title>
            <author initials="M." surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <author initials="B." surname="Savage" fullname="Ben Savage">
              <organization/>
            </author>
            <date year="2024" month="July"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-thomson-ppm-prss-00"/>
        </reference>
        <reference anchor="MPC-MUL">
          <front>
            <title>Efficient Protocols for Binary Fields in the 3-Party Honest Majority MPC Setting</title>
            <author initials="B." surname="Savage" fullname="Ben Savage">
              <organization/>
            </author>
            <author initials="M." surname="Thomson" fullname="Martin Thomson">
              <organization/>
            </author>
            <date year="2024" month="July"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-savage-ppm-3phm-mpc-01"/>
        </reference>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CPSGD">
          <front>
            <title>cpSGD: Communication-efficient and differentially-private distributed SGD</title>
            <author initials="N." surname="Agarwal" fullname="Naman Agarwal">
              <organization/>
            </author>
            <author initials="A. T." surname="Suresh" fullname="Ananda Theertha Suresh">
              <organization/>
            </author>
            <author initials="F." surname="Yu" fullname="Felix Yu">
              <organization/>
            </author>
            <author initials="S." surname="Kumar" fullname="Sanjiv Kumar">
              <organization/>
            </author>
            <author initials="H. B." surname="Mcmahan" fullname="H. Brendan Mcmahan">
              <organization/>
            </author>
            <date year="2018" month="May"/>
          </front>
        </reference>
        <reference anchor="VDAF">
          <front>
            <title>Verifiable Distributed Aggregation Functions</title>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <author fullname="David Cook" initials="D." surname="Cook">
              <organization>ISRG</organization>
            </author>
            <author fullname="Christopher Patton" initials="C." surname="Patton">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Phillipp Schoppmann" initials="P." surname="Schoppmann">
              <organization>Google</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document describes Verifiable Distributed Aggregation Functions
   (VDAFs), a family of multi-party protocols for computing aggregate
   statistics over user measurements.  These protocols are designed to
   ensure that, as long as at least one aggregation server executes the
   protocol honestly, individual measurements are never seen by any
   server in the clear.  At the same time, VDAFs allow the servers to
   detect if a malicious or misconfigured client submitted an
   measurement that would result in an invalid aggregate result.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-vdaf-10"/>
        </reference>
        <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>Mozilla</organization>
            </author>
            <author fullname="Christopher A. Wood" initials="C. A." surname="Wood">
              <organization>Cloudflare</organization>
            </author>
            <date day="21" month="May" 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-11"/>
        </reference>
        <reference anchor="DWORK">
          <front>
            <title>The Algorithmic Foundations of Differential Privacy</title>
            <author fullname="Cynthia Dwork" initials="C." surname="Dwork">
              <organization/>
            </author>
            <author fullname="Aaron Roth" initials="A." surname="Roth">
              <organization/>
            </author>
            <date year="2013"/>
          </front>
          <seriesInfo name="Foundations and Trends® in Theoretical Computer Science" value="vol. 9, no. 3-4, pp. 211-407"/>
          <seriesInfo name="DOI" value="10.1561/0400000042"/>
          <refcontent>Now Publishers</refcontent>
        </reference>
        <reference anchor="KIMHC">
          <front>
            <title>Efficient Bit-Decomposition and Modulus-Conversion Protocols with an Honest Majority</title>
            <author fullname="Ryo Kikuchi" initials="R." surname="Kikuchi">
              <organization/>
            </author>
            <author fullname="Dai Ikarashi" initials="D." surname="Ikarashi">
              <organization/>
            </author>
            <author fullname="Takahiro Matsuda" initials="T." surname="Matsuda">
              <organization/>
            </author>
            <author fullname="Koki Hamada" initials="K." surname="Hamada">
              <organization/>
            </author>
            <author fullname="Koji Chida" initials="K." surname="Chida">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="Information Security and Privacy" value="pp. 64-82"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-93638-3_5"/>
          <seriesInfo name="ISBN" value="[&quot;9783319936376&quot;, &quot;9783319936383&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
        <reference anchor="SHUFLDP">
          <front>
            <title>Distributed Differential Privacy via Shuffling</title>
            <author fullname="Albert Cheu" initials="A." surname="Cheu">
              <organization/>
            </author>
            <author fullname="Adam Smith" initials="A." surname="Smith">
              <organization/>
            </author>
            <author fullname="Jonathan Ullman" initials="J." surname="Ullman">
              <organization/>
            </author>
            <author fullname="David Zeber" initials="D." surname="Zeber">
              <organization/>
            </author>
            <author fullname="Maxim Zhilyaev" initials="M." surname="Zhilyaev">
              <organization/>
            </author>
            <date year="2019"/>
          </front>
          <seriesInfo name="Advances in Cryptology – EUROCRYPT 2019" value="pp. 375-403"/>
          <seriesInfo name="DOI" value="10.1007/978-3-030-17653-2_13"/>
          <seriesInfo name="ISBN" value="[&quot;9783030176525&quot;, &quot;9783030176532&quot;]"/>
          <refcontent>Springer International Publishing</refcontent>
        </reference>
      </references>
    </references>
    <?line 619?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA618W48cx5Xme/yKmBYW6Larqm+UZHNE2S22aBEmu3tEamxj
MKvKyozqSjMrs5yXbpZIGh5hHww/77zsw2KxWOy+G2PwnT/A/2H5S/Z855yI
jKyqpjXYISBVdVZkXE6cy3cuEePx2LR5W7j7du9ZvlwVziZlZr+cz/M0d2Vr
v8jLapknhb2qq7ZKq6Kx86q25/l87mpqID/lN0m6tnlpn1493DPJbFa7G+qR
X6YG51fhtzRp3XVVr+/bps2Myaq0TJY0elYn83acJo0br1bL8UyHHWer8dGx
abrZMm+avCrb9YpaP/7y+SOTVmXjyqZr7tu27pyhEU9NUrsEa3FpV+ftes/c
VvWL67rqVvTUT/Sqdo2rb/Ly2j51SdPVbklL2TMv3JqaZ/eNHduqdKuia4Yf
+KGs8sbhS1p1tH7qI63ysjE3ruwcvWp/6GjWymL2fkVTxK+/wIt4vkzygp4T
IX6eu3Y+qeprPE7qdEGPF227au4fHqIVHuU3buKbHeLB4ayubht3SO8f4r3r
vF10M3SIGbVunLRtnc+6luh5mI8ztCnoedNGve9oO5GOJnmFtw7v3rLJol0W
e8YkXbuoapCTRrBWdvoLV9qHCUhI/2jKSZl/l6D7+0SeNuHHTigwW6L3ny/p
8SStlsN+niY1Ud8+X1RL2p5dvVXf5UUx6HDZ/ryobon6dbVaT0rXGlNW9ZJe
uKGto5ZXXz97dp/f8FLxVX69sFeunqNdmTp71bguq2oSk2ppic9q19pni6TG
Du7j/YM97iAj6t23J0cn98ZHn9qP7PPL88v9ZXvAPxJD5K7Jy3klo1n7uGxd
TTMan4OsXiBaWR0TeFU3zfjoiNsHyvK/sX5+gDTbjbAPz5Kb5Nph4SSc46ff
PBmuvVcDQ+knuU7qtX2UuyJrINrtwtnT8RUNu7Zfkaw0Lc3htxUkED0TmVpI
yn8gYRqeOdPldLVYjperFIrib9MmWvYPIp7BXAKLWPvw6tkvzodkSld4ZB9W
y2VX5imz39gF2kGhZpG+LNZjFS563Ih0ucxSH0P6HP9kfPTxD1jRRUKMac+u
k/o2Ke5oc1bSLBJalHN1u0jsM9JCzeKOxo9ckb+0v+nu+PlZUv42v7G/7JZJ
fUeTryb2C1ptRvN6mi6TRUJ0NOPx2CYzWnCSktydWRLrRZUxQ5FwrzrWpYn1
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
lVkAAA==

-->

</rfc>
