Как лучше засолить и хранить соль?

Я читал о солении паролей, но это может показаться немного странным. Но как мне хранить и обезопасить соль. Например, в архитектуре с несколькими шинами я использую GUID клиентской машины для создания своей соли, тогда пользователь ограничивается одной машиной, но если я использую случайную соль, ее нужно где-то хранить. Несколько дней назад я видел пример приложения, в котором хеш и соль генерировались в клиентской системе всякий раз, когда создавался новый пользователь, а затем сольный пароль и хэш передаются на сервер, где они хранятся на сервере SQL. Но если я буду следовать этому методу и база данных будет скомпрометирована, пароли и значения соли для каждого пароля будут доступны человеку X. Итак, должен ли я снова солить/шифровать пароли и полученную соль на стороне сервера? Как лучше солить?


person Neel    schedule 18.11.2009    source источник


Ответы (2)


Хранение соли в незашифрованном виде в базе данных рядом с хешированными паролями не является проблемой.

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

См. это отличный пост на эту тему от Томаса Птачека.

отредактируйте @ZJR: даже если бы соли были общедоступными, они все равно лишили бы преимущества радужных таблиц. Когда у вас есть соль и хешированные данные, лучшее, что вы можете сделать, чтобы отменить это, — это грубая сила (при условии, что хеш-функция криптографически безопасна).

редактировать @n10i: См. статью в Википедии для безопасной хеш-функции. Что касается размера соли, популярная реализация bcrypt.gensalt() использует 128 бит.

person Wim Coenen    schedule 18.11.2009
comment
Я бы сказал, что цель соли не в том, чтобы быть общедоступной. - person ZJR; 18.11.2009
comment
не могли бы вы объяснить, что хэш-функция криптографически безопасна. извините, я новичок в криптографии. также в своем ответе вы упомянули достаточно долго, чтобы отказаться от использования радужных таблиц, какой длины должна быть соль, чтобы быть достаточно длинной? - person Neel; 18.11.2009

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

Salt Generation и программное обеспечение с открытым исходным кодом

person Jeremy Powell    schedule 18.11.2009