2015-04-30 94 views
1

我有定期和體徵運行作業/加密文件,像這樣:GPG:如何使用不同密碼短語對多個簽名進行簽名?

$ gpg --homedir /path/to/.gnupg -r [email protected] -r [email protected] --local-user [email protected] --batch --passphrase-file /path/to/gpg-password --sign -ea myfile 

的命令加密文件的兩個收件人:[email protected][email protected]。它用[email protected]對文件進行簽名。它以批處理模式運行,因爲沒有人爲交互 - 這是一個自動化過程。它從/ path/to/gpg-password獲取簽名的密碼。

我想要做的是現在用兩個簽名同時簽署文件。像這樣:

$ gpg --homedir /path/to/.gnupg -r [email protected] -r [email protected] --local-user [email protected]n.com --local-user [email protected] --batch --passphrase-file /path/to/gpg-password --sign -ea myfile 

gpg: skipped "[email protected]": bad passphrase 

它工作在交互模式(例如,沒有--batch),我只是通過命令行來提供這兩個密碼短語罰款。但是,在批處理模式下,它會嘗試從文件中獲取簽名,因此會失敗。簽名僅對其中一個簽名密鑰有效。

從手冊頁:

--passphrase文件file

從文件中讀取file密碼。只有第一行將從文件file中讀取。只有在只提供了一個密碼短語時才能使用。

我該如何判斷每個密鑰的密碼?

回答

1

對於處於和我一樣的情況的其他人,我最終通過編輯其中一個簽名密鑰以獲得與另一個密碼相同的密碼(密碼存儲在gpg密碼文件中)來解決gpg的這種明顯缺陷)。這不會危及此實例中的安全性,因爲無論如何密碼都存儲在文本文件中 - 真正的安全性是此命令運行的用戶的密碼以及密鑰保密的事實。您可以通過執行gpg --edit-key <key_id>然後passwd來更改密鑰。之後不要忘了save

3

您有不同的選擇。

  • 完全刪除密碼,因爲它們存儲在任何地方。
  • 使用相同的密碼(如您已經發現的)。使用gpg-agent並預設密碼。我不確定這是否僅限GnuPG 2(通常安裝爲gpg2,可能需要從gnupg2軟件包安裝)。預設密碼與running gpg-preset-passphrase --preset [fingerprint]一樣簡單。您必須單獨爲每個密鑰運行此命令,並確保在給定時間(至少是添加所有密碼短語的處理時間,然後簽署要簽名的文件)中緩存密碼短語。
  • 爲了完整起見,不切實際:爲每個密鑰單獨簽名文件,然後拆開OpenPGP數據包並重新組合它們,逐個添加所有簽名。使用多個密鑰簽名只會創建多個簽名數據包。
+0

謝謝!我一直在尋找gpg-agent位,認爲現在不值得麻煩。我擺脫密碼是有點危險,只是因爲這些密鑰存儲在其他地方。但如果他們不是,那麼密碼是沒有意義的。 – tytk

+0

使用'gpg-agent'沒有那麼複雜,並且具有可以從應用程序中徹底刪除密碼的優點,並且可以大幅消除私鑰對其的影響。無論如何,您必須這樣做才能支持ECC密鑰,它只支持從GnuPG 2.1開始(並且GnuPG 2刪除了「--passphrase」選項)。 –

+0

我曾指出,如果設置了'--batch'選項,'--passphrase'實際上仍然受到GnuPG 2和2.1的支持。 –

相關問題