Какая оптимальная длина для паролей пользователей?

Любая соль вообще, очевидно, поможет при солевом и hashировании пароля пользователя. Существуют ли какие-либо рекомендации по длине соли? Я буду хранить соль в своей таблице пользователей, поэтому мне бы хотелось получить наилучший компромисс между размером хранилища и безопасностью. Является ли случайная соль 10 символов достаточной? Или мне нужно что-то дольше?

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

Соли должны быть достаточно длинными, чтобы соль каждого пользователя была уникальной. Случайные 64-битные соли вряд ли когда-либо повторятся даже с миллиардом зарегистрированных пользователей, так что это должно быть хорошо. Однократно повторяющаяся соль является относительно незначительной проблемой безопасности, она позволяет злоумышленнику одновременно искать две учетные записи, но в совокупности не ускорит поиск по всей базе данных. Даже 32-битные соли приемлемы для большинства целей, это в худшем случае ускорит поиск атакующего примерно на 58%. Стоимость увеличения солей выше 64 бит невелика, но для этого нет оснований для безопасности.

Существует определенная польза от использования общей соли на поверхности соли для каждого пользователя, что предотвратит возможные столкновения с hashами паролей, хранящимися на других сайтах, и предотвратит использование универсальных радужных таблиц, хотя даже 32 бита соли достаточно, чтобы сделать радужные столы непрактичной атакой.

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

В настоящее время принятые стандарты для хеширования паролей создают новую соль с 16 символами для каждого пароля и сохраняют соль с хешем пароля.

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

Изменить: Мой ниже ответ отвечает на вопрос, как задан, но «реальный» ответ: просто используйте bcrypt , scrypt или Argon2 . Если вы задаете такие вопросы, вы почти наверняка используете инструменты на слишком низком уровне.

Честно говоря, нет оправданной причины, чтобы соль не была такой же точной длины, как хешированный пароль. Если вы используете SHA-256, у вас есть 256-битный хеш. Нет причин не использовать 256-битную соль.

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

Википедия :

Методы SHA2-crypt и bcrypt, используемые в Linux, BSD Unixes и Solaris, имеют соли 128 бит. Эти более крупные значения солей делают прекоммутационные атаки практически для любой длины пароля, недоступной для этих систем в обозримом будущем.

128-битной (16-байт) соли будет достаточно. Вы можете представить его как последовательность из 128 / 4 = 32 шестнадцатеричных цифр.

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

Например, если вы собираетесь использовать SHA-512, используйте 256-битную соль, так как безопасность, предоставляемая SHA-512, составляет 256 бит.

  • Шифрование файлов cookie в ASP.NET
  • Почему безопасность через неясность - плохая идея?
  • Шифрование / Расшифровка больших файлов (.NET)
  • Лучший способ создать ключи AES, чем посев SecureRandom
  • Хеширование, соль и хранение хешированных значений
  • Interesting Posts

    Windows XP PRO SP3 – остановить изменения ключа ключа безопасности, установленного неизвестной программой

    Rails 4 многократное изображение или загрузка файла с использованием несущей

    Связь не может быть изменена, поскольку одно или несколько свойств внешнего ключа не имеют значения NULL

    java – Как бы я динамически добавлял компонент swing в gui при нажатии?

    Windows показывает неправильное разрешение по сравнению с дисплеем

    Не удалось загрузить общую библиотеку JNI при запуске Eclipse

    Как подсчитать целые числа между большими A и B с определенным свойством?

    Как мне получить X11 Forwarding для работы с Windows с PuTTY и Xming?

    Как использовать valgrind для обнаружения утечек памяти?

    Как отключить темы и темы Chrome и получить декорации окон по умолчанию

    Tor для игнорирования хостов LAN

    java.util.zip.ZipException: дубликат записи

    Как изменить цвет фона ActionMode в Android

    Как долго длится период активации Windows 8, если я не подключаюсь к Интернету?

    Блокировка кнопки facebook как кнопка в Firefox

    Давайте будем гением компьютера.