上一期我们介绍了“安全多方计算”的计算过程,安全多方计算是由图灵奖获得者姚期智先生通过百万富翁问题引出的一个数据隐私保护方面的重要领域。
图片来源于网络
姚氏百万问题可表述为:Alice 和 Bob 是两个百万富翁,他们想知道谁更富有,但他们都又不想把关于自己财富的任何信息透露给对方。在这样一种情况下,双方都不想透露自己真实信息,比较两个人的财富多少,并给出可信证明。
我们在以往两期视点中,已经讲解了
1.1 安全模型(恶意敌手模型)
1.2 电路选择(布尔电路和算术电路)
2. 计算过程
2.1 计算过程的保证
四个要点。本期将主要围绕预处理过程和采用 Obvious Transfer 协议进行预计算来程展开。
往期回顾 ? 在充分保护隐私的前提下,如何知道两位“马爸爸”谁更富有?
? 在无从知道“秘密值”的前提下,如何实现“秘密计算”?
3. 预处理过程
预处理过程解决的问题是如何使参与方获得随机化的
(称 为三元组)等,并满足条件
。当然,每个三元组都是需要经过 MAC 认证的。
设,和。在三元组
的构造中,
可以随机选择
和
,然后来构造
。可以看到,
。
的正确性通过“sacrifice”技术来验证,即产生另外一对三元组
,并用该三元组来验证
的正确性,即利用
来验证。
整体考虑
。假设
是支持一次乘同态多次加同态的密码方案。参与者
公开
和
,并进行如下操作:
- 计算:。
- 利用分散:
- 每个随机选择,设,那么可以设;
- 解密得到,并设,其余参与者设,。
在这过程中,使用零知识证明来保证
知道相应明文。
4. 采用 OT 方式
采用 Obvious Transfer(OT)协议也可以来进行预计算。在一个1-out-of-2 OT 协议中,发送者输入消息
并得不到任何输出,接收者输入一比特
并得到输出
。而在一个 ROT 协议中,发送者不输入任何消息,得到两个随机消息
,接收者输入一比特
并得到输出
。
图片来源于网络
现在,
拥有
,
拥有
,假设
有
比特,可以通过进行
次 OT 协议来计算
。在第
次 OT 协议中,
随机选取
,输入
和
,
每次输入
的第
比特
,得到
。可以看到,
。设
,则
和
分别得到了
和
,满足
。
这个方法需要在计算过程中每次都使用 OT。可以提前利用 OT 分别得到和,计算时发送给,利用和其相乘来得到同样结果。如果固定(在 MPC 中,考虑认证码的生成,始终用密钥分量参与运算),可以使用伪随机函数 PRF 作用在和上,即,其中为递增量,得到类似于多个 OT 的输出。另外,可以利用 ROT 来为选择随机值,而不是让选择随机值。
图片来源于网络
这个方法需要在计算过程中每次都使用 OT。
可以提前利用OT分别得到
和
,计算时
发送
给
,
利用
和其相乘来得到同样结果。如果
固定
(在 MPC 中,考虑认证码的生成,
始终用密钥分量
参与运算),可以使用伪随机函数 PRF 作用在
和
上,即
,其中
为递增量,得到类似于多个 OT 的输出。另外,可以利用 ROT 来为
选择随机值,而不是让
选择随机值。
考虑认证码的情况,
,
,要使得每个参与者
掌握
的 share,那么
的计算都可以通过上述方法实现。假定每个参与者
拥有秘密为
,在认证码的计算过程中,
加入随机量
(起到随机化的作用)同样参与认证,即每个参与者也拥有
的分量。在认证码生成好后,形成
的随机线性组合以及相关认证码同样的线性组合来一次性确定关于
的认证码是否正确生成。
设
是个
维向量。在三元组生成过程中可以为每个参与者生成满足
的
的分量
。然后选取随机向量
和
,计算内积
,
,以及
,
,即每个参与者掌 握
和
的分量。这种做法主要从
的隐私上考虑。最后,利用“scarifice”技术验证正确性,选取一随机数
,利用
验证
的验证性。这种做法的安全性可以用 leftover hash lemma 来保证。
5. 结语
我们以 SPDZ 方案简单介绍了一下一类安全多方计算协议的原理。区块链也是一个无信任中心的系统,两者在技术特点上有一些可类比性,也都有一些自己独特的性质。数据作为一种重要的生产要素,可以利用区块链和安全多方计算等技术的结合,促进其能安全地流转和交换,并保证其中的安全和隐私性,对实际业务带来重要支撑。
▿点击阅读原文了解更多