Поскольку в казино есть лишь небольшое число японских автоматов, наша команда обратила свое внимание на гораздо более распространенные американские автоматы. Они приобрели его и разобрали уже испытанным путем и обнаружили, что генерация случайных чисел в нем происходит гораздо более сложным образом: машина одновременно использует два генератора, работающих совместно друг с другом. «Программисты, готовившие этот автомат, были уже осведомлены о возможностях жульничества с простыми генераторами», — пришел к выводу Алекс.

Тем не менее, и в этом случае разработчики автомата сделали фатальную ошибку. «Они прочли статью, в которой говорилось, что вы повысите уровень случайности чисел, если используете второй генератор, но они воплотили идею неправильным образом». Чтобы определить выбрасываемую карту, они складывали число из первого генератора с числом из второго генератора.

Правильно было бы менять число из второго генератора после каждой карты. Конструкторы автомата не сделали этого; они меняли его только перед выбросом каждой пятерки карт, так что к выброшенному числу первого генератора для каждой карты из пятерки прибавлялось одно и то же число из второго генератора.

Для Алекса использование двух генераторов было своеобразным криптографическим вызовом: он вспомнил, что аналогичный прием иногда используется при шифровании текстов. Однако он не помнил, как надо действовать в подобных случаях и для повышения квалификации стал ходить в библиотеку соседнего университета.

«Если бы создатели программ для автоматов читали книги по криптографии более тщательно, они бы не сделали этой ошибки. Кроме того, они более внимательно проверяли бы свою систему на возможность взлома и не оставили нам лазейки.

Любой компьютерный инженер смог бы написать программу и сделать то, что сделали мы, поняв, что от него требуется. Самой сложной частью работы было создание быстродействующего алгоритма, чтобы всего за несколько секунд вы могли понять, что происходит; если создавать такой алгоритм недостаточно тщательно, он мог работать несколько часов перед тем, как выдать решение.



15 из 317