Контекст, используемый в шифровании или подписании операции, не сопоставлен ни с каким дополнением
Этот дефект происходит, когда вы выполняете шифрование 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 |
Удар: Средняя |
ID 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