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