Хэшированные данные уязвимы для атаки радужной таблицы
Этот дефект возникает, когда вы используете контекст дайджеста в этих функциях, но хешируете данные в контекст только один раз или используете нулевую соль во всех последующих операциях хеширования. Соль - это случайные данные, которые вы используете, чтобы улучшить безопасность операции хеширования. Операция хеширования принимает соль как вход для получения более безопасного хешированного значения.
EVP_DigestFinal
EVP_DigestSignUpdate
EVP_DigestVerifyUpdate
SHA*_Final
семейство функций
Отсутствующая соль для операции хеширования не вызывает дефекта, если нет доступной информации о контексте. Например, если контекст передается как аргумент функции, которая вызывает операцию хеширования, или если контекст объявлен вне возможностей функции. Для примера в этом фрагменте кода дефект не возникает.
EVP_MD_CTX ctx_global; void foo(EVP_MD_CTX* ctx) { //ctx passed as argument of func() EVP_DigestFinal(ctx, out_buf, &out_len); //no defect } void bar() { // ctx_global declared outside of bar() EVP_DigestFinal(&ctx_glob, out_buf, &out_len); //no defect } |
Хеширование тех же данных без соли приводит к тому же хешированному значению. Например, если вы хешируете пароли пользователей и у двух пользователей одинаковые пароли, хешированные пароли идентичны. Хеширование тогда уязвимо для предкомпонентных радужных атак.
Предоставляйте соль, когда вы хешируете данные.
Группа: Криптография |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки
: CRYPTO_MD_NO_SALT |
Влияние: Средний |
ИДЕНТИФИКАТОР CWE: 759 |