Контекст, используемый для генерации ключа, связан с параметрами 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);
Без соответствующих параметров шаг генерации ключа не происходит. Избыточная операция часто указывает на ошибку кодирования.
Проверьте размещение шага генерации ключа. Если операция предназначена, убедитесь, что параметры установлены перед генерацией ключа.
Некоторые алгоритмы используют параметры по умолчанию. Например, если вы задаете алгоритм DSA при создании EVP_PKEY_CTX
объект, используется длина ключа по умолчанию 1024 бита:
kctx = EVP_PKEY_CTX_new_id(EVP_PKEY_DSA, NULL);
Однако параметры по умолчанию могут генерировать ключи, которые являются слишком слабыми для шифрования. Слабые параметры могут вызвать другой дефект. Чтобы изменить параметры по умолчанию, используйте функции, специфичные для алгоритма. Для образца, чтобы задать параметры, можно использовать следующие функции:
Диффи-Хеллман (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++ |
По умолчанию: Off |
Синтаксис командной строки
: CRYPTO_PKEY_NO_PARAMS |
Влияние: Средний |
ИДЕНТИФИКАТОР CWE : 310, 325, 372, 573 |
Context initialized incorrectly for cryptographic operation
| Find defects (-checkers)
| Incorrect key for cryptographic algorithm
| Missing data for encryption, decryption or signing
| Missing peer key
| Missing private key
| Missing public key
| Nonsecure parameters for key generation