1996年,id Software发售《Quake》共享版光盘,定价10美元。这张光盘里不仅有《Quake》的试玩版和完整版,还塞进了当时id旗下所有游戏的加密完整版。玩家只需拨打“Quake解锁中心”电话,报上光盘程序生成的挑战码,再用信用卡付款,就能获得解锁代码,玩到任意一款完整游戏。

这个模式在当时看起来相当聪明:玩家买了《Quake》光盘,顺手就能解锁其他id游戏,不用再跑线下零售店。对开发商来说,绕开中间商意味着能拿到销售收益的大头。但id Software显然低估了黑客群体的行动力。

打开网易新闻 查看精彩图片

39天,加密被攻破

光盘发售仅39天,黑客组织GNOMON就放出了破解工具QCRACK.exe。这个工具能为光盘上的所有游戏生成序列号,相当于10美元买一张光盘,就能免费玩到id Software当时的所有作品。据Google软件工程师Fabien Sanglard的回顾文章,这次破解让id Software手里15万张光盘再也卖不出去。

问题出在加密方案本身。id Software和负责制作共享版光盘的DRM公司TestDrive,采用的是一种“安全通过隐匿”的思路——他们以为只要不公开算法细节,系统就足够安全。电话那头客服给出的序列号看起来是半随机的,因为解锁程序会轮换挑战码,但序列号实际上可以由光盘上永久刻录的数据推算出来。

本地校验,成了整个方案的命门

在互联网认证尚未普及的年代,解锁程序的工作方式是:检查玩家输入的序列号,是否与根据光盘本地数据生成的结果匹配。只要有人逆向出挑战码和序列号之间的生成规则,就能完全绕过付费环节。GNOMON的黑客正是这么干的——他们在一个多月内就摸清了这套机制,而且没有公开破解工具的具体实现原理。

这个案例放在今天看,依然有很强的警示意义。任何依赖“别人猜不到”的加密方案,本质上都不是加密。当校验所需的全部数据都刻在用户手里的光盘上时,破解只是时间问题。39天,就是id Software为这个设计失误付出的时间成本。

对当时的id Software来说,损失是实打实的:15万张光盘积压在仓库,电话解锁中心的收入远低于预期。而对整个行业来说,这个案例也成了DRM发展史上的一个经典反面教材——后来者至少学会了一件事:不要把解密所需的全部信息,和加密内容放在同一个载体上。