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

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

Описание

Слабый алгоритм шифра происходит, когда вы сопоставляете слабый алгоритм шифрования с контекстом шифра.

Риск

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

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

Фиксация

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

Например, Усовершенствованный стандарт шифрования (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) вместо этого.


#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++
Значение по умолчанию: 'off'
Синтаксис командной строки: CRYPTO_CIPHER_WEAK_CIPHER
Влияние: носитель
ID CWE: 310, 326, 327

Введенный в R2017a