Хэшированные данные уязвимы для атаки радужного стола
Этот дефект возникает, когда в этих функциях используется контекст дайджеста, но данные хэшируются в контекст только один раз или используется нулевая соль во всех последующих операциях хеширования. Соль - это случайные данные, которые используются для повышения безопасности операции хеширования. Операция хеширования принимает соль в качестве входных данных для получения более безопасного хешированного значения.
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++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
CRYPTO_MD_NO_SALT |
| Воздействие: среднее |
| ИДЕНТИФИКАТОР CWE: 759 |