作者:Annchain
(本文一切著作权归annchain技术团队所有,未经许可,不得转载。若需转载请联系页尾二维码。)
安全多方计算(Secure Multi-Party Computation,SMPC)一直是我们的重点研究内容,其相关理论和技术满足了如隐私保护、区块链、机器学习等诸多前沿领域的安全计算需求,其实践化研究更是当前信息技术发展的总体趋势之一。接下来我们将开一个关于安全多方计算的专栏,介绍SMPC领域的相关基础协议、研究现状,并对其核心技术进行一些探讨,以抛砖引玉。本文是该专栏的首篇,将简要地介绍姚期智先生在1986年所提的一个安全两方计算的通用协议(以下称“Yao’s两方协议”)。
安全两方计算
安全两方计算是指两个参与方,在保护各自秘密输入的前提下,共同合作完成某个功能函数的计算任务,并最终得到各自正确的计算结果。安全两方计算是多方计算的一种特例,其只涉及两个参与方。较之于多方计算,安全两方计算模型相对简单,比如其不存在多方计算场景的“不诚实的大多数”(dishonest majority)问题。现实世界中仅涉及两个实体的应用场景很多,比如基因匹配、人脸识别、音乐检索等模式匹配问题,安全两方计算协议尤适用于这些具体场景的建模分析。
安全两方计算是安全计算领域里的核心内容之一,它既是构造多方协议的基础,也可直接运用于解决现实世界中实际问题。目前,安全两方计算协议(甚至多方计算协议)的主流设计框架仍基于姚期智先生最早提出的基于混淆电路的两方计算通用协议。
混淆电路(Garbled Circuits)
混淆电路是姚期智先生的安全两方计算通用协议中的核心技术,用于构造加密版本的电路,以实现所有非电路输出的线路上信息不泄露,又称为加密电路、乱码电路。当前,混淆电路已发展成构造上层安全协议的密码学工具,被广泛加以研究,包括对电路的优化设计、在如水印、委托计算等诸多应用中的推广、等等。
任一个多项式时间的功能函数都存在一个与之对应的布尔电路,可描述为电路计算。电路由众多的门电路(如或门、与门、非门等)连接组成,其门电路的输入线路可以是函数的输入变量,也可以是其他门电路的输出线路。
不失一般性,假设所连接的门电路均是二进一出的,记为门电路,其两个输入线路分别为,则其输出线路值为,该输出线路值可能为下一个门电路的输入。电路的计算由输入值确定的门电路开始,按照电路拓扑一层一层往下计算,最后总能在电路所有输出线路上得到最终输出结果。采用这种原始的计算方式,电路上各线路的值均为明文形式的比特值或。
为了实现安全计算,姚期智先生提出了一种方法对电路计算过程中所有门电路上的计算值进行加密,即每一条线路,随机选取两个值和分别与比特值和一一对应,称为混淆密钥。显然,若不知道混淆密钥,观察者并不能确定该线路上呈现的某一混淆值所对应的比特值,而仅能以的概率猜测正确。
对电路的每一条线路都选取一对随机混淆密钥,所构造的电路称为混淆电路(Garbled Circuits),记为。接下来,为了解决中各个门电路的计算问题,这里使用了“双重加密”方式,即对每个门电路,分别将两输入线路上的混淆值作为加密密钥,加密这两个输入混淆值所对应的输出混淆值,得出该门电路的“加密计算表”。中所有门电路的“加密计算表”将形成的混淆表。
以为“或”门为例进行说明,假设其输入线路、输出线路上的随机混淆密钥分别为,和,由或门的真值表可求得其加密计算表如下:(其中表示以为密钥对进行第一次加密,再以为密钥对所得中间结果进行第二次加密)。
由的加密计算表可知,分别给定输入线路上的混淆值后,将唯一确定该表中的一行,即通过两次解密运算得到输出线路上的混淆值,若该输出值为下一个门电路的输入,则下一个门电路也可进行的计算。这里需注意的是加密计算表中各行应随机排序后存储,否则将因位置而泄露门电路的输入信息。
根据混淆电路的混淆表,在获得每条输入线路的混淆值后,可按电路的拓扑一层一层地解密,从而在一片混沌中完成整个电路的运算。另外,在最终输出的各个线路上,需要保存各输出线路上的随机混淆值与其对应真实值的映射关系,可称为“输出解密表”,否则由于混乱值的相同分布将难以解得最终的计算结果。
Yao’s两方协议
姚期智先生在1986年提出了一个安全两方计算的通用协议,本文称为Yao’s两方协议,该协议是基于混乱电路(Garbled Circuits)和OT协议设计的,并被证明在半诚实敌手模型下是安全的。
现假设有两个参与方,各自拥有私有数据,这两个参与方希望在不泄露自己私有数据的前提下计算函数值。Yao’s两方协议的框架如下所述:
1. 将函数转化成其计算电路;
2. 不失一般性,令构造电路的混淆电路,并将的混淆表(由所有门电路的加密计算表组成)发送给 ;
3. 将自己的私有数据转化成电路中相应输入线路上的混淆值,并发给;
4. 和之间通过逐比特执行二选一的茫然传输协议(1-out-of-2 oblivious transfer),即提供电路中私有数据所对应输入线路的混淆密钥对,经过多次茫然传输协议后,得到所对应的混淆值;
5. 使用所得的所有输入混淆值,正确计算,得到最终结果,并将结果告诉。
结语
Yao’s两方协议是SMPC设计的通用框架之一,之后许多研究以Yao’s协议为基础进行优化改进,以设计高效的多方协议,适应现实世界中各类应用场景的特定需要。
此外,SMPC协议的设计框架还有很多,不同框架在安全性、效率、通信消耗等各方面有不同的权衡,各有千秋。比如,我们的安多方产品所采用并改进SPDZ协议框架,是基于秘密分享设计的,且在效率和通信消耗方面较优的一个SMPC协议。后续我们将陆续分享对上述所列技术点的探讨,敬请期待!
Annchain(众安链)是由众安科技和众安-复旦区块链与信息安全联合实验室自主研发,国内首个基于DAG架构并支持智能合约的高性能通用区块链平台。作为工信部指导的中国区块链技术和产业发展论坛两大开源项目之一,Annchain立足于中国,致力于助力中国抢占区块链全球话语权。
Annchain专注于易用、高效、安全和隐私等关键特性,兼具模块化和高度可定制的特点。目前已在数十家生态伙伴的商业场景中落地,场景涵盖农业溯源、珠宝溯源、资产通证化、公益、医疗数据共享、广告分发平台等。开发者可基于Annchain高效构建适合自身的区块链应用,期待更多伙伴加入我们一起探索新应用。
众安科技
众安信息技术服务有限公司(简称“众安科技”)成立于2016年11月2日,是由蚂蚁金服、腾讯、中国平安发起设立的众安保险旗下的全资科技子公司,专注于区块链、人工智能、密码学、物联网等前沿技术研究。众安科技汇聚了行业内的顶尖科研人才,其中区块链团队规模近200人,多数来自于各顶尖区块链团队。
众安-复旦区块链与信息安全联合实验室
众安-复旦区块链与信息安全联合实验室是国内首个高校与企业联合组建的专一区块链实验室,专注于区块链相关技术的底层理论研究。同时,实验室联合复旦大学、上海众人信息技术有限公司成立了上海区块链工程研究中心。中心伴随构建长效的产学研用合作机制的同时,支撑开展增强的密码学能力,高性能区块链(如Annchain)等,为行业提供示范。
更多关于annchain:
www.annchain.io
Github: github.com/annchain
Twitter: https://twitter.com/Annchain007
Facebook: https://www.facebook.com/Annchain-295110641341258
TelegramGroup: t.me/Annchain
TelegramChannel: t.me/AnnchainChannel
扫码备注昵称+研发方向
加入annchain技术社群