十年之前,在学校门口喊一声“为了联盟”,可能会引来一群哥们拉你去网吧,组团把阿尔萨斯暴打一顿;也可能会引来一群哥们拉你到网吧厕所,把你暴打一顿。
十年之后,再到学校门口喊“为了联盟”,可能偶尔会有路过同学问句:“大叔,你也玩英雄联盟吗?”,更多的是一脸懵逼的议论:“这人不会是个傻子吧。”
不管是否愿意承认,曾经风靡全球,曾经我们以为永远不会过气的《魔兽世界》,如今已被LOL、吃鸡、王者荣耀等PC、手机游戏挤下“冰封王座”。
当年一起网吧通宵组团刷副本的兄弟,现在是依然陪在身边,还是早已散落天涯?
当年翻山越岭只为见上一面的牧师妹子,现在是成了孩子阿姨,还是成了孩子他妈?
当年杀红了眼、骂上了头的部落与联盟,现在是见面必须干一架,还是互相问候一句“部落猪”“联盟狗”之后一笑哈哈?
每个人都有自己不同的答案。而无论答案如何,魔兽世界对于我们而言,已经远不止是一款经典的游戏,更是一段燃烧的青春。
相信不少老魔兽玩家都还记得这样一件“古董”——纸质密保卡。在那个盗号木马猖獗,网吧满是肉鸡的年代,密保卡曾为我们的游戏账号保驾护航很长一段时间。
图一
图二
账号绑定密保卡之后,在登录游戏时,必须根据系统的提示输入密保卡中的数字才能登录成功。比如图一,是和账号绑定的密保卡,在登录时要按系统(图二)要求输入C6格的数字330,才能登录成功。
当时只知道按照系统提示,拿着密保卡用,但是你有想过背后的工作原理是什么吗?为什么登录要输C6格的数字,为什么C6格的数字是330,为什么这张卡的C6格是330,而别的卡不是?
直到最近学习混淆电路(GC:Garbled circuits),无意间翻到曾经用过的密保卡,才豁然开朗:这一张纸密保卡不就是魔兽世界让我们帮它执行的电路(函数)吗?密保卡上印着的就相当于电路的真值对照表。
上个例子中,C和6,对应的真值表数值为330。其中C、6、330具体代表什么,它们之间是什么关系,是怎样的计算逻辑等等,我们并不知道。但我们必须按照真值表键入330,计算逻辑才可以正确执行,进而通过密保验证,进入游戏。
游戏密保工作原理与电路工作原理的类比就像下图:
看到这,一些非理工科出身的同学肯定要问:电路(函数)和真值表是什么鬼?所以我们也来补充点基本电路知识。
电路知识和真值表
先来了解一下门电路:
用以实现基本逻辑运算和复合逻辑运算的单元电路称为门电路。门电路有一个或多个输入端和一个输出端。一般用1表示真(正)、0表示假(负)。最简单常见的电路门有与、或、非、与非、或非、异或等几种。它们的真值对照表如下:
简单的门电路可以组成复杂门电路,不同的组合可以实现不同计算逻辑。比如奇偶校验、判断相等、比大小、加、减、乘、初、取余等。复杂逻辑进而可以组成不同算法。
尽管我们不知道魔兽世界密保系统是怎样的计算逻辑,但可以简单粗暴地理解为其复杂的计算逻辑也是由这些基本门电路构成的。
图三
图四
图三为2个异或门加1或非门的组合电路,功能是比较两个0-3之间的整数是否相等。例如:整数A用二进制表示为A1*2+A0,整数B用二进制表示为B1*2+A0。只有A1==B1且A0==B0时,输出结果R为1,否则为0。
图四为该电路的真值表,有了它我们就可以执行这个比较电路了。是不是跟密保卡很像?
混淆电路
了解了门电路之后,我们来聊下混淆电路(GC,Garbled Circuits)。
混淆电路又称加密电路或乱码电路,是姚期智教授(没错又是姚神)在上世纪80年代发明的一种很牛的技术。它可以让两个人针对某个算式来计算答案,而不需要知道他们在计算时所输入的数字。
主要做法是对真值表进行加密和混淆,在让对方不知道真实输入和电路逻辑的前提下可以执行电路。由于整个过程比较复杂,这里不再赘述。混淆电路配合不经意传输( OT, Oblivious Transfer)协议可以实现安全多方计算中的两方计算。
由于门电路可以直接在CPU上执行,因而具有较高的可移植性,可以在不同的平台执行,又可以分片执行。混淆电路除具备门电路的优势外,还可以保证计算数据和计算逻辑的隐私安全。而我们将算法转化为混淆电路后,则可以赋予其混淆电路的种种优点。
当然,将算法混淆电路化之后,也会让计算量大幅增加。随着算力的指数级增长,这一问题很快会迎刃而解。
参考文献
[1] Yao, Andrew Chi-Chih. “How to generate and exchange secrets.” Foundations of Computer Science, 1986., 27th Annual Symposium on. IEEE, 1986
[2] Rosulek, Mike. “Secure Your Data and Compute on It, Too.” XRDS: Crossroads, The ACM Magazine for Students 21.3 (2015): 36-41.