Skip to main content

V2.4.5 Credential Storage

Requirement:#

Verify that an additional iteration of a key derivation function is performed, using a salt value that is secret and known only to the verifier. Generate the salt value using an approved random bit generator [SP 800-90Ar1] and provide at least the minimum security strength specified in the latest revision of SP 800-131A. The secret salt value SHALL be stored separately from the hashed passwords (e.g., in a specialized device like a hardware security module).

Explanation:#

Это требование связано с безопасным хранением паролей в компьютерной системе. Функция получения ключа (KDF) — это математический процесс, который используется для создания производного ключа из пароля, который затем используется для шифрования пароля. Добавление дополнительной итерации KDF повышает безопасность пароля, что затрудняет взлом пароля злоумышленником. Использование соли в KDF является широко используемой техникой, усложняющей взлом пароля злоумышленником. Соль — это случайное число, которое используется в качестве входных данных для KDF вместе с паролем. Значение соли должно быть секретным и известным только верификатору, чтобы злоумышленники не могли использовать предварительно вычисленные таблицы (также известные как радужные таблицы) для взлома пароля. Соль должна генерироваться с использованием утвержденного генератора случайных битов, такого как указанный в NIST SP 800-90Ar1. Минимальная степень защиты, указанная в последней редакции NIST SP 800-131A, также должна соблюдаться при создании соли. Для дальнейшего повышения безопасности значение секретной соли следует хранить отдельно от хешированных паролей, например, в специализированном устройстве, таком как аппаратный модуль безопасности. Это гарантирует, что даже если злоумышленник получит доступ к хешированным паролям, он не сможет получить доступ к значениям соли, которые необходимы для взлома паролей.

Remediation:#

Шаги по исправлению для требования:

  • Определите функцию формирования ключа (KDF), которая будет использоваться: выберите безопасный, широко используемый и проверенный экспертами по безопасности KDF. Некоторыми примерами KDF являются PBKDF2, bcrypt и scrypt.
  • Генерация соли: используйте утвержденный генератор случайных битов, например, указанный в NIST SP 800-90Ar1, для создания соли. Значение соли должно быть не меньше длины вывода выбранного KDF и должно быть уникальным для каждого пароля.
  • Надежно храните соль: надежно храните соль отдельно от хешированных паролей. Рассмотрите возможность использования аппаратного модуля безопасности (HSM) или другого безопасного механизма хранения для хранения значений соли.
  • Хэшируйте пароль со значением соли: используйте выбранный KDF для хеширования пароля вместе со значением соли, чтобы получить окончательный производный ключ. Количество итераций KDF должно быть максимально возможным, учитывая требования к производительности системы.
  • Надежно храните хешированный пароль: надежно храните хешированный пароль отдельно от исходного пароля и значения соли. Рассмотрите возможность использования базы данных, HSM или другого безопасного механизма хранения для хранения хешированных паролей.
  • Безопасная проверка паролей: при проверке пароля извлеките значение соли, связанное с паролем, и используйте тот же KDF и количество итераций для хеширования введенного пароля. Сравните полученный хэш с сохраненным хешем, чтобы определить, правильный ли пароль.
  • Защита от атак: Реализуйте меры безопасности для защиты от атак, такие как предотвращение атак грубой силы, ограничение скорости и отслеживание необычного поведения.
  • Поддерживайте программное обеспечение и системы в актуальном состоянии: регулярно обновляйте программное обеспечение и системы, используемые для хранения и проверки паролей, чтобы обеспечить их безопасность и соответствие новейшим методам обеспечения безопасности.
  • Проводите регулярные аудиты безопасности: Регулярно проводите аудиты безопасности, чтобы убедиться, что процесс хранения и проверки паролей безопасен, а все меры безопасности приняты и работают должным образом.

Additional:#