Weak cipher mode

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

Описание

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

Режим шифрования, который особенно помечен этим дефектом, является режимом Электронной книги кодов (ECB).

Риск

Режим ECB не поддерживает защиту от атак словаря.

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

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

Используйте режим шифрования более безопасный, чем ECB.

Например, режим Cipher Block Chaining (CBC) защищает от атак словаря:

  • XOR-ing каждый блок данных с зашифрованным выходом из предыдущего блока.

  • XOR-ing первый блок данных со случайным вектором инициализации (IV).

Примеры

расширить все


#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_ecb();        
    EVP_EncryptInit_ex(ctx, ciph, NULL, key, iv);   
}

В этом примере стандартная программа EVP_aes_128_ecb() вызывает алгоритм Advanced Encryption Standard (AES) в режиме Electronic Code Book (ECB). Режим ECB не поддерживает защиту от атак словаря.

Коррекция - Используйте режим CBC

Одной из возможных коррекций является использование режима Cipher Block Chaining (CBC).


#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_MODE
Влияние: Средний
ИДЕНТИФИКАТОР CWE : 310, 326, 327
Введенный в R2017a