论文笔记-Prio: Private, Robust, and Scalable Computation of Aggregate Statistics-SNIPs的构建
SNIPs的构建:
Setup:我们假设M是Valid验证电路中乘法门的数量,我们假定 \(2M \ll \left| F \right|\)。【我们需要强调的是,该电路是公开的,是在协议执行之前便已经生成的,任何一个部件都可以调用这个电路进行计算】
Step 1:客户端计算阶段,客户端通过自己的隐私输入\(x\),来计算出每条导线(这里主要谈论的是乘法电路中)的值,我们假设一个乘法电路的输入分别是 \({u_t},{v_t}\), 其中的t表示的是乘法门的编号( \(t \in [1,M]\)),我们可以通过拉格朗日插值定理计算出两个多项式,使其满足:\(f(t) = {u_t},g(t) = {v_t}\)。此外我们额外计算一个多项式,使其满足 \(h(t) = f(t) \cdot g(t)\)成立,易知,\(h(t)\)对应于第\(t\)个乘法门的输出,我们将其通过加法秘密分享的方式分享给服务器 \({[h(t)]_i}\)
多项式 \(f(t),g(t)\)的最高此项为\(M-1\),而对应于\(h(t)\)的最高次项为 \(2M - 2\)
Step 2:服务端一致性检验:每个服务器将持有用户发送的输入份额信息 \({[x]_i}\),以及乘法门的输出导线多项式的份额部分\({[h(t)]_i}\),服务器可以依靠手里拿到的信息重构出Valid电路内部导线的全部信息值。【这里我们为什么要强调需要导线的份额部分,因为在乘法门中我们没有办法通过输入份额\({[x]_i}\)来计算对应的输出导线的值,因此需要客户端额外提供相应的信息。除了这部分外,其余的信息都是可以通过服务器自身持有的信息来计算得到的,因为他们都是仿射操作】每根导线的输入按照拓扑结构可以定义为:\({[f]_i},{[g]_i}\),并且如果用户诚实的执行了协议,那么在客户端应该会有\(f \cdot g = h\)。
但是,客户端又可能会偏移协议的执行,返回一个\(\hat h(t) \ne h(t)\),我们不难得知如果存在一个伪造的 \(\hat h({t_0})\)那么,\(\hat h({t_0}) \ne h({t_0}) = f({t_0}) \cdot g({t_0}) = \hat f({t_0}) \cdot \hat g({t_0})\)。接下来,服务器需要检验客户端提交的信息\({[h(t)]_i}\)是否正确。【如果不进行一致性的检验,那么我们就无法相信Valid(x)电路输出的准确性】
Step 3a:多项式的一致性检验,在此部分,我们指出如果服务器需要检验客户端提交的信息\({[h(t)]_i}\)是否正确,等价于检验等式 \(\hat f({t_0}) \cdot \hat g({t_0}) - \hat h({t_0})\)在定义域上是为0,如果结果为零则表示客户端诚实的提交了信息,否则,我们有理由相信客户端执行了欺骗的行为。因此,服务器可以随机的在定义域上选择一个随机数\(r\)作为输入,计算 \(\hat f(r) \cdot \hat g(r) - \hat h(r)\)。因为此时,服务器手中持有的都为份额信息,因此每个服务器实际能够计算的消息为: \({[\hat f(r)]_i},{[\hat g(r)]_i},{[\hat h(r)]_i}\),想要计算的份额部分为\({[\hat f(r) \cdot \hat g(r) - \hat h(r)]_i}\),其中除去可以直接在份额上计算的减法部分,我们需要重点解决的是 \({[\hat f(r) \cdot \hat g(r)]_i}\)部分。
Step 3b:乘法份额分享,常见的方法是借助于Beaver三元组来帮助我们执行计算,但是如果让服务器之间进行通信来生成三元组会造成较大的开销,于是本文创新型的借助于用户来生成三元组信息。然而考虑到用户是恶意的实体,我们进一步分析可以得到,即使用户生成的三元组不符合我们Beaver三元组的条件,其依然是以较大概率被检测出来的。
具体原因如下,如果其生成的三元组\((a,b,c)\)不满足\(a \cdot b = c \in \Bbb F\),那么我们进一步可以写为\(a \cdot b = c + \alpha\) ,那么对于乘法的多方计算来说,正常应该得到\({[\hat f(r)]_i} \cdot {[\hat g(r)]_i} = {[\hat f(r) \cdot \hat g(r)]_i}\),而此时会变为\({[\hat f(r)]_i} \cdot {[\hat g(r)]_i} = {[\hat f(r) \cdot \hat g(r)]_i} + \alpha\) ,在本文的假定条件下,服务器是诚实的,因此服务器选择的随机数\(r\)是独立于\(\alpha\) 分布的,因此等式\(\hat f(r) \cdot \hat g(r) - \hat h(r)\)和等式\(\hat f(r) \cdot \hat g(r) - \hat h(r) + \alpha\) 是计算上相等的,其为\(0\)误判的概率都为 \(1 - \frac{{2M - 2}}{{\left| {\Bbb F} \right|}}\)
Step 4:输出验证阶段,自此,服务器可以放心的认为客户端诚实的提交了乘法门的输出份额,因此电路的内部输入与输出也能够诚实的被模拟出来。各服务器仅需将电路Valid的输出线上的输出份额进行公开计算,便能得出Valid(x)电路的值。