安全多方计算MPC

        最近看了很多关于安全多方计算的内容,我觉得它主要是隐私计算下的一个方案,和它具有同等地位的还有零知识证明、秘密共享、同态加密等方案。安全多方计算更多是在描述场景,数据是分布式存储在多个用户手里的,起初只是为了通信过程中的安全,要进行一些公钥操作。但是后来人们变得贪心了,不仅要防着外面的坏人,连一起合作的自己人也想留一手,你的数据不想告诉我,我的算法也不想告诉你,干脆大家都摸着黑合作。而有时候安全多方计算狭义上表达一种方法的时候,我更喜欢把它称为安全多方计算协议,这样比较不容易引起误会。

        对于安全多方计算的研究已经有40多年的历史了,最早应该追溯到1982年姚期智先生提出的两方安全计算协议,他以一个百万富翁问题出发,提出了一套方案。两个百万富翁想比一比谁更有钱,但是不想透露给对方自己具体有多少钱,那要怎么比呢?我理解中的方案是这样:先编写一个不对外公开的逻辑,然后按照这个逻辑对双方取数据。比如让富翁A输入自己财产的5%设为x,再让富翁B输入自己财产的7%设为y,但是除了他们没人知道取的比例是这样,然后内部进行7y和5x的比较,返回结果。这样即使x和y流露出去,别人也不知道这是以怎样的比例取的,不会透露两个富翁的具体财产。

        后来很多安全多方计算方案不断涌现,逐渐发展成了三个流派:混淆优化电路的freexor和改进的flexor,基于cut and choose的技术和改进技术,不经意传输OT协议。这些具体是怎样我没有去了解,但是基本上能涵盖主流的安全多方计算实现的技术了。实际应用中,安全多方计算往往要配合承诺、零知识证明这些方法一起用,因为安全多方计算是不具备可验证性的。这个可验证性通俗说就是,虽然逻辑已经给双方设计好了,但是我其实不知道人家有没有按照步骤去算出正确答案,毕竟我也不知道正确答案是什么。

        一些厉害的会议上给出了一些解决这个问题的方案,复杂的数计算我不知道对不对,但是我人为地取一个好算的混进去,算完检验这个好算的结果对不对就行了。比如我希望别人帮我算55667788的10次方,我自己算不出来,但是2的10次方我很容易口算出来是1024,所以我把1和55667788一起加密交给对方,如果1024算对了,那我就知道复杂的结果也是对的。有的方案在这个基础上更加严谨,混了很多个知道结果的数字进去,让对方挑对检验样本的几率变得更小。虽然安全概率上去了,可想而知的是越安全,检验样本越多,通信和计算的开销就越大。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值