非命名机器之间的TCP安全通信?

时间:2012-12-30 10:26:34

标签: security node.js encryption tcp

鉴于网络上有许多机器,他们将使用TCP互相交谈。

我的要求是:

  • 必须加密数据。
  • 即使数据位于同一网络,也不得将数据发送到未经授权的计算机。
  • 不得从未经授权的机器接收数据。
  • 机器只知道其他机器的IP地址。

为了更好的想象力,想一下只允许授权客户参与的聊天网络,并且所有通信都应加密。

我最初的想法是使用TLS证书:

  • 每台授权机器都有该证书的副本。
  • 使用证书可以加密连接。
  • 使用服务器端的证书可以用来验证服务器。
  • 在客户端使用证书,可用于验证客户端。
  • 由于未经授权的计算机没有证书,因此无法解密,发送或接收数据。

理论上,这应该按预期进行。 在实践中,它没有。

其中一个问题是机器只知道对方的IP地址,并且不需要绑定到域名。由于不建议将IP地址用于证书(并且Node.js甚至不会验证IP地址为CN的证书),并且IP地址甚至可能随时间而变化,我开始认为这是否是正确的方法。

当然,我可以自己开始实现所有这些:加密层,身份验证架构......但我不会在那之后运行。如果有更方便的解决方法,我会很感激。

因此,基本上它归结为使用TLS证书进行加密和身份验证,不是因为绑定到域名,而是因为存在特定证书。

我如何实现这一点并解决上述问题? 或者 - 我是否朝完全错误的方向奔跑?我怎样才能以更好的方式解决这个问题?

0 个答案:

没有答案