web-dev-qa-db-ja.com

証明書署名用のRSAを使用したSHA1に関する問い合わせ

ご存じのとおり、2048ビット長の署名を生成するための証明書署名アルゴリズムとして、多くのX.509証明書(RSA暗号化を使用したPKCS#1 SHA1)が使​​用されています。 SHA1ハッシュ関数は160ビットのハッシュ値を生成することがわかっているため、2048ビットの証明書署名値は(160ビット+ 1888ビット= 2048ビット)の組み合わせになります。 私の質問は次のとおりです:1888ビットはどこから来るのですか?それらは別のハッシュ値ですか、それとも単にパディングするのですか?

誰かがこの質問に簡単に答えることができますか?私がこの問題の答えを見つけようとしていたので、ソースまたはWebサイトを提供して詳細を読むこともできますが、この問題を説明するための適切なリソースがありません。

ありがとうSO事前にかなり:)

2
Mike

2048ビットの長いフィールドは、ハッシュ関数の結果のコンテナーです。さまざまなハッシュ関数の結果を受け入れるのに十分な長さです。

使用されているハッシュ関数が2048より短い結果を提供する場合、他の回答が述べているように、ハッシュ値は埋め込まれます。

また、SHA-1を使用しないでください。あなたが米国政府のクライアントを持っている場合、彼らはそれを使用することはできません。そして、他の誰もそれを使用するべきではありません。

2011年、米国国立標準研究所は次のように regulation (6ページを参照)を発行しました。

2013年12月31日以降、112ビット未満のセキュリティ強度を提供するキーの長さを使用してデジタル署名を生成することはできません。

(強調は元々です。)この規制は米国政府に適用されますが、非政府組織/企業がベストプラクティスの例としてこれに従うことも一般的です。

3
Larry K

署名アルゴリズムは、一方向ハッシュ関数(この場合はSHA-1)を利用します。アルゴリズムは、署名するデータ(ハッシュ(メッセージ))を収集し、RSA秘密鍵を使用して署名します。この操作では、署名値(e_priv(hash(certificate fields)))が作成されます。これは、証明書の署名フィールドに含まれているビット文字列です。

SHA-1出力を取得して何かに追加して署名フィールドを作成するのではなく、ハッシュ出力で署名を実行します。

0
Daisetsu

RSA暗号化の出力サイズは、常にRSAキーサイズと同じです。 Sha1RSA 2048署名の場合、PKCS#1パディング方式に従って160ビットのsha1ダイジェストがパディングされ、入力ブロックがRSAキーサイズと同等になり、RSA秘密キーで暗号化されて2048ビットの署名になります。

0
Deva