CA5385: использование алгоритма Rivest-Shamir-Adleman (RSA) с достаточным размером ключа
Свойство | Значение |
---|---|
Идентификатор правила | CA5385 |
Заголовок | используйте алгоритм шифрования RSA с достаточным размером ключа |
Категория | Безопасность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | No |
Причина
Использование асимметричного алгоритма шифрования RSA с размером ключа менее 2048 одним из следующих способов:
- Создание экземпляров всех классов-потомков System.Security.Cryptography.RSA и указание параметра
KeySize
менее 2048. - Возврат любого объекта, чей тип является потомком System.Security.Cryptography.RSA.
- При использовании System.Security.Cryptography.AsymmetricAlgorithm.Create без параметра создается RSA с размером ключа по умолчанию 1024.
- Использование System.Security.Cryptography.AsymmetricAlgorithm.Create и указание параметра
algName
какRSA
с размером ключа по умолчанию 1024. - Использование System.Security.Cryptography.CryptoConfig.CreateFromName и указание параметра
name
какRSA
с размером ключа по умолчанию 1024. - Использование System.Security.Cryptography.CryptoConfig.CreateFromName, указание параметра
name
какRSA
и указание размера ключа меньше 2048 явным образом с помощьюargs
.
Описание правила
Ключ RSA, размер которого меньше 2048 бит, более уязвим для атак методом подбора.
Устранение нарушений
Перейдите на алгоритм RSA с размером ключа не менее 2048 бит либо на алгоритм ECDH или ECDSA.
Когда лучше отключить предупреждения
Вывод этого правила можно отключить, только если требуется обеспечить совместимость с устаревшими приложениями и данными.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA5385
// The code that's violating the rule is on this line.
#pragma warning restore CA5385
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA5385.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Пример
В приведенном ниже фрагменте кода показан шаблон, обнаруживаемый этим правилом.
Нарушение:
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
RSACng rsaCng = new RSACng(1024);
}
}
Решение.
using System.Security.Cryptography;
class ExampleClass
{
public void ExampleMethod()
{
RSACng rsaCng = new RSACng(2048);
}
}