Хорошо, давайте проясним одну вещь: соление не имеет ничего общего с радужными столами. да. Повтори. Соление не имеет ничего общего с радужными столами.
Ну, это не совсем так. Соли используются для предотвращения компромиссов между временем и памятью, амортизируя стоимость атаки одного хэша по сравнению со стоимостью других хэшей.
В случае радужной таблицы использование соли означает, что вся таблица становится недействительной.
Но есть и другие способы аннулирования всей таблицы. К каждому паролю можно добавить статическую строку (которая не является солью). Это победит радужные столы...
Настоящий враг
Настоящий враг здесь — не радужные столы. Настоящий враг — грубая сила. Современные машины настолько быстры при грубом форсировании, что дешевле создать гигантский кластер графического процессора и выполнять расширенный грубый форс, чем хранить достаточно радужных таблиц, чтобы оправдать медленный доступ к диску.
Соль помогает победить брутфорс, потому что она уникальна. Не по паролю. Не на пользователя, а уникально во вселенной (по крайней мере, статистически). Вот почему вы хотите использовать случайное число, а не имя пользователя, адрес электронной почты или что-то предсказуемое.
Опять же, не потому, что мы не хотим предсказуемости. А потому, что мы хотим статистической уникальности. Если злоумышленник атакует два сайта, оба из которых используют имена пользователей в качестве солей, он может амортизировать свои атаки против обоих хэшей одновременно (даже если оба могут использовать разные пароли).
Соли должны быть случайными и для каждого пользователя.
person
ircmaxell
schedule
21.06.2013