三方相关随机数的分布式生成

本文介绍了如何在安全多方计算中生成具有相关性的随机数,包括布尔随机数和算术随机数的生成方法,以及如何通过信息论安全和计算安全的方式实现,同时扩展到多方情况。还提到了一种高效的阿卡伊方法以减少通信开销。
摘要由CSDN通过智能技术生成

相关随机数

在安全多方计算中,我们通常需要生成一些具有相关性的随机数,比如Beaver三元组。本文介绍如何在不借助第三方的情况下,快速生成三个随机数 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3满足 x 1 + x 2 + x 3 = 0 x_1+x_2+x_3=0 x1+x2+x3=0,每一方拥有一个随机数,但是除了关系外,不知道其他人的随机数的任何信息。

布尔相关随机数

我们首先讨论布尔随机数的生成,也就是 x i ∈ 0 , 1 x_i \in {0,1} xi0,1。生成的随机数满足 x 1 ⊕ x 2 ⊕ x 3 = 0 x_1\oplus x_2 \oplus x_3=0 x1x2x3=0.

假设三个参与者分别为 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3.下面介绍两种方法。

方法一:信息论安全的相关随机数生成

1、 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3分别在本地随机采样3个随机数 r 1 , r 2 , r 3 r_1,r_2,r_3 r1,r2,r3
2、 P 1 P_1 P1 r 1 r_1 r1发送给 P 2 P_2 P2 P 2 P_2 P2 r 2 r_2 r2发送给 P 3 P_3 P3 P 3 P_3 P3 r 3 r_3 r3发送给 P 1 P_1 P1
3、 P 1 P_1 P1计算 x 1 = r 3 ⊕ r 1 x_1=r_3\oplus r_1 x1=r3r1 P 2 P_2 P2计算 x 2 = r 1 ⊕ r 2 x_2=r_1\oplus r_2 x2=r1r2 P 3 P_3 P3计算 x 3 = r 2 ⊕ r 3 x_3=r_2 \oplus r_3 x3=r2r3.

证明:
x 1 ⊕ x 2 ⊕ x 3 = ( r 3 ⊕ r 1 ) ⊕ ( r 1 ⊕ r 2 ) ⊕ ( r 2 ⊕ r 3 ) = 0 x_1 \oplus x_2 \oplus x_3 = (r_3 \oplus r_1)\oplus (r_1\oplus r_2)\oplus (r_2\oplus r_3)=0 x1x2x3=(r3r1)(r1r2)(r2r3)=0.

方法二:计算安全的快速生成

方法一虽然是信息论安全的,但是每次生成都需要传输一个元素。方法二通过伪随机数生成器,使得在初始化后,每次生成都不在需要传输信息,减少了协议的通信开销。

假设使用的伪随机数生成器用 F ( k , i ) F(k,i) F(k,i)来表示。其中 k k k表示密钥, i i i表示计数(第几次调用)。由于一般的伪随机生成器只需要一个随机种子作为输入,可以使用hash函数将 k , i k,i k,i映射为随机种子。

初始化:
1、 P 1 P_1 P1生成 k 1 k_1 k1 P 2 P_2 P2生成 k 2 k_2 k2 P 3 P_3 P3生成 k 3 k_3 k3
2、 P 1 P_1 P1 k 1 k_1 k1发送给 P 2 P_2 P2 P 2 P_2 P2 k 2 k_2 k2发送给 P 3 P_3 P3 P 3 P_3 P3 k 3 k_3 k3发送给 P 1 P_1 P1
也就是说 P 1 P_1 P1拥有 k 3 , k 1 k_3,k_1 k3,k1 P 2 P_2 P2拥有 k 1 , k 2 k_1,k_2 k1,k2 P 3 P_3 P3拥有 k 2 , k 3 k_2,k_3 k2,k3.

生成相关随机数:
1、 P 1 P_1 P1计算 x 1 = F ( k 3 , i ) ⊕ K ( k 1 , i ) x_1=F(k_3,i)\oplus K(k_1,i) x1=F(k3,i)K(k1,i)
2、 P 2 P_2 P2计算 x 2 = F ( k 1 , i ) ⊕ K ( k 2 , i ) x_2=F(k_1,i) \oplus K(k_2,i) x2=F(k1,i)K(k2,i)
3、 P 3 P_3 P3计算 x 3 = F ( k 2 , i ) ⊕ K ( k 3 , i ) x_3=F(k_2,i)\oplus K(k_3,i) x3=F(k2,i)K(k3,i);
当输入相同的时候,伪随机数的输出也相同,所以显然 x 1 ⊕ x 2 ⊕ x 3 = 0 x_1\oplus x_2\oplus x_3=0 x1x2x3=0.

算术相关随机数

有时候,我们需要的随机数并不是布尔值,而是一个整数,这时候我们需要将上面的方法推广到整数上。

方法一:信息论安全

1、 P 1 , P 2 , P 3 P_1,P_2,P_3 P1,P2,P3分别在本地随机采样3个随机数 r 1 , r 2 , r 3 r_1,r_2,r_3 r1,r2,r3
2、 P 1 P_1 P1 r 1 r_1 r1发送给 P 2 P_2 P2 P 2 P_2 P2 r 2 r_2 r2发送给 P 3 P_3 P3 P 3 P_3 P3 r 3 r_3 r3发送给 P 1 P_1 P1
3、 P 1 P_1 P1计算 x 1 = r 3 − r 1 x_1=r_3 - r_1 x1=r3r1 P 2 P_2 P2计算 x 2 = r 1 − r 2 x_2=r_1- r_2 x2=r1r2 P 3 P_3 P3计算 x 3 = r 2 − r 3 x_3=r_2 - r_3 x3=r2r3.

方法二:计算安全

初始化:
1、 P 1 P_1 P1生成 k 1 k_1 k1 P 2 P_2 P2生成 k 2 k_2 k2 P 3 P_3 P3生成 k 3 k_3 k3
2、 P 1 P_1 P1 k 1 k_1 k1发送给 P 2 P_2 P2 P 2 P_2 P2 k 2 k_2 k2发送给 P 3 P_3 P3 P 3 P_3 P3 k 3 k_3 k3发送给 P 1 P_1 P1
也就是说 P 1 P_1 P1拥有 k 3 , k 1 k_3,k_1 k3,k1 P 2 P_2 P2拥有 k 1 , k 2 k_1,k_2 k1,k2 P 3 P_3 P3拥有 k 2 , k 3 k_2,k_3 k2,k3.

生成相关随机数:
1、 P 1 P_1 P1计算 x 1 = F ( k 3 , i ) − K ( k 1 , i ) x_1=F(k_3,i)- K(k_1,i) x1=F(k3,i)K(k1,i)
2、 P 2 P_2 P2计算 x 2 = F ( k 1 , i ) − K ( k 2 , i ) x_2=F(k_1,i) - K(k_2,i) x2=F(k1,i)K(k2,i)
3、 P 3 P_3 P3计算 x 3 = F ( k 2 , i ) − K ( k 3 , i ) x_3=F(k_2,i)- K(k_3,i) x3=F(k2,i)K(k3,i);

容易验证上面两种方法生成的随机数满足 x 1 + x 2 + x 3 = 0 x_1+x_2+x_3=0 x1+x2+x3=0.

多方推广:n>3

有时候参与计算的参与者很多,所以我们在这里将上面的方法推广到多方的时候。

假设参与者为 P 0 , P 1 , ⋯ P n − 1 P_0,P_1,\cdots P_{n-1} P0,P1,Pn1.布尔随机数只需要将 − , + -,+ ,+换成 ⊕ \oplus 即可。下标的加法和减法是在环 Z n \mathbb{Z}_n Zn中,也就是,如果大于等于 n n n,那么就减去 n n n,例如 P n = P 0 , P n + 1 = P 1 P_{n}=P_0,P_{n+1}=P_1 Pn=P0,Pn+1=P1;小于0则加上 n n n,例如 P − 1 = P n − 1 , P − 2 = P n − 2 P_{-1}=P_{n-1},P_{-2}=P_{n-2} P1=Pn1,P2=Pn2.

方法一的推广

1、 P 0 , P 1 , ⋯   , P n − 1 P_0,P_1,\cdots,P_{n-1} P0,P1,,Pn1分别在本地随机生成一个随机数 r 0 , r 1 , ⋯   , r n − 1 r_0,r_1,\cdots,r_{n-1} r0,r1,,rn1
2、对于 P j P_j Pj,将 r j r_j rj发送给 P j + 1 P_{j+1} Pj+1
3、 P j P_j Pj计算 x j = r j − 1 − r j x_j=r_{j-1}-r_j xj=rj1rj

证明:
∑ j = 0 n − 1 x j = ∑ j = 0 n − 1 ( r j − 1 − r j ) = ∑ j = 0 n − 1 r j − 1 − ∑ j = 0 n − 1 r j = 0 \sum_{j=0}^{n-1}x_j=\sum_{j=0}^{n-1}(r_{j-1}-r_j)=\sum_{j=0}^{n-1}r_{j-1}-\sum_{j=0}^{n-1}r_j=0 j=0n1xj=j=0n1(rj1rj)=j=0n1rj1j=0n1rj=0.

方法二的推广

初始化:
1、 P 0 , P 1 , ⋯   , P n − 1 P_0,P_1,\cdots,P_{n-1} P0,P1,,Pn1分别在本地随机生成一个随机数 k 0 , k 1 , ⋯   , k n − 1 k_0,k_1,\cdots,k_{n-1} k0,k1,,kn1
2、对于 P j P_j Pj,将 k j k_j kj发送给 P j + 1 P_{j+1} Pj+1

生成相关随机数:
P j P_j Pj计算 x j = F ( k j − 1 , i ) − F ( k j , i ) x_j=F(k_{j-1},i)-F(k_j,i) xj=F(kj1,i)F(kj,i).

参考文献

[1] Araki, Toshinori, et al. “High-throughput semi-honest secure three-party computation with an honest majority.” Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security. 2016.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值