メインコンテンツ

脆弱な暗号アルゴリズム

暗号コンテキストに関連付けられた暗号化アルゴリズムが脆弱

説明

この欠陥は、暗号コンテキストに脆弱な暗号化アルゴリズムを関連付けた場合に発生します。

リスク

一部の暗号化アルゴリズムには既知の欠陥があります。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 アルゴリズムを使用

1 つの修正方法として、より高速で安全な高度暗号化標準 (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++
既定値: オフ
コマンド ライン構文: CRYPTO_CIPHER_WEAK_CIPHER
影響度: Medium

バージョン履歴

R2017a で導入