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

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

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

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

棋子大小规则

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

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

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

简单起见,我们先不考虑特殊棋子,对其他棋子按顺序进行编号:司令=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,f(x,y)=1,李雷获胜。

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

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

原理:姚氏百万富翁问题

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

1)Alice将公钥Ea给Bob;

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

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

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

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

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

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

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

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

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

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

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

1、医疗数据协同计算

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

2、联合征信

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

3、投票/拍卖

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

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

本文来源于非小号媒体平台:

矩阵元

现已在非小号资讯平台发布1篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/3627069.html

游戏链游

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

安全公司警告:新型恶意软件「WebCobra」劫持用户设备,挖掘门罗币及大零币

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:31ms0-4:691ms