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

    以上,完成了计算。

  • 相关阅读:
    页面存在多个setInterval
    ios 常见兼容问题
    微信开发常用代码
    jq右侧划出
    常用 css rem 根字体
    weinre使用教程
    CSS属性大全
    微信H5页面前端开发,大多数人都会遇到的几个兼容性坑
    后台管理系统页面欣赏
    微信公众号开发文档
  • 原文地址:https://www.cnblogs.com/siyuan-Jin/p/12869709.html
Copyright © 2011-2022 走看看