
使用: gpg (GnuPG) 2.0.22 libgcrypt 1.5.3
我正在嘗試從遠端網站解密文件。我將密鑰導出到文件中。gpg <filename>
傳回:(密鑰 ID 已更改)
pub 2048R/656CC421 2018-04-19
sub 2048R/99F89J32 2018-04-19
我將其發送給寄件者並要求他們匯入、簽名並信任它。
他們給我發送了兩個不同的密鑰檔案。使用gpg <filename>
傳回值:
1. pub 2048R/62568LK1 2015-09-03
2. pub 2048R/J561VE25 2015-09-23
如果我執行編輯鍵,我會得到以下資訊:
我的鑰匙:
Secret key is available.
pub 2048R/656CC421 created: 2018-04-19 expires: never usage: SC
trust: ultimate validity: ultimate
sub 2048R/99F89J32 created: 2018-04-19 expires: never usage: E
[ultimate] (1).
他們的鑰匙:
1. pub 2048R/62568LK1 created: 2015-09-23 expires: never usage: SCE
trust: full validity: full
[ full ] (1).
2. pub 2048R/99F89J32 created: 2015-09-03 expires: never usage: SC
trust: full validity: full
[ full ] (1).
我正在 bash 腳本中使用以下參數運行解密命令。
echo $passphrase | /usr/bin/gpg --verbose --passphrase-fd 0 --no-tty --output $output_file --recipient myuser --decrypt $input_file
以下是命令的輸出:
Version: GnuPG v1.2.4 (MingW32)
gpg: armor header:
gpg: public key is 99F89J32
gpg: using subkey 99F89J32 instead of primary key 656CC421
gpg: using subkey 99F89J32 instead of primary key 656CC421
gpg: cancelled by user
gpg: encrypted with 2048-bit RSA key, ID 99F89J32, created 2018-04-19
"usrname (Description) <[email protected]>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key
我從這一切中得出的結論是,寄件者需要以我發送給他們的相同格式向我發送他們的公鑰。例如:
pub 2048R/J561VE25 2015-09-23
sub 2048R/SOM3NUMB 2015-09-23
我認為他們發送給我的密鑰文件沒有相應的發布/訂閱信息,因此 gpg 無法驗證,因為我只有他們密鑰對信息的一部分。
誰能告訴我我的想法是錯的還是正確的?
謝謝!
答案1
Version: GnuPG v1.2.4 (MingW32)
聖球那是舊的 – 版本 1.2.4 發佈於2003年。寄件者似乎不太關心更新他們的安全軟體。
(您自己的 2.0.22 也好不了多少,發布日期是 2013 年。)
gpg: public key is 99F89J32 gpg: using subkey 99F89J32 instead of primary key 656CC421 gpg: using subkey 99F89J32 instead of primary key 656CC421
這很正常。 「主」密鑰對僅用於簽署(也稱為證明)其他密鑰;通常也用於簽署訊息。它不能用於加密——您總是有一個用於此目的的子密鑰。
(這種分離還允許離線簽署或頻繁的加密金鑰輪換等操作。)
gpg: cancelled by user gpg: encrypted with 2048-bit RSA key, ID 99F89J32, created 2018-04-19 "usrname (Description) <[email protected]>" gpg: public key decryption failed: Operation cancelled gpg: decryption failed: No secret key
聽起來 GnuPG 試圖顯示解鎖密碼提示你的密鑰對,但密碼短語視窗無法打開,或者您自己不小心取消了它。
密碼提示由 GnuPG 顯示皮恩特里組件,它本身是透過啟動的gpg-代理。我真的不知道從哪裡開始解決 Windows 上的問題 – 也許較新的版本會工作得更好。 (您的 GnuPG 2.0.22 於 2013 年發布。)
從 GnuPG 2.1 開始的較新版本支援「環回 pinentry」模式,該模式無需皮恩特里成分。如果升級本身沒有幫助,請嘗試啟動此選項。
寄件者需要向我發送他們的公鑰
發送者的公鑰對於解密沒有用處,僅用於簽章驗證。
例如:
pub 2048R/J561VE25 2015-09-23
我認為他們發送給我的密鑰文件沒有相應的發布/訂閱信息,因此 gpg 無法驗證,因為我只有他們密鑰對信息的一部分。
不。你、使用者 – 它總結了金鑰的類型、短(無用)ID 和到期日期。 GnuPG 可以完美地從密鑰本身提取它,但這並不是它需要的。
答案2
經過多次來回之後,我透過兩個更改找到了解決方案。
gpg-agent.conf 需要
pinentry-program /usr/bin/pinentry-curses
加入其中。腳本編寫者需要添加
--batch
到他的命令列。
完成後,gpg 就能夠取得金鑰並解密。
感謝您的回覆。感謝您的寶貴時間。