アーカイブに署名することは可能ですか?


15

opensslで遊んでpub / prvキーを作成し、ファイルの署名を作成して検証しました。私はCryptophane(windows gnupgフロントエンド)をいじり、キーサーバーと署名テキストでプレイしたことを聞きました。

ただし、ファイルアーカイブに署名したことはありません。アーカイブ(7z、rarまたはzip、それは重要ではありません)を公開したい場合、ユーザーまたはソフトウェアがそのアーカイブに署名されているかどうかを確認できるようにするにはどうすればよいですか?公開鍵は明らかに公開されている必要があります。しかし、アーカイブに署名を追加することは私を悩ませます。ソフトウェア+アーカイブでは、圧縮されたアーカイブファイルに署名して検証できますか?


なぜあなたはそれに署名したいのですか?SHA1ハッシュを作成して、クライアント/ユーザーがチェックできるようにハッシュを使用可能にすることができます。これは、ファイルが改ざんされていないことを確認するのに十分です。ユーザーはハッシュを検証する必要がありますが、署名を検証するよりも難しくはありません。
BJ292

@ BJ292:そして、ハッシュが改ざんされていないことをどのように確認しますか?
user1686

@grawity-私が従うかどうかわからない-ハッシュを改ざんするポイントは何ですか?ファイルとハッシュを送信します-ファイルからハッシュを再作成し、一致することを確認します-これにより、ファイルが変更されていないことを確認します。ほとんどの場合、これはほとんどの人が望むすべてです。ファイルがAからBに変更されていないことを確認します。確かに、これがOPの目的です。
BJ292

3
@ BJ292:OPは偶発的なデータ破損のみに関係していると想定しています。これは質問では述べられていません(または拒否されています)が、OPはデジタル署名について尋ねているので、意図的な(おそらく悪意のある)データ変更から保護する必要があると思います。
user1686

1
@ BJ292:ファイルは他のpplsサイトにミラーリングされます。ミラーのいずれも改ざんされないようにそれらに署名したいと思います

回答:


10

一般的な方法は、ファイルに分離署名作成し.sig(通常、gpg -bX.509 を使用したPGP署名は非常に一般的ではありません)、両方のファイルを同じ場所に提供することです。例えば:

ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2
ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-2.0.19.tar.bz2.sig

これはあらゆる種類のファイルで使用できますが、ユーザーはを使用して署名を手動で確認する必要がありますgpg --verify


残念ながら、現在使用されているもののうち、PGPまたはX.509を使用した組み込みの署名サポートしているアーカイブ形式(私が知っている)はありません。(これはCABを除きます。CABはWindowsで内部的に使用されますが、実際には他のどこにも使用されず、署名がかなり複雑です)。WinRAR 4は、独自の形式を使用して「真正性検証」レコードを追加できましたが、WinRARライセンスを署名キーとして使用しており、これは繰り返しクラックされています。(更新:この機能は、不安定なためWinRAR 5から削除されました。)


Windows(およびまもなくMac OS X)では、「自己解凍アーカイブ」(内部からアーカイブを抽出するデジタル署名された実行可能ファイル)を作成できます。これは、たとえばWindowsのソフトウェアインストーラーの動作です。ただし、SFXは単一のオペレーティングシステムに限定されているため、ドキュメントや画像ではなく、プログラムの配布のみ適しています。(Javaプログラムは署名可能で、クロスプラットフォームですが、Javaランタイムを備えたシステムはまだほとんどありません。)


2

Java jarツールを使用してビルドするjarアーカイブは、事実上zipアーカイブであり、それらに署名するためのツールjarsignerがあります。

便利なリンクを次に示します。

最初は少し複雑に見えますが(「何、keeytoolが必要ですか?他に何が必要ですか?」)、簡単な方法でそれを解決するための手順に従うのは簡単です。できます。その後、問題をより深く掘り下げることができます。


これは、(XPIアーカイブも非常に類似した方法で署名ジッパーある)真のですが、私の知る限り、唯一のJavaランタイムは、実際に検証したJAR署名を、マニュアルの検証を行うために必要とすることがさらに少ない実用的なのGnuPGよります。
user1686

どういう意味manual verificationですか?代替手段は何ですか?10分ごとに自身を検証する自動ポップアップ?OSは起動時にアーカイブを自動的に検証しますか?アーカイブが受信されると、CD、電子メールの添付、ダウンロードなどから... ウイルススキャナのプラグインにする必要がありますか?
ユーザー不明

抽出前/抽出中にアーカイブ抽出ツールによって実行される検証、またはプログラム実行中にOS /ランタイムによって実行される検証を意味しました。たとえば、.debパッケージの署名は、ユーザーが追加のアクションを実行することなくdpkgパッケージがインストールされる前に検証されます。
user1686

@grawity:jarに圧縮された署名付きアプレットは、実行前に検証されます。検証(jarsigner)と抽出(jar)を組み合わせた最小限のシェルスクリプトを生成するのは簡単です。
ユーザー不明

3番目のリンク「jarファイルの署名に関するwiki」が壊れています
ジェイソンS

0

もちろん、署名されたソフトウェアをインストールするたびに、署名されたアーカイブを検証しています。作成するには、開発者が使用するのと同じパッケージツールを使用する必要があります。いくつかのトレードオフ、クロスプラットフォームの互換性に対する使いやすさがあります。クロスプラットフォーム署名付きの自己解凍アーカイブを作成する方法は考えられません。

Windowsの場合、iexpressツールを使用して自己解凍アーカイブを作成し、こちらで説明されているようにsigntool.exeを使用して署名します。ユーザーがファイルをダブルクリックすると、使い慣れたウィンドウでダイアログが確認され、アーカイブの発行者であることを確認できます。


-1

次の2つのコマンドでjarsignerを使用してファイルに署名できます。

keytool -genkeypair -alias <key-alias> -keyalg RSA -keystore <keystore> -validity 180

jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore <keystore> <file-to-sign> <key-alias>

PCにjava jdkをインストールする必要があります。

-最初のコマンドは、現在のディレクトリにキーストアを作成します(まだ存在しない場合)。アルゴリズムSHA-256を使用して公開/秘密キーペアを生成します。

-2番目は、同じアルゴリズム、キーストア、および最初のアルゴリズムで生成されたエイリアスを使用してファイルに署名します。

キーストアを使用して署名されたファイルを確認するには、次のコマンドを実行できます。

jarsigner -keystore <keystore> -verify -verbose -certs <file-signed>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.