Контекст, используемый для шифрования или дешифрования, связан с нулевым вектором инициализации или не связан с вектором инициализации
Этот дефект возникает при шифровании или расшифровке данных с использованием нулевого вектора инициализации (IV).
Примечание
Контекст шифра можно инициализировать с помощью вектора инициализации NULL (IV). Однако, если для алгоритма требуется IV, перед этапом шифрования или дешифрования необходимо связать контекст шифра с ненулевым IV.
Многие режимы блочного шифрования используют вектор инициализации (IV) для предотвращения атак словарей. При использовании NULL IV зашифрованные данные уязвимы для таких атак.
Блочные шифры разбивают данные на блоки фиксированного размера. Блочные режимы шифрования, такие как CBC (Cipher Block Chaining), защищают от словарных атак с помощью XOR-ing каждого блока с зашифрованным выходом из предыдущего блока. Для защиты первого блока эти режимы используют случайный вектор инициализации (IV). При использовании NULL IV при шифровании того же открытого текста получается тот же шифротекст. Ваши данные становятся уязвимыми для словарных атак.
Перед выполнением операций шифрования или дешифрования
ret = EVP_EncryptUpdate(&ctx, out_buf, &out_len, src, len)
ctx с вектором инициализации, отличным от NULL.ret = EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv)
| Группа: Криптография |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: CRYPTO_CIPHER_NO_IV |
| Воздействие: среднее |
| CWE ID: 310, 326, 329 |