在一千七百多年前,西晋有两个巨富,一个叫石崇,一个叫王恺。这两个人都认为自己是全天下最有钱的人,于是试图以攀比奢靡浪费的方式来证明自己有钱。
当然,这样的人最终是不会有好的下场的,最终二人都落得家破人亡的结局。
但是,石崇王恺斗富的故事,却引出了一个很有意思的话题——
如果有两个大富翁,都想证明自己比对方有钱,但不能暴露自己有多少钱,那么,有没有数学算法解决这一问题呢?
这个问题实际上是计算机科学中的一个新兴领域——隐私计算。而引出隐私计算这一领域的,是1982年,著名计算机专家,姚期智院士提出的“百万富翁问题”,也就是前文提到的,两个富翁期望在不暴露自己财产数量的前提下,得出谁更有钱的结论。用计算机领域的术语表达这一问题,就是:
一组互不信任的参与方,在没有可信任的第三方的条件下,实现保护自身隐私信息并进行涉及自身隐私信息的协同计算。
隐私计算的核心技术之一是混淆电路(Garbled Circuit)技术。
在计算机中,实现所有的数值运算与非数值运算,最终都依赖于一系列门电路。以减法运算为例:
实现1bit 减法的电路如下:
如图,A和B是两个1 bit数字信号,经过以上的电子线路之后,输出3条线:
F (A>B),F (A=B),F (A<B)。哪条线为1就代表这条线对应的计算结果。
以A为1,B为0为例,F(A>B)这条线输出1,其他两条线输出0。
所谓混淆电路,指的就是,送到计算机减法器电路上的数字信号,并非两个百万富翁的财产数字,而是经过混淆的数字信号。最终计算机输出的结果被两个百万富翁获取以后,两个百万富翁就可以知道自己到底是不是更有钱的一个了。
原来,在计算机的世界中,在未知领域中进行创新,有可能要涉及改变计算机的底层逻辑——电路实现。同样地,国产化计算机系统的追赶,也离不开掌握这个领域的基础知识的工程师们。
为了帮助本公众号读者们打开通往计算机底层的大门,我们开启新的专题,深入到计算机各部件的电路实现中去,期望能够帮助大家。
敬请期待。