Операция Cryptography не поддерживается дополнительным набором типа в контексте
Этот дефект происходит, когда вы выполняете операцию алгоритма RSA на объекте контекста, который не совместим с дополнением, ранее сопоставленным с объектом.
Например, вы сопоставляете OAEP дополнение схемы с объектом контекста, но дальнейшее использование контекст для верификации подписи, операции, которую не поддерживает дополнительная схема.
ret = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING); ... ret = EVP_PKEY_verify(ctx, out, out_len, in, in_len);
Дополняющие схемы удаляют детерминизм из алгоритма RSA и защищают операции 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_BAD_PADDING |
| Удар: Средняя |
| ID CWE: 310, 372, 573, 664 |
Find defects (-checkers) | Missing blinding for RSA algorithm | Missing padding for RSA algorithm | Nonsecure RSA public exponent | Weak padding for RSA algorithm