Доступен crypt blowfish 1.1 с устранением уязвимости, упрощающей подбор некоторых паролей

22 июня 2011 года

В библиотеке crypt_blowfish 1.1, используемой для хэширования паролей в таких дистрибутивах, как ALT Linux, Owl и SUSE, а также для генерации хэшей в PHP 5.3.0+, исправлена ошибка, присутствовавшая в коде на протяжении 13 лет и заметно снижавшая стойкость паролей, содержащих восьмибитовые символы. Проблема была выявлена в процессе тестирования эффективности John the Ripper - разработчики тестового комплекта обратили внимание, что для генерируемого с одними и теми же параметрами пароля, хэш функция отличается для реализаций bcrypt в OpenBSD и библиотеке crypt_blowfish.

Проблема проявляется в crypt_blowfish при использовании в тексте пароля восьмибитовых символов, например, русских букв. Примерно 30% паролей, содержащих один восьмибитовый символ теряют при генерации хэша от одного до трех предыдущих символов исходного пароля. Например, если используется пароль из 11 символов, среди которых один символ с установленным восьмым битом, то результирующий хэш может быть построен на основании только 8 символов. Чем больше восьмибитовых символов используется в пароле, тем больше вероятность снижения стойкости хэша. Проблема безопасности проявляется только для паролей нечетной длины и паролей длиной от 20 символов (в том числе для четных длин).

На практике пароли, содержащие не ASCII символы, встречаются довольно редко, а те, что используются, как правило имеют большую длину или усложнены. Что частично компенсирует возможный ущерб от наличия данной ошибки и отчасти объясняет то, что проблема оставалась незамеченной более 10 лет. При установке crypt_blowfish 1.1 следует иметь в виду, что ранее созданные некорректные хэши после обновления перестанут совпадать проверяемыми корректными хэшами, что потребует от некоторых пользователей изменения пароля для продолжения работы. В качестве запасного варианта предусмотрена возможность замены стандартного префикса хэша "$2a$" на "$2x$", при сверке которого будет использован старый метод генерации хэша.

Помимо исправления ошибки в crypt_blowfish 1.1 добавлен код быстрого само-тестирования функции хэширования при каждом вызове, в том числе на 8-битных символах. Затраты на такое тестирование - около 0.6% при типичных настройках ("$2a$08").

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Доступен crypt_blowfish 1.1 с устранением уязвимости, упрощающей подбор некоторых паролей», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.