我有一个项目,其中将会看到一堆节点 [Raspberry Pis] 分布到各个地理位置分散的客户端。
自然,我想在主服务器和节点之间部署一个身份验证/加密系统。
在我的脑海中,系统概述将是这样的:
- 主机服务器将拥有自己的私钥和节点公钥的数据库。
- 每个节点都有自己的私钥和主机服务器的公钥。
身份验证将按如下方式进行:
- 节点使用其 ARM CPU ID 联系主机,并使用服务器的公钥加密。
- 服务器解密 ID,在其数据库中找到节点,并使用节点的公钥加密身份验证令牌。
- 节点解密身份验证令牌,并且“开放”通信可以从这一点开始。
我尝试设计一个可以允许/阻止 MITM 攻击和拥有节点的系统。我预计使用 RSA 作为算法。
- 有没有更简单/更好的方法来实现我想要做的事情?
- 我想要做的事情是否存在固有缺陷?
- 是否有已经可以做到这一点的系统/包?
非常感谢。
答案1
您可以在这里使用 Kerberos。它提供集中式密钥管理,但也需要在终端客户端上安装密钥,几乎所有东西都是如此。
或者,您可以运行自己的 CA,并对所有内容使用 TLS / SSL 并检查服务器和客户端证书。
或者您可以使用 ssh,并遇到可能出现的常见密钥管理问题。
答案2
单纯使用 SSH 进行通信有什么问题吗?
至于如何阻止“拥有的节点”,我认为你需要像 Tripwire 这样的东西。通信流中的任何内容都无法捕捉到具有已知良好密钥的主机已被攻陷。