- 您通过签署密钥来担保某人的身份。
- 关键的“有效性”是我们确信有问题的关键属于我们想与之交流的人。 它是根据所有者信任和密钥上签名的数量计算得出的。
- 密钥“信任” 必须由用户为密钥环中的每个密钥设置,然后才能包含在信任度计算网络中。
- 信任可以是完全的或边缘的。 它只需要一个完全可信的签名来将密钥标记为“有效”,但至少需要三个边缘信任的密钥来执行相同的操作。
这是最简单形式的信任网络,也称为“经典信任模型” - 您(并且只有您)必须在每个密钥包含在任何信任计算中之前,直接为每个密钥分配信任。 然而,在复杂的等级组织中,人们不断来去,这可能变得难以管理。 认识到这一点,PGP后来的版本决定使用多层次的“可信介绍者”来实现信任委托。
在这一部分中,我们将看看以下内容:
- 什么是密码学中的“可信介绍者”和“元介绍者”
- PGP如何实现“元引进者”
- PGP信任签名如何在实践中发挥作用
- 密钥服务器是什么以及如何使用密钥服务器来跟踪人们的公钥。
值得信赖的介绍人
在讨论X.509证书的功能时,我们在前一部分中讨论了“证书颁发机构”。 在X.509世界中,您不会将信任分配给人们的证书,而是选择签署所有密钥的权威机构。 承载CA签名的任何密钥都被隐式假定为完全有效。 通常,有几个级别的权力机构通常被称为“根管理机构”和“中介机构”,并且它们形成一个“认证链”。
在密码学中,这些都是在“可信介绍者”和“元介绍者”的通用术语下公知的。 假设的北美认证链将如下所示:
如果爱丽丝信任由“北美CA”制作的签名,她会自动信任由中介机构制作的签名,因此就爱丽丝而言,Fiona的密钥具有完整的“有效性”(以使用PGP的术语)。
信任签名
PGP第5版引入了“信任签名”,增加了对PGP世界信任授权的支持。 信任签名基本上是一种说法:“如果您信任我的密钥,那么您可能也会对这些我信任的密钥给予相同的信任。”
让我们使用我们的老朋友火枪手来形象化信任签名的工作方式。
D'Artagnan是国王火枪手的队长,直接向他的指挥官德特雷维尔报告,他直接向路易十三国王报告。 在书中 ,由于Richelieu枢机主教的阴谋,皇后护送Anne d'Autriche和她的情人白金汉公爵冒着暴露的风险。 无奈之下 ,安妮转向她信任的法庭医生康斯坦斯· 博纳西厄 ,要求她找一个她信任的人快速前往英格兰。 Richelieu红衣主教发现了他的追随者Comte de Rochefort,以确保女王的绝望情节失败。
如果我们看一下这个方案中主要参与者之间的关系,我们可以如下图示:
当Constance Bonacieux来到d'Artagnan寻求他的帮助时,d'Artagnan怎么知道她真的是女王信任的courtisane ? 他可以手动追踪DeTréville的签名到国王,然后到女王,然后到康斯坦斯,但幸好有一个更快更通用的解决方案,他可以使用。
国王是当时法国的最终信托当局,所以我们可以把他看作是根本权威。 由于他无法签署法国政府所有人的钥匙,因此他在gpg的tsign命令的帮助下将其信任委托给了他的下属 :
路易斯[〜] $ gpg --edit-key anne pub 2048R / 65C953D7已创建:2014-02-21过期:从未使用过:SC 信任:未知有效期:未知 [未知](1)。 Queen Anne d'Autriche女王 gpg> tsign [..跳跃..] 请输入此信任签名的深度。 大于1的深度允许您签名的密钥生成 代表您的信任签名。 您的选择? 1 [..跳跃..] 你确定你想和你签署这个密钥吗? 关键“路易十三国王”(28133692) 真的签名? (y / N)y GPG>
上面的“信任深度”是什么意思? 这描述了国王愿意委托他的信任的链条有多远。 这样想一想:
- 等级1:“你可以相信我已经签署了和我一样多的密钥, 但是就我愿意保证的那样 ”
- 等级2:“你可以相信我签署的这个密钥和我的一样多, 再加上这个人信任的任何其他密钥 -如果你愿意,
在密码学的说法中, 对具有“1级”的密钥进行信任签名将该人指定为“可信介绍人”。对具有“2级”的密钥进行信任签名将该人指定为“元导入者”。
就其本身而言,1级签名与签署密钥并设置所有者信任完全相同,只是将两个步骤合并为一个,并使结果对其他人可见,如果共享(稍后再介绍)。 对于国王路易斯,“tsign level 1”的结果和经典模型的“符号和设置所有者信任”的表现完全相同:
信任签名只有在其他人信任 - 在高于1的等级上签署这样的密钥时,才真正发挥信任授权的作用。让我们来看看在d'Artagnan信任时会发生什么 - 用2级签名国王的密钥(国王变成d' Artagnan的meta-introducer):
dartagnan [〜] $ gpg --edit-key louis pub 2048D / 28133692已创建:2014-02-21 expires:永不使用:SC 信任:未知有效性:完整 [完整](1)。 路易十三国王 gpg> tsign 请确定您信任此用户的距离,以便正确验证其他用户的密钥 (通过查看护照,检查来自不同来源的指纹等) 1 =我相当信任 2 =我完全信任 您的选择? 2 请输入此信任签名的深度。 大于1的深度允许您签名的密钥生成 代表您的信任签名。 您的选择? 2 [..skipped .. 你确定你想和你签署这个密钥吗? 关键“d'Artagnan”(65BE833E) 真的签名? (y / N)y GPG>
D'Artagnan只有一个国王的钥匙的信任签名,大大扩展了他的信任网络,包括法国法庭上的所有人:
级别数不限于2,最多可以达到5.以下是Planchet信任-Artagnan的关键元素为“级别3”(“Meta-Meta-Introducer”)时发生的情况:
正如你所看到的,这与d'Artagnan的完全相同,归功于完全继承的委托信任。
信托代表团的缺席
委托信任是一个强大的工具,但与X.509的认证机构具有相同的重要缺点 - 渗透组织,攻击者只需要破坏根权威(在我们的案例中,是路易十三国王的私钥)。
如果您担心这一点,您可以通过告诉GnuPG始终使用“Classic Trust”模型,在〜/ .gnupg / gpg.conf中设置“trust-model classic”,或者从不使用信任的签名。 除非您信任 - 自己签署某人的密钥,否则他们从未开始。
密钥服务器
一旦你签了某人的钥匙,你怎么让别人知道它? 如果您的信任网仅由少数人组成,您可以简单地通过电子邮件发送签名的公共密钥,但这显然不会随着组织的发展而变得非常有效。 PGP社区很早就认识到了这个问题,并建立了分配公钥的指定服务器。 它们中的许多都具有允许搜索和下载公共密钥的Web界面 ,但该功能也内置于GnuPG命令行工具中。
例如,下面介绍如何从MIT keyserver下载Linus Torvalds的密钥:
mricon [〜] $ gpg --keyserver pgp.mit.edu - 搜索torvalds linux-foundation
有一个以上的密钥服务器,其中大多数与对方通信以同步公钥和签名,所以上传到pgp.mit.edu的密钥很快也可以从许多其他密钥服务器获得。
以下是我如何将自己的密钥上传到MIT服务器的方法:
mricon [〜] $ gpg --keyserver pgp.mit.edu --send-key 329DD07E gpg:将密钥329DD07E发送到hkp服务器pgp.mit.edu
现在任何人都可以搜索pgp.mit.edu并从中下载我的密钥:
dartagnan [〜] $ gpg --keyserver pgp.mit.edu --recv-key 329DD07E gpg:向hkp服务器pgp.mit.edu请求密钥329DD07E gpg:密钥329DD07E:已导入公钥“Konstantin Ryabitsev” gpg:处理总数:1 gpg:导入:1(RSA:1)
概要
回顾一下:
- GnuPG支持使用“信任签名”进行信任委托。信任签名允许PGP与其证书颁发机构(“受信任的介绍者”)系统一样运行X.509证书。
- 一级信任签名指定某人为“受信任的介绍人”。通过对第一级人员的密钥进行信任签名,您可以有效地陈述:“您可以像我一样信任此密钥, 但是就我愿意担保而言 ”
- 二级信任签名将某人指定为“元导师”。通过用二级信任签署某人的密钥,您可以有效地陈述:“您可以像我一样信任此密钥, 以及此人信任的任何其他密钥 -如果你这么倾向。“
- 委托信任很方便,但引入了与X.509的认证机构相同的问题。 攻击者只需要妥协认证机构以渗透组织。
- 通过告诉GnuPG始终使用仅依赖于直接信任关系的“经典模型”,可以完全禁用委托信任。
在我们的最后一期中,我们将研究如何在发生不良事件时撤销密钥和签名,以及为什么您可能想签署密钥而不告诉任何其他人。