web-dev-qa-db-ja.com

RSA署名のサイズは?

RSA署名の長さを知りたいのですが?キーサイズが1024の場合、RSA署名は128バイト、キーサイズが512ビットの場合、RSA署名は64バイトのように、常にRSAキーサイズと同じサイズですか? RSAモジュラスとは何ですか?また、RSA-sha1はどういう意味ですか?ポインタは大歓迎です。

36
user839917

正しいです。RSA署名のサイズはキーのサイズに依存し、RSA署名のサイズはモジュラスの長さ(バイト)に等しくなります。つまり、「nビットキー」の場合、結果の署名は正確にnビット長になります。計算された署名値は必ずしもnビットではありませんが、結果は正確にnビットに一致するように埋め込まれます。

次に、これがどのように機能するかを示します。 [〜#〜] rsa [〜#〜] アルゴリズムは、 モジュラーべき乗 に基づいています。そのような計算の場合、最終結果は「通常の」結果の残りを係数で除算したものです。モジュラー演算は、 数論 で大きな役割を果たします。そこでは、合同の定義(≡)は

m is congruent to n mod k if k divides m - n

簡単な例-n = 2およびk = 7とします

2 ≡ 2 (mod 7) because: 7 divides 2 - 2
9 ≡ 2 (mod 7) because: 7 divides 9 - 2
16 ≡ 2 (mod 7) because: 7 divides 16 - 2
...

7実際にdoesは0を除算し、除算の定義は

B = naの性質を持つ整数nがある場合、整数aは整数bを除算します

A = 7およびb = 0の場合、n = 0を選択します。これは、すべての整数が0を除算することを意味しますが、合同は負の数に拡張できることも意味します(詳細は説明しませんが、RSAにとっては重要ではありません)。

だから要点は、合同原理が剰余の素朴な理解を拡張することであり、モジュラスは「modの後の数」であり、この例では7です。モジュラスが与えられると合同の数が無限にあるため、これを合同クラスとして使用し、通常、計算の「残り」について話すときに直感的に行うように、計算のために1つの代表(最小の合同整数> 0)を選択します。

RSAでは、メッセージmに署名することは「プライベート指数」dでの累乗を意味し、結果rは最小整数> 0で、法nよりも小さいため、

m^d ≡ r (mod n)

これは2つのことを意味します

  • R(ビット単位)の長さは、n(ビット単位)によって制限されます。
  • M(ビット単位)の長さは<= n(ビット単位)でなければなりません

署名を正確にnビット長にするために、何らかの形式のパディングが適用されます。 Cf.有効なオプションについては、PKCS#1。

2番目の事実は、nより大きいメッセージはmをいくつかのチャンク<= nで分割することで署名する必要があることを意味しますが、これはあまりにも遅いため実際には行われません(モジュラーべき乗は計算的に高価です)メッセージを「圧縮」してnより小さくする別の方法。この目的のために、あなたが言及したSHA-1のような 暗号的に安全なハッシュ関数 を使用します。 SHA-1を任意の長さのメッセージmに適用すると、RSAモジュラスの一般的なサイズよりも小さい20バイト長の「ハッシュ」が生成されます。一般的なサイズは1024ビットまたは2048ビット、つまり128または256バイトです。署名の計算は、任意のメッセージに適用できます。

このようなハッシュ関数の暗号特性により、理論上、署名の偽造は研究コミュニティで大きな話題になりますが、ブルートフォース以外による署名の偽造は不可能です。

48
emboss