Weak padding for RSA algorithm
Context used in encryption or signing operation is associated with insecure padding type
Description
This defect occurs when you perform RSA encryption or signature by using a context object that was previously associated with a weak padding scheme.
For instance, you perform encryption by using a context object that is associated with the PKCS#1v1.5 padding scheme. The scheme is considered insecure and has already been broken.
ret = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING); ... ret = EVP_PKEY_encrypt(ctx, out, &out_len, in, in_len)
Risk
Padding schemes remove determinism from the RSA algorithm and protect RSA operations from certain kinds of attacks. Padding schemes such as PKCS#1v1.5, ANSI X9.31, and SSLv23 are known to be vulnerable. Do not use these padding schemes for encryption or signature operations.
Fix
Before performing an RSA operation, associate the context object with a strong padding scheme.
Encryption: Use the OAEP padding scheme.
For instance, use the
EVP_PKEY_CTX_set_rsa_paddingfunction with the argumentRSA_PKCS1_OAEP_PADDINGor theRSA_padding_add_PKCS1_OAEPfunction.ret = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING);
You can then use functions such as
EVP_PKEY_encrypt/EVP_PKEY_decryptorRSA_public_encrypt/RSA_private_decrypton the context.Signature: Use the RSA-PSS padding scheme.
For instance, use the
EVP_PKEY_CTX_set_rsa_paddingfunction with the argumentRSA_PKCS1_PSS_PADDING.ret = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING);
You can then use functions such as the
EVP_PKEY_sign-EVP_PKEY_verifypair or theRSA_private_encrypt-RSA_public_decryptpair on the context.
Examples
Result Information
| Group: Cryptography |
| Language: C | C++ |
| Default: Off |
Command-Line Syntax:
CRYPTO_RSA_WEAK_PADDING |
| Impact: Medium |
Version History
Introduced in R2018a
See Also
Incompatible
padding for RSA algorithm operation | Missing padding
for RSA algorithm | Missing blinding
for RSA algorithm | Nonsecure RSA
public exponent | Find defects (-checkers)
Topics
- Interpret Bug Finder Results in Polyspace Desktop User Interface
- Interpret Bug Finder Results in Polyspace Access Web Interface (Polyspace Access)
- Address Results in Polyspace User Interface Through Bug Fixes or Justifications
- Address Results in Polyspace Access Through Bug Fixes or Justifications (Polyspace Access)