Генератор случайных чисел в Windows очень далек от случайного

Генератор случайных чисел в Windows очень далек от случайного

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

Группа ученых-криптографов из университета Хайфы (Израиль) под руководством Бенни Пинкаса (Benny Pinkas) нашла уязвимость в функции CryptGenRandom, отвечающей за генерацию случайных чисел в Windows 2000. Вполне вероятно, что некорректная работа функции унаследована операционными системами Windows XP и Vista.

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

Криптографам также удалось выявить, что генератор начинает выдавать хоть сколько-нибудь случайные результаты только после того, как выдаст первые 128 Кб чисел тому процессу, который их запрашивает.

В принципе, проблема того, что генераторы случайных чисел в основном являются псевдо-генераторами, известна давно и трудно было бы ожидать от Windows более продуманной реализации этой функции. Недостаток здесь скорее в том, что CryptGenRandom используют многие протоколы и программы, связанные с безопасностью (в частности, создание ключей SSL). Получив доступ к генератору случайных чисел, злоумышленникам будет легче взламывать защитные механизмы, которые на него опираются.

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

Мы клонировали интересный контент!

Никаких овечек — только отборные научные факты

Размножьте знания — подпишитесь