Книга: Шанс есть! Наука удачи, случайности и вероятности
Назад: Глава 6. Заставим случай работать
Дальше: Установить местонахождение

Участвуйте в технолотерее

Начнем разговор о практическом применении случайности с проблемы (и возможности) генерирования случайных чисел. Снова выступает неугомонный Майкл Брукс.

 

Мадс Хаар не питает по этому поводу никаких сомнений. «Генерация случайности – не та задача, которую следует поручать людям», – уверен он.
Что ж, он нас не удивил. Специалист по информатике из дублинского Тринити-колледжа, Хаар – создатель популярного онлайнового генератора случайных чисел (www.random.org). Впрочем, он в чем-то прав. «Монтажная схема» человеческого мозга устроена так, чтобы распознавать и создавать осмысленные узоры. Весьма ценное качество, если вы живете в саванне и главное для вас – замечать хищников, прежде чем они сами вас заметят. Но оно начинает мешать, когда нам нужно мыслить случайным и непредсказуемым образом. Хотя мы можем – до некоторой степени – научиться рандомизации, у нашего мозга есть в этом смысле предел. А жаль, сокрушается Хаар: умение порождать истинную случайность – полезный инструмент.
Случайные числа используются в криптографии, информатике, дизайне и многих других сферах. Наша неспособность «рандомизировать как следует» означает, что обычно мы вынуждены делегировать эту обязанность компьютерам. Но когда полагаешься на внешние источники случайности, это приводит к своим проблемам. К примеру, первые игральные кости для гаданий и забав представляли собой шестигранные кубики, сделанные из задней части овечьего копыта, с номерами, врезанными в грани. Эта форма позволяла одним номерам выпадать чаще, чем другим, что давало серьезное преимущество тем, кто понимал свойства таких костей.
Подозрения насчет надежности генераторов случайных чисел окружают и современные аналоги древнего кубика – кости для казино, рулеточное колесо, лотерейные шары. Но именно в Интернете такая надежность действительно важна. Генерирование цепочек случайных чисел лежит в основе не только азартных игр или воспроизведения на вашем айфоне песен в случайном порядке: такие процессы позволяют создавать неугадываемые ключи, используемые для шифрования деликатной цифровой информации. «Не думаю, чтобы большинство отдавало себе отчет в том, насколько важную роль играют случайные числа в обеспечении безопасности наших данных», – замечает Хаар.
Для этого требуется не только программирование. Нельзя просто дать компьютеру какие-то правила создания случайных чисел: тогда они не будут случайными. Вместо этого можно использовать некий алгоритм для «посева» результатов, выглядящих случайными, на основе меньшего количества чисел на входе, носящих непредсказуемый характер. К примеру, используйте текущую дату и время для того, чтобы определить, какие по порядку случайные цифры взять из случайной цепочки – скажем, из числа π. И дальше действуйте на этой основе. Проблема в том, что такие «псевдослучайные» числа ограничены входящими данными и спустя какое-то время приобретают тенденцию давать повторы неслучайного характера, и эти закономерности можно вычленить, если вы имеете под рукой достаточное количество таких последовательностей.
Альтернативный путь – подключить ваш компьютер к какому-нибудь источнику физической, «истинной» случайности. В 1950-е годы Почте Великобритании понадобился способ генерации случайных чисел в промышленных масштабах – чтобы выбирать победителей в лотерее Premium Bonds. Эта работа легла на плечи компьютера «Колосс», первого в своем роде: его создали во время Второй мировой войны для взлома шифров, используемых войсками нацистской Германии. И вот теперь разработчики сделали ERNIE (Electronic Random Number Indicator Equipment – Электронный индикатор случайных чисел), систему, где хаотические траектории электронов, проходящих по трубкам с неоном, использовались для генерации электронных импульсов, случайных по длительности и применяемых для «посева» случайного числа.
Сегодня действует уже четвертая версия ERNIE, куда более простодушная: устройство генерирует случайность на основе термического шума транзисторов. Многие современные приложения используют схожий источник, формируемый на основе генераторов, встроенных в микросхемы (примеры – RdRand компании Intel или Padlock компании Via). Генератор Хаара получает свою исходную последовательность случайных чисел из атмосферных процессов, которые от природы обладают большой статистической «шумностью».
Но остаются две проблемы. Во-первых, располагая достаточными вычислительными мощностями, всякий может (во всяком случае, теоретически) реконструировать процессы классической физики, породившие наши случайные числа. Во-вторых, и это уже более практическое соображение, генераторы случайных чисел, основанные исключительно на таких вот физических процессах, зачастую просто не могут выдавать случайные числа с требуемой быстротой.
Многие системы (например, платформы на базе Unix, используемые компанией Apple) обходят первую проблему, сочетая генераторы случайности, встроенные в микросхемы, и содержимое «энтропийного пула», заполненного случайными элементами иного происхождения. Такой пул может иметь в своей основе все, что угодно, – от термического шума в устройствах, подключенных к данному компьютеру, до произвольных интервалов времени между нажатиями на клавиши пользователем. Затем эти составляющие объединяют с помощью так называемой процедуры хеширования, дабы сгенерировать одно случайное число. Хеширование – математический эквивалент размешивания чернил в воде: по числу, которое выдает на выходе эта процедура, невозможно определить, каков был набор данных на входе. Во всяком случае, такие методы сейчас неизвестны. Однако это не значит, что они не появятся в будущем. К тому же остается проблема скорости. Как правило, такой обходной путь использует физический генератор случайных чисел лишь как основу для программы, генерирующей куда более обильный их поток.
Но тут мы снова сталкиваемся с проблемой алгоритма. Конкретная природа методов, используемых этими программами, является тайной их правообладателей, но в 2013 году эксперты по информационной безопасности выразили озабоченность по поводу того, что американское Агентство национальной безопасности получило доступ к сведениям о механизме работы одного из таких генераторов (он называется Dual EC DRBG), а значит, в принципе может взламывать коды, полученные с применением этого генератора. Ничего страшного – если вы лишь режетесь в компьютерные игры. А вот если вы совершаете многомиллиардные финансовые транзакции или шифруете секретные документы, гораздо опаснее, если за вами следят.
Подобные затруднения вынуждают некоторых исследователей предположить, что мы вообще никогда не сумеем обзавестись «невзламываемым» источником случайности, пока полагаемся в этом на мир классической физики, которому случайность по большому счету не так уж и присуща: она сводится к тому, кто какой информацией обладает. Для более надежного шифрования мы должны обратиться к квантовой физике, объекты которой, похоже, действительно наделены случайным характером. Чем подбрасывать монетку, можно задаться вопросом, пройдет фотон сквозь серебряное зеркало или же отразится от него. Чем кидать игральную кость, предоставьте электрону выбор из шести цепей, по любой из которых он может пойти. «Как математику, мне нравится, когда случайность несет в себе свое же доказательство, и квантовые случайные числа предоставляют нам именно это, – радуется Кард Миллер из Мичиганского университета в Энн-Арборе. – В этом отношении квантовая физика уникальна».
Криптографические системы, использующие причуды квантовой теории для осуществления более защищенной связи, действительно есть. Но даже они – не последнее слово в информационной безопасности. Извлечение квантовой случайности всегда подразумевает участие кого-то, кто принимает неслучайные решения – насчет оборудования, измерений и т. п. Неидеальная эффективность фотонных детекторов, применяемых в некоторых методах, может позволить неслучайности проскользнуть в процесс как бы с заднего хода.
Каков же выход? Вот один из исследуемых вариантов: может быть, усилить квантовую случайность, чтобы у вас ее всегда было «больше» того допустимого количества, которое позволяет хакерам делать свое черное дело? Теоретически существуют способы преобразовать n случайных бит в 2n бит чистой случайности или «отмыть» биты от всякой корреляции с тем устройством, которое изначально их породило.
Подобная генерация квантовых случайных чисел, избавленная от привязки к конкретному устройству, представляет собой самое последнее достижение в нашем поиске истинной случайности. Есть шанс, что и этот процесс довольно скоро станет реальностью – лишь для того, чтобы кто-нибудь отыскал способ его взломать. Мы имеем дело с человеческим фактором, поэтому не исключено, что вечно будем искать тот генератор случайности, на который сможем положиться.
Назад: Глава 6. Заставим случай работать
Дальше: Установить местонахождение