Любая соль явно поможет при солении и хешировании пароля пользователя. Есть ли какие-нибудь рекомендации относительно того, как долго должна быть соль? Я буду хранить соль в своей таблице пользователей, поэтому мне нужен лучший компромисс между размером хранилища и безопасностью. Достаточно ли случайной соли из 10 символов? Или мне нужно что-то более длинное?
encryption
hash
salt
Дэвид
источник
источник
Ответы:
Большинство этих ответов немного ошибочны и демонстрируют путаницу между солями и криптографическими ключами. Целью включения солей является изменение функции, используемой для хеширования пароля каждого пользователя, так что каждый сохраненный хэш пароля нужно будет атаковать индивидуально. Единственное требование к безопасности - они должны быть уникальными для каждого пользователя, и нет никакого преимущества в том, что они непредсказуемы или трудно угадать.
Соли должны быть достаточно длинными, чтобы соль каждого пользователя была уникальной. Случайные 64-битные соли вряд ли когда-либо повторится даже с миллиардом зарегистрированных пользователей, так что это должно быть нормально. Однократное повторение соли является относительно незначительной проблемой безопасности, она позволяет злоумышленнику искать сразу в двух учетных записях, но в совокупности не сильно ускоряет поиск по всей базе данных. Даже 32-битные соли подходят для большинства целей, в худшем случае это ускорит поиск злоумышленника примерно на 58%. Стоимость увеличения солей сверх 64 бит невелика, но для этого нет никаких оснований безопасности.
Есть некоторые преимущества в использовании соли для всего сайта поверх соли для каждого пользователя, это предотвратит возможные конфликты с хэшами паролей, хранящимися на других сайтах, и предотвратит использование общих радужных таблиц, хотя даже 32 бита соли достаточно, чтобы сделать радужные столы непрактичной атакой.
Еще проще - и разработчики всегда игнорируют это - если у вас есть уникальные идентификаторы пользователей или имена для входа, они отлично подходят в качестве соли. Если вы это сделаете, вам следует добавить соль для всего сайта, чтобы не дублировать пользователей другой системы, у которых была такая же блестящая идея.
источник
В настоящее время принятые стандарты хеширования паролей создают новую соль длиной 16 символов для каждого пароля и хранят соль вместе с хешем пароля.
Конечно, для создания действительно случайной соли необходимо принять соответствующие меры криптографии.
источник
Изменить: мой ответ ниже отвечает на заданный вопрос, но «настоящий» ответ: просто используйте bcrypt , scrypt или Argon2 . Если вы задаете подобные вопросы, вы почти наверняка используете инструменты слишком низкого уровня.
Честно говоря, нет никаких веских причин, чтобы длина соли не была такой же, как у хешированного пароля. Если вы используете SHA-256, у вас есть 256-битный хеш. Нет причин не использовать 256-битную соль.
Более 256 бит не принесут вам никакого улучшения безопасности математически. Но использование более короткой соли всегда может привести к ситуации, когда радужный стол догонит вашу длину соли - особенно с более короткими солями.
источник
Википедия :
128-битной (16-битной) соли будет достаточно. Вы можете представить его как последовательность
128 / 4 = 32
шестнадцатеричных цифр.источник
Одним из ответов может быть использование в качестве размера соли значения, которое хэш, который вы собираетесь использовать, обеспечивает с точки зрения безопасности.
Например, если вы собираетесь использовать SHA-512, используйте 256-битную соль, поскольку безопасность, обеспечиваемая SHA-512, составляет 256 бит.
источник