1.5、新方法

这群家伙这次从两个方面下手:第一,想出一种办法可以让他们有不同的赢法,如满堂红、顺子、清一色等,这样就不会因每次蠃法都一样而引起注意;第二,想出更简便的办法可以进行程序运算,而不用每次跑出去打电话。

赌场提供的日本产的机器数量十分有限,这帮家伙开始瞄准一种由美国公司设计的,功能更齐全的机器。他们以同样的方法拆卸机器,发现这种机器的随机数生成程序相当复杂:这种机器不是用一个生成器,而是用两个生成器同时工作。“程序员非常清楚一个生成器很有可能被攻破”,结道。

但四个人再次发现了设计者所犯的错误。“他们显然读过文献,知道如果加上一个寄存器,就可以改进随机数的任意性,但他们还是错了。”因为这样的话,扑克牌就是这样被决定的:第一个生成器的数字加上第二个生成器的数字。

对第二个生成器进行调用的正确方式是使用迭代——当第一个生成器工作完后,挑选出了一张扑克牌,第二个生成器对此进行迭代,从而改变扑克牌的花式或点数。但设计者们并没有那么做,他们仅仅让第二个生成器在每局开始的时候迭代一次,产生一个数字,然后第一个生成器产生的每一个数字都依次加上这个数,这样屏幕上的扑克牌就产生了。

对Alex来说,两个寄存器的使用是一种挑战,“涉及到密码学的研究”,他知道那项技术有点像加密信息中使用的技术,他从前也学过一些这方面的知识,但还不足以使他攻克这个难题,所以他开始“造访”附近一所大学的图书馆。

如果设计者阅读加密系统方面的书籍时更仔细一点的话,他们就不会犯那样的错误。而且他们应更有效地检测系统,以防备我们的侵袭。

任何一个计算机专业的大学生,如果他明白一段程序欠缺什么了的话,他就能像我们一样写出代码。这当中最令人讨厌的部分是用尽可能快的方法找出算法,最好能够只花几秒钟了解机器的运行情况;反过来如果你对这一切不熟悉的话,可能会要几个小时。

我们真的是不错的程序员,至今我们仍以编程技术为生,我们的抹术不断得到优化。我不认为这样很浅薄。

我记得Norton(在Symantec收购该公司之前)的一个程序员在做Diskreet产品时犯过这样的错误:所做的应用程序允许用户自己创建加密虚拟驱动器。开发人员错误地执行了这段程序——也有可能是故意的——密钥的存储空间由56字节缩减到30字节。联邦政府的数据加密标准用的是56位的密钥,这被认为是不可攻破的。Norton给客户的感觉是他们的数据都是以这个标准进行保护的。因为这个程序员的错误,用户的数据其实仅仅是以30位加密的,而不是56位。即使在今天,仍然可以用蛮力攻击30位的密钥。所有使用这种产品的客户都被一种错误的安全观误导了:黑客总是能用自己的密钥在某个时刻访问到用户的数据。这些家伙在这种机器的程序里发现了同样的错误。

同时,伙计们在编写程序,打算用它在新的目标机器上赚钱。他们一再劝说Alex发明一种不需要跑到公用电话机的方法。这个答案来自于Eudcwmonic Pie上提供的办法:造出一个可穿戴的计算机。Alex设计了一种微型计算机,计算机的微处理器板是由Mike和Marco找到的目录纸板充当,并且与微处理器相匹配的有:一个适合放在鞋里的控制按钮和一个无声震颤器(就像今天手机中普遍用的那种)。他们将这个成果称作“口袋计算机”

“在一个小芯片和很小的存储空间的基础上编写程序,我们得聪明一点”,Alex说道,“我们做了一个漂亮的硬件,它不但适合放在鞋里,而且非常符合‘人机工程’。”(我估计这里的“人机工程”指的是该硬件很小,放在鞋里,人走起来不会一瘸一拐!)