exponenta event banner

Слабый алгоритм шифрования

Алгоритм шифрования, связанный с контекстом шифра, слабый

Описание

Этот дефект возникает при связывании слабого алгоритма шифрования с контекстом шифра.

Риск

Некоторые алгоритмы шифрования имеют известные недостатки. Хотя библиотека OpenSSL по-прежнему поддерживает алгоритмы, следует избегать их использования.

Если алгоритм шифрования слабый, злоумышленник может расшифровать ваши данные, используя известные дефекты или атаки грубой силы.

Зафиксировать

Используйте алгоритмы, которые хорошо изучены и широко признаны как безопасные.

Например, Advanced Encryption Standard (AES) является широко принятым алгоритмом шифрования.

Примеры

развернуть все


#include <openssl/evp.h>
#include <stdlib.h>

void func(unsigned char *key, unsigned char *iv) {
    EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
    EVP_CIPHER_CTX_init(ctx);
    const EVP_CIPHER * ciph = EVP_des_cbc();        
    EVP_EncryptInit_ex(ctx, ciph, NULL, key, iv);   
}

В этом примере подпрограмма EVP_des_cbc() вызывает алгоритм стандарта шифрования данных (DES), который теперь считается небезопасным и относительно медленным.

Коррекция - использовать алгоритм AES

Одной из возможных корректировок является использование более быстрого и безопасного алгоритма AES (Advanced Encryption Standard).


#include <openssl/evp.h>
#include <stdlib.h>

void func(unsigned char *key, unsigned char *iv) {
    EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new();
    EVP_CIPHER_CTX_init(ctx);
    const EVP_CIPHER * ciph = EVP_aes_128_cbc();        
    EVP_EncryptInit_ex(ctx, ciph, NULL, key, iv);   
}

Информация о результатах

Группа: Криптография
Язык: C | C++
По умолчанию: Откл.
Синтаксис командной строки: CRYPTO_CIPHER_WEAK_CIPHER
Воздействие: среднее
CWE ID: 310, 326, 327
Представлен в R2017a