GPG – 为什么我使用子键而不是主键进行encryption?

encryption文件发送给协作者时,我看到这个消息:

gpg: using subkey XXXX instead of primary key YYYY 

为什么会这样? 我注意到,当他们发给我一个encryption文件时,它也似乎被encryption到我的子项,而不是我的主键。 对我来说,这似乎不成问题; gpg(1.4.x,macosx)只是处理它并继续前进。 但是对于他们来说,通过自动化的工具设置,这似乎是一个问题,他们要求我确定使用他们的主键。

我试图做一些阅读,我有订单的迈克尔·卢卡斯的“GPG&PGP”书,但我不明白为什么有这种区别。 我已经读过,用于签名的密钥和用于encryption的密钥是不同的,但是我首先假定是公钥和私钥。

如果这是一个信任/validation问题,我经历了比较指纹和validation的过程,是的,我相信这个密钥。 当我这样做时,我注意到主键和子键有不同的“用法”注释:

 primary: usage: SCA subkey: usage: E 

“E”似乎意味着“encryption”。 但是,我一直没有find任何文件。 而且,我的合作者已经使用这些工具和技术已经有好几年了,为什么这只是我的一个问题?

更新

虽然下面的原始文章正确地解释了为什么你可能想要使用单独的encryption和签名密钥,但是在回答你为什么使用子键而不是主键的问题方面做得不是很好。 Debian Wiki提供了一个更彻底的答案 。

总而言之,您的主要关键是您的在线身份,而您的身份和声誉则是通过让其他人自己签名来certificate您的身份。 (你可能会认为这是你的Twitter处理,而你的声誉是你的Twitter追随者,或者你可能反对这种类比,但是我希望它能让你了解你为什么要保护它。)因此,既然你的主要关键是超级重要,并build立了多年,你要非常保护它。 特别是,你不想把它存储在可能被盗或被黑入的计算机上; 你想保持你的主键离线安全的地方。

这当然会让您的主键非常不方便使用。 所以对于日常的操作,你要使用一个不是很大的问题的密钥来replace它是否被攻破。 这就是为什么子键被发明的原因。

一个子密钥仍然是一个公钥/私钥对,只要你有私钥就是安全的。 密码上,它与您的主密钥一样安全。 不同之处在于您的声望只能通过您自己的签名,私钥中的签名附加到您的声誉上。 为了使用推特比喻,世界相信你是你的推特,因为所有的追随者都这么说(我知道,这并不总是这样,但类比很难!),然后用这个信任build立起来,你就可以那么更容易说服世界你拥有你的Instagram处理,只是推特,人们会相信你,因为鸣叫来自你的帐户,他们信任。

你仍然想保持你的子密钥的安全,但是现在如果它被攻破了,那么如果你的主键被攻破(或者相当于有人劫持了你的Twitter帐户),这不是一个大问题。 现在你可以通过签署一个撤销证书和一个新的子密钥来发布一个新的子密钥,然后发布它们到你的公共密钥环中(比如推特:“嗨,我的Instagram的句柄改变了,不要使用旧的,使用这个一个代替“)。 这使得保持您的笔记本电脑上的子项比保持您的主键更可接受的风险。

TL; DR子密钥通过将公钥的encryptionfunction与(主)公钥的信任和身份识别function分开,使密钥pipe理更加容易。


原帖

如果您仔细研究公钥encryption的math细节,您会发现签名和解密实际上是相同的操作。 因此,在一个天真的实现中,可以通过要求他们签名来欺骗某人解密消息。

在实践中有几件事情是为了防范这一点。 最明显的是,你从不签名实际的消息,而是你签署了一个安全的消息散列。 不那么明显,但只是为了安全起见,您使用不同的密钥进行签名和encryption。 另外,保持encryption密钥的独立性,可以让你保持另一个更重要,绝对不常用的密钥离线和更安全。 您检查的钥匙就是这种情况。 顺便说一句,旗帜意味着:

  • e =encryption/解密(解密收到的encryption信息供您阅读)
  • s =符号(签名数据,例如文件或发送已签名的电子邮件)
  • c =certificate(签署另一个关键,build立信任关系)
  • a =身份validation(使用PGP密钥login到SSH;这是相对较新的用法)

请注意,在所有情况下,“密钥”是指公钥和私钥对。

这对你的朋友来说不应该是一个问题,如果他把所有东西都设置正确的话,但是正确地设置一切可能会比它应该更复杂。 因此,最好的解决scheme可能是让你的朋友生成一个新的公钥,用于签名和encryption。 就像我所说的那样,因为抵御攻击的主要防御措施是只对一个消息进行密码安全散列,所以拥有这样的密钥并不是一个严重的弱点。

参考标志

备用参考

除此之外,我不太可能帮上忙。 我总是发现PGP / GPG过于复杂,实际上做得很less。 祝你好运。