为什么默认情况下,GPG / PGP为什么使用不同的密钥进行签名/加密?


22

如果您创建新的GPG密钥,则默认情况下将获得仅签名的主密钥对和仅加密的子密钥对。

pub  2048R/XXXXXXXX  created: 2013-02-09  expires: 2014-02-09  usage: SC  
sec  2048R/XXXXXXXX           2013-02-09 [expires: 2014-02-09]

sub  2048R/ZZZZZZZZ  created: 2013-02-09  expires: 2014-02-09  usage: E
ssb  2048R/ZZZZZZZZ           2013-02-09 [expires: 2014-02-09]  

(输出来自gpg --list-keysgpg --list-secret-keys

还建议不要将主密钥用于(邮件/数据的)常规签名,而要创建另一个仅签名的子密钥,并将主密钥删除/备份到安全且脱机的位置,仅用于密钥签名。

这很有意义,因为大多数加密端点是笔记本电脑/电话或其他始终在线的移动设备,这会使您的私钥有被盗或丢失的风险。使用安全存储的主密钥,您始终可以撤消丢失的子密钥,并且永远不会丢失密钥签名。

因此,虽然我很清楚主键<->子键的分隔,但我不明白为什么要强调分隔签名和加密键(即使它们都是子键)。有人可以解释为什么这样做是必要的,或者至少从安全或实践的角度来看有什么好处吗?

从技术上讲,它是完全可行的,并得到GnuPG的支持来创建签名和加密子密钥。

pub  2048R/YYYYYYYY  created: 2013-08-13  expires: 2014-08-13  usage: SCEA
sub  2048R/VVVVVVVV  created: 2013-08-13  expires: 2014-08-13  usage: SEA 

2
万一有人感兴趣,可以在Security.SE上对这个问题有一个很好的答案。
GnP '16

Answers:


9

在英国,调查权力法案2000规

49(9)根据本条发出的通知,不得要求披露以下任何密钥—

(a)仅用于生成电子签名的目的;和

(b)实际上没有用于任何其他目的。

......这意味着英国政府可能会在某些情况下,能够为您强迫交出你的解密密钥(如果你是一个居民),但他们不会让你的签名密钥来冒充你。


1
有趣的是……这同样适用于比特币私钥(仅用于签名,不用于加密)。
乔纳森·克罗斯

…而且看起来这项豁免在2016年法案中仍然存在。

8

我不知道为什么GPG / PGP会做什么,但是这种事情的一种可能动机是灾难恢复。您可能希望将加密私钥的副本提供给非常亲密且值得信赖的朋友,因此,如果您的房子被陨石击中,您仍然可以阅读保存在云中的旧消息。(类似地,您可能需要将加密密钥1 提供给老板,以便老板离开后可以阅读您的电子邮件。)

但是没有其他任何理由拥有您的签名密钥对的副本。
________________
1  “可能要求您提供加密密钥”给某人—请参阅TEV的答案


2

一个简单的答案是,您使用钥匙的次数越多,泄露有关该钥匙的信息就越多。

您使用签名密钥来验证您信任密钥,并通过推断所有者来进行认证,但更重要的是,您的通信来自您。这称为不可否认性

为了争辩起见,假设使用密钥10000次意味着您泄漏了某人重建该密钥所需的所有信息。使用一个大于9999次的密钥将意味着其他人可能冒充您,并将您的受信任签名传递给邪恶的第三方的密钥或文件,从而使您所有的受信任网络都认为该第三方是您或该文件来自您。

但是,如果您也使用相同的密钥进行加密,则可以更快地达到阈值。

为了避免这种潜在的烦恼,将创建第二个密钥,该密钥仅用于加密/解密,仅在您使用时加密数据。一旦此密钥已使用9999次,您就可以使该密钥过期,而不会失去使用有效签名密钥所交出的所有信任。您重新设置密钥,生成一个新的加密密钥,然后用您的签名密钥对其进行签名,以表明这是每个人都可以验证的受信任的加密密钥。

编辑:

重新阅读我上面写的内容和《GNU隐私手册》后我的结论是这sub是一个私钥pub必须是一个公钥。@GnP这个答案:

The keyword pub identifies the public master signing key, and the keyword sub identifies a public subordinate key.


l假设对大多数人而言,签名密钥的使用频率要比加密密钥高,因为几乎所有邮件都将被签名,但只有部分会被加密。在这种情况下,gpg-default是错误的方法,如encr。密钥很容易更改,而签名密钥则不容易。
Chaos_99

正如您通常使用别人的公钥加密一样,这听起来似乎有些合乎逻辑,而且我目前不知道有充分的理由。
丹尼尔W.康普顿

你是对的。请在我的评论中将“加密”与“解密”交换。但是这一点仍然有效。您签名的频率更高,然后再解密。我问了这个问题,以找出您提到的“大概合理的理由”。
Chaos_99

1
主密钥和子密钥都是具有公共密钥和私有密钥的有效密钥对。专用主密钥的缩写是“ sec”,专用子密钥“ ssb”的缩写。两者都可以通过看到gpg --list-secret-keys。上面给出的清单仅显示由返回的公共密钥gpg --list-keys
Chaos_99

1
“您使用钥匙的次数越多,泄露的钥匙信息就越多”,您是否有该声明的出处?
GnP '16

0

如果您创建新的GPG密钥,则默认情况下将获得仅签名的主密钥对和仅加密的子密钥对。

消息可以是:

  • 未签名和未加密
  • 已签名和未加密
  • 未经签名和加密
  • 签名并加密

每种情况都有用处,具体取决于您要通过签名和加密完成的工作。

如果通过签名建立身份/认可,并通过加密使消息成为私有,则能够加密而不是签名使您能够发送不一定与您的身份相关联或得到您认可的私有消息。在这种情况下,您需要单独的键。


2
如果我错了,请指正我,但我相信,在加密邮件时,您会使用收件人的(公共)密钥,因此,一旦它离开您的手,就无法追踪到您。您的加密密钥供其他人发送加密的消息给您。
斯科特(Scott)

@Scott是的,但是大多数人通常也都设置了默认密钥,因此他们可以阅读发件箱中的内容,并且通常可以指定默认签名。尽管在那些情况下,主/认证密钥的密钥ID用于选择正确的子密钥。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.