Контекст, используемый в операции шифрования или подписи, не связан ни с одним дополнением
Этот дефект возникает при выполнении шифрования или подписи 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++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
CRYPTO_RSA_NO_PADDING |
| Воздействие: среднее |
| CWE ID: 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