Gpg

為什麼 gpg 不需要我們指定加密和解密的密鑰?

  • February 4, 2019

GNU 隱私手冊說:

命令行選項 –sign 用於進行數字簽名。輸入要簽名的文件,輸出簽名的文件。

alice% gpg --output doc.sig --sign doc

You need a passphrase to unlock the private key for
user: "Alice (Judge) <alice@cyb.org>"
1024-bit DSA key, ID BB7576AC, created 1999-06-04

Enter passphrase:

為什麼它不詢問要使用哪個私鑰?執行命令的使用者不能持有多個私鑰嗎?

通過使用 –symmetric 選項,可以使用對稱密碼對文件進行加密。

alice% gpg --output doc.gpg --symmetric doc
Enter passphrase:

gpg 是否使用密碼對輸入文件進行對稱加密?還是僅使用密碼來訪問將用於對稱加密輸入文件的密鑰?如果是後者,為什麼不詢問要使用哪個密鑰進行對稱加密?使用者不能持有多個可用於對稱加密的密鑰嗎?

解密對稱加密文件時,

alice% gpg --descrypt doc.gpg 

將會成功。為什麼它不要求輸入密碼(以及解密的密鑰)?doc.gpg 我把它交給他們後,其他人怎麼能解密 ?

謝謝。

如果兩者都沒有指定, GnuPG 將使用在密鑰環中找到的*第一個密鑰。*您還可以定義要使用的預設鍵--default-user``--local-user

default-key KEYID

~/.gnupg/gpg.conf.

對稱加密不涉及任何公鑰或私鑰。您輸入的密碼用於加密和解密消息(因此是“對稱的”)。

在您的範例中,解密時不會要求您輸入密碼,因為該gpg-agent程序已記憶體您在加密消息時使用的密碼。如果您終止代理並再次嘗試解密消息,系統會要求您輸入密碼。

如果您共享您的doc.gpg文件並且如果它使用對稱加密進行加密,您還需要以某種方式共享密碼以使收件人能夠解密消息。任何擁有密碼的人都可以解密該消息。

當使用帶有簽名的密鑰加密時,共享您的公鑰(用於驗證簽名)就足夠了。如果沒有簽名,您就不必共享您的密鑰。使用密鑰加密,消息將為一個或多個特定收件人加密,因此您需要擁有他們的公鑰來執行加密。如果無法訪問特定收件人的私鑰,則無法解密消息。

引用自:https://unix.stackexchange.com/questions/498593