赞
踩
安全多方计算(SecureMulti-partComputation,MPC)是80年代提出的一个概念,它已成为隐私计算的核心技术之一。在密码学和区块链技术应用中占据重要地位。
MPC数学定义:
假设存在n个参与方 P 1 , P 2 , … , P n P_1,P_2,\ldots,P_n P1,P2,…,Pn,每个参与方都有一个私有输入数据 x x x,所有参与方共同计算某个函数 f ( x 1 , x 2 , … , x n ) f(x_1,x_2,\ldots,x_n) f(x1,x2,…,xn),且要求在计算结束时,每个参与方 P i P_i Pi只能得到私有输入数据 x i x_i xi的输出,而不能获取其他参与方的输入信息及输出结果信息。
公式:
(
y
1
,
y
2
,
…
,
y
n
)
=
f
(
x
1
,
x
2
,
…
,
x
n
)
(y_1,y_2,\ldots ,y_n)=f(x_1,x_2,\ldots ,x_n)
(y1,y2,…,yn)=f(x1,x2,…,xn)
基本要求:
不诚实参与方的数量占比
敌手行为
输出可达性
一般而言,不诚实大多数情况仅能达到中止安全,而诚实大多数情况能达到公平性和保证输出传送。
计算模型
敌手计算能力
熟悉密码学的同学应该对这两个名词不会感到陌生。信息论安全MPC协议需要在诚实大多数模型下设计。
腐化策略
腐化策略指的是攻击者确定攻破并控制参与方的策略。下面给出两种腐化策略:
对比密码学中的适应性选择明文攻击和非适应性选择明文攻击可以看出,自适应腐化比静态腐化更强。
通信网络
以上是安全多方计算基础组件图。这里简单介绍零知识证明,同态加密。
零知识证明(ZKP,Zero-Knowledge Proof)是一种新兴的密码学工具,证明者(prover)可以用其向验证者(verifier)证明某个声明,而不泄露其他额外的信息。
打个比方,如果我有一个很复杂的拼图需要完成,但我知道靠我的能力完成这个拼图会非常艰难甚至说根本拼不出来,这时我就需要找一个擅长拼图,能把我的拼图拼好的人来帮我。这时来了一个人,他跟你说他能完成这个拼图,只要你给他一笔报酬。你当然不会轻易相信他说的话,于是你要先让他证明他有这个拼图的能力。
如何证明呢?这就是问题的关键,最简单的想法就是当着你面让他把拼图拼好。但对方不愿意这样做,因为在他拼图的过程中,他可能会用到自己的“独家秘笈”,而这个他是绝对不愿意让别人看到的。于是,只能在不暴露他的特技的情况下证明他有这个能力。在这种情况下的证明就是所谓的零知识证明。
现实生活中的例子(以身份认证系统为例):
零知识证明三大性质:
不同的零知识性:
无论是在密码学的课上,还是在信息论的课上,同态加密都会被讲到。同态加密的概念也并不复杂,它就是一类具有特殊属性的加密方法。
与一般加密算法相比,同态加密除了能实现基本的加密操作之外,还能实现密文间的多种计算功能,即先计算后解密可等价于先解密后计算。下图是一个典型的加法同态的例子:
同态加密研究较为深入的是加法同态和乘法同态。
其他同态加密还有混合乘法同态、减法同态、除法同态等,大体定义都差不多,这里就不一一介绍了。
目前加法同态加密已经应用到区块链项目中,而乘法同态由于存在算法设计、密钥存储等问题还难以落地。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。