Контекст, используемый в шифровании или подписании операции, сопоставлен с небезопасным дополнительным типом
Этот дефект происходит, когда вы выполняете шифрование RSA или подпись при помощи объекта контекста, который был ранее сопоставлен со слабой дополнительной схемой.
Например, вы выполняете шифрование при помощи объекта контекста, который сопоставлен с дополнительной схемой PKCS#1v1.5. Схема рассматривается небезопасной и была уже повреждена.
ret = EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING); ... ret = EVP_PKEY_encrypt(ctx, out, &out_len, in, in_len)
Дополняющие схемы удаляют детерминизм из алгоритма RSA и защищают операции RSA от определенных видов нападений. Дополняя схемы, такие как PKCS#1v1.5, ANSI X9.31 и SSLv23, как известно, уязвимы. Не используйте эти дополнительные схемы операций подписи или шифрования.
Прежде, чем выполнить операцию 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_WEAK_PADDING |
Удар: Средняя |
ID CWE: 310, 326, 327, 780 |
Find defects (-checkers)
| Incompatible padding for RSA algorithm operation
| Missing blinding for RSA algorithm
| Missing padding for RSA algorithm
| Nonsecure RSA public exponent