zoukankan      html  css  js  c++  java
  • 【论文学习9】Prio: Private, Robust, and Scalable Computation of Aggregate Statistics

    abstract

    本论文提出了一种用于收集统计信息的隐私保护系统Prio。每个客户机有私有数据值,一小部分服务器对所有客户端的值计算统计函数。只要有一台服务器是诚实的,Prio服务器就不会了解到用户的信息,除了他们可以从系统计算推断出聚合数值。采用新的加密技术SNIPs,使之能够收集大量有用的统计数据。

    Contributions

    • 引入secret-shared non-interactive proofs (SNIPs),一种新的信息论零知识证明,对客户/服务器进行了优化。

    • 展示了affine-aggregatable编码框架,它结合了之前很多的数据编码技术

    • 证明了如何将编码和SNIPs相结合,在大规模的数据收集系统中提供鲁棒性和隐私性。

    A Simple Scheme


    优缺点:

    • 提供隐私保证。服务器可以计算总和但是他们对客户端信息一无所知
    • 未提供鲁棒性。恶意客户端可能会向服务器提交随机整数来破坏输出

    comparing with Prio(Prio improve the basic scheme in security and functionality)

    • 安全性。Prio扩展了the Simple Scheme,在恶意客户端前提供鲁棒性
    • 功能性。Prio扩展了the Simple Scheme,可以对大量聚合函数(不仅仅是求和)进行隐私保护计算

    4.Protecting correctness with SNIPs


    在接收到客户机数据值的共享时,Prio服务器端需要用一种方法来检验客户端提交的值是否格式正确。(例如,在Simple Scheme中,客户端的值应该为 0 ≤ x ≤ 1)。然而,服务器端接收到加密的x并不能确定格式是否正确。服务器会有一个验证谓词 Valid(·),只有当 Valid(x)=1时,服务器才会接收数据传输。

    为了验证Valid函数功能,我们引入了secret-shared non-interactive proofs(SNIPs),客户端可以很快地向服务器端证明Valid(x)=1。

    Building blocks

    所有的运算都发生在有限域F中。我们在有限域F中采用了简单的秘密共享方案。
    我们的结构使用算术电路(类似于布尔电路),使用有限域乘法,加法和常数门乘法,而不是和、或和非门。

    4.1 overview(概述)

    SNIPs协议是由一个客户端和多个服务器端交互组成的。在协议中:

    客户端的目标是在不泄露x的信息情况下让服务端相信Valid(x)=1。为此,客户端向服务器端发送验证字符串,服务器端接收后进行相互交流,来验证Valid(x)=1。
    SNIPs必须满足的属性:

    • 正确性。
    • 稳健性。如果Valid(x)≠1,服务器端将会拒收x。
    • 零知识。如果客户端和至少一个服务器端是诚实的,那么服务器端将不会了解x的信息。

    这三个属性和[70]零知识交互式证明系统的属性一致。不同的是,传统零知识系统中只需要一个证明和验证,我们有一个证明者(客户端)和多个验证者(服务器)。

    Our contribution

    • 我们设计了一个SNIP,要求最小的服务器-服务器通信,与任何有效电路兼容,仅依赖于快速 that requires

    • 为了构建SNIP,我们首先推广了[19]“批验证”技术。然后演示了一组服务器如何使用它通过只交换几个字段元素来验证整个电路计算。我们对多方计算(MPC)协议进行调整来进行最后一步。

    • 相关工作——之前的工作已经验证了多证明和多验证之间的交互式证明,这需要相对昂贵的公钥或使电路尺寸增长。在并行独立工作中,[25]为特定的Valid函数构建了一个非常有效的SNIP。

    4.2 constructing SNIPs

    设M为算术电路中有效乘法门的数目,规定2M<<|F|

    Step 1: Client evaluation

    客户端在输入x上计算有效电路。因此,客户机知道电路中每根导线计算 Valid(x)的值。客户机使用这些导线值构造多项式f,g和h,他们对Valid(x)计算中每个M乘法门的输入和输出线上的值进行编码。具体来说,如果输入线值到第t乘法门,按照从输入到输出的拓扑顺序,是Ut和Vt,对于所有的1 ≤ t ≤ M,我们定义h=f·g。f和g最多为M-1,所以h最多为2M-2.,h(t)为Valid电路中t乘法门的输出(ut· vt)值。在步骤1中,客户端计算Valid(x)的有效值,使用多项式构造f和g,计算h=f·g。然后使用秘密分享分割h发送给服务器。

    Step 2: Consistency checking at the servers

    服务器拥有客户端发来的,使用
    服务器不需要和其他服务器交互,可以计算出多项式f和g的

    Step 3a: Polynomial identity test(多项式恒等式检验)

    服务器i拥有多项式f、g和h的份额。执行多项式恒等式检验判断
    随机采样数值r计算。如果服务器端就拒绝客户端提交的信息

    Step 3b: Multiplication of shares

    服务器对份额相乘得到份额,我们采用多方计算(MPC)技术。

    Step 4: Output verification

    服务器发布他们的输出份额,服务器对这些份额进行汇总,以确认输出值等于1.

    视频讲解:https://www.usenix.org/conference/nsdi17/technical-sessions/presentation/corrigan-gibbs

    看完视频和论文对判定Valid(x)=1还不是很懂,希望各位大佬解答。

  • 相关阅读:
    使用Delphi调用条形码控件BarTender打印标签
    我看过的书
    语法规则
    智能家居
    HAL库ADC的DMA采集
    HAL库串口中断接收
    触动心灵的一句话
    摄影技巧
    中国茶道
    单片机延时函数
  • 原文地址:https://www.cnblogs.com/20189223cjt/p/12577866.html
Copyright © 2011-2022 走看看