如何在树莓派和服务器之间构建设备身份验证和密钥分配

问题描述:

我有几个树莓派设备,我想用公钥基础结构中的ssl安全地将它们链接到一个Web应用程序。并且树莓派应该在其内存中保存一个证书密钥以进行设备验证。但我有两个问题1.谁(树莓派或服务器)应该生成密钥对2.谁保留私钥。如何在树莓派和服务器之间构建设备身份验证和密钥分配

所以对于第一个问题,我想跟随Amazon EC2服务的例子。服务器实例生成密钥对,服务器保存公钥并将私钥发送给用户。一个个人原因是,如果想连接到一项特定服务,我希望一组树莓派能够共享相同的密钥。因此每个特定的服务都会生成密钥对并与链接到该服务的一组设备共享。如果我们允许每个设备为服务生成密钥对,服务器很难控制访问,对吗?

对于第二个问题,正如aws所做的那样,私钥被发送给用户,这也意味着我们必须确保给予用户/设备的私钥安全。但是我想知道是否对许多设备发布相同的私钥是一种威胁,如果一个设备的密钥被盗,服务器端的整个服务就会受到影响。因此,给这些设备一个公钥而不是一个私钥甚至更好?

如果我的猜测是错误的根据我有限的安全知识

这将是最好&最安全的,如果你写了一个简短的脚本,可以产生在每个树莓派一个密钥,然后复制市民请指正关键到服务器(例如scp)。这样你的私钥就像系统预期的一样。

无论谁生成密钥的每个说法,只是如何运输。你可以把它想出来,因为Lowes或Home Depot制作钥匙并不重要,只是每个人都可以将正确的钥匙运输给他们,而不会让他们沿途复制。你总是希望你的私钥被保密,但是公钥是否被截获并不重要。

最安全的事情是,client1,client2和client3被授权与服务器通话。换句话说,服务器说,我单独了解这三个客户端,稍后可以决定是否其中一个客户已经离开并停止与他们交谈,直到他们呈现一个新的正确密钥。

如果不在所有设备上复制相同的密钥会造成轻微的不便,但是如果安全因任何原因而受到损害,它会使您头痛不已,这将会让您的系统在找出时停止磨合出了什么问题,并且是正确的做法。

(案例2)但是,这取决于你的设备如何相互交谈。如果是通过ssh,以上是你想要做的。如果您使用SSL和HTT只是为了确保pi上的最终用户知道他们实际上已连接到服务器,那么您将在服务器上拥有一个私钥,并对所有的SSL证书进行身份验证你的pi通过你的浏览器或其他。在这方面,任何pi都会受到影响并不重要,因为所有的ssl证书都在告诉pi,他们实际上是在与权威服务器通话。你唯一需要担心的秘密钥匙将被保护在服务器本身(不要与你的pi分享)。

最终取决于谁需要进行身份验证。如果人们需要知道服务器是真正的服务器,那么情况2将适用。如果服务器需要知道它的客户真的是他们说的那个人,那么情况1就适用。