GPG使用笔记

希望看这篇博客的同学们都是已经了解一些关于GnuPG或者PGP知识,或者是想去了解的同学们。

个人推荐

GPG密钥是有四种用途的,分别是C(Certification), S(Signing), E(Encryption), A(Authentication)。

带有证明(C)用途的密钥一般可以认为是主密钥。个人理解为证明是一种特殊的签名(S)密钥,可以签名UID,subkey或者别人的key等。用这把钥匙签名表示了密钥持有人的认可。换句话说,证明密钥就是你,而你的子密钥(比如加密(E)密钥)是因为有了你的主密钥(证明密钥)的签名,才被认为是你的子密钥之一。我知道这听起来有些像绕口令,记住有证明用途的密钥才直接代表你,其余的子密钥是被主密钥签名过的。

并且,一个密钥可以有很多的用途。我可以建立一把密钥,并让他拥有所有的用途。虽然我认为这样做很不明智,有点类似于你的家门钥匙和你的自行车钥匙是同一把的感觉。

使用gpg --generate-key创建的密钥,是一把CS用途的主密钥和一把E用途的子密钥。

新建密钥(非精简模式)

1
gpg --expert --full-generate-key

删除子密钥

参见邮件列表,这里

1
2
3
4
5
6
# Obtain the keygrip of the subkey you want to delete.
$ gpg --with-keygrip --list-secret-keys "$YOUR_FINGERRINT"

# Ask gpg-agent to delete the key for you.
# There should be a graphical confirmation prompt.
$ gpg-connect-agent "delete_key $KEYGRIP" /bye

EOF