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>

正如你所看到的,結果非常令人困惑...

我看了一下這在超級用戶上,但似乎沒有一個連結真正解決了我的問題,至少不足以直接讓我了解如何繼續推進這一問題。

這裡有人可以幫助我了解 OpenPGP 的深奧技術和 GnuPG 程式的相關使用嗎?我覺得學習 VBS 非常愚蠢,但這不僅僅是羞辱:它絕對會削弱和損害我對 IT 技能的信心(話又說回來,我也沒有理由吹噓,因為我還沒有獲得 A+)證書,哈哈)。


更新 04-04-2011

好吧,我厭倦了擺弄 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

按照邁克的指示,我將“.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驗證的相似之處嗎?這就是全部內容了嗎?或者還有更進一步的步驟嗎?有沒有我用來驗證的命令這些字串?這些字串是我真正需要檢查的嗎?那些字串是什麼?



現在我還必須解決另一個問題。在「主鍵指紋」結果中,「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

在您提供的第一個命令中,您應該引用 .asc 簽名檔 - 而不是 .exe 檔案。 .exe 檔案也應與 .asc 檔案位於同一目錄中。

從 gpg 手冊頁:

- 核實
      假設第一個參數是簽名文件或分離簽名並驗證它而不生成 -
      荷蘭國際集團的任何輸出。如果不帶參數,則從 STDIN 讀取簽章資料包。如果只給一個 sigfile,
      它可能是一個完整的簽名或一個獨立的簽名,在這種情況下,簽名的東西應該​​在一個
      不含“.sig”或“.asc”副檔名的檔案。如果有多個參數,第一個參數應該是獨立的
      簽名,剩下的文件就是簽名的東西。若要從 STDIN 讀取簽名內容,請使用“-”
      作為第二個文件名。出於安全原因,分離的簽名無法讀取來自的簽名材料
      STDIN,而不用上述方式表示。

答案2

你似乎把事情變得過於複雜了:-) 嘗試在以下位置搜尋 DSA 金鑰 ID FEB7C7BChttps://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 網站上的公鑰時的結果:

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 網站上的指紋相匹配,這在驗證文件時很重要。但這與驗證公鑰是否可信有很大不同。公鑰是您信任使用或不使用的東西,就像您是否信任陌生人一樣。讓他們顯得值得信賴的一種方法是,他們有幾個人為他們提供擔保,這對公鑰來說也是一樣的。再次強調,這只是我的有限範圍,所以你也需要盡職調查!

如果您能耐心等待,我將慢慢編輯我的帖子,以簡潔、簡單且希望能夠準確地說明在驗證 KeePass 副本時正確使用 GPG 的情況。

答案4

重要的 ! 這僅供參考。如果您從一個平台遷移到另一個平台(例如從 Win 遷移到 Linux)並重新安裝 KeepAss,請驗證您正在安裝正確的軟體套件。儲存庫中首先提供了 KeepAssX,但如果您使用 KeepAss2 資料庫,它將引發上述錯誤。請對 .kbdx 資料庫使用 KeepAss2 套件。

相關內容