对于与主键相关的子键的概念,我(和其他许多人一样)有点困惑。gpg
默认情况下(至少它似乎在我的系统上 --- 使用RSA
),在gpg --gen-key
创建 amasterkey
和 a时subkey
。具有可用于签名和认证的masterkey
标志。SC
它还创建一个带有 flag 的子密钥E
,用于加密。以下陈述是否正确?
- 如果我理解 the
masterkey
和subkey
are 密钥对的整个概念,那就是一对私钥-公钥。 - 一个仅用于加密的事实是因为某些算法有这样的要求(需要单独的密钥进行加密和签名)
- 在
subkey
与E
标志:它的公共部分可以用于加密信息,而其私人部分解密用的公共部分加密的信息。 - 在
masterkey
与SC
标志:其私处用于签名/验证其公共部分被用来验证签名的有效性。
更令人困惑的部分是当我按照建议进一步创建时subkeys
,一个用于签名,一个用于加密。我们只称原始加密subkey
ESK0
和新加密subkey
ESK1
,新签名subkey
SSK1
和masterkey
MK
.
创建后ESK1
,SSK1
我应该总共有 4 个公钥/私钥对,对吗?然后,按照指南,我将其删除MK
到离线媒体并将其从我的计算机中删除,因此我现在在我的计算机中:
- 公共/私人对
ESK0
(原始加密) - 公共/私人对
ESK1
(新加密) - 公共/私人对
SSK1
(新签名) - 公钥用于
MK
然后我使用更改密码gpg --edit-key $id passwd
。根据一些指南,它应该将密码更改为子键,但我不太确定,我认为这只是将密码更改为绑定到MK
它的整个结构,只是MK
离线存储的结构仍然具有旧密码. 哪个是对的?
现在,如果我签署一些东西,哪个是签名密钥?我相信它必须是SSK1
因为MK
不再可用。正确的?
然后我使用 . 将一些公钥上传到密钥服务器gpg --send-key $id
。我上传了哪些公钥?
如果有人将使用来自密钥服务器的信息向我发送一些加密信息,那么哪个公钥将用于加密 -ESK0
或ESK1
?我担心ESK0
从那时起,拥有子密钥的全部意义就完全没有意义了,因为我仍然会使用解密ESK0
。
另外,为什么指南建议删除MK
但ESK0
仍然应该保留在系统上?那么这样做的目的是ESK1
什么?
感谢您的任何帮助。