Как установить размер ключа RSA, созданного с использованием aspnet_regiis? - PullRequest
2 голосов
/ 12 марта 2011

Я создал контейнер ключа RSA клиента (для шифрования строки подключения в web.config) с помощью следующей команды:

aspnet_regiis -pc "TestKeys" -size 2048 -exp

Затем я экспортировал ключ в xml-файл и использовал его для инициализации экземпляра RSACryptoServiceProvider, чтобы я мог проверить, что размер ключа определенно равен 2048. Однако с помощью приведенного ниже кода размер ключа отображается как 1024.

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
    using (FileStream fs = new FileStream(@"C:\TestKeys.xml", FileMode.Open))
    {
        using (StreamReader sr = new StreamReader(fs))
        {
            rsa.FromXmlString(sr.ReadToEnd());
        }
    }

    Console.WriteLine(rsa.KeySize.ToString());
}

Кажется, что aspnet_regiis игнорирует аргумент -size. Я что-то упустил?

Кроме того, существует ли рекомендуемый размер ключа для шифрования разделов конфигурации .Net с использованием RSA?

1 Ответ

2 голосов
/ 16 марта 2011

В итоге я использовал класс RSACryptoServiceProvider для создания контейнера ключей, поскольку он создает ключи с указанным размером.

CspParameters cp = new CspParameters();

cp.KeyContainerName = keyContainerName;
cp.Flags = CspProviderFlags.UseMachineKeyStore;
cp.KeyNumber = 1;

using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(keySize, cp))
{
    using (FileStream fs = new FileStream(fileName, FileMode.Create))
    {
        using (StreamWriter sw = new StreamWriter(fs))
        {
            sw.WriteLine(rsa.ToXmlString(true));
        }
    }
}

NIST рекомендует размер ключа 3072 бита для обеспечения безопасности после 2030 года.

Рекомендации по управлению ключами - см. Таблицу 4.

...