源码

首页 » 归档 » 源码 » 趣说安全多方计算:如何用密码学玩转暗军棋游戏?

趣说安全多方计算:如何用密码学玩转暗军棋游戏?

提起军棋游戏,相信不少人儿时都玩过。

军棋游戏的玩法有三种:第一种是明棋,双方棋子都朝上摆放进行游戏;第二种是翻棋,棋子朝下摆放,双方依次翻开进行游戏;第三种,就是今天我们要特别说的:暗棋。

图片1_副本

暗军棋除了对决双方外,还需要增加一个裁判,其游戏规则是:双方把本方棋子明面朝向自己进行摆放,仅自己和裁判可见,当双方棋子对碰时,由裁判按棋子大小进行判定并告诉双方结果。

图片2

棋子大小规则

由于暗军棋中,双方都不知道对方对碰的棋子,只能根据自己的棋子进行有限判断,极大增加了游戏博弈的复杂度和趣味性,因而深受很多玩家喜爱。

不过,在日常玩暗军棋时也会遇到一些问题。比如:李雷和韩梅梅,孤男寡女共处一室,没有第三方裁判或者不想让第三方裁判参与的时候,两个人还能玩暗军棋游戏吗?

微信截图_20181213141158

当然可以!这时候密码算法的作用就凸显出来了。

简单起见,我们先不考虑特殊棋子(炸弹和地雷),对其他棋子按顺序进行编号:司令=9、军长=8、师长=7、旅长=6、团长=5、连长=4、排长=3、工兵=2。

李雷和韩梅梅对碰的棋子分别为x和y,根据比较表的规则写一个比较函数f(x,y),规定:f(x,y)等于1时李雷胜,f(x,y)等于0时同尽,f(x,y)等于-1时韩梅梅胜。

当李雷出师长(7)与韩梅梅的团长(5)对碰时,7>5,f(x,y)=1,李雷获胜。

那么,在没有第三方(人或计算机)裁判的情况下,对碰双方又不知道对方棋子,该如何进行比较判断呢?

回答这个问题前,要先了解一下姚氏百万富翁问题。

原理:姚氏百万富翁问题

姚氏百万富翁问题由华裔计算机科学家、图灵奖获得者姚启智教授首先提出。该问题表述为:两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方和第三方知道自己的财富数额,该如何实现?姚教授设计一种巧妙的算法,Alice的财富为a,Bob的财富为b(a,b, m,n为整数且a,b∈[m,n]),Alice有一个公钥Ea 和私钥Da。双方按以下步骤执行:

1) Alice将公钥Ea给Bob;

2)Bob选取一个大整数x,并用Alice给的公钥Ea进行加密得到密文K,然后将c=K-b发给Alice;

3)Alice拿到密文c,用自己的私钥Da对c+m,c+m+1……c+n进行解密得到n-m+1个数字;

再选取一个适当大小的素数 p, 把这n-m+1个数字对p进行mod运算得到dm,dm+1……dn

对于dm,dm+1……dn前a个数不动,后面的数每个加1。然后将处理所得数字发给Bob;

4)Bob拿到这串数字并检查第b个数字db,如果db==x mod p,证明这个数字没有被加1,所以 a >= b,反之,则证明 a < b。

因为交互的数据都是处理过的,所以双方在这个进行计算的过程中都没有泄露自己信息,并且得到了想要的判断比较结果。这就是安全多方计算(MPC)中的两方计算。

下图为演示代码输出结果:

图片3

回过头看暗军棋的对碰比较,和百万富翁问题本质是一样的,按照计算协议双方输入对碰棋子对应的数值即可。当然为了防止作弊,双方需要各自进行一次计算得到一致结果。各自把每一次对碰自己的棋子和结果记录,结束后按照步骤重现进行检查。

安全多方计算还可以取代狼人杀、暗兽棋等游戏的裁判,其原理都是MPC两方比大小或其扩展。

扩展:安全多方计算实际应用

MPC除可以解决各类暗游戏问题外,还可以在更多不依赖第三方来进行任何博弈的场景中应用。比如以下几种:

1、医疗数据协同计算

当前,医疗数据大都掌握在各个互不相通医疗机构手中,形成一个个数据孤岛,无法充分发挥价值。同时,由于医疗数据涉及大量个人敏感信息,要协同利用这些数据必须要解决隐私保护问题。通过MPC,可以在保证个人隐私数据安全的前提下,打通数据孤岛,实现医疗数据价值的最大化。

2、联合征信

银行或保险业,往往需要联合多家征信机构进行个人信用评分计算,而各征信机构通常不希望自己的核心数据被“拿走”。通过MPC可以在不归集各方数据的情况下,进行联合信用评估计算。

3、投票/拍卖

使用MPC进行投票/拍卖,既可保证用户隐私,又能有效避免跟投、恶意提价等作弊行为。

对于安全多方计算(MPC)这项“黑科技”,你觉得还有哪些用途?欢迎留言和我们交流。

参考资料:

知乎,王东阳,https://zhuanlan.zhihu.com/p/25770963

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/qushuoanquanduofangjisuanruheyongmimaxuewanzhuananjunqiyouxi.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:12月 25, 2018 at 12:03 上午

热评文章

发表回复

[必填]

我是人?

提交后请等待三秒以免造成未提交成功和重复