GnuPG コマンドライン - KeePass 署名の検証

GnuPG コマンドライン - KeePass 署名の検証

KeePass 2.14の最新バージョンのセットアップファイルのPGP署名を検証しようとしています。これ署名ですが、これが私が受け取る出力です:

C:\Program Files (x86)\GNU\GnuPG>gpg.exe --verify C:\Users\User\Desktop\KeePass-2.14-Setup.exe
gpg: no valid OpenPGP data found.
gpg: the signature could not be verified.
Please remember that the signature file (.sig or .asc)
should be the first file given on the command line.

C:\Program Files (x86)\GNU\GnuPG>

このコマンドを見つけましたここ、しかし「.sig」や「.asc」ファイルについては何も触れられていなかったので、私は何か間違っていると思った。マニュアルページ、私はさらに次のことを試しました:

C:\Program Files (x86)\GNU\GnuPG>gpg.exe --pgpfile C:\Users\User\Desktop\KeePass-2.14-Setup.exe
gpg: Invalid option "--pgpfile"

C:\Program Files (x86)\GNU\GnuPG>

ご覧のとおり、結果は非常にわかりにくいです...

私は見てみましたSuperUserでこれしかし、どのリンクも私の質問に直接答えているようには見えませんでした。少なくとも、この件についてどう進めたらよいか、私に何らかのアイデアを与えるほど直接的ではありませんでした。

OpenPGP の難解な技術と、それに関連する GnuPG プログラムの使用について、どなたか教えていただけませんか? VBS を学習しているときに、自分がかなり愚かだと感じたことがありますが、これは屈辱以上のものです。これは、私が IT スキルに対して持っていた自信を完全に弱め、台無しにしています (とはいえ、A+ 認定資格をまだ取得していないので、自慢する理由もありませんが、笑)。


2011年4月4日更新

さて、Windows をいじくり回すのに疲れたので、Ubuntu を起動して正しく実行することにしました。これだけでも、物事がはるかに論理的になりました。

これが私のコマンドのリストと現在の状況です:

  1. proto@type:~$ cd Desktop/
  2. proto@type:~/Desktop$ gpg --import KeePass-2.14-Setup.exe.asc gpg: no valid OpenPGP data found. gpg: Total number processed: 0
  3. proto@type:~/Desktop$ gpg --import Dominik_Reichl.asc gpg: /home/proto/.gnupg/trustdb.gpg: trustdb created gpg: key FEB7C7BC: public key "Dominik Reichl " imported gpg: Total number processed: 1 gpg: imported: 1
  4. proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe gpg: no valid OpenPGP data found. gpg: the signature could not be verified. Please remember that the signature file (.sig or .asc) should be the first file given on the command line.
  5. proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe.asc gpg: Signature made Sun 02 Jan 2011 05:25:24 AM MST using DSA key ID FEB7C7BC gpg: Good signature from "Dominik Reichl " gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 2171 BEEA D0DD 92A1 8065 5626 DCCA A5B3 FEB7 C7BC
  6. proto@type:~/Desktop$ gpg --verify Dominik_Reichl.asc gpg: verify signatures failed: unexpected data

Mike の指示に従って、".exe" と ".asc" ファイルを同じディレクトリ (デスクトップ) に配置しました。コードからわかるように、公開キー "Dominik_Reichl.asc" もデスクトップ ディレクトリに配置しました。

MD5 にすっかり慣れてしまったので、どうか我慢してください。上記のステップ 5 は、GPG では次のものと同等であると想定しています。

C:\Users\user\>CD Desktop

C:\Users\user\Desktop>MD5Sum KeePass-2.14-Setup.exe
bae59065b24f0a6f2ed4bb9e0d6fc65f *KeePass-2.14-Setup.exe

こう言うのは、「KeePass-2.14-Setup.exe」ファイルをデスクトップの「temp」フォルダに移動するたびに動作が変わるからです。コマンドを実行すると、次の結果が得られます。

proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe.asc
gpg: no signed data
gpg: can't hash datafile: file open error

これらの結果から、ステップ5から「DSAキーID」と「プライマリキーのフィンガープリント」を抽出し、それらを比較する必要があると信じるようになりました。署名ページの上部にある値それで、MD5検証と似ているのはここでしょうか?これですべてですか?それともさらにステップがありますか?検証に使うコマンドはありますか?これら文字列? これらの文字列は本当に確認する必要があるのでしょうか? これらの文字列とは何ですか?



今、私が対処しなければならない問題がもう 1 つあります。「プライマリ キー フィンガープリント」の結果では、「8065」と「5626」の間に 2 つのスペースがあります。スプレッドシートを使用して、署名ページの文字列で結果を検証すると、結果に余分な空白があるために「FALSE」という結果が表示されます。署名ページのソースをチェックして、ブラウザーが余分な空白を無視しているかどうかを確認しましたが、そうではありませんでした。

2171 BEEA D0DD 92A1 8065 5626 DCCA A5B3 FEB7 C7BC    # From Source of Signature Page
2171 BEEA D0DD 92A1 8065  5626 DCCA A5B3 FEB7 C7BC    # From My Results

余分な空白を削除すれば、結果は署名ページの結果と一致しますが、私が介入しなくても一致するはずではないでしょうか? 空白の違いは警戒すべきでしょうか?

残念ながら、GPG のマニュアル ページは私にとってまだかなりわかりにくいです。あるいは、一部の人が言うように「ユーザーに敵対的」です (「ユーザーに敵対的な gpg」を検索してください)。そのため、私にはさらにいくつかのニンジンが投げられる必要があります。私は愚かだと認めます。実際、MD5 検証の使い方をまだ学んでいたとき、これと同じくらい苦労しました。

答え1

最初に指定したコマンドでは、.exe ファイルではなく、.asc 署名ファイルを参照する必要があります。.exe ファイルも、.asc ファイルと同じディレクトリに存在する必要があります。

gpg のマニュアルページから:

- 確認する
      最初の引数が署名されたファイルまたは分離された署名であると仮定し、生成せずに検証します。
      出力を出力します。引数がない場合、署名パケットはSTDINから読み込まれます。sigfileのみが指定されている場合は、
      完全な署名または分離署名の場合があります。分離署名の場合、署名された内容は
      拡張子「.sig」または「.asc」のないファイル。引数が1つ以上ある場合、最初の引数は分離されている必要があります。
      署名と残りのファイルは署名されたものです。STDINから署名されたファイルを読み取るには、'-''を使用します。
      2番目のファイル名として。セキュリティ上の理由から、分離署名では署名された内容を読み取ることができません。
      上記の方法で表記せずに STDIN を使用します。

答え2

物事を複雑にしすぎているようですね:-) DSAキーID FEB7C7BCを検索してみてください。https://keyserver.pgp.com/vkd/GetWelcomeScreen.eventそしてあなたはそれを理解したと思います!

答え3

この投稿は主に「A から Z」までの内訳を目的としているため、この件で行き詰まっている人は、すべてのコメントを調べなくても回答を得ることができます。この投稿に賛成票を投じないでください。功績は参加者 (Mike Fitzpatrick、grawity、Jan Ivar Beddari) に帰属します。

別物:この投稿を信じないでください! 直感に反する発言ですが、私は GPG の仕組みについて不完全な/限定的な理解でこれを投稿しています。理解が深まったらこれを更新しますが、現時点では仕組みがぼんやりとしか理解できていません。

  1. ご希望のコピーをダウンロードしてくださいキーパス、 対応しますサイン、および公開鍵を、お気に入りの Linux ディストリビューションの同じディレクトリにコピーします (私の場合は、Ubuntu を使用しており、デスクトップを作業ディレクトリにしています)。
    • これは重要!公開鍵KeePassのウェブサイトにある公開鍵はダウンロードしないでください。他のユーザーが信頼している公開鍵をダウンロードする必要があります。そのユーザーはあなたが信頼している個人であることが望ましいです。どうすればいいでしょうか?信頼できる公開鍵を持っている友人にコピーをもらうように頼んでください。ただし、必ずしもその公開鍵を持っている友人がいるとは限りません。Jan Ivar Beddariの投稿のおかげで、Dominik Reichlが公開した公開鍵を次のサイトからダウンロードできます。ここそこから公開キーをインポートします。
  2. ターミナルを開きます(Ubuntuでは「CTRL+ALT+T」)
  3. 走るcd Desktop/
  4. 走るgpg --import %KEYNAME%.asc
  5. 走るgpg --verify %SIGNATURE%.asc
  6. 結果のキー指紋をKeePassウェブサイトのものと比較します

keyserver.pgp.com の公開キーを使用した場合の結果は次のとおりです。

proto@type:~$ cd Desktop/

proto@type:~/Desktop$ gpg --import key0xDCCAA5B3FEB7C7BC.asc 
gpg: key FEB7C7BC: public key "Dominik Reichl " imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg: no ultimately trusted keys found

proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe.asc
gpg: Signature made Sun 02 Jan 2011 05:25:24 AM MST using DSA key ID FEB7C7BC
gpg: Good signature from "Dominik Reichl "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2171 BEEA D0DD 92A1 8065  5626 DCCA A5B3 FEB7 C7BC

次に、KeePass Web サイトの公開キーを使用した場合の結果を示します。

proto@type:~$ cd Desktop

proto@type:~/Desktop$ gpg --import Dominik_Reichl.asc
gpg: key FEB7C7BC: public key "Dominik Reichl " imported
gpg: Total number processed: 1
gpg:               imported: 1

proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe.asc
gpg: Signature made Sun 02 Jan 2011 05:25:24 AM MST using DSA key ID FEB7C7BC
gpg: Good signature from "Dominik Reichl "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2171 BEEA D0DD 92A1 8065  5626 DCCA A5B3 FEB7 C7BC

ご覧のとおり、結果は「gpg: 最終的に信頼できるキーが見つかりません」という部分を除いてすべて同じです。どう解釈したらよいかわかりませんが、キー フィンガープリントは KeePass Web サイトのものと一致。これは、ファイルの検証時に重要です。ただし、これは公開キーが信頼できるかどうかを確認することとは大きく異なります。公開キーは、他人を信頼するかどうかのように、使用してよいかどうかを決定するものです。信頼できると判断される 1 つの方法は、複数の個人が保証人になっていることです。これは公開キーでも同じです。繰り返しますが、これは私の限られた範囲でのことですので、皆さんも十分な注意が必要です。

もしお待ちいただけるのであれば、KeePass のコピーを検証する際の GPG の適切な使用法について、簡潔でシンプル、そしてできれば正確に表現できるよう、投稿を徐々に編集していきます。

答え4

重要 ! これは参考情報です。あるプラットフォームから別のプラットフォームに移行し (たとえば、Windows から Linux)、KeepAss を再インストールする場合は、正しいパッケージをインストールしていることを確認してください。リポジトリでは最初に KeepAssX が使用可能ですが、KeepAss2 データベースをそれと一緒に使用すると、上記のエラーが発生します。.kbdx データベースには KeepAss2 パッケージを使用してください。

関連情報