没有裁判,两个人还能玩暗军棋吗?

暗军棋的关键难点在于:

  • 双方棋子是扣着放的
  • 碰撞时需要比较军衔大小
  • 但双方又不想暴露自己的棋子身份

通常这需要一个可信裁判来:

  • 偷偷看双方棋子
  • 按规则判定输赢
  • 只公布结果,不泄露信息

而这篇文章的核心观点是:

可以用密码学把“裁判”替换掉。

这就引出了一个更大的主题:

安全多方计算(Secure Multiparty Computation, MPC)

一、暗军棋问题的抽象

文章先把暗军棋的碰撞规则抽象成一个“比较函数”:

这里:

  • 表示一方棋子的军阶
  • 表示另一方棋子的军阶

例如:

  • 我的军长是 10 级
  • 对方连长是 3 级
  • 因为 ,所以比较结果是 1

问题在于:

双方都想知道比较结果,但又都不想把自己的具体数字告诉对方。

这正好对应密码学中的一个经典问题。

二、百万富翁问题:比较大小,但不暴露各自的数

文章引入的经典问题是姚期智提出的“百万富翁问题”:

两个富翁如何在不透露自己财富具体数值的情况下,只比较出谁更富有?

这和暗军棋的本质完全一样:

  • 都是比较两个私有数字大小
  • 都只想公开结果
  • 不想公开输入值本身

三、文章里讲的协议想解决什么

作者介绍的协议,本质目标是:

双方各自知道的东西

  • 王知道自己的数
  • 李知道自己的数

双方共同想得到的东西

  • 只知道 谁更大

双方不想泄露的东西

  • 王不想让李知道自己的具体数值
  • 李也不想让王知道自己的具体数值

这就是安全多方计算的典型目标:

共同计算一个函数值,但不泄露各自输入。

四、这套思路的本质,不在细节公式,而在“只公开函数值”

原文用了一个基于公钥加密、随机数和模素数余数的协议,来说明这个思想如何实现。

即使不追细节,也可以抓住它的本质:

协议想达成的效果

  • 双方都参与计算
  • 双方都没有直接把自己的秘密说出来
  • 计算完成后,只暴露“比较结果”
  • 而不会暴露具体输入值

作者特别强调,这就是:

安全多方计算:在甲只知道 、乙只知道 的情况下,双方合作计算 ,最后只公开函数值,而不公开彼此输入。

五、回到暗军棋:为什么这个问题就能解决

一旦“比较大小但不泄露数字”的问题解决了,暗军棋就很好理解了。

当两枚棋子碰撞时:

  • 双方把自己的军阶当作私有输入
  • 共同运行一个安全比较协议
  • 最后只得到“谁赢了”这个结果
  • 而不暴露军阶本身

这样,密码学协议就替代了裁判。

六、一个现实问题:如果有人作弊怎么办?

作者也主动指出了一个漏洞:

参与者可能不按真实军阶输入,而是报一个更高的等级。

例如:

  • 我实际棋子只有 2 级
  • 但在协议中输入 10 级
  • 对方也无法立刻看出来,因为最终公开的只有比较结果

这说明:

安全多方计算解决的是“隐私下的正确计算”,但不自动保证输入本身真实。

作者给出的补救办法是:

  • 游戏结束后双方公开所有棋子
  • 对照游戏记录复盘
  • 检查每一步输入是否与真实棋子一致

这相当于:

  • 计算过程保密
  • 事后可验证

七、安全多方计算是什么

文章后半部分把问题从暗军棋推广开来。

安全多方计算(MPC)的核心可以记成一句话:

任意多个参与者,共同计算任意函数;除了函数结果之外,不额外泄露各自输入。

这其实是一个非常强的框架。

它解决的不是某一类特定问题

而是一个一般性问题:

  • 你有你的秘密输入
  • 我有我的秘密输入
  • 我们又必须协作得出一个结果
  • 但谁也不想把底牌直接亮出来

八、文中提到的典型应用

1. 拍卖

  • 输入:每个人的出价
  • 函数:取最大值
  • 目标:只公布谁赢了 / 成交价,不暴露所有人的底价

2. 选举

  • 输入:每个人投给谁
  • 函数:求和计票
  • 目标:票数统计公开,但个体投票保持私密

3. 共同好友

  • 输入:两个人各自的好友集合
  • 函数:取交集
  • 目标:只知道共同好友,不暴露各自全部联系人

4. 合作机器学习

  • 输入:不同参与方的数据集
  • 函数:一个训练算法
  • 目标:在不直接共享原始数据的前提下,共同训练模型

这也是近年来非常火的一条路线。

九、这篇文章真正想传达的直觉

这篇文章最有价值的地方,在于它把一个抽象密码学问题,讲成了一个非常直观的日常场景:

我们不是一定需要“可信中间人”,有时可以用协议来代替信任。

也就是说,密码学不只是“加密消息”,更是在设计规则:

  • 让陌生人合作
  • 让各方不必交出全部信息
  • 让结果可信
  • 让过程尽量不依赖某个绝对公正的第三方