exponenta event banner

Слабый режим шифрования

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

Описание

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

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

Риск

Режим ЕЦБ не поддерживает защиту от словарных атак.

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

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

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

Например, режим CBC защищает от словарных атак:

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

  • 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() вызывает алгоритм Advanced Encryption Standard (AES) в режиме электронной кодовой книги (ECB). Режим ЕЦБ не поддерживает защиту от словарных атак.

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

Одной из возможных корректировок является использование режима цепочки блоков шифрования (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++
По умолчанию: Откл.
Синтаксис командной строки: CRYPTO_CIPHER_WEAK_MODE
Воздействие: среднее
CWE ID: 310, 326, 327
Представлен в R2017a