Kaleidoscope: 一个安全的密码学扑克协议

2018-03-04 黄毅

扑克是世界上最流行的游戏之一,在赌场和互联网上都很受欢迎。尤其2000年后在线扑克迎来一阵风潮,产生了一个上百亿美元的市场。 然而目前的在线游戏形式要求用户无条件地信任在线赌场提供商,赌场可以随意进行暗箱操作,就算赌场不想,也难保他的员工不会想要赚点快钱。这些在现实世界中都有先例。

使用密码学安全的扑克协议可以让你安全地进行线上扑克,不需要信任任何第三方。事实上这方面的研究在现代密码学早期的时候就已经开始。 就在著名的RSA公钥加密模式提出几年后,Shamir, Rivest和Adleman就提出了第一代这种协议,并引发后续许多的相关研究。 然而由于下列原因,这方面的应用一直没有落地:

  1. 安全:现有协议的安全性保证并不明确,很难搞清楚他们具体的安全等级和可靠性。
  2. 效率:大部分现有协议都使用开销大的密码学技术,导致过高的计算和通讯开销,进而导致游戏延迟大,玩起来太卡。
  3. 经济:尽管经典密码学技术能够保证游戏的公平性(也就是没有玩家可以作弊或者查看其他玩家的隐私数据), 但是目前的扑克协议还是无法保证赢家一定得到经济奖励。

我们最近给金融密码学2018会议上提交了一篇论文,其中构建了叫Kaleidoscope的协议, 这是第一个能解决上面三个问题的密码学扑克协议。Kaleidoscope是第一个在扑克游戏通常需要的安全模型下被证明安全的协议,另外通过使用区块链技术,可以保证赢家得到奖励,并且作弊者收到经济上的惩罚。同时它还比以前那些不能证明安全性的方案更加高效。

设计Kaleidoscope的第一步,就是要形式化地定义扑克协议需要做到的安全保证。 因为这种形式定义目前还不存在,所以我们提供了“仿真”模型下首个针对扑克协议的安全性定义。 我们的安全性定义考虑到了扑克游戏的所有阶段。并且只要有一方是诚实的,这个安全模型就不会被打破。 在扑克游戏中,所有玩家联合起来针对一个玩家作弊的情况并不少见。

有了这个的形式化模型后,我们又进一步开发了一套能够实现这些安全保证的协议。 这套协议建立在最新的洗牌零知识证明上,并且做到了计算和通讯两方面最佳的效率。 事实上,我们随后的工作表明,Kaleidoscope在提供极高安全性保证的同时, 计算量比以前的协议少了三倍,通讯量少了八倍。

Kaleidoscope另一个重要特性是能够保证赢家收到奖励,同时作弊者得到惩罚并被踢出游戏。 大概流程是这样的:游戏开始前,玩家先要把用于下注的资金和一定量的押金打到一个智能合约里。 游戏结束后,智能合约会根据游戏结局分发下注资金并返还押金, 如果有玩家被发现作弊,他的押金会被分给正常游戏的人。 我们的协议把对智能合约通讯量和链上存储的需求降到了最低。

虽然Kaleidoscope协议成功地解决了以上扑克协议面临的三个问题,但它只能用来玩扑克游戏。 有些人错误地认为扑克协议一定可以用来玩各种牌类游戏,但其实这会导致一些严重的安全问题。 但是具体到我们这个协议,还是能够把它的安全性模型、协议和证明扩展到通用的牌类游戏。 在这个过程中,我们创建了Royale, 一种能够安全地玩各种牌类游戏的协议,并且和Kaleidoscope一样高效。 我们会在后续的视频和博客中继续描述Royale的特性。


blog comments powered by Disqus

转载请注明出处,收藏或分享这篇文章到: