MPC的百万富翁问题

多方计算(MPC)作为侧链”以通用方式为智能合约提供隐私。在此模型中,智能合约开发人员可以将其任何成员字段标记为“秘密”。这意味着数据本身并不存储在链上,而是以秘密共享的方式存储在组成侧链的 MPC 验证节点委员会之间。MPC 节点根据主链的指令对秘密共享数据进行计算,并将结果回写到主链。秘密共享数据本身永远不会以明文形式重建,甚至在 MPC 节点上也不会

百万富翁问题

如图1所示,姚氏百万富翁问题可解释为:两个争强好胜的富翁Alice和Bob在街头相遇(假定Alice财富为x百万,Bob财富为y百万),如何在不暴露各自财富的前提下比较出谁更富有?

图1 姚氏百万富翁问题

2.2百万富翁问题的通俗解法

对于图1中的姚氏百万富翁问题,我们将以非密码学的、通俗易懂的语言讲解如何解决该问题。

假定x=3,y=7,即Alice拥有3百万,Bob拥有7百万,他们只关心自己的财富在百万这个量级上,谁更富有。假定他们的财富都不会超过1千万,则可以默认为Alice和Bob的财富值x、y取值范围为1~9。

第一步:如图2所示,Alice首先准备带序号1-9的9个箱子。

图2 Alice首先准备带序号1-9的9个箱子

第二步:Alice在箱子内分别放入苹果和香蕉,规则为,如果箱子序号小于自己的财富值x,则放入苹果,否则放入香蕉。由于x=3,因此前2个箱子为苹果,后7个箱子为香蕉。

将带序号的9个箱子封装后,交给Bob。

图3 按序号和财富值在箱子内分别放入苹果和香蕉

第三步:如图4所示,Bob收到带序号的箱子后,避开Alice的视线,挑选序号与自己财富值y相等的箱子,然后撕掉序号,扔掉其他箱子。注意,Bob只能诚实的挑选1次箱子。

图4 Bob收到9个箱子后的操作

第四步:Bob当着Alice的面打开选中的箱子,如果是香蕉,则y≥x;是苹果则x>y。本例中Alice最后看到的是一个如图5所示,没有序号的、带香蕉的箱子,表示x>y不成立,知道自己的财富不比Bob多。

图5 Alice最终看到的箱子

通过以上步骤可知,在最后阶段,虽然Alice和Bob都看到了箱子里放的是香蕉(MPC算法的计算结果),但由于箱子序号被撕掉,所以Alice并不知道Bob选的是第几个箱子(实现了Bob财富y对Alice的隐藏);对于Bob来说,并不能确定序号1-6的6个箱子里,从第几个箱子开始,由苹果变成了香蕉(实现了Alice财富x对Bob的隐藏)。

百万富翁问题的密码学解法本文不再讲解,感兴趣的读者可阅读姚院士的原始文献(参考文献[1]),或阅读参考文献[2]中对姚院士论文的中文解读。

MPC,被称为多方计算是密码学的一个子领域,其目标是为各方创建方法来共同计算其输入的函数,同时保持这些输入的私密性。与传统的加密任务不同,在传统的加密任务中,加密确保通信或存储的安全性和完整性,并且对手位于参与者系统之外(发送者和接收者的窃听者),该模型中的加密保护参与者彼此的隐私。

发表评论

您的电子邮箱地址不会被公开。