07.11 // Нестойкость в ГПСЧ Windows позволяет быстро вскрывать ключи и SSL-соединения
Израильские учёные Leo Dorrendorf, Zvi Gutterman и Benny Pinkas опубликовали работу "Cryptanalysis of the Random Number Generator of the Windows Operating System".
Им удалось дизассемблировать и трассировать закрытый код ОС Windows, содержащийся в библиотеках ADVAPI32.DLL, RSAENH.DLL и KSECDD.SYS и полностью восстановить исходный код генератора псевдослучайных чисел ОС Windows без какой-либо помощи со стороны компании Microsoft и практически полном отсутствии документации по этой теме. WRNG используют многочисленные приложения через вызов функции CryptGenRandom, также он используется в WinCryptoAPI.
В работе также приводятся сравнения с LRNG – реализацией ГПСЧ в Linux, в которой также были ранее обнаружены многочисленные уязвимости, но из-за особенности архитектуры ОС, практическое значение их оказалось не так велико.
Генератор Windows использует модифицированную функцию SHA-1 и потоковый шифр RC4. Не используя каких либо уязвимостей в самом шифре RC4, исследователи обнаружили многочисленные ошибки в дизайне генератора и его несоответствие элементарным и давно известным требованиям, которым должны отвечать такие генераторы.
Генератор запускается не на уровне ядра, а на уровне пользовательских процессов, отдельно для каждого процесса. Это даёт некоторые преимущества: если будет извлечено состояние генератора для одного процесса, то другие процесы не пострадают. Но это также облегчает к нему доступ (достаточно получить значение адресного пространства для определённого приложения) и делает возможным, получив значение из одного сеанса, вычислить другие. В некоторых случаях доступ вредоносного кода к компьютеру, необходимый для проведения такой атаки, может быть незначительным, а уязвимости в приложениях, раскрывающие состояния генератора, имеют много шансов остаться незамеченными.
Атака типа forward security (предсказание предыдущих состояний генератора) составляет 223 операций (всего несколько секунд на персональном компьютере), а атака на backward security (предсказание последующих состояний) тривиальна и имеет сложность всего O(1)
Это связано с тем, что обновление состояния генератора происходит не при каждой итерации, а только после использования выхода в 128 кбайт. Такое большое значение может быть израсходовано приложением зачастую лишь спустя несколько дней после запуска. Например, Internet Explorer обновит своё состояние PRNG только спустя 600-1200 SSL-сессий. Это очень большое временное окно для атаки. Если в Linux состояние генератора обновляется почти ежесекундно (что совместно с реализацией на уровне ядра и защитой от прямого чтения состояния пользовательскими процессами делают уязвимости в Linux некритичными – приложения могут читать только выход генератора), то в Windows оно может оставаться неизменным в течении многих дней или не успевать обновляться вообще.
Исследователи рекоммендуют полностью переработать дизайн генератора, убрать из него функцию на основе RC4, которая не обеспечивает forward security и вообще не должна применяться в ГПСЧ. ОС Windows Vista исследованию не подвергалась, но учёные предполагают, что данный дизайн генератора сохранён и в ней.
Источник: Cryptology ePrint Archive
комментариев: 11558 документов: 1036 редакций: 4118
комментариев: 9796 документов: 488 редакций: 5664
комментариев: 1060 документов: 16 редакций: 32
комментариев: 9796 документов: 488 редакций: 5664
может ещё предложишь обновлятся быдлу до vista за $?
хотя с видузоида станется.
OSS по-любому объективно рулит как бы не было в начале в конце всё равно всё выправится в идеал а у проприетарщины нет такого запаса прочности.
комментариев: 371 документов: 19 редакций: 20
И после этого они еще имеют наглость называть свой BitLocker самой безопасной системой шифрования дисков...
комментариев: 9796 документов: 488 редакций: 5664
комментариев: 1060 документов: 16 редакций: 32
комментариев: 7 документов: 1 редакций: 2
Ну и что делать дырки в SSL затыкать или мотать из страны, атомные станции под виндой, это...
мне уже страшно...
комментариев: 11558 документов: 1036 редакций: 4118
И, кстати, не обязаны ли такие структуры использовать сертифицированную российскую криптуху типа крипто-про, где совсем другой ГСЧ?
В исходном сообщении говорится несколько больше, чем в этой статье. И самое главное – чтобы получить случайные данные, выделенные для конкретного процесса, необходим доступ к контексту процесса. Что уже в любом случае даст возможность получить (почти) любые данные процесса, и взлом RNG становится не нужен.
Так что же вы все подняли вой?
комментариев: 9796 документов: 488 редакций: 5664
Это оправдание использовать плохой PRNG? А если легальный пользователь SSL сервера сможет с помощью небольшой уязвимости, которую раньше никто бы и уязвимостью не посчитал, поскольку думали, что генератор стойкий, получить большое количество ключей предыдущих сеансов, использовавшихся другими пользователями?
Что можно, да получив определённый доступ, сохранив при этом состояние генератора, но доступ даже не администраторский и не на уровне ядра, расшифровать данные, спустя какое-то время, когда какой-то файл или криптоконтейнер уже закрыт, SSL-сессия завершена?
У MS есть возможность отзывать подпись драйверов в висте. Обновления могут быть те ещё. Вообще, контроль извне над объектами стратегических отраслей должно прекратить.