Weak cipher mode

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

Описание

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

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

Риск

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

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

Фиксация

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

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

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

  • XOR-луг первый блок данных со случайным вектором инициализации (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() вызывает алгоритм Усовершенствованного стандарта шифрования (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
Удар: носитель
ID CWE: 310, 326, 327

Введенный в R2017a