作者:Annchain
(本文一切著作权归annchain技术团队所有,未经许可,不得转载。若需转载请联系页尾二维码。)
安全多方计算(Secure Multi-Party Computation,SMPC)一直是我们的重点研究内容,其相关理论和技术满足了如隐私保护、区块链、机器学习等诸多前沿领域的安全计算需求,其实践化研究更是当前信息技术发展的总体趋势之一。接下来我们将开一个关于安全多方计算的专栏,介绍SMPC领域的相关基础协议、研究现状,并对其核心技术进行一些探讨,以抛砖引玉。本文是该专栏的首篇,将简要地介绍姚期智先生在1986年所提的一个安全两方计算的通用协议(以下称“Yao’s两方协议”)。
安全两方计算
安全两方计算是指两个参与方,在保护各自秘密输入的前提下,共同合作完成某个功能函数的计算任务,并最终得到各自正确的计算结果。安全两方计算是多方计算的一种特例,其只涉及两个参与方。较之于多方计算,安全两方计算模型相对简单,比如其不存在多方计算场景的“不诚实的大多数”(dishonest majority)问题。现实世界中仅涉及两个实体的应用场景很多,比如基因匹配、人脸识别、音乐检索等模式匹配问题,安全两方计算协议尤适用于这些具体场景的建模分析。
安全两方计算是安全计算领域里的核心内容之一,它既是构造多方协议的基础,也可直接运用于解决现实世界中实际问题。目前,安全两方计算协议(甚至多方计算协议)的主流设计框架仍基于姚期智先生最早提出的基于混淆电路的两方计算通用协议。
混淆电路(Garbled Circuits)
混淆电路是姚期智先生的安全两方计算通用协议中的核心技术,用于构造加密版本的电路,以实现所有非电路输出的线路上信息不泄露,又称为加密电路、乱码电路。当前,混淆电路已发展成构造上层安全协议的密码学工具,被广泛加以研究,包括对电路的优化设计、在如水印、委托计算等诸多应用中的推广、等等。
任一个多项式时间的功能函数都存在一个与之对应的布尔电路,可描述为电路计算。电路由众多的门电路(如或门、与门、非门等)连接组成,其门电路的输入线路可以是函数的输入变量,也可以是其他门电路的输出线路。
不失一般性,假设所连接的门电路均是二进一出的,记为门电路,其两个输入线路分别为,则其输出线路值为,该输出线路值可能为下一个门电路的输入。电路的计算由输入值确定的门电路开始,按照电路拓扑一层一层往下计算,最后总能在电路所有输出线路上得到最终输出结果。采用这种原始的计算方式,电路上各线路的值均为明文形式的比特值或。
为了实现安全计算,姚期智先生提出了一种方法对电路计算过程中所有门电路上的计算值进行加密,即每一条线路