Глава 10. Генерация случайных чисел
время нажатия клавиши. Печатаемые данные также нельзя назвать случай-
ными, даже если пользователь просто нажимает первые попавшиеся клави-
ши. Что еще хуже, всегда существует угроза того, что у злоумышленника
имеется дополнительная информация о “случайных” событиях. Звуки, изда-
ваемые при нажатии клавиш, можно записать на микрофон, что позволит
определить точное время нажатия каждой клавиши. Будьте очень осторож-
ны, оценивая количество энтропии, которым обладают те или иные данные.
В конце концов, мы имеем дело с очень умным и активным злоумышлен-
ником.
Существует множество физических процессов, которые ведут себя слу-
чайным образом. Например, согласно законам квантовой физики поведение
некоторых частиц является полностью случайным. Было бы очень хорошо
измерить это случайное поведение, чтобы затем использовать его в своих
системах. Технически это, конечно же, возможно. К сожалению, у злоумыш-
ленника и здесь найдутся свои подходы. Во-первых, он может попытаться по-
влиять на поведение квантовых частиц, чтобы оно стало предсказуемым. Во-
вторых, он может попросту украсть наши измерения. Если злоумышленнику
удастся заполучить измерения, тогда данные все равно останутся случайны-
ми, но, с его точки зрения, не будут обладать какой-либо энтропией. (Если
злоумышленник знает точное значение, то для него это значение не обладает
энтропией.) Вероятно, злоумышленник способен создать сильное радиоизлу-
чение, которое будет смещать показания наших приборов. Мы даже можем
описать несколько атак, использующих законы квантовой физики. Напри-
мер, для нарушения случайности, которую мы пытаемся измерить, может
быть использован парадокс Эйнштейна–Подольского–Розена [5, 11]. Анало-
гичные соображения применимы и к другим источникам энтропии, таким,
как тепловые помехи резистора или туннельный эффект в полупроводнико-
вом стабилитроне.
Некоторые современные компьютеры обладают встроенными генератора-
ми истинно случайных чисел [41]. Это, несомненно, дает им значительные
преимущества перед использованием отдельных генераторов, поскольку су-
щественно затрудняет проведение некоторых типов атак. Тем не менее такой
генератор случайных чисел все еще будет доступен операционной системе, по-
этому для получения безопасных данных приложение должно ей полностью
доверять.
10.1.1
Проблемы использования истинно случайных чисел
Помимо сложности получения истинно случайных данных, существует
еще несколько проблем их использования на практике. Во-первых, они не
всегда доступны. Если случайные числа генерируются на основе времени на-
10.1. Истинно случайные числа
179
жатия клавиш, вы не получите никаких данных, когда пользователь вдруг
прекратит печатать. Это может стать настоящей проблемой, если ваше при-
ложение является Web-сервером, установленным на компьютере, у которого
нет клавиатуры. Еще одна схожая проблема связана с тем, что объем истинно
случайных данных всегда ограничен. Если вам понадобится большое количе-
ство случайных данных, придется подождать, пока они будут сгенерированы,
что совершенно неприемлемо для многих приложений.
Вторая проблема состоит в том, что источники истинно случайных дан-
ных, такие, как физические генераторы случайных чисел, могут сломаться
или отказать. Иногда поведение генератора может стать предсказуемым. По-
скольку генераторы истинно случайных чисел довольно замысловаты, они
могут выходить из строя гораздо чаще, чем классические компоненты ком-
пьютера. Если ваша система напрямую зависит от генератора истинно слу-
чайных чисел, вам крупно не повезет в случае отказа последнего.
И наконец, третья проблема — это сложность оценки энтропии, которая
может быть извлечена из конкретного физического события. Если только
в качестве генератора случайных чисел не используется выделенное, специ-
ально спроектированное для этого оборудование, определить количество по-
лучаемой энтропии будет крайне сложно. Мы еще вернемся к этому вопросу
немного позднее.
10.1.2
Псевдослучайные числа
Альтернативой истинно случайным числам являются так называемые
псевдослучайные числа. В действительности псевдослучайные числа вообще
не являются случайными. Они вычисляются с помощью детерминированно-
го алгоритма на основе некоторого
начального числа (seed)
. Зная начальное
число, можно предсказать все последующие псевдослучайные числа. Класси-
ческие
генераторы псевдослучайных чисел (pseudorandom number generator —
PRNG)
никак не защищены от умного злоумышленника. Они разрабатыва-
лись для устранения статистических искажений, а вовсе не для того, чтобы
отражать атаки. Второй том книги Дональда Кнута (Donald Knuth)
The Art
of Computer Programming
[54] содержит подробное описание генераторов слу-
чайных чисел, но все они анализируются только на предмет статистической
случайности. Мы должны исходить из предположения, что наш противник
знает алгоритм, используемый для генерации случайных чисел. Может ли
злоумышленник, зная несколько псевдослучайных чисел, сгенерированных
алгоритмом, предугадать некоторые биты будущих (или прошлых) случай-
ных значений? Для большинства классических генераторов псевдослучайных
чисел ответ может быть положительным. Для криптографических генерато-
ров псевдослучайных чисел это недопустимо.
180
Достарыңызбен бөлісу: |