Контекст, используемый в операции шифрования или подписи, не связан с заполнением
Этот дефект возникает при выполнении шифрования RSA или подписи при помощи контекстного объекта без связи объекта со схемой заполнения.
Например, вы выполняете шифрование с помощью контекстного объекта, который первоначально не был связан с определенным заполнением.
ret = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_NO_PADDING); ... ret = EVP_PKEY_encrypt(ctx, out, &out_len, in, in_len)
Схемы заполнения удаляют детерминизм из алгоритма RSA и защищают операции RSA от определенных видов атаки. Заполнение гарантирует, что данное сообщение не ведет к одному и тому же зашифрованному тексту каждый раз, когда оно зашифровано. Без заполнения злоумышленник может запускать атаки с использованием открытого текста против криптосистемы.
Перед выполнением операции RSA связайте объект контекста со схемой заполнения, которая совместима с операцией.
Шифрование: используйте схему заполнения OAEP.
Например, используйте EVP_PKEY_CTX_set_rsa_padding
функция с аргументом RSA_PKCS1_OAEP_PADDING
или RSA_padding_add_PKCS1_OAEP
функция.
ret = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING);
Затем можно использовать такие функции, как EVP_PKEY_encrypt
/ EVP_PKEY_decrypt
или RSA_public_encrypt
/ RSA_private_decrypt
о контексте.
Подпись: Используйте схему заполнения RSA-PSS.
Например, используйте EVP_PKEY_CTX_set_rsa_padding
функция с аргументом RSA_PKCS1_PSS_PADDING
.
ret = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING);
Затем можно использовать функции, такие как EVP_PKEY_sign
- EVP_PKEY_verify
пара или RSA_private_encrypt
- RSA_public_decrypt
пара в контексте.
Если вы выполняете два вида операции с одним и тем же контекстом, после первой операции сбросьте схему заполнения в контексте перед второй операцией.
Группа: Криптография |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки
: CRYPTO_RSA_NO_PADDING |
Влияние: Средний |
ИДЕНТИФИКАТОР CWE : 310, 326, 327, 780 |
Find defects (-checkers)
| Incompatible padding for RSA algorithm operation
| Missing blinding for RSA algorithm
| Nonsecure RSA public exponent
| Weak padding for RSA algorithm