Радужная таблица — это ресурс, используемый для взлома криптографических хеш-функций с целью обнаружения паролей в открытом виде с помощью предварительно вычисленной базы данных аутентификации . Решения на основе радужных таблиц используют алгоритм для быстрого поиска информации, необходимой для взлома хешей паролей. Хотя современные алгоритмы добавления соли и хеширования паролей в значительной степени сделали радужную таблицу неактуальной, существует множество приложений, которые не используют такие легкодоступные инструменты и вместо этого полагаются на хешированные пароли из-за лени или невнимания к важным деталям.
Идея использования радужных таблиц и других методов взлома хэшей исходит из использования хэшей паролей в базах данных аутентификации. Любая система, использующая пароли для аутентификации, должна хранить эти пароли в той или иной форме. В худшем случае разработчик приложения хранит пароли в виде открытого текста, что делает пароли всех зарегистрированных пользователей крайне уязвимыми для несанкционированного доступа со стороны хакеров или даже внутренних системных администраторов. Хотя эта порочная практика известна уже несколько десятилетий, она до сих пор широко распространена в онлайн-приложениях.
Некоторые программисты, хоть и сомнительно, но делают это с некоторой бессмысленностью, вычисляя однократный хеш пароля. Существуют распространённые алгоритмы хеширования, которые преобразуют пароли в нечто, что может показаться случайными строками символов, но на самом деле их очень легко реверсировать с помощью радужной таблицы. При аутентификации в системе вводимый вами пароль хешируется с использованием того же алгоритма, который использовался для хранения пароля в базе данных паролей. Если хеш-значения совпадают, вы успешно аутентифицированы. Вот тут-то и пригодится радужная таблица.
Радужная таблица хранит все односторонние хеши открытых паролей длиной от 1 до 7 или, возможно, 8 символов. (Для хранения 8-символьной радужной таблицы для простого алгоритма хеширования потребуется до 32 петабайт места в базе данных!). Когда хакер похищает кэш с простыми хешами паролей, он может найти значение хеша в радужной таблице, чтобы найти открытый пароль.
С появлением возможности добавления соли в пароли до 32 символов, радужные таблицы для выполнения таких запросов больше не существуют (Источник: Rainbow Tables are Dead ). Что еще важнее, многие стандартные бинарные файлы выполняют итеративное хеширование паролей. Это когда пароль с солью хешируется снова и снова заданное количество раз, и окончательное значение хеша, скажем, 764-й хеш исходного пароля с солью, сохраняется в базе данных для последующего сравнения при аутентификации в приложении. Радужные таблицы не могут взломать эти пароли.
Когда хакеры крадут кэш паролей, они могут быстро определить, были ли пароли «солеными» и хешированы N раз, используя радужную таблицу для поиска 100 самых популярных паролей. Если совпадение найдено, они могут выполнить обратный анализ и определить, были ли программисты ленивы и не добавили ли они «соль» к паролям, не хешировали их итеративно, или и то, и другое. Слишком часто разработчики пропускали эти важные шаги, и теперь хакеры могут получить ваши пароли, проведя их обратную разработку с помощью простой радужной таблицы.
Радужные таблицы — это быстрый и эффективный способ взлома паролей без соли и с одним хэшем. Если вы разрабатываете приложение для малого и среднего бизнеса, обязательно поинтересуйтесь, как хранятся пароли. Спросите разработчика, каков размер его SALT (8 — это мало, 32 символа достаточно), а затем спросите, сколько итераций он делает с паролями, прежде чем сохранить хэш. LastPass хэширует пароли более 100,000 1000 раз для мастер-пароля. Для вашей организации это может быть избыточно, но для этого достаточно нескольких сотен-тысяч.
К распространенным функциям добавления соли и хеширования относятся: « Argon2 , scrypt , bcrypt и PBKDF2 ».
Что бы вы ни делали, относитесь к этому как к критическому требованию при разработке вашего приложения. Если вы не можете встроить единый вход (SSO) в схему паролей и вам необходимо хранить хеши паролей, вам необходимо добавить соль и итеративно хешировать данные в базу данных паролей, используя инструменты, упомянутые в этой статье.
источники:
Дополнительная литература:
Как защитить свой сайт от утечек данных
Шифрование, хеширование и соль: в чем разница
Связанные термины:
Узнавайте и делитесь последними тенденциями, советами и передовыми методами в области кибербезопасности, а также новыми угрозами, на которые следует обратить внимание.
Автор: Кэти Бокетти | Редактор: Крейг Тейлор | Редакторская работа Крейга Тейлора: Мы это знаем уже давно...
Читать далее
Автор: Кэти Бокетти | Редакционная статья: Крейг Тейлор | Редакционная статья Крейга Тейлора: CAPTCHA должна проверять, является ли...
Читать далееБолее пристальное внимание к человеческим рискам с помощью позитивного подхода, который превосходит традиционное тестирование на фишинг.
