Операция 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