1024 ビットの秘密鍵があり、それを使用して公開鍵を生成します。これは自動的に、私の公開鍵にも 1024 暗号化があることを意味しますか? または、暗号化サイズを小さくすることはできますか? (512, 256...)
PS: 私が主に関心を持ち、話しているのは、RSA キーのモジュラス (「n」) のサイズです。サイズは通常 1024 または 2048 ビットです。しかし、これが議論の火付け役になったことを嬉しく思います。これらすべてが、私の暗号への関心を高めています。
1024 ビットの秘密鍵があり、それを使用して公開鍵を生成します。これは自動的に、私の公開鍵にも 1024 暗号化があることを意味しますか? または、暗号化サイズを小さくすることはできますか? (512, 256...)
PS: 私が主に関心を持ち、話しているのは、RSA キーのモジュラス (「n」) のサイズです。サイズは通常 1024 または 2048 ビットです。しかし、これが議論の火付け役になったことを嬉しく思います。これらすべてが、私の暗号への関心を高めています。
これは、暗号化アルゴリズムと、公開鍵/秘密鍵と正確に呼ぶものによって異なります。ディスクまたはネットワーク上のシリアル化とは異なるサイズの RAM を使用できる場合があります。
RSA 公開鍵は、モジュラスn
と公開指数で構成されe
ます。通常は小さい値を選択しますe
(3 または 65537 が一般的です)。のサイズはe
セキュリティにほとんど影響しません。e
は通常 4 バイト未満で 100 バイトを超えるためn
、合計サイズはモジュラスによって支配されます。本当にしたい場合e
は、プロトコル仕様の一部として修正できるのでn
、保存するだけです。
RSA 秘密鍵はさまざまな形式で表すことができますが、通常は値p
、q
、dp
、dq
、 、e
、d
をn
格納しますInvQ
。それらを合わせたサイズは、公開鍵よりも大きくなります。これらのほとんどは厳密には必須ではありませんが、再生成する代わりに利用できるようにしておくと便利です。与えられたそれらすべてを再生成しe
、簡単です。p
q
RSA のコンテキストでキー サイズについて話すときは、常にモジュラスのサイズを意味し、他のすべての要素は無視します。これは、セキュリティに影響する唯一の値であるため、便利な規則です。の一般的なサイズn
は 2048 ビットです。
秘密鍵は、セキュリティ レベルのサイズの 2 倍のスカラーです。一般的な値は 256 ビットです。
公開鍵は、秘密鍵よりもはるかに大きいグループ要素です。一般的な値は 2048 ビットです。
したがって、有限体暗号では、公開鍵は秘密鍵よりもはるかに大きくなります。
秘密鍵は、セキュリティ レベルのサイズの 2 倍のスカラーです。一般的な値は 256 ビットです。この部分は、有限体暗号と同じです。
公開鍵はグループ要素です。このような要素をシリアル化するには、2 つの形式があります。圧縮された形式は、秘密鍵よりわずかに大きくなります (せいぜい数ビット)。非圧縮形式は、秘密鍵の約 2 倍のサイズです。圧縮形式の一般的な値は 256 ビットで、非圧縮形式の場合は 512 ビットです。
公開鍵と秘密鍵のペアを自分で生成する場合は、いつでも PRNG のシードとして保存できます。そうすれば、使用するスキームに関係なく、160 ビット程度と非常に小さくなります。これの欠点は、秘密鍵の自然な形式を再生成するとコストがかかる可能性があることです。鍵ペアの作成方法は一定である必要があります。
完全な公開鍵を保存する代わりに、サイズが 160 ビット程度のフィンガープリントのみを保存できることがよくあります。これの欠点は、メッセージ/署名のサイズが大きくなることです。
一部のアルゴリズムでは、公開鍵と秘密鍵のサイズは同じですが、一部のアルゴリズムでは異なります。多くの場合、コスト (解凍時間またはメッセージ サイズ) を使用して、それらのいずれかまたは両方を圧縮できます。
私はさまざまな情報源から調べていましたが、RSA キーの生成に使用されるモジュラス (n=p*q) は、公開キーと秘密キーで同じであるというのが私の結論です。モジュラスは、両方のキーの長さを決定します。
私が理解していることから、両方のキーが同じサイズである必要はありません。キーの生成方法については、以下を確認してください:
http://en.wikipedia.org/wiki/RSA_algorithm#Key_generation
ただし、1 つのキー (またはモジュラスの係数) が大幅に小さいと、暗号解読に対する強度が弱まると思います。
編集:
OPがモジュラスのサイズに最も関心があることを明らかにしたため、この議論はほとんど無関係になりました。これは、暗号化と復号化で当然同じになります(奇妙な未知の暗号システムを除く)。
要点を明確にするために、e << d (または d << e) の場合、キーを異なるサイズのキーとして配布できると言っているだけです。それらは、同じビットサイズの数学 (たとえば 256 ビット) を使用する同じアルゴリズムによって生成され、同様に、暗号化と復号化には同じ数のビットが必要になります。(議論のために)数字の 1 と 128 を見ると、それらを表現する方法にはさまざまな選択肢があります。それらは両方とも 8 ビットである場合もあれば、1 を 1 ~ 7 ビットの任意の数のビットで表す場合もあります。これは、d と e の大きさが予測可能な方法で大幅に異なることをキー生成方法が保証しない限り、安っぽいトリックと見なすことができます。ただし、前述のように、これを行う意味はあまりありません。