Нужны ссылки о том, почему общедоступный доступ к хэшу паролей и соли - это плохая практика.


0

Каковы некоторые опубликованные отраслевые стандарты о том, почему раскрытие хеша пароля и соли являются плохими или плохой практикой с точки зрения безопасности?

Я имею дело с уязвимостью, когда кто-либо может анонимно получить хэш-пароль и сот удаленно. Исправление состоит в том, чтобы использовать безопасный и длинный пароль (12 + символов). Алгоритм хеширования - HMAC-SHA1.

Мне нужны твердые ссылки, почему раскрытие хеша пароля и соли - плохая практика даже с длинным паролем.

  0

Я не уверен, что будут опубликованы стандарты о том, почему НЕ-раскрытие является хорошей вещью. Это будет похоже на регулирование, определяющее, почему нехорошо ударить пальцами молотком. Дело в том, что с хешем и солью можно сделать попытку грубой силы. 12 авг. 132013-08-12 18:09:48

1

Что плохого в раскрытии пароля хэш-соль в том, что она позволяет offline dictionary attacks: с хэш пароля и соли достаточно, чтобы проверить потенциальный пароль, то, по определению, они позволяют злоумышленнику попробуйте пароли на его собственных машинах, ограниченные только количеством ПК (или другого оборудования), которое он может собрать. Это контрастирует с онлайн-атаками словаря, где каждая попытка должна проходить через ваш сервер, и ваш сервер не будет принимать попытки миллиарды паролей в секунду.

Хеширование пароля - second line of defence. Вы не хотите, чтобы злоумышленники получали достаточную информацию для запуска атак со словарным шпионажем; но когда они это делают, вы по крайней мере предпочитаете это, если им придется заплатить полную стоимость атаки, т. е. вы покажете им только пароли хэша, а не сами пароли. Кроме того, вам нужна медленная функция хеша (с миллионами итераций) и соль для предотвращения параллельных атак и других подобных оптимизаций (например, предварительно вычисленных таблиц).

Все это касается защиты паролей, как в «секретных данных, которые человеческие пользователи помнят». Человеческие мозги - это то, что они есть, пароли, как правило, уязвимы для словарных атак. Однако, если вы можете убедить своих человеческих пользователей помнить последовательности из 20 случайных букв (не последовательностей, которые они сами выбирают, но произвольно сгенерированные буквы), то вы можете показать значения хэша, поскольку достаточно случайные пароли находятся вне досягаемости словаря атаки в любом случае - возможно, это уже не пароли, но ключи. Обратите внимание, что это не вопрос длина, но случайность: пароль не является сильным, потому что он длинный, а потому, что он был создан с достаточной случайностью в нем; вам просто нужна длина, чтобы освободить место для случайности.

Если вам нужна ссылка на поразишь неверующие, затем вызвать NIST Special Publication SP 800-118 (до сих пор в виде проекта, но опубликованы, тем не менее), которые, в частности включает в себя эту цитату (из «резюме»):

пароль Атаки на растрескивание можно смягчить, используя сильные пароли , выбирая сильные криптографические алгоритмы и реализации для хэширования паролей и , защищающие конфиденциальность хэшей паролей.

(выделено мной.)


хеширования паролей является сложное искусство. Вы говорите, что используете «HMAC/SHA-1», но HMAC не является хэш-функцией; это алгоритм MAC. MAC-алгоритмы используют ключ . Что вы, , вероятно, означает, что вы используете функцию хэширования пароля, которая была разработана над одним или несколькими вызовами HMAC/SHA-1 в качестве строительного блока. PBKDF2 - такая функция хэширования пароля.Он включает дополнительный параметр, который является номером итераций, и это важно.

См. this answer для подробного обсуждения хэширования пароля, его теории и практики.


0

Во-первых, HMAC-SHA1 не является хорошим алгоритмом хэширования пароля. Используйте что-то вроде bcrypt, scrypt или PBKDF2.

В этом случае абсолютно тривиально начинать взламывать пароли в вашей системе. Полностью случайный пароли не менее десяти символов могут быть безопасными, но любой пароль, который короче или сильно использует шаблоны или слова, упадет за считанные минуты. Современные взломщики паролей имеют чрезвычайно сложные механизмы, которые могут использовать базовое слово, такое как «пароль» и хеш, каждая правдоподобная перестановка («p4 $ wOrd!», «PaSs; WORD1234» и т. Д.) За долю секунды. Некоторые последние системы даже превзошли скорости 348 billion hashes per second.

Вот почему ваш текущий алгоритм недостаточно хорош, и почему это абсолютно критическая уязвимость, которую атакующие могут выявить ваши соли и хеши. Хэш-алгоритмы, специфичные для конкретного сервера (обычно называемые «медленными хэшами»), помогают победить такие машины с взломом паролей с ускорением GPU, требуя больших усилий для вычисления одного пароля. Например, PBKDF2 представляет собой схему, в которой используется повторный HMAC. Выполняя 100 000 или более итераций, вы замедляете эти машины для взлома паролей тем же фактором. Теперь вам может понадобиться полсекунды, чтобы проверить пароль пользователя в законных случаях, но злоумышленникам теперь нужны дни, чтобы перечислить даже самые распространенные пароли.

Алгоритмы, такие как scrypt, идут еще дальше, требуя конфигурируемого объема памяти для генерации хэша. Если вашим паролям требуется вычислить 128 МБ памяти, это будет едва заметным стандартным webapp. Но для взлома паролей потребовалось бы очень большое количество памяти для одновременного вычисления хэшей (так как большинство из них достигает такой большой скорости).

В вашей нынешней ситуации должен закрыть уязвимость, которая позволяет людям выявлять соли и хеши. Существующие пароли следует считать скомпрометированными, если они не могут быть однозначно доказаны иначе. Вы должны перенести свои пароли на один из рекомендуемых алгоритмов хеширования, как только это станет практичным. Вы можете просто составить существующие хэши с новым алгоритмом, поэтому дайте h = HMAC-SHA1(password, salt), вычислите h' = bcrypt(h) и используйте h' в качестве аутентификатора.

  0

Поставщик уже заявил, что они не собираются исправлять уязвимость. Уязвимостью является «IPMI 2.0 RAKP Authentication Remote Password Hash Retrieval» Мне нужны официальные источники или ссылки для дальнейшего обоснования того, что решение поставщика использовать длинный пароль недостаточно. 12 авг. 132013-08-12 19:53:58

  0

Я продолжаю удивляться, кто эти люди, которые продолжают разрабатывать отраслевые спецификации, которые содержат тривиально предотвратимые проблемы безопасности. 12 авг. 132013-08-12 20:06:46


0

Если все пароли длинные и действительно случайные, то это неплохо. Пока все хэши, которые могут протекать, не уязвимы для атаки на основе текущей производительности хэширования, тогда нет никаких проблем. Тем не менее, вы не можете гарантировать, что пользователи не будут делать глупые вещи (и вы в значительной степени МОЖЕТЕ гарантировать некоторую волю.)

В целом, атаки в оффлайне против хэшей очень быстрые, поэтому требуемая сложность становится очень высокой, очень быстро. Если единственным вариантом является атака в Интернете, то может применяться ограничение скорости, которое помогает предотвратить атаки против входа в систему и значительно повышает безопасность, однако для хэшей все же полезно быть устойчивым, если просочиться.

Я не знаю каких-либо отраслевых документов, но простой ответ заключается в том, что люди, использующие творчески глупые вещи в качестве своего пароля, являются причиной того, что это плохо. P @ ssw0rdPa $sw @ rdpAs$ wOrd не безопасен, даже если он длинный.