Случайные числа имеют ключевое значение в криптографии. Например, алгоритмы для создания электронных подписей используют именно такие числа для генерации криптографических ключей. При этом требования к этим числам очень строгие, так как безопасность системы шифрования данных полностью зависит от их качества. Хотя получить настоящие случайные числа непросто, это возможно. Поэтому чаще всего используются генераторы псевдослучайных чисел — алгоритмы, которые создают последовательности чисел, элементы которых независимы друг от друга и следуют определенному распределению.
Однако есть и компании, которые подходят к задаче по-другому. Они используют генераторы настоящих случайных чисел (true random numbers), и это не просто программы, а специальные устройства или даже такие экзотичные вещи, как лавовые лампы. Например, компания Cloudflare начала использовать подобные устройства с 2017 года. В течение последних пяти лет безопасность шифрования данных, передаваемых через её инфраструктуру, обеспечивается благодаря лавовым лампам, маятникам и процессу радиоактивного распада урана. Подробнее об этом — далее.
Итак, несмотря на свою надежность, генераторы псевдослучайных чисел не могут обеспечить абсолютно случайную последовательность. Компьютеры по своей природе не способны генерировать числа, которые были бы совершенно случайными, так как количество состояний системы ограничено. Это, хотя и очень большое, но не бесконечное количество, что означает, что рано или поздно система начнёт повторяться и возникнут паттерны. Такие повторяющиеся схемы представляют собой уязвимость для криптографической системы, основанной на псевдослучайных числах. Да, поймать и проанализировать такой паттерн крайне трудно, особенно если генератор качественный. Но теоретически это возможно, что делает системы на псевдослучайных числах потенциально уязвимыми.
Процесс генерации псевдослучайных чисел во многом зависит от ключа. Генератор можно представить как конечный автомат с тремя основными компонентами:
• Память, которая хранит информацию о текущем состоянии генератора. • Выходная функция, которая генерирует бит последовательности в зависимости от состояния. • Функция перехода, которая определяет следующее состояние генератора.
Существует множество генераторов псевдослучайных чисел, только известных их несколько тысяч. Многие компании разрабатывают свои собственные криптостойкие алгоритмы для генерации псевдослучайных чисел. Однако, несмотря на всю их надежность, существует вероятность того, что злоумышленник может разобрать последовательность чисел и получить доступ к данным.
Для компаний, таких как Cloudflare, где недопустимы даже теоретические риски взлома, приходится искать альтернативы генераторам псевдослучайных чисел. Хорошим решением становятся физические источники истинной случайности, такие как шумы детекторов радиоактивного распада, космическое излучение или даже визуальные паттерны, например, «лавовые» формы в лавовых лампах. Эти устройства становятся источниками истинных случайных чисел, и их использование в криптографии делает системы теоретически безопасными.

Как уже упоминалось, речь идет о лавовых лампах, которые многим знакомы. Это стеклянная ёмкость с прозрачной жидкостью и полупрозрачным парафином. Внизу находится источник тепла, обычно это лампочка накаливания, которая нагревает жидкость и парафин, в результате чего они поднимаются и опускаются. Те, кто видел такую лампу, наверняка знают, насколько она необычно выглядит.
Особенность этих ламп в том, что формы парафиновых «капель» никогда не повторяются, поскольку на них влияет огромное количество внешних факторов, взаимодействующих друг с другом. Это похоже на снежинки, которые, как считают, всегда уникальны, независимо от того, сколько их в облаке.
Использование изображений с таких ламп — отличный способ генерировать настоящие случайные числа. Система распознавания изображений передает данные в криптографически стойкий генератор псевдослучайных чисел, который использует компания, обеспечивая таким образом очень надежное шифрование трафика.
В офисе Cloudflare есть целая стена, на которой расположены 128 лавовых ламп. Эту конструкцию называют «стеной энтропии», и не зря: она и является источником энтропии. Камера направлена на стену и делает фотографии с определенным интервалом. Каждый пиксель на фото получает числовое значение, из чего затем генерируются случайные числа. Эти 128 ламп позволяют получать абсолютно случайные 128-битные числа. На процесс формирования чисел влияет множество факторов, таких как тень или даже случайный посетитель, проходящий мимо стены (если вы когда-то оказались рядом, можете гордиться тем, что стали частью системы шифрования данных).