Хешированные данные уязвимы для табличного нападения радуги
Этот дефект происходит, когда вы используете контекст обзора в этих функциях, но вы хешируете данные в контекст только однажды, или вы используете пустую соль во всех последующих операциях хеширования. Соль является случайными данными, которые вы используете, чтобы улучшить безопасность операции хеширования. Операция хеширования берет соль в качестве входа, чтобы произвести более безопасное хешированное значение.
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 |
Удар: Средняя |
ID CWE: 759 |