安全多方计算技术(Security Multi-Party Computation, SMC)

一、 什么是安全多方计算?

为了说明什么是安全多方计算,首先我们先介绍几个实际生活中的例子。

 1. Alice认为她的了某种遗传疾病,想验证自己的想法。正好她知道Bob有一个关于疾病的DNA模型的数据库。如果她把自己的DNA样品寄给Bob,那么Bob可以给出她的DNA的诊断结果。但是Alice又不想别人知道,这是她的隐私。所以,她请求Bob帮忙诊断自己DNA的方式是不可行的。因为这样Bob就知道了她的DNA及相关私人信息。

2. 经过一次花费昂贵的市场调查后,A公司决定扩展在某些地区的市场份额来获取丰厚的回报。同时,A公司也注意到B公司也在扩展一些地区的市场份额。在策略上,两个公司都不想在相同地区互相竞争,所以他们都想在不泄露市场地区位置信息的情况下知道他们的市场地区是否有重叠。(信息的泄露可能会导致公司很大的损失。比如另一家对手公司知道A和B公司的扩展地区,提前行动占领市场;又比如房地产公司知道A和B公司的扩展计划,提前提高当地的房租等等)所以他们需要一种方法在保证私密的前提下解决这个问题。

3. 两个金融组织计划为了共同的利益决定互相合作一个项目。每个组织都想自己的需求获得满足。然而,他们的需求都是他们自己专有的数据,没人愿意透露给其他方,甚至是“信任”的第三方。那么他们如何在保护数据私密性的前提下合作项目呢?

以上三个例子的共有特点是:

<1>. 两或更多方参与基于他们各自私密输入的计算。

<2>. 而且他们都不想其他方知道自己的输入信息。

 

问题变成了在保护输入数据私密性的前提下如何实现这种计算? 我们称之为“安全多方计算(Secure Multi-party Computation)”问题。 通常讲,一个安全多方计算问题在一个分布网络上计算基于任何输入的任何概率函数,每个输入方在这个分布网络上都拥有一个输入,而这个分布网络要确保输入的独立性,计算的正确性,而且除了各自的输入外,不透露其他任何可用于推导其他输入和输出的信息。 当前,解决上述问题的策略是假设有可信任的服务提供者或是假设存在可信任的第三方。但是在目前多变和充满恶意的环境中,这是极具风险的。因此,可以支持联合计算并保护参与者私密的协议变的日益重要。理论上讲,通用的安全多方计算问题是可解决的。但是,正如Goldreich所指出的,源于针对特殊例子的安全多方计算的通用结果的安全多方计算方案是不切实际的。 最后,我们给出安全多方计算的定义:SMC是解决一组互不信任的参与方之间保护隐私的协同计算问题,SMC要确保输入的独立性,计算的正确性,同时不泄露各输入值给参与计算的其他成员。

 姚氏百万富翁问题

姚氏百万富翁问题是由华裔计算机科学家、图灵奖获得者姚启智教授首先提出的。该问题表述为:两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方知道自己财富的任何信息。该问题有一些实际应用:假设Alice希望向Bob购买一些商品,但她愿意支付的最高金额为x元;Bob希望的最低卖出价为y元。Alice和Bob都非常希望知道x与y哪个大。如果x>y,他们都可以开始讨价还价;如果z<y,他们就不用浪费口舌。但他们都不想告诉对方自己的出价,以免自己在讨价还价中处于不利地位。

 

1982年,姚启智教授在提出百万富翁问题后就给出了该问题的一种解决方案。该方案用于对两个数进行比较,以确定哪一个较大。Alice知道一个整数i;Bob知道一个整数j, Alice与B0b希望知道究竟i>=j还是j>i,但都不想让对方知道自己的数。为简单起见,假设j与i的范围为[1,100】。Bob有一个公开密钥Eb和私有密钥Db。


百万富翁问题协议一


(1)Alice选择一个大随机数x,并用Bob的公开密钥加密c=Eb(x);
(2)Alice计算c—i,并将结果发送给Bob:
(3)Bob计算下面的100个数:Yu=Db(c-i+w), u=1,2,...,100 其中Db是Bob的私有解密密钥。B0b选择一个大素数p(p应该比x稍小一点,Bob不知道x,但Alice能容易地告诉他x的大小),然后计算下面的100个数:Zu=(Yu mod p), u=1,2,...,100。然后验证对所有的u≠v, |Zu-Zv|>=2,并对所有的u验证:0<Zu<p—1。如果不成立,Bob就选择另一个素数并重复验证;
(4)Bob将以下数列发送给Alice:Z1,Z2,...,Zj,Zj+1+1...,Z100+1,p;
(5)Alice验证这个数列的第i个数是否与x模p同余。如果同余,她得出的结论是i<=j;如果不同余,她得出的结论是i>j;
(6)Alice把这个结论告诉Bob。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值