キー生成のパラメーターが見つかりません
キー生成に使用されるコンテキストが NULL パラメーターに関連付けられている
説明
この欠陥は、最初に必要なパラメーターに関連付けられていないコンテキスト オブジェクトを使用して、キー生成ステップを実行した場合に発生します。
たとえば、キー生成の前に、EVP_PKEY_CTX
コンテキスト オブジェクトと空の EVP_PKEY
オブジェクト params
を関連付けます。
EVP_PKEY * params = EVP_PKEY_new(); ... EVP_PKEY_CTX * ctx = EVP_PKEY_CTX_new(params, NULL); ... EVP_PKEY_keygen(ctx, &pkey);
リスク
適切なパラメーターがないと、キー生成ステップが発生しません。冗長な操作は多くの場合、コーディング エラーを示します。
修正方法
キー生成ステップの配置をチェックします。操作が意図されている場合、キー生成の前にパラメーターが設定されていることを確認します。
特定のアルゴリズムでは既定のパラメーターを使用します。たとえば、EVP_PKEY_CTX
オブジェクトを作成するときに DSA アルゴリズムを指定している場合、既定のキーの長さである 1024 ビットが使用されます。
kctx = EVP_PKEY_CTX_new_id(EVP_PKEY_DSA, NULL);
ただし、既定のパラメーターで生成できるキーは暗号化にとって非常に脆弱です。脆弱なパラメーターは別の欠陥を引き起こす可能性があります。既定のパラメーターを変更するには、アルゴリズムに固有の関数を使用します。たとえば、パラメーターを設定するために、以下の関数を使用できます。
Diffie-Hellman (DH):
EVP_PKEY_CTX_set_dh_paramgen_prime_len
およびEVP_PKEY_CTX_set_dh_paramgen_generator
を使用します。デジタル署名アルゴリズム (DSA):
EVP_PKEY_CTX_set_dsa_paramgen_bits
を使用します。RSA:
EVP_PKEY_CTX_set_rsa_padding
、EVP_PKEY_CTX_set_rsa_pss_saltlen
、EVP_PKEY_CTX_set_rsa_rsa_keygen_bits
、EVP_PKEY_CTX_set_rsa_keygen_pubexp
を使用します。楕円曲線 (EC):
EVP_PKEY_CTX_set_ec_paramgen_curve_nid
およびEVP_PKEY_CTX_set_ec_param_enc
を使用します。
例
結果情報
グループ: 暗号化 |
言語: C | C++ |
既定値: オフ |
コマンド ライン構文: CRYPTO_PKEY_NO_PARAMS |
影響度: Medium |
バージョン履歴
R2018a で導入