为什么gpg不需要我们指定加密和解密的密钥?

为什么gpg不需要我们指定加密和解密的密钥?

GNU 隐私手册说:

命令行选项--sign用于进行数字签名。输入要签名的文档,输出签名的文档。

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

You need a passphrase to unlock the private key for
user: "Alice (Judge) <[email protected]>"
1024-bit DSA key, ID BB7576AC, created 1999-06-04

Enter passphrase:

为什么它不询问要使用哪个私钥?运行命令的用户不能持有多个私钥吗?

可以使用 --symmetry 选项使用对称密码对文档进行加密。

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

gpg 是否使用密码对输入文件进行对称加密?或者它是否使用密码只是为了访问将用于对称加密输入文件的密钥?如果是后者,为什么它不询问对称加密使用哪个密钥?用户不能拥有多个可用于对称加密的密钥吗?

当解密对称加密文件时,

alice% gpg --descrypt doc.gpg 

将会成功。为什么它不要求输入密码(以及解密密钥)?doc.gpg 我给别人之后如何解密 ?

谢谢。

答案1

GnuPG 将使用第一的--default-user如果既没有指定也没有指定,则在秘密密钥环中找到密钥--local-user。您还可以定义要使用的默认键

default-key KEYID

~/.gnupg/gpg.conf

对称加密确实不是涉及任何公钥或私钥。您输入的密码用于加密和解密消息(因此是“对称”)。

在您的示例中,解密时不会要求您提供密码,因为该gpg-agent进程已缓存您在加密消息时使用的密码。如果您终止代理并尝试再次解密消息,系统会要求您提供密码。

如果您共享doc.gpg文件并且其加密方式为对称的加密,您还需要以某种方式共享密码,以使收件人能够解密邮件。任何拥有密码的人都可以解密该消息。

当使用密钥加密和签名时,共享您的公钥(用于验证签名)就足够了。如果没有签名,您就不必共享您的密钥。使用密钥加密,消息将被加密一个或多个具体的收件人,因此您需要拥有他们的公钥才能执行加密。无法访问私人的特定接收者的密钥,该消息将无法被解密。

相关内容