題 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 +證書,哈哈)。


更新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”放在Desktop目錄中。

請耐心等待我,因為我已被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 Man Pages對我來說仍然很模糊,或者有些人可能會說它“用戶敵對”(搜索“用戶敵對的gpg”),所以我需要一些額外的胡蘿蔔扔我的方式。我承認:我很笨。事實上,當我還在學習如何使用MD5驗證時,我幾乎和我一樣在這裡掙扎。


5
2018-03-07 05:18


起源


老實說,這是一個什麼樣的蠢貨!為什麼KeepassX開發人員不會剛剛發布了MD5,因此可以使用ExactFile來檢查下載的安裝程序。 - therobyouknow


答案:


在您提供的第一個命令上,您應該引用.asc簽名文件 - 而不是.exe文件。 .exe文件也應該與.asc文件駐留在同一目錄中。

從gpg手冊頁:

 - 校驗
      假設第一個參數是簽名文件或分離簽名,並在沒有生成的情況下驗證它
      任何輸出。如果沒有參數,則從STDIN讀取簽名包。如果只給出一個sigfile,
      它可能是一個完整的簽名或一個獨立的簽名,在這種情況下,簽名的東西預計在一個
      沒有“.sig”或“.asc”擴展名的文件。有超過1個參數,第一個應該是分離的
      簽名和剩餘的文件是簽名的東西。要閱讀STDIN中籤名的內容,請使用' - ''
      作為第二個文件名。出於安全原因,分離的簽名無法從中讀取簽名的材料
      STDIN沒有以上述方式表示它。

4
2018-03-07 06:10



.exe.asc文件是.exe文件的簽名。當您嘗試驗證時,您需要在同一文件夾中的兩個文件。當您將.exe.asc文件傳遞給gpg --verify時,它會在同一文件夾中查找相關文件(.exe)。這是在運行/安裝.exe文件之前的全部內容。當我驗證它告訴我簽名公鑰ID是0xFEB7C7BC匹配 公鑰 發表於 簽名頁面 但這並沒有真正驗證,因為sig和公鑰都來自同一個來源。 - Mike Fitzpatrick
以下是鏈接: 。可執行程序, .exe.asc 和作者的 公鑰。你應該 將作者的公鑰導入您的密鑰鏈 並將其他兩個文件放在同一目錄中。您可能還應該將該目錄設置為當前工作目錄,而不是gpg目錄,以確保。驗證過程依賴於您信任作者公鑰的有效性...... - Mike Fitzpatrick
據我所知,成功驗證文件的簽名文件 將 幫助檢測任何下載錯誤(或中間人攻擊),但它無法幫助您驗證該文件是否真的來自擁有公共簽名的人。如果您在gpg密鑰環上有一個受信任的作者公鑰的副本,那麼您可以驗證.exe文件確實是由他們簽名但是獲取公共密鑰和來自同一來源的簽名並不能證明簽名者的任何信息。身份。 - Mike Fitzpatrick
@Mike:s /擁有公共簽名/擁有密鑰對/ - grawity
@Stisfa:@grawity正確意味著我應該寫“擁有密鑰對”而不是“擁有公共簽名”。 - Mike Fitzpatrick


你似乎過於復雜的事情:-)嘗試搜索DSA密鑰ID FEB7C7BC at https://keyserver.pgp.com/vkd/GetWelcomeScreen.event 我想你明白了!


1
2018-03-16 07:59



好吧,我起初並沒有“得到它”。在有機會與GPG合作之後,與Mike Fitzpatrick和grawity一致,閱讀維基百科的“信任網”概念,最後使用您發布的鏈接,我想我明白了。如果我可以從其他來源(您提供的鏈接)獲取DSA密鑰ID並從單獨的來源(KeePass主頁)下載KeePass及其相應的簽名,然後驗證它,我有一個正確的驗證。我認為。 - Stisfa


這篇文章主要是針對“A-to-Z”細分,這樣任何堅持這一點的人都可以得到答案,而無需深入了解所有評論。請不要投票;因為學分歸於參與者(Mike Fitzpatrick,grawity和Jan Ivar Beddari)。

另一件事: 不要相信這篇文章!  違反直覺的聲明,但我發布的內容是對GPG如何運作有缺陷/有限的理解。我會更新這個,因為我對此有了更好的理解;現在我對它的運作方式有一種模糊的把握。

  1. 下載您想要的副本 KeePass的, 相應的 簽名,以及你最喜歡的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:找不到最終可信任密鑰”部分。我不知道該怎麼做,但Key Fingerprints與KeePass網站上的那些相匹配,這在驗證文件時很重要。這與驗證公鑰是否值得信賴有很大不同。公鑰是你信任使用或不信任的,比如你是否信任陌生人。他們認為值得信賴的一種方式是,如果他們有幾個人擔保他們,這對於公鑰是相同的。同樣,這是我有限的範圍,因此您也需要盡職盡責!

如果你可以等待,我會慢慢編輯我的帖子,以簡潔,簡單,並且希望準確地表示正確使用GPG驗證一個人的KeePass副本。


0
2018-04-08 00:26





你試過這個嗎?

gpg --verify KeePass-2.14-Setup.exe.asc KeePass-2.14-Setup.exe

當然可以在Ubuntu上試試吧。如果你理解我的意思,Windows往往是一種痛苦......


0
2018-02-14 05:24





重要! 這只是僅供參考。如果您從一個平台遷移到另一個平台(例如從Win。遷移到Linux)並重新安裝KeepAss,請確認您正在安裝正確的軟件包。存儲庫中首先存在KeepAssX,但如果您使用KeepAss2數據庫,它將拋出上述錯誤。 請使用適用於.kbdx數據庫的KeepAss2包。


0
2018-04-13 06:51