被载入史册的炫富

炫富和斗富,不仅仅是现代才有的,古代也有。并且有两个人因为斗富还被载入到《世说新语》里了,史称

石崇与王恺争豪,翻译成大白话就是

石崇和王恺非得比谁的钱更多。他们誓要在各个方面都表露出自己比对方有钱,甚至连饭后洗碗的水都要比。

假如他们都知道自己的财富有多少,但又不想透露具体的数字,那有没有一种快捷的方式,能够让他们在互相不知道对方家底的前提下,得出谁更有钱呢?

看到这个问题,如果对密码学有了解的人,这时应该会想到一个技术——MPC(安全多方计算)。

MPC是一种加密协议,允许多方在互不信任的情况下进行协同计算,输出计算结果,并保证任何一方均无法得到除应得的计算结果之外的其他任何信息。

MPC如何帮助鉴别出谁更有钱呢?

解决方案

我们先做个假定:

1、两人都值得信任,不会作假;

2、两人都真情实感地想比较出谁的钱更多。

再来简化下问题:

我们假设两人的财产在一千金至一万金之间,而且他们也只想做千金级的比较,即每个人只在乎在千金级别上是否我的钱比对方多。

问题简化为:石崇和王恺都清楚自己有几千金财产,即他们心里清楚 1-10中的一个数代表自己千金级的财富,他们想知道到底谁的数更大一些。

接下来,开始游戏:

1、找10个一模一样的箱子,按照1-10编好号。

2、石崇按照自己的财富值分别往每个箱子里,放入苹果、梨和香蕉。具体放法为:如果箱子编号小于自己千金级的财富则放苹果;箱子编号和自己的财富相等,则放入梨;箱子编号大于自己的财富,放入香蕉。

4、将10个箱子上锁,叫来王恺,让他选择跟自己财富金额对应的箱子,然后将其它箱子销毁(这个过程由王恺独立完成)。

5、两个人都不知道这个箱子的编号,因为它们是一模一样的。

6、打开箱子,就能知道谁的财富更多了:

· 如果是苹果,石崇比王恺富有;· 如果是梨,两人一样有钱;

· 如果是香蕉,王恺比石崇富有。

以上这个简单的例子就是MPC里最基本的“百万富翁问题”解决方案。MPC是非常复杂的密码学技术,对于非计算机背景的我们来说,了解它的一些相关知识,就能在每次提及MPC时,不至于两眼一抹黑。而如果你有计算机背景,可以查阅专业的论文以加深理解。

MPC能够安全地输出约定好的数值,不仅可以用于不同组织间的敏感数据共享,也可以用在同一组织间不同团队、不同部门间的数据共享。

此外,MPC的特性和原理,对于解决区块链的两大瓶颈问题,有一定帮助。

区块链与MPC的结合

区块链技术发展至今,面临着两大挑战:一是公开数据带来的隐私问题;二是链上无法进行高效计算处理的性能问题。

隐私问题不但包括区块链上记录的交易信息的隐私,还包括区块链上记录以及传递的其他数据的隐私,这一点在大数据时代尤为重要。而高性能计算一直都是区块链发展的一个瓶颈,在公有链中,大量节点需要全部对计算任务进行处理,以保证计算任务处理结果的准确性和不可修改性。但这样做造成了严重的资源浪费和低效,同时,为了取得去中心化的效果,搭建节点的要求又不能太高,这一点又进一步影响了单个节点处理任务的能力。

这时候,安全多方计算的输入隐私性、计算正确性、去中心化等优点就可以很好地帮助解决这些问题。