<?xml version="1.0" encoding="utf-8"?>
<!-- This is built from a template for a generic Internet Draft. Suggestions for
     improvement welcome - write to Brian Carpenter, brian.e.carpenter @ gmail.com 
     This can be converted using the Web service at http://xml.resource.org/ -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<!-- You want a table of contents -->
<!-- Use symbolic labels for references -->
<!-- This sorts the references -->
<!-- Change to "yes" if someone has disclosed IPR for the draft -->
<!-- This defines the specific filename and version number of your draft (and inserts the appropriate IETF boilerplate -->
<?rfc sortrefs="yes"?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc topblock="yes"?>
<?rfc comments="no"?>
<rfc category="std"
     docName="draft-li-ppm-homomorphic-encryption-00"
     ipr="trust200902">
  <front>
    <title abbrev="Homomorphic Encryption">Homomorphic Cryptography Protocols for Measurement 
      Information Collection</title>

      <seriesInfo name="Internet-Draft" value="draft-li-ppm-homomorphic-encryption-00"/>
      <author initials="L." surname="Li" fullname="Lun Li">
        <organization>Huawei</organization>
        <address>
          <email>lilun20@huawei.com</email>
        </address>
      </author>
      <author initials="F." surname="Liu" fullname="Fei Liu">
        <organization>Huawei</organization>
        <address>
          <email>liufei19@huawei.com</email>
        </address>
      </author>

    <!---->

    <date day="17" month="Oct" year="2024"/>

    <area>Security</area>

    <workgroup>Privacy Preserving Measurement</workgroup>
    <keyword>Homomorphic Cryptography</keyword>
    <keyword>Privacy</keyword>

    <abstract>
      <t>Homomorphic encryption is an algorithm that allows computations to be performed 
        on encrypted data without first having to decrypt it. This document provides a 
        homomorphic cryptographic protocol that supports addition and multiplication 
        in the ciphertext state. In this document, the proposed protocol can be used to protect user 
        privacy in measurement information collection and statistics by using homomorphic 
        encryption. And let the collector server receive the computation results without 
        having to acknowledge the information plaintext of each individual client.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>In the regular process of measurement information collection and statistics, the entity that 
        collects client data (i.e., collector server) has to learn the privacy information. 
        (e.g., bug reports from users, visit views, etc.). However, many statistics tasks only 
        require statistics results computed and generated from the collected information (such as using 
        operation of addition and multiplication). This kind of data tasks is very suitable for 
        using homomorphic cryptography protocols. Homomorphic cryptography protocols are a protocol 
        that apply homomorphic encryption, which allows computations to be performed on encrypted 
        data without first having to decrypt it. 
        Some statistics tasks, such as bug statistics in a period of time and the number 
        of visitors to website content, can be computing without having to obtain the 
        plaintext information of each individual client.</t>

      <t>In the document we propose a homomorphic cryptography protocol to demonstrate
         how the homomorphic encryption can benefit the user privacy in terms of these tasks. 
         The proposed protocol is parameterized and offers algorithm agility. It is worth 
         mentioning that the specific steps of addition and multiplication operation are vary 
         in terms of different encryption algorithms. But they can be encapsulated 
         as an &quot;algorithmic boxs&quot; in a protocol. None of the algorithms are limited to the 
         document, but we do give the recommendations algorithm in Section 4. Also, this proposed 
         protocol can be integrated with other aggregation protocols, such as DAP <xref target = "I-D.ietf-ppm-dap"/>.</t>
      
        <section title="Compairson with the MPC protocol">
          <t>Homomorphic encryption is a classical algorithm. It can be used as a
             cryptographic primitive in the MPC-based protocol. Some classic MPC protocols 
             are based on the principle of majority honesty. These protocols usually do not 
             require cryptographic algorithms such as homomorphic encryption. For example, 
             VDAF <xref target="draft-irtf-cfrg-vdaf-12"/> are based on secret sharing. 
             Generally, homomorphic encryption can be used in more complex security assumptions. 
             The performance of homomorphic encryption is often facing the challenge due to algorithm complexity. 
             But, algorithm acceleration, such as hardware acceleration, is under development 
             in the community, and we will discuss more performance characteristics in the 
             following section 6.</t>
        </section>

    </section>

    <section anchor="requirements-language" title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref target="RFC2119"/>.</t>
    </section>

    <section title="Prerequisites">
      <t>Some prerequisites need to be met if homomorphic cryptography protocols are used. 
        In general, the proposed protocol can be used in statistical and computing scenarios. 
        But, it can also be used in the outsourcing or cloud computing. For example, the classic 
        scenario is federated learning for AI. Generally, both the client (or the data owner) 
        and the collector server need to be able to store and use encryption algorithms, and keys 
        between them can be securely configured out-of-band. Because ciphertexts need to be calculated 
        as programmed way, the format of sending ciphertexts may need to be configured through 
        the negotiation or agreement in advance.</t>
      <section title="Lattice and Ring">
        <t>The following prerequisite mainly refers to the description in the survey paper <xref target="LWE"/>. To create a lattice,
           usually we can denote dots in 2D and 3D dimension. And every two and more dots can be seen 
           as a vector. New vectors formed by a set of existing combination of vectors is called a lattice.
           the set of vectors which define the denoted lattice is called the &quot;basis&quot; of a lattice. 
           There are a couple of long-standing hard problems when propcessing with the lattice such as 
           shortest vector problem, closest vector problem. And the most well-known hard problem 
           for the cryptography is called Learning with errors (LWE). Originally LWE is from the 
           machine learning field, in a Learning with Errors (LWE) system we take a square array A<sup>&rarr;</sup>. 
           We can take a secret vector s<sup>&rarr;</sup> and calculate a value vector b<sup>&rarr;</sup> with following 
           formula (the text below related to arrays, vectors, etc. are depicted with &quot; <sup>&rarr;</sup> &quot;.).</t>
        <t><list style="empty"> 
         <t>b<sup>&rarr;</sup> = s<sup>&rarr;</sup> &bull; A<sup>&rarr;</sup> + e<sup>&rarr;</sup></t>
        </list></t>
        <t>where b<sup>&rarr;</sup>, s<sup>&rarr;</sup>, and e<sup>&rarr;</sup> are vectors and A<sup>&rarr;</sup> is 
          an array. The value e<sup>&rarr;</sup> is a small vector of error. In general, s<sup>&rarr;</sup> cannot 
          be recovered from just A<sup>&rarr;</sup> and b<sup>&rarr;</sup>. therefore LWE has the same features like 
          Diffie-Hellman <xref target="DIFFIE"/></t>
        <t>Moreover, to reduce the size, a common way is to replace the matrix operations with polynomial functions. 
          Instead of array operations, b<sup>&rarr;</sup> = s<sup>&rarr;</sup> &bull;A<sup>&rarr;</sup> + e<sup>&rarr;</sup> can turn 
          the array and vectors into a polynomial. For example, a vector: &lt;a1, a2, a3&gt; can map to a polynomial 
           a<sub>1</sub>^2 * x^2 + a<sub>2</sub> * x + a<sub>3</sub>. Therefore, the equation b<sup>&rarr;</sup> = s<sup>&rarr;</sup> &bull; A<sup>&rarr;</sup> + e<sup>&rarr;</sup> 
          can be all represented in polynomial functions in the same way and it can be used 
          in the same protocol as with the standard LWE where s<sup>&rarr;</sup> is still the private key and 
          bs<sup>&rarr;</sup> is the public key, but now they can transfer to be represented in polynomials instead of vectors 
          and matrices. The multiplication is a standard polynomial multiply that is reduced modulo a 
          polynomial (usually x^n + 1). This is a &quot;ring &quot; and therefore it is named Ring Learning with 
          Errors (RLWE). It is worth noting the RLWE is not the same math problem of LWE, since it is mapped 
          into polynomial fieled. It is a different hard problem.</t>
      </section>
      <section title="Document Organization">
        <t>The remainder of this document is organized as follows:</t>
        <t><list style="symbols">
          <t>Section 3 introduces the proposed homomorphic cryptography protocol.</t>
          <t>Section 3.2 introduces the detail architecture of the proposed protocols.</t>
          <t>Section 4 describes the recommended algorithm for the homomorphic cryptography protocol.</t>
          <t>Section 5 describes conditions of usage including how to combined with other protocols in PPM WG such as DAP</t>
          <t>Section 6-7 describes the analysis of performance and security characteristics</t>
        </list></t>
      </section>
    </section>

  <section title="Protocol Definition">
    <t>This section describes the proposed homomorphic cryptography protocol and how procedures, 
      such as addition and multiplication, are performed.</t>
    <section title="Overview">
      <t>The overall system architecture is shown in Figure 1.</t>
      <t><figure>
        <artwork name="Overview of the Homomorphic Protocol"><![CDATA[ 
                      Computation                                                     
+------------------+    function     +------------------+                             
|                  |        f        |                  |                             
|    Plaintext m   |  ------------>  | Plaintext Result |                             
|                  |       (1)       |      f(m)        |                             
+------------------+                 +------------------+                             
         |                                     ^                                      
         |  Homomorphic                        | Homomorphic                                     
         |  Enc                                | Dec                                     
         |                                     |                                      
         |                  (2)                |                                      
         v             Homomorphic             |                                       
+------------------+    computing    +------------------+                             
|                  |    circuit      |                  |                             
|    Ciphertext    |       C_f       |Ciphertext Result |                             
|   c = E_pk(m)    |  ------------>  | c^ = E_pk(f(m))  |                             
|                  |                 |                  |                             
+------------------+                 +------------------+  
     Figure 1: Overview of the Homomorphic Protocol]]></artwork>
      </figure></t>
      <t>As a overview, the basic procedures with or without the homomorphic protocol are as follows. 
        Without the homomorphic protocol, The server uses mode (1) 
        to obtain the plaintext and computation functions (e.g., statistical functions include 
        addition and multiplication) to obtain the plaintext results of computation. In this case, 
        the client needs to allow the original data to be exposed to the server for calculation 
        purposes, which may contain privacy information. In the case of homomorphic cryptography 
        protocol, the server performs the privacy computation in mode (2). First, the client 
        (or a proxy) performs homomorphic encryption E_pk(m) on plaintext, and generate homomorphic 
        ciphertext c. Then, an aggregator gathers the ciphertext and compute the result c^ of the 
        ciphertext through the homomorphic computing circuit C_f and transferred to the server. After 
        that, the server obtains the plaintext calculation result through homomorphic decryption with 
        corresponding key. The client does not need to expose the plaintext data to the aggregator and 
        server. The server only obtains the final result and does not need to know the data of each 
        client.</t>
    </section>
    <section title="System Architecture">
    <t>The main participants in the protocol are as follows:</t>
    <t><list style="symbols">
      <t>Server (collector): An entity that obtains computation results and needs to obtain computation results for 
        a task (such as statistics collection, visit views, bug reports, etc.). </t>
      <t>Client (data owner): An entity that sends data to be collected. The data may contain privacy information and 
        must be provided privacy preserving during its data being used.</t>
      <t>Aggregator: An entity aggregates data of multiple clients for privacy computation and provides 
        the ciphertext result to the server. In some cases, it can be a network function in the server.</t>
    </list></t>
    <t>The overall interaction functions of participants are defined as follows:</t>
    <t><list style="symbols">
    <t>HE.Keygen: Generates associated keys, usually generated by a trusted third party or related key 
      management function for the client.</t>
    <t>HE.Enc: The encryption execute entity (for example, the client) uses the homomorphic encryption 
      key to generate the ciphertext c.</t>
    <t>HE.Dec: The decryption execute entity (for example, the collector server) uses the homomorphic 
      decryption key to generate the plaintext result f(m).</t>
    <t>HE.Eval: The execute entity (for example, the aggregator) use multiple input ciphertexts and corresponding key to generate 
      ciphertext computation results as the output. It includes addition HE.Eval.Add, and multiplication HE.Eval.Mul.</t>
    </list></t>
    <t>In the following sections, the asymmetric cryptography use cases are used as examples. The 
      detailed process of homomorphic cryptography protocols and interaction protocols between 
      participants is in the session 3.2.1 to 3.2.5.</t>
      <section title="Key Generation: HE.Keygen">
        <t>The key generation process is performed by a trust 3rd party as follows:</t>   
        <t><figure>
          <artwork><![CDATA[
                                                         +-------------------+                                                               
                         +----------------------+   +--->|pk: encryption key |                                                               
                         |   Trust 3rd party    |   |    +-------------------+                                                               
 +------------------+    | +-----------------+  |   |    +-------------------+                                                               
 |Security Parameter|----->|  Homeomorphic   |------|--->|sk: decryption key |                                                               
 +------------------+    | |  Key Generator  |  |   |    +-------------------+                                                               
                         | +-----------------+  |   |    +-------------------+                                                               
                         +----------------------+   +--->|evk: evaluation key|                                                               
                                                         +-------------------+                                                               
                     Figure 2: the process of HE.Keygen]]></artwork>
        </figure></t>     
        <t><list style="empty"> 
          <t>(pk, evk, sk) &larr; HE.Keygen(1^n)</t>
         </list></t>
        <t><list style="symbols">
         <t>pk stands for the public key, which is used to encryption in the protocol.</t>
         <t>evk stands for the evaluation key, which is used to computation in the protocol. 
          One may need to obtain the evk for calculation. It is worth noting that not all computation 
          process needs evaluation keys.</t>
         <t>sk stands for the private key, which is used to decryption in the protocol.</t>
         <t>n stands for security parameters used to generate keys.</t>
         </list></t>       
    </section> <!-- 4.2.1 Key Generation: HE.Keygen-->

    <section title="Encryption Process: HE.Enc">
      <t>The encryption process is performed by client as follows:</t>   
      <t><figure>
        <artwork><![CDATA[
                             +------------------------+                                                                                         
                             |         Client         |                                                                                                                               
                             |  +-----------------+   |                                                                                                                              
  +------------------+       |  |  Encryption Key |   |         +--------------------+                                                                              
  |      Input       | ----->|  |  K_enc          |   |---------> Output Ciphertext  |                                                               
  |       m          |       |  +-----------------+   |         |      c             |                                                                                                
  +------------------+       |  +-----------------+   |         +--------------------+                                                                                                
                             |  |   Plaintext m   |   |                                                                                                                               
                             |  +-----------------+   |                                                                                    
                             +------------------------+                                                                                                                               
                                                                                                                                                                                      
                    Figure 3: The procedure of Client Encryption]]></artwork>
      </figure></t>     
      <t><list style="empty"> 
        <t>c &larr; HE.Enc_pk(m)</t>
       </list></t>
      <t>The client encrypt the input plaintext to the ciphertext c as the output, which using homomorphic 
        pk as the encryption key, m ∈ {0,1} and the c stands for the ciphertext.</t>       
    </section> <!-- 4.2.2 Encryption Process: HE.Enc-->

    <section title="Decryption Process: HE.Dec">
      <t>The decryption process is performed by server as follows:</t>   
      <t><figure>
        <artwork><![CDATA[
                           +------------------------+                                                                                            
                           |         Server         |                                                                                            
                           |  +-----------------+   |                                                                                            
+------------------+       |  |  Deccryption Key|   |         +--------------------+                                                             
|       Input      | ----->|  |  K_dec          |   |---------> Output Plaintext   |                                                             
|       c_f        |       |  +-----------------+   |         |      m             |                                                             
+------------------+       |  +-----------------+   |         +--------------------+                                                             
                           |  |  Ciphertext     |   |                                  
                           |  |   Result c_f    |   |                                                                                         
                           |  +-----------------+   |                                                                                            
                           +------------------------+                                                                                            
                                                                                                                                                 
                  Figure 4: The procedure of Server Decryption]]></artwork>
      </figure></t>     
      <t><list style="empty"> 
        <t>m &larr; HE.Dec_sk(c)</t>
       </list></t>
      <t>The server decrypt the input ciphertext c to the plaintext m as the output, which using the homomorphic sk as 
        the decryption key, m ∈ {0,1} and the c stands for the ciphertext.</t>       
    </section> <!-- 4.2.3 Decryption Process: HE.Dec-->

    <section title="Evaluation Process: HE.eval">
      <t>The evaluation process is performed by an aggregator as follows:</t>   
      <t><figure>
        <artwork><![CDATA[
                           +------------------------+                                                                                            
                           |       Aggregator       |                                                                                            
                           |  +-----------------+   |                                                                                            
+------------------+       |  |  Evaluation Key |   |         +--------------------+                                                             
|        Input     | ----->|  |  K_eval         |   |---------> Ciphertext Result  |                                                             
|   c_1,....,c_l   |       |  +-----------------+   |         |      c_f           |                                                             
+------------------+       |  +-----------------+   |         +--------------------+                                                             
                           |  |  Ciphertext     |   |
                           |  | c_1,....,c_l    |   |                                                                                            
                           |  +-----------------+   |                                                                                            
                           +------------------------+                                                                                            
                                                                                                                                                 
     Figure 5: The procedure of aggregator homomorphic evaluation]]></artwork>
      </figure></t>     
      <t><list style="empty"> 
        <t>c_f &larr; HE.Eval_evk(f: {0,1}^l &rarr; {0,1}, c_1 ,..., c_l)</t>
       </list></t>
      <t>The aggregator using the input ciphertext c_1 ,..., c_l and the evaluation key evk to process the privacy computation, 
        which:</t>
      <t><list style="symbols">
        <t>f: {0,1}^l &rarr; {0,1}, stands for the computation function using the homomorphic ciphertext.</t>
        <t>evk stands for the evaluation key used for ciphertext computation, it is optional for some algorithms.</t>
        <t>c_f stands for the ciphertext computation result as the output.</t>
      </list></t>
      <t>It is worth noting that the HE.Eval_evk(f, c_1 ,..., c_l) can be divided into multiple basic operator. For example, 
        operators of homomorphic addition and multiplication are demonstrated as follows:</t>   
      <t><list style="empty"> 
        <t>c_add &larr; HE.Eval.add_evk(c_1, c_2)</t>
        <t>c_mul &larr; HE.Eval.mul_evk(c_1, c_2)</t>
      </list></t>
      <t>In homomorphic cryptography protocols, the ciphertext computation result after the decryption is equivalent 
        to the plaintext direct computation result. The key pk, sk, and evk generated by the trusted 3rd party needs 
        to be configured for the corresponding server, client, and aggregator.</t>
    </section> <!-- 4.2.3 Evaluation Process: HE.eval-->
  </section> <!-- 4.2 System Architecture-->
  
  <section title = "Fully Homomorphic Encryption (FHE)" >
    <t>According to the definition of homomorphic cryptography, the ciphertext computation result after the decryption
      is equivalent to the plaintext direct computation result. Many encryption algorithms can satisfy the definition of 
      homomorphic encryption (HE). However, only some algorithms satisfy fully homomorphic encryption (FHE) features. 
      In generally, single HE algorithms only satisfy one of the operations such as addition or multiplication. A classic 
      example is that RSA algorithm satisfies only multiplicative homomorphism, namely HE.Eval.mul_evk, which leads to 
      limited practicability for the single HE. Because both multiplication and addition are basic operators for computation 
      f.</t>      
    <t>At present, the common FHE algorithm is basically based on the lattice construction, which is based on the 
      Learning with Errors (LWE) or Learning with Errors over Ring (RLWE) problem in lattice cryptography. It has 
      been widely used in lattice cryptography since then. A classical fully homomorphic encryption construction is 
      defined as follows:</t>
    <t><figure>
      <artwork><![CDATA[
            Unknown      Unknown     Unknown           
  Known      sk           Message     Noise        Known                                                                                 
+--------+                 +--+         +--+         +--+                                                                                 
|        |     +--+        |  |         |  |         |  |                                                                                 
|        |     |  |        |  |         |  |         |  |                                                                                 
|        |     |  |        |  |         |  |         |  |                                                                                 
|        |     |  |        |  |         |  |         |  |                                                                                 
|   A    | *   |s |   +    |m |    +    |e |   =     |b |                                                                                 
|        |     |  |        |  |         |  |         |  |                                                                                 
|        |     |  |        |  |         |  |         |  |                                                                                 
|        |     +--+        |  |         |  |         |  |                                                                                 
|        |                 |  |         |  |         |  |                                                                                 
+--------+                 +--+         +--+         +--+                                                                                                                                                                                                              
    Figure 6:  Fully Homomorphic Encryption and Noise]]></artwork>
    </figure></t>
    <t>The ciphertext is denoted as c = (a, b<sup>&rarr;</sup>), 
      where b<sup>&rarr;</sup> = [ A<sup>&rarr;</sup> * s<sup>&rarr;</sup> + m<sup>&rarr;</sup> + e<sup>&rarr;</sup> ]<sub>q</sub>. 
      The random vector s<sup>&rarr;</sup> is used as the sk, the positive integer n stands for the dimension of the vector. 
      q stands for the modulus of the ciphertext, and m<sup>&rarr;</sup> stands for the plaintext. 
      A ∈ Z_q ^ ( N &times; n ) stands for a uniformly distributed random matrix, where the set 
      estimates ( -q / 2 , q / 2 ] ∩ Z, and N &gt; n. Noise e ∈ Chi ^ N. The noise distribution is usually Gaussian 
      discrete.</t>
  </section> <!-- 4.3 Fully Homomorphic Encryption (FHE)-->
  <section title = "Noise Control and Evaluation Key">
    <t>Most existing fully homomorphic encryption algorithms usually add a random noise &quot;e&quot; during the encryption 
      and the decryption. Therefore, the values of plaintext and ciphertext can only be approximately equal. 
      Generally, it is acceptable. However, conducting the homomorphic computation on ciphertext may cause these noises to 
      increase. When a homomorphic computation is performed with multiple ciphertexts, the noise contained in 
      ciphertexts will be also expanded. In particular, multiplication causes a dramatic increase of the noise. 
      When the total noise value is under the control, the decryption algorithm can restore the ciphertext back 
      to the plaintext. But, if f contains too complex operators, once the noise range exceeds the critical value, 
      the original plaintext cannot be recovered, resulting in homomorphic decryption failure.</t>
    <t>A feasible solution was proposed in Gentry's paper <xref target="GENTRY"/> in 2009, called the &quot;Bootstrapping&quot;. the Bootstrapping 
      is a processing for ciphertext to reduce the noise. After Bootstrapping, c = (a, b<sup>&rarr;</sup>) can be &quot;refreshed&quot; into a 
      new ciphertext with lower noise. A key, named as a Bootstrapping key (BSK), needs to be used in the process. In 
      addition to bootstrapping, there is also other types of homomorphic evaluation keys, such as key switching keys 
      (KSK). They are all designed to reduce the expansion of noise in the process of calculation and achieves multi-layer 
      operators. Therefore, evaluation key is needed in some operators to control noise, such as the multiplication of 
      multiple ciphertexts.</t>  
  </section><!-- 4.4 Noise Control and Evaluation Key-->
  </section><!-- 4 Protocol Definition-->
  
  <section title="Recommandation of the (F)HE Algorithm">
    <t>TODO</t>
    <t>/ * present 1-2 recommended (F)HE Algorithm(s).</t>
  </section><!--5 Recommandation of the (F)HE Algorithm-->

  <section title="Conditions of Usage">
    <t>Homomorphic Key configuration needs to be considered. Keys should be generated by a trusted third party and 
      be configured at the granularity of tasks and for every participant. The client (or its proxy) needs to 
      perform encryption, so the public key needs to be configured for the client. In one task, multiple clients 
      must be configured with the same public key as the encryption key. In addition, the aggregator needs to perform 
      evaluation process, and therefore an evaluation key (i.e., a computation key) needs to be configured. Finally, 
      the server needs to perform a decryption operation, and therefore the associated private key needs to be configured 
      as a decryption key. During the information collection process, the collector MUST NOT obtain the intermediate 
      computing data by other entities, and the aggregator itself MUST NOT be configured with a decryption key.</t>
    
    <section title="Discuss the Combination with DAP">
      <t>The proposed homomorphic protocol can reuse the architecture of Distributed Aggregation Protocol (DAP). 
        The homomorphic protocols also meet the security requirement of DAP. i.e., the robustness and privacy. 
        A malicious client cannot interfere with the reports of other clients (i.e., robustness) and the 
        aggregator cannot acknowledge each report of each client and only know the final result (i.e., privacy). In the 
        homomorphic cryptography protocols, neither the aggregator nor the collector (i.e., the server) can read the 
        customer's data. To achieve this, the aggregator needs to do most of the statistics computation task and only 
        transmits the ciphertext results to the collector server. </t>
      <t>For comparison, there are pros of homomorphic protocols that DAPs cannot support at present. First, the 
        homomorphic protocol does not require on-line computation. In most cases, the client only needs to report 
        once using homomorphic encryption while other DAP algorithms may require multiple interactions between the 
        clients and aggregators. Second, an aggregator performs homomorphic evaluation (i.e., computation) without 
        requiring on-line joint validation with other aggregators. the asynchronous collection and evaluation can be supported. 
        Third, the existing DAP protocol requires at least two aggregators for aggregation. While homomorphic protocols 
        require minimal one aggregator. </t>
      <t>But the homomorphic protocol also has limitations. First, homomorphic algorithms may need to be configured 
        on the client side, resulting in complex algorithms. Second, depending on the content of the statistics, it may 
        not be possible to implement multiple statistics in one round of reporting at same time, which makes the protocol 
        unable to efficiently perform some statistics, such as building histograms, compared to other DAP algorithm e.g., 
        Poplar1 <xref target="POPLAR"/></t>
    </section><!--Discuss the Combination with DAP-->
  </section><!--6 Conditions of Usage-->
  
  <section title="Performance Characteristics">
    <t>TODO</t>
    <t>/*  Parameter choice and security margins</t>
      <t>/** **Discuss about the trade-off between attack success probability and noise complexity.</t>
    <t>/*  Communication security (authentication)</t>
    <t> /*  Protocol quantum resilience on lattice-based homomorphic encryption algorithm</t>
  </section><!--7 Performance Characteristics-->

  <section title="Security Characteristics">
    <t>TODO</t>
    <t>/* Communication - number of bits sent/received between the server, aggregator and client</t>
    <t>/* Computation - how many times aggregator finish the evaluation process.</t>
    <t>/* Memory size requirements</t>
      <t>/** **key generation and storage</t>
      <t> /** **Trade-offs - time/memory on the condition of different noise settings</t>
  </section><!--8 Security Characteristics-->

  <section anchor="iana-considerations">
    <name>IANA Considerations</name>
    <t>This document has no IANA considerations.</t>
  </section>
  </middle>

  <back>

    <references title = "References">
      <references title = "Normative 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>
    </references>

      <references title = "Informative References">
    
      <reference anchor="I-D.ietf-ppm-dap" target="https://datatracker.ietf.org/doc/html/draft-ietf-ppm-dap-12">
        <front>
          <title>Distributed Aggregation Protocol for Privacy Preserving Measurement</title>
        <author initials="T." surname="Geoghegan" fullname="Tim Geoghegan">
          <organization>ISRG</organization>
        </author>
          <author initials="C." surname="Patton" fullname="Christopher Patton">
          <organization>Cloudflare</organization>
        </author>
          <author initials="B." surname="Pitman" fullname="Brandon Pitman">
          <organization>ISRG</organization>
        </author>
          <author initials="E." surname="Rescorla" fullname="Eric Rescorla">
          <organization>Independent</organization>
        </author>
          <author initials="C. A." surname="Wood" fullname="Christopher A. Wood">
          <organization>Cloudflare</organization>
        </author>
          <date month="October" day="10" year="2024"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-ppm-dap-12"/>
      </reference>

      <reference anchor="draft-irtf-cfrg-vdaf-12">
        <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="4" month="October" year="2024"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-vdaf-12"/>
      </reference>

      

      <reference anchor="LWE" target="https://cims.nyu.edu/~regev/papers/lwesurvey.pdf">
        <front>
          <title>The Learning with Errors Problem</title>
          <author initials="O." surname="Regev">
            <organization/>
          </author>
        </front>
      </reference>

      <reference anchor="DIFFIE" target="https://app.ptuk.edu.ps/PTUK-stuff/UploadsMaterial/Material_151723_12140527_Section10.pdf">
        <front>
          <title>Diffie-Hellman Key Exchange</title>
          <author initials="W." surname="Diffie">
            <organization/>
          </author>
          <date year="1976"/>
        </front>
      </reference>

      <reference anchor="POPLAR" target="https://ia.cr/2021/017">
        <front>
          <title>Lightweight Techniques for Private Heavy Hitters</title>
          <author initials="D." surname="Boneh">
            <organization/>
          </author>
          <author initials="E." surname="Boyle">
            <organization/>
          </author>
          <author initials="H." surname="Corrigan-Gibbs">
            <organization/>
          </author>
          <author initials="N." surname="Gilboa">
            <organization/>
          </author>
          <author initials="Y." surname="Ishai">
            <organization/>
          </author>
          <date year="2021"/>
        </front>
        <seriesInfo name="IEEE S&amp;P 2021" value=""/>
      </reference>
      
      <reference anchor="GENTRY" target="https://dl.acm.org/doi/abs/10.1145/1536414.1536440">
        <front>
          <title>Fully homomorphic encryption using ideal lattices</title>
          <author initials="C." surname="Gentry">
            <organization/>
          </author>
          <date year="2009"/>
        </front>
        <seriesInfo name="Proceedings of the forty-first annual ACM symposium on Theory of computing" value=""/>
      </reference>

    </references>
  </references>
  
    <section anchor="acknowledgments" numbered="false"> 
      <name>Acknowledgments</name>
      <t>TODO</t>
    </section>

  </back>
</rfc>
