百万富翁问题与多方计算

一、 百万富翁问题

Two parties Alice and Bob, in possession of private variables i and j respectively, wish to communicate so that Alice can evaluate a function f(i, j), and Bob a function g(i, j).

有两个百万富翁,想要比较谁更富有,但是不想透露自己的财产数字,如何比较?

二、 解决方案

问题假设如下:

对于以上信息,我们只需要知道,假设两个百万服务拥有财产在1到10之间,且财产金额为整数,Ea是Alice的公钥。

 

 

对于这个问题,我们可以首先撇开数学加密过程,举一个相对比较简单的例子。

我们知道,两个百万富翁所拥有的财产均为整数,所以每个百万富翁拥有的财产可能的取值就有1到10十个数字。

我们让第一个百万富翁,选择十个盒子,按照顺序排列,分别代表1到10,并用自己的财产数字与盒子的数字进行比较,如果小于该数字,则在盒子里面放一个卡片,如果等于该数字,则在盒子里放一根铅笔,若大于则什么都不放。(实际操作可能需要三种东西的差异性)。

然后呢,我们请第二个百万富翁来,让他选择自己财产数额对应的箱子(在第一个百万富翁不参与的情况下)。随后,第二个百万富翁把剩余所有箱子销毁。

最后,两个百万富翁一起打开最后剩下的那个箱子,则可以得出谁更富有。

这个例子应该很容易理解,关键在于第一个百万富翁需要首先与每一种可能进行比较,第二个百万富翁再选择自己财产数额的箱子。

 

三、 原文解决方案

这里是原论文中提及的解决方案。

 

首先Bob选择一个随机数,并使用Alice的公钥进行加密,并用加密之后的结果,减去自己的财产发给Alice。

Alice收到了结果k-j+1。现在她需要对所有可能的金额进行计算,得到十个结果,然后用自己的私钥对结果进行加密。

随后,Alice产出一个随机素数,并使用加密之后的结果对该素数进行求余数计算。该过程具有不可逆转性质,保证了信息的安全性。这里需要Zu的结果之间相差超过2,这是因为之后会进行加一操作。

第五步,Alice将p发给Bob,同时,发送取余计算中得到的结果Z,在这一步她将所有大于她资产的Z进行+1操作。

第六步,Bob选择第j个Zj,然后用yu对p进行取余操作,如果该结果与Zj相等,说明该数字并没有进行加一操作,换句话说,Alice的资产大于该数字。

以上,完成了计算。

 

posted @ 2020-05-11 16:00  金思远  阅读(1106)  评论(0编辑  收藏  举报