在M2M环境中验证2台计算机的最佳实践

时间:2013-10-06 12:34:07

标签: authentication oauth

我在Beaglebone Black上有多个小型Linux 嵌入式服务器(可能是RaspberryPi,没什么区别)需要与主服务器交换信息(托管在网络)。

理想情况下,每个系统通过简单的RESTful命令相互通信 - 例如,主服务器向嵌入式服务器发送新配置 - 并且服务器发回数据。 命令也可以由人类用户从主服务器发出,也可以直接发布到嵌入式服务器。

对每个服务器进行相互认证的最“标准”方式是什么?我在想OAuth,假设每台机器都有自己的OAuth用户 - 但我不是确定这是否是正确的模式。

2 个答案:

答案 0 :(得分:9)

  

每个服务器相互认证的最“标准”方式是什么?我在考虑OAuth,假设每台机器都有自己的OAuth用户 - 但我不确定这是否是正确的模式。

验证机器与验证用户没有什么不同。他们都是安全负责人。事实上,微软使机器成为Windows 2000中的一流公民。他们可以成为安全对象(如文件和文件夹)的主体,就像普通用户一样。

(因为服务器通常会遇到Gutmann在他的Engineering Security书中描述的无人值守密钥存储问题,所以有一些挥手。

我会使用私有PKI(即,我自己的证书颁发机构)并使用基于SSL / TLS等公钥/私钥对的相互身份验证。这具有重新使用大量基础架构的额外好处,因此HTTP / HTTPS / REST“就像它一直有效”。

如果您使用私有PKI,请为包含以下密钥用法的计算机颁发证书:

  • 数字签名(密钥用法)
  • Key Encipherment(密钥用法)
  • 密钥协议(密钥用法)
  • Web客户端身份验证(扩展密钥用法)
  • Web服务器身份验证(扩展密钥用法)

或者,运行私有PKI,仅允许使用基于PKI的VPN的服务器之间的通信。您仍然可以隧道传输RESTful请求,其他任何人都无法为您的某个服务器建立VPN。您可以免费获得IP过滤器。

或者使用Kerberos样式协议和密钥分发中心。您将需要整个Kerberos基础结构,包括KDC。根据KDC监管的秘密设置安全通道。

或者,使用类似SSH的系统,公钥/私钥对和sneaker-net将对等方的公钥复制到另一个。仅允许来自其公钥的计算机的连接。

我可能不会使用类似OAuth的系统。在类似OAuth的系统中,您将成为提供者和依赖方。在这种情况下,您可能也是CA并重用SSL / TLS中的所有内容。

答案 1 :(得分:1)

我认为您需要在服务器之间使用SSL实现相互身份验证。
我对M2M环境了解不多,但使用OAuth验证您的服务器是过度的。

https://security.stackexchange.com/questions/34897/configure-ssl-mutual-two-way-authentication


同时在发送命令时加密通信通道可以使其更安全地免受攻击