Хранение пароля в базе данных с использованием хеша с солью; не уверен, где и как хранить соль

У меня есть веб-сайт ASP.NET (MVC 3), на котором пользователь сможет войти в систему для выполнения определенных действий. Мне нужно сохранить их пароль в базе данных SQL Server 2008. Я буду использовать проверку подлинности с помощью формы (не проверку подлинности Windows). Мне просто интересно, как лучше всего хранить пароль в базе данных. Читая некоторые ссылки, такие как this, я склоняюсь к использованию Hash with Salt, но мне неясно о том, как хранить солевую ценность? Следует ли зашифровать значение соли? У кого-нибудь есть другие идеи, передовой опыт, потенциальная проблема или ключевые соображения, прежде чем завершить этот подход?


person Silverlight Student    schedule 29.09.2011    source источник


Ответы (2)


Обычно соль хранится как часть хэша, иногда в виде первых двух байтов. При необходимости его можно сохранить как отдельное поле, особенно когда соль больше. Шифрование соли не требуется. Вы просто храните соль + хеш в достаточно безопасном месте (только для доступа администратора).

Не никогда храните фактический пароль. Вам понадобится только соль и хеш. Когда пользователь дает пароль, вы шифруете его, используя сохраненную соль для пользователя, за которого он претендует, и если результат совпадает с сохраненным хешем, пароль правильный.

Хорошая статья на эту тему: http://www.obviex.com/samples/hash.aspx < / а>

person Jonathan M    schedule 29.09.2011

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

Соль не хранится в зашифрованном виде.

person Sjoerd    schedule 29.09.2011