Соли паролей: добавление и добавление

Я только что посмотрел на реализацию хеширования паролей в Django и заметил , что он добавляет соль , поэтому хеш создается как sha1 (salt + пароль) , например.

На мой взгляд, соли хороши для двух целей

  1. Предотвращение поиска в радужных таблицах

    Хорошо, добавление / добавление соли не имеет значения для радужных таблиц .

  2. Защита от перебора и атак по словарю

    Вот о чем мой вопрос. Если кто-то хочет взломать единственный пароль из украденной базы данных паролей, ему нужно попробовать множество паролей (например, словарные слова или [A-Za-z0-9] перестановки).

    Предположим, мой пароль - "abcdef" , соль является «солью», и злоумышленник пробует все пароли [az] {6}.

    С добавленной солью необходимо вычислить хэш («соль») , сохранить состояние алгоритма хеширования и затем продолжайте с этой точки для каждой перестановки. То есть для прохождения всех перестановок потребуется 26 ^ 6 операций копирования-хеш-алгоритма-структуры-состояния и 26 ^ 6 операций хеширования (перестановка [az] {6}) операций. Поскольку копирование состояния алгоритма хеширования происходит чертовски быстро, соль почти не добавляет здесь сложности, независимо от ее длины.

    Но с добавленной солью злоумышленник должен вычислить хэш (перестановка [az] {6} + соль) для каждого перестановка, приводящая к 26 ^ 10 хеш-операциям. Очевидно, что добавление солей добавляет сложности в зависимости от длины соли.

Я не верю, что это связано с историческими причинами, потому что Django довольно новый. Так какой же смысл в добавлении солей?

10
задан BoltClock 13 November 2010 в 09:37
поделиться