Шаги шифрования и дешифрования выполняются последовательно с одним и тем же контекстом шифра без повторной инициализации между
Этот дефект возникает при выполнении операции шифрования и дешифрования с тем же контекстом шифра. Повторная инициализация контекста между этими шагами не выполняется. Средство проверки применяется только к симметричному шифрованию.
Например, можно настроить контекст шифра для дешифрования с помощью EVP_DecryptInit_ex.
EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv);
EVP_EncryptUpdate.EVP_EncryptUpdate(ctx, out_buf, &out_len, src, len);
Смешение этапов шифрования и дешифрования может привести к затемнению кода. С первого взгляда трудно определить, используется ли текущий контекст шифра для шифрования или дешифрования. Микширование также может привести к условиям гонки, неудачному шифрованию и неожиданному шифротексту.
После настройки контекста шифра для определенного семейства операций используйте контекст только для этого семейства операций.
Например, если настроить контекст шифра для дешифрования с помощью EVP_DecryptInit_ex, затем используйте контекст только для расшифровки.
| Группа: Криптография |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: CRYPTO_CIPHER_BAD_FUNCTION |
| Воздействие: среднее |
| CWE ID: 372, 664 |