网状网络中 PKI 证书的替代方法是什么?

信息安全 公钥基础设施 中间人
2021-08-16 20:49:24

我的特殊问题与网状网络(http://en.wikipedia.org/wiki/Mesh_network)上的安全通信有关,特别是中间人(MITM)攻击。困难在于网状网络需要中间节点(即 MITM)来正确路由消息。

我所说的安全通信是指网络中的任何两个节点都可以首先就密钥达成一致,然后使用该密钥加密它们的通信。我想从冷开始做这件事,节点之间没有先验知识,也没有中央机构或证书的 PKI。

起初我考虑使用 YAK 密钥协议,因为该协议只需要一轮。但是,它仍然需要一个 PKI 来分发和验证我想避免的证书。

我知道 RADIUS 服务器(过去曾与他们合作过),但它需要一个中央服务器,这可能不容易从网络中的任何地方访问。如果不是集中式服务器,这将是我选择的解决方案。

我也知道公证人模型,但是在网状网络中,到节点 A 的所有消息必须首先通过节点 M 路由。因此 MITM 不允许从同一个证书获得不同的视图。

除了证书的分发,还有其他选择吗?

如果我稍微放宽限制并接受每个节点都信任节点的某个子集。然后可以在连接到网络之前为每个节点提供可信证书列表。尽管如此,我希望受信任节点的子集随时间而变化。有没有可行的解决方案?

1个回答

机器A想“安全地”与机器B交谈:它想确保它与正确的“机器B ”交谈。如果它可以做到这一点,那么它可以B做Diffie-Hellman ,然后将密钥与通常的加密工具一起使用。但是,只有当“机器B ”从A角度来看有别于任何其他机器(例如C)时,所有这些工作或什至被正确定义。在没有先验知识的情况下,“ B ”只是一个名称,任何其他机器都可以在逻辑上声称是“

换句话说,您需要在某处有一个中心点(不一定是物理系统;它可能是一个中心概念),它定义了一台名为B的机器,并在所有其他机器中精确定位该机器。使用身份验证服务器(您的 RADIUS 示例),中心点确实是所有其他人都信任和使用的机器。使用PKI,中心点是管理;它是能够为每台机器命名并防止两台机器声称相同名称的任何机制。

证书是传递信任的方式。证书将名称绑定到公钥;从A的角度来看,如果证书已由D签名并包含名称E和公钥,并且A知道D的公钥,并且A相信D不会搞砸,那么A验证签名证书,从而获得一些关于E的公钥的知识。证书是证书颁发者 ( D ) 关于名称 ( E ) 和公钥之间绑定的断言。

PKI主要有两种方法:

这两种方式说明了权衡的两个方面。棘手的一点是我在上面写的关于“搞砸”的内容。WoT 最初看起来是个好主意:机器A最初信任自己的密钥。然后它可能会从一些带外机制(A在酒吧中遇到D)知道它信任的其他一些机器的公钥。然后A可能知道其他系统(例如E)的公钥,因为它们的密钥由D签名,并且该过程递归地扩展。这是去中心化的,只要A可以找到至少一个从自身到最终目标B的证书链,它就可以工作; 公钥服务器可以帮助这个过程,公钥服务器只是证书的存储库。这件事的美妙之处在于不需要额外的保护:如果证书的签名匹配,则证书是有效的,无论证书是如何获得的。不需要以任何方式信任公钥服务器。

WoT 的固有问题是信任稀释A知道D的公钥并不意味着A _信任_ D正确地将名称与密钥绑定。至少A “亲自”遇到了D ,并且可能对D的轻信性有所了解。但是A根本不知道EA只知道D在D为E签名的证书中所说的内容因此,A知道E的公钥,但不知道E的可信度。

分层 PKI 使用专家管理信任业务:证书仅由授权实体(证书颁发机构)颁发;它们很少,它们最终会响应一个中央根 CA,对于这些事情就像上帝一样。这是非常集中的,这使 CA 保持一致,并允许信任不会像 WoT 那样被稀释。

因此,这种分层/WoT 选择突出了在尝试进行一些去中心化(这是网状网络的重点)和避免信任稀释之间的权衡。选择你的毒药。WoT 的理论是,您可以通过使图超连接来对抗稀释:如果A发现数十个证书链都指向B且具有相同的密钥,并且所有这些链都经过不同的节点,那么B的所谓密钥可能是真的。


至少有一些有用的缓解措施例如,内存给定节点可以记住另一个节点的公钥。这就是使用SSH完成的方式。从AB第一个连接仍然需要一些东西来确保A使用来自B的正确密钥,但之后它可以重用它。

在很大程度上,Convergence说明的公证人模型是卸载记忆(公证人记住公钥并在节点似乎经常更改其密钥时大声抱怨)和类似 WoT 的信任(当多个公证人为给定节点声明相同的密钥,它可能是真实的)。

无论如何,命名必须发生在某处。它可以是一个分散的“地方”作为WOT(一台机器可以“”,如果它足够说服其他的机器,它的名字是“”)或东西集中为X.509 PKI(中央权限赋予每台机器的名称,没有讨论它)。但它必须发生在某种物理或概念层面。否则问题是不明确的。