➢ 多方安全计算的起源
多方安全计算诞生于密码学领域中的一个学术讨论问题。
1982年,图灵奖获得者、中国科学院院士姚期智教授提出了著名的百万富翁问题:两个争强好胜的富翁如何在不暴露各自财富的前提下比较出谁更富有?
姚氏百万富翁问题有很多解决方案,下面给出了一个巧妙的解决方案。
(1)假设两个富翁的财富值都是百万的整数倍。找来10个一模一样的箱子,排成一列,并按1~10的顺序标号依次代表100万、200万······1000万。
(2)富翁A可以按照自己的财富值依次往箱子中放入水果。如果箱子编号小于自己的财富值,就放入苹果;如果编号等于财富值,就放入梨;如果编号大于自己的财富值,就放入香蕉。全部放好后,分别加上外观一样的锁。此时,从外观看,除了编号,10个箱子没有任何区别。
(3)此时富翁B过来可以按照自己财富值对应的编号留下一个箱子,去掉编号,再把剩余所有箱子销毁。
(4)只保留一个箱子后,富翁B拿到富翁A的钥匙打开箱子,拿出水果后就知道两人财富值的对比情况。如果里面放着苹果,则A更富有;如果里面放着香蕉,则B更富有;如果是梨,则两人财富相等。
以上这个方案就是多方安全计算思想的起步,两个参与方虽然没有交换彼此的原始数据,但共同完成了同一个计算目标,并获得了计算结果,实现了对自有数据的安全保护。
在此基础上,如果扩展成多个参与方的更广泛场景,多方安全计算问题就可以抽象概括成如下数学模型。
设P={P1,P2,…,Pn}是n个参与者的集合,他们想要安全地合作完成某个给定函数f(x1,x2,…,xn)=(y1,y2,…,yn)的计算,其中函数f的n个输入(x1,x2,…,xn)分别由n个参与者P1,P2,…,Pn秘密地掌握而不被其他人知道,在计算结束后P1,P2,…,Pn分别得到y1,y2,…,yn,这里的安全主要指参与者Pi(i=1,2,…,n)只能根据自己的输入xi来获得输出yi,而得不到任何有关其他参与者的额外信息。
在百万富翁问题提出后的很长一段时间(20世纪八九十年代),多方安全计算始终停留在学术研究层面,有少数论文发表,主要集中在证明技术的可行性上,但讨论的场景距离实际应用相差甚远。21世纪的前10年里,多方安全计算进入实验室阶段,开始有一些项目研究与实际问题的结合,例如在数据挖掘中为保护隐私设计多方安全计算协议。2010年之后,一些行业巨头开始尝试应用多方安全计算解决数据安全交换的问题,但性能上的瓶颈严重影响了技术的可用性。直到2017年左右,随着数据应用与流通的监管趋严,越来越多的产业应用期待利用技术来解决数据合规问题,越来越多的企业加入技术研发的队伍中,多方安全计算的可用性得到明显提升,技术进入了规模化蓬勃发展的阶段。