2011-01-31 9 views
1

.NETで128ビットRSA鍵を読み込み、それを復号化に使用できます。しかし、私は128ビット(またはそれ以下)のキーを生成することはできません、私はいつも '無効なフラグが指定されました'というエラーを受け取ります。私は512bitsをキーとして試してみると、すべて正常に動作します。だから、512bitsは.NETの最小キーサイズですか?.NET RSA暗号化:最小のキーサイズ?

+1

使用しているAPIについて少し具体的にすることはできますか? –

+0

なぜ気になりますか? 512ビット以下のRSAキーは完全に壊れています。 – CodesInChaos

+0

@CodeInChaos私はトレードオフをする必要がありました。鍵の長さを長くすると署名が長くなり(記憶容量が増えます)、検証が遅くなります(CPUが増える)。特定のユースケースに対して384ビット以外のオプションがないことを検証する何百万ものシグネチャがあります。そして、512台が大学のスーパーコンピュータによって壊れていることは、平均的な消費者が1日以内にそれを壊すことを意味するものではありません。 – Muis

答えて

3

は、キーサイズは、アルゴリズムに対して有効であるかどうかを判断することができますプロパティLegalKeySizesを持っています。あなたが使用しているアルゴリズムのための有効なキーサイズをプリントアウトすることができますリンクから:RSACryptoServiceProviderについて

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 
for (int i = 0; i < rsa.LegalKeySizes.Length; i++) 
{ 
    KeySizes key_size = rsa.LegalKeySizes[i]; 
    Console.WriteLine(String.Format("[Key Size {0}] - min: {1}, max: {2}, step: {2}", 
     i, key_size.MinSize, key_size.MaxSize, key_size.SkipSize)); 
} 

、これは印刷されます:

[キーサイズ0] - 分:384、最大の: 16384、ステップ:16384

5

512ビットは(技術的に)RSAキーの最小サイズですが、安全ではありません。現在、1024ビットは絶対最小値で、2048ビットが推奨されています。

RSAの1024ビットはセキュリティレベルで対称アルゴリズムの128ビットに対応することに注意してください。おそらく、これらの値を混乱させ、非対称暗号とsymmstric暗号化では128ビットが同じであると考えているかもしれませんが、そうではありません。各AsymmetricAlgorithmSymmetricAlgorithm

+0

+1は推奨キーサイズを指し示します。 128ビットRSAキーを使用することは確かに賢明ではありません... – Hemant

+0

'openssl genrsa'は* 30ビットになるまで文句を言わない*。 – l0b0

+0

@ 10b0それはopensslの問題です。 –