zoukankan      html  css  js  c++  java
  • 百万富翁问题与多方计算

    一、 百万富翁问题

    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的资产大于该数字。

    以上,完成了计算。

  • 相关阅读:
    2018 ACM 网络选拔赛 徐州赛区
    2018 ACM 网络选拔赛 焦作赛区
    2018 ACM 网络选拔赛 沈阳赛区
    poj 2289 网络流 and 二分查找
    poj 2446 二分图最大匹配
    poj 1469 二分图最大匹配
    poj 3249 拓扑排序 and 动态规划
    poj 3687 拓扑排序
    poj 2585 拓扑排序
    poj 1094 拓扑排序
  • 原文地址:https://www.cnblogs.com/siyuan-Jin/p/12869709.html
Copyright © 2011-2022 走看看