web-dev-qa-db-ja.com

デジタル署名されたファイルのチェックサムは変更されますか?

私の理解では、ファイルにデジタル署名すると、バンドルされているため、ファイルのチェックサムが変更されます。

私の意味の例:

file1.txtには文字「d」のみが含まれ、このファイルのcrc32チェックサムは98dd4accです。ただし、証明書の秘密キーを使用してデジタル署名したいのですが。デジタル署名した後、ファイルのハッシュは何ですか? 98dd4accと同じままですか、それとも証明書にバンドルされた後で変更されますか?

ファイルのチェックサムが変更されることを想定して、私は正しいですか、間違っていますか?実際にはファイル自体に含まれているのではなく、プロパティなどに含まれているデジタル署名です。

ありがとうございました。

1
hemlck

多くの可能性があります。

Keithによって説明されているPDFのような一部のファイル形式、およびMicrosoft Windows実行可能ファイル用のAuthenticodeは、ファイルに署名を入れますが、それ自体をカバーしないように調整します。他の重要ではないデータも同様です。 。

XMLdsigやオプションでS/MIME CMS/PKCS7やPGPなどの一部のファイルまたはメッセージ形式では、データと署名の両方をより大きなファイル構造に配置して、簡単に分離し、署名を検証し、データ(署名なし) ) 中古。 Java codesigningはJavaのJAR形式を使用します。これはわずかに変更されたZipファイルです。各クラス(または他のリソース)はJARファイルのエントリであり、すべてのクラスのダイジェストはマニフェストにリストされています。 JARファイルのエントリ、およびマニフェストの署名と関連する証明書は、JARファイルの2つの追加エントリに格納されます。

ときどき、データファイルにリンクされている別のファイルに署名を置くだけです。 S/MIME CMS/PKCS7およびPGPの「切り離された」シグネチャはこれを行います。たとえば、ソフトウェアダウンロードサイトには、_superwondergizmo-1.2.3.tar_という名前のファイルが1つあり、その署名が_superwondergizmo-1.2.3.tar.sig_というファイルに含まれている場合があります(または、「Armored」またはASCII PGPの場合は_...asc_ )。 NTFSを搭載した最新のWindowsでは、補足ストリームを使用して署名を保存することは理にかなっていますが、誰もそうしたことはありません。リソースフォークを備えたMacOSの場合も同様です。しかし、それらは通常transferで機能しません。これは、今日重要なことが多いです。

2

通常、ファイルのコンテンツに署名しますが、署名はしない.

署名は単なるハッシュではなく、署名者の秘密鍵で暗号化されたハッシュであることに注意してください。例として、Adobeが PDFドキュメントの署名 の署名)をどのように説明するかを次に示します。

ファイル全体のハッシュは、SHA-256などのハッシュアルゴリズムを使用して、実際のByteRange値で指定されたバイトを使用して計算されます。 Acrobatは常に、PDFファイル全体、バイト0から始まり、物理ファイルの最後のバイトで終わる)にわたってドキュメント署名のハッシュを計算しますが、を除きます署名値バイト

私は専門家ではありませんが、このことから、署名がハッシュ+署名プロセスから除外されていることがわかります。そうしないと、無限の再帰ループに陥ってしまうからです:)

0
keithRozario