使用Shamir门限方案进行隐私求和

Shamir门限方案是用来解决这样一个问题:有 n n n个人,共同拥有一个秘密 S S S,只要有 k ( k < n ) k(k<n) k(k<n)个人在场,则可以知道这个秘密 S S S,反之只要在场的人数少于k,则无法恢复秘密 S S S。这样的方案叫做 ( k , n ) (k,n) (k,n)门限方案。
由Adi Shamir在1979年的论文How to Share a Secret中提出,该方案的时间复杂度为 O ( n log ⁡ 2 n ) O(n \log ^2n) O(nlog2n).
该方案基于多项式插值:给定k个横坐标不同的点 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x k , y k ) (x_1,y_1),(x_2,y_2),\cdots,(x_k,y_k) (x1,y1),(x2,y2),,(xk,yk)可以完全确定一个 k − 1 k-1 k1次多项式 q ( x ) q(x) q(x)使得 q ( x i ) = y i q(x_i)=y_i q(xi)=yi对于所有 i ∈ [ 1 , k ] i \in [1,k] i[1,k]成立。
给定一个秘密 S S S,不失一般性,假设 S S S是一个数字。我们随机选择一个 k − 1 k-1 k1次多项式 q ( x ) = a 0 + a 1 x + a 2 x 2 + ⋯ + a k − 1 x k − 1 q(x)=a_0+a_1x+a_2x^2+\cdots+a_{k-1}x^{k-1} q(x)=a0+a1x+a2x2++ak1xk1,并且有 S = a 0 S=a_0 S=a0。显然,我们只需要随机选择 { a 1 , a 2 , ⋯   , a k − 1 } \{a_1,a_2,\cdots,a_{k-1}\} {a1,a2,,ak1}即可确定 q ( x ) q(x) q(x)。首先确定 n n n个不同的数 { x 1 , x 2 , ⋯   , x n } \{x_1,x_2,\cdots,x_n\} {x1,x2,,xn},然后计算:
y 1 = q ( x 1 ) , y 2 = q ( x 2 ) , ⋯   , y n = q ( x n ) y_1=q(x_1),y_2=q(x_2),\cdots,y_n=q(x_n) y1=q(x1),y2=q(x2),,yn=q(xn).
每个人保存一个点 ( x i , y i ) (x_i,y_i) (xi,yi),显然,只要有任意 k k k个点,我们就可以快速计算出 q ( x ) q(x) q(x),从而计算 S = q ( x 0 ) S=q(x_0) S=q(x0).

使用Shamir门限方案隐私求和

假设有 n n n个人需要执行隐私求和,也就是知道了 n n n个人的和,但是不暴露其他任何人的私有数据。
在开始之前,首先,大家协商的n个不同的数 { x 1 , x 2 , ⋯   , x n } \{x_1,x_2,\cdots,x_n\} {x1,x2,,xn}作为公共参数,求和阶段至少需要的人数为 k k k
对于每一个人 p i p_i pi,其私有数据为 d i d_i di p i p_i pi随机选择 k − 1 k-1 k1个数,得到一个多项式 q i ( x ) = d i + r i , 1 x + r i , 2 x 2 + ⋯ + r i , k − 1 x k − 1 q_i(x)=d_i+r_{i,1}x+r_{i,2}x^2+\cdots+r_{i,k-1}x^{k-1} qi(x)=di+ri,1x+ri,2x2++ri,k1xk1.然后计算 y i , 1 = q i ( x 1 ) , y i , 2 = q i ( x 2 ) , ⋯   , y i , n = q i ( x n ) y_{i,1}=q_i(x_1),y_{i,2}=q_i(x_2),\cdots,y_{i,n}=q_i(x_n) yi,1=qi(x1),yi,2=qi(x2),,yi,n=qi(xn).计算完成后,将 y i , j y_{i,j} yi,j发送给 p j p_j pj
p i p_i pi显然,将会收到 n − 1 n-1 n1个数 y k , i ( k ∈ [ 1 , n ] , k ≠ i ) y_{k,i}(k \in [1,n], k\neq i) yk,i(k[1,n],k=i)。然后, p i p_i pi计算 y i = ∑ k = 1 n y k , i y_i=\sum_{k=1}^{n}y_{k,i} yi=k=1nyk,i
显然,从全局来看,我们构造了一个多项式 q ( x ) = ∑ i = 1 n q i ( x ) q(x)=\sum_{i=1}^{n}q_i(x) q(x)=i=1nqi(x) p i p_i pi拥有的值为 y i = q ( x i ) y_i=q(x_i) yi=q(xi)
现在,我们需要至少 k k k个人将他们的 y y y公布出来,我们就可以计算多项式 q ( x ) q(x) q(x),从而计算 n n n个隐私数据的和 q ( 0 ) = ∑ i = 1 n d i q(0)=\sum_{i=1}^{n}d_i q(0)=i=1ndi.
证明:
q ( x ) = ∑ i = 1 n q i ( x ) = ∑ i = 1 n d i + r i , 1 x + r i , 2 x 2 + ⋯ + r i , k − 1 x k − 1 = ∑ i = 1 n d i + ∑ i = 1 n r i , 1 x + ⋯ + ∑ i = 1 n r i , k − 1 x k − 1 = d + r 1 x + r 2 x 2 + ⋯ + r k x k − 1 \begin{aligned} q(x)&=\sum_{i=1}^{n}q_i(x)\\ &=\sum_{i=1}^{n}d_i+r_{i,1}x+r_{i,2}x^2+\cdots+r_{i,k-1}x^{k-1}\\ &=\sum_{i=1}^{n}d_i+\sum_{i=1}^{n}r_{i,1}x+\cdots+\sum_{i=1}^{n}r_{i,k-1}x^{k-1}\\ &=d+r_1x+r_2x^2+\cdots+r_kx^{k-1} \end{aligned} q(x)=i=1nqi(x)=i=1ndi+ri,1x+ri,2x2++ri,k1xk1=i=1ndi+i=1nri,1x++i=1nri,k1xk1=d+r1x+r2x2++rkxk1
所以 q ( x ) q(x) q(x)是一个 k − 1 k-1 k1次多项式。
y i = q ( x i ) = ∑ i = 1 n q i ( x i ) = ∑ k = 1 n y i , k y_i=q(x_i)=\sum_{i=1}^{n}q_i(x_i)=\sum_{k=1}^{n}y_{i,k} yi=q(xi)=i=1nqi(xi)=k=1nyi,k
( x i , y i (x_i,y_i (xi,yi是多项式 q ( x ) q(x) q(x)上的一个点,故满足Shamir门限方案的假设。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值