“信任网络”的替代方案

信息安全 证书 公钥基础设施 pgp 相信
2021-08-19 20:17:19

假设我有一个 SMIME 平台,我想在这个平台上轻松地为特定目的在全世界建立信任,例如共享有效的财务信息。我认为分布式信任环境是最好的,因为我不想规定社区的证书政策和实践,尤其不想参与 CA / RA 流程。这意味着小社区可以发展并创建自己的实践。但是这个过程还没有开始,我该如何促进这个信任模型呢?

以下是我能想到的一些选项:

1) 一种选择是创建一个有效社区列表并链接到他们的锚证书。

2)另一个是我自己创建一个锚点,我只允许有效和值得信赖的社区创建由我自己的锚点创建的锚点。但这是很多工作,我不想这样做。

3) 另一种选择是 PGP 信任网络模型,我尝试在其中交叉认证可信赖的锚点。但同样,这需要大量的工作,而且根据维基百科,该模型从未真正起飞:http ://en.wikipedia.org/wiki/Pretty_Good_Privacy#Web_of_trust 。

4) 另一个选项有点像 #1,但更像 Reddit / Stack Exchange,我只是为这些社区提供一个平台来更新页面和投票给值得信赖的社区。

5) 除了允许活跃的社区成员在带外分享他们的锚点并在带外建立信任之外,不要做任何事情。

6) PKI 之外的一些其他方法虽然我更愿意坚持使用 PKI 选项,因为我已经有了一些 SMIME 基础设施。

哪个选项最好?我还有其他选择吗?它们的潜在优势和劣势是什么?

4个回答

Web of Trust 不允许您不“参与 CA/RA 流程”。恰恰相反:有了信任网络,每个人都参与了 CA/RA 流程。这就是 WoT 的重点:任何单个用户都可以充当 CA+RA,通过验证其他用户的物理身份(RA 部分)然后签署他们的公钥(CA 部分)。

信任网络的一个经常被忽视的方面是对冗余的需求。要理解它,请考虑证书验证过程。用户A(我们称他为 Akhenaton)拥有一份据称归用户B(Burna-Buriash)所有的公钥副本。但他想在使用该密钥加密一些外交信件之前确定这一点。幸运的是,Burna-Buriash 的钥匙获得了认证由 Suppiluliumas 撰写:后者(用他自己的私钥)签署了一份包含 Burna-Buriash 的密钥和姓名的文件。Akhenaton 也不知道 Suppiluliumas 的钥匙,但是这把钥匙又得到了 Tushratta 的认证,Tushratta 是 Akhenaton 的朋友,Akhenaton 知道 Tushratta 的钥匙。这允许 Akhenaton 验证 Suppiluliumas 证书上的签名,从而 Akhenaton 获得了对 Suppiluliumas 密钥的一些信任。然后,他可以继续验证 Suppiluliumas 向 Burna-Buriash 颁发的证书,从而对据称由 Burna-Buriash 拥有的密钥获得一些信心。

现在我们看到,在证书验证过程中,Akhenaton 不得不信任Tushratta 和 Suppiluliumas 都正确地完成了他们的工作。确实,虽然阿肯那顿对图什拉塔的钥匙有第一手的了解,但他仍然必须以某种方式相信图什拉塔不会试图通过颁发假证书来欺骗他,其中包含 Suppiluliumas 的名字,但实际上是由图什拉塔控制的钥匙自己。Tushratta 的签名保护该过程免受第三方的干扰(就像那个永远不会做好的计划 Aziru),但他们不提供防止参与者自己叛国的保护,甚至是轻信:Tushratta 可能喝了太多进口的迈锡尼酒那天喝酒,可能自己被阿兹鲁骗了,留着假赫梯胡须,自称是苏皮留鲁玛斯。

下一步的情况更糟,因为虽然 Tushratta 是 Akhenaton 的私人朋友,但他不认识 Suppiluliumas。Akhenaton 无法评估 Suppiluliumas 的可信度;即使 Akhenaton 认为 Tushratta 是友好而清醒的,并且据称是 Suppiluliumas 的钥匙确实由 Suppiluliumas 拥有,这对他来说并没有说明 Suppiluliumas 是否会真实地与 Burna-Buriash 做同样的 RA 工作。

简单地说:信任在转移时会急剧下降。

分层 PKI(就像X.509旨在支持的那样)和 Web of Trust PKI(OpenPGP的正常模型)以不同的方式处理这个问题:

  • 在分层 PKI 中,结构是金字塔形的,与用户群相比,CA 很少;比如说,100 万用户使用 100 个 CA。每个 CA 都根据合同和法律要求与上级 CA(对其进行认证)绑定,因此任何错误或欺诈都将意味着对有缺陷的 CA 的严厉报复。因此,CA 被“保证”通过以所有法律力量威胁他们来保持一致并值得信赖。只要没有太多的CA,并且整个结构适当地集中,这可以工作。

  • 在信任网络中,每个用户都是潜在的 CA。WoT 依赖于以下假设:批次中可能有一些害群之马,但大多数用户是诚实的,不会试图作弊,并且(可能)他们中的大多数人会足够谨慎,不会在之后相互签署密钥第三品脱吉尼斯。这个假设有一点一厢情愿,但让我们暂时相信它。在 WoT 中,您无法通过验证单个证书路径来获得对密钥的足够信任;相反,您必须验证通过不同中间体的许多路径。这在一定程度上确保了安全,因为虽然有些路径可能会通过作弊者,但并非所有用户都是腐败的。这就是我所说的冗余。

由于冗余对 WoT 很重要,因此参与基于 WoT 的验证的用户软件必须支持它。软件必须构建条路径,检查它们是否相交,并验证它们。这就是S/MIME在执行 WoT 时失败的地方:尽管没有什么可以阻止 X.509 证书实现 WoT 模型,但 X.509 并不是为此而设计的,相应地,执行 S/MIME 的软件(即 Outlook 或 Thunderbird 等电子邮件应用程序) ) 只是假设它们处于分层 PKI 模型中,并声明自己对单个经过验证的路径感到满意。

这就是这里的重要教训:您选择的 PKI 模型必须由验证者(即用户的应用程序)实施。如果您想要 Web of Trust,用户必须使用积极支持它的应用程序,目前,这意味着 OpenPGP 格式(例如GnuPG)。

最后,Akhenaton 信任了所有人。这对埃及帝国来说并没有好转。

根据要求,使用某些网站的集中式解决方案可能不适合,因为它们会成为攻击的目标。人们会尝试入侵 Web 服务器、Web 服务或您试图在其之上建立的信誉系统。

如果逐渐建立信任是可以接受的,那么基于密钥连续性管理的系统可能会很有趣。参与者只需创建密钥并开始。随着时间的推移,人们会了解并记住这些密钥/身份并更加信任它们。然后,您仅将中央服务用于便利/查找服务(如 PGP 密钥服务器)。信任网络模型,您可以在人们相互建立信任并信任其他人的判断的情况下进行活动,是可选组件。

另一个可选组件可能是在您无论如何都执行的临时键控之上运行实际带外通信的工具,并以此方式验证您的密钥。例如,这是在 pidgin 的 Jabber OTR 插件或 CryptoPhone 中完成的。我可以加密通信,但在任何时候,如果我愿意,我也可以选择以非常安全的方式实际验证密钥。它简化了自举。

顺便说一句,我已经看到这种方法被提议为“90% 的安全性”,以使安全电子邮件可用。由于您已经拥有 SMIME,请检查您是否可以使用或构建一些可用的插件。您希望软件记住并保留有关密钥使用情况的统计信息,并在密钥意外更改时警告用户。如果用户请求有关某些远程身份的其他信息,请提供一些选项以增加对关联密钥的信任。不幸的是,大多数客户的做法是相反的:他们最终信任各种 CA,但 CA 有时又采用非常简单的身份验证来吸引用户。因此,您永远不会看到是否使用了强身份验证或弱身份验证,而弱身份验证被静默接受。

加密不提供从无到有建立或创建信任的方法。它只提供了一种编码和尊重已经存在的信任关系的方法。如果有人试图以不同的方式告诉您,请向他们展示门;他们可能想卖给你一些东西。

这个事实的推论是:你的系统应该反映你社区中已经存在的信任关系。因此,首先要了解您的社区或组织。人们已经拥有了哪些关系?他们如何完成他们的工作?这是一个涉及一点人类学的问题:观察人们目前在你所关注的社区中是如何互动的。

然后,设计一个系统,其软件信任关系模仿预先存在的社会信任关系。经验表明,如果您设计的安全系统试图将不同的东西强加给人们,它就不会很好地工作。人们会绕过安全系统来完成他们的工作,或者他们会诅咒你的名字并试图破坏你的系统的成功,或者工作会被搁置,生产力会受到影响,或者其他不好的事情会发生。

另一个推论是:你不能为整个世界建立一个信任系统。在您的问题中,您谈到为整个世界设计一个加密信任架构。那简直是彻头彻尾的坚果!想象一下,有人来找你,告诉你他们设计了一种新的人际关系架构,他计划告诉全世界,从今以后,他们所有的社会关系都必须确保适合他的类别和架构。你会给他一个有趣的表情,不会再在他身上浪费时间。当人们说他们想要一个适合整个世界的信任架构时,你应该给他们同样有趣的外观并继续前进。人是复杂的,而世界并不是那样运转的。你可以'

总结一下:我想我的意思是,你说话的方式表明你正在走一条死胡同。我担心你让自己犯别人以前犯过的错误,让自己失败。我认为你需要重新考虑你的目标,并选择一个更集中的范围来解决问题。我还认为您需要记住,您无法通过技术解决社会问题技术可以帮助你解决技术问题,但它不会改变人性。

有关 PKI 陷阱的更多信息,我强烈推荐以下阅读材料:

我会看一下http://convergence.io/它经过深思熟虑并解决了分布式信任网络模型(对于 X509,但没有理由说这不是一个好的起点你。)