Bcyrpt генерирует пароль без соли?

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

Bcrypt.HashPassword("password") 

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

Bcrypt создает случайную соль внутри и использует ее?

Это может привести к ослаблению безопасности, если я не использую метод перегрузки солью?


person Freshblood    schedule 13.04.2014    source источник


Ответы (1)


С теоретической точки зрения вы должны делать следующее, где P — заданный пароль:

  1. Создайте криптографически стойкую случайную соль S.
  2. Вычислить H = Hash(S + P), где Hash — криптографически стойкий алгоритм хеширования.
  3. Сохраните S и H в вашей базе данных для текущего пользователя.

Во время аутентификации, учитывая пароль-кандидат P' для кого-то, утверждающего, что он тот же пользователь, проверить пользователя тогда и только тогда, когда H == Hash(S + P').

Создает ли Bcrypt случайную соль внутри и использует ли ее?

Соль — это не то, что она должна создавать только внутри себя. Он должен дать вам соль для хранения с хешированной солью + пароль.

Это может привести к ослаблению безопасности, если я не использую метод перегрузки солью?

Да.

person Timothy Shields    schedule 13.04.2014
comment
Теоретически вы выглядите правильно, но упускаете некоторые подробности о Bcrypt. Bcrypt может проверять хэш и текст без дополнительного параметра соли, поскольку строка хэша уже содержит информацию о соли. Проверьте ответ на этот вопрос stackoverflow.com/questions/5393803/ . Так что не нужно где-то хранить соль. - person Freshblood; 13.04.2014
comment
@Freshblood А, я не знал подробностей о библиотеке Bcrypt. Так что в основном то, что они называют хэшем, на самом деле просто конкатенация соли и хэша (или что-то в этом роде). Я все равно оставлю этот ответ здесь, хотя, вероятно, есть лучший ответ, объясняющий такое поведение Bcrypt. - person Timothy Shields; 13.04.2014