开放,安全的TCP通道有多长时间安全?

L H*_*ton 6 sockets security

我们有一个Web服务,充当客户和另一个服务之间的网关.客户端向第三方服务发送消息并从第三方服务接收随机消息.客户端的服务器通过安全套接字向我们的Web服务器打开一个通道,以便接收传入的消息(而不必每隔几分钟轮询一次服务器).

我的问题是:将此频道无限期打开是否安全,或者我们是否应定期关闭并重新打开它以获取新的凭据(会话密钥)?如果是后者,多久(每小时,每天,每周)被视为"最佳实践"?我已经找到了很多关于安全通信的信息,但没有回答这个具体问题.

谢谢

小智 4

SSL/TLS(我假设您在这里讨论的是)不会自动刷新/重新协商正在使用的会话密钥。该协议内置有一个重新协商过程,允许在活动会话中更改会话密钥,但几年前发现该过程存在重大漏洞,并且重新协商过程已更改(在RFC 5746 中,请参阅此处)来解决问题。如果您确实想要重新协商 SSL/TLS 的会话密钥,请确保按照本 RFC 中描述的方式进行操作。

然而,这并不能回答您最初的问题:是否应该更改会话密钥。答案是……这取决于您的安全要求。一个好的指导原则是,如果您看到足够多的加密数据,任何加密通信最终都可以被解密(这的实用性/可行性可能会有很大差异)。因此,经常更换钥匙是一件非常好的事情。如果您通过安全连接传递少量数据并且数据不那么敏感,那么您可以不定期执行此操作(事实上,您的 SSL/TLS 会话可能会发生变化)无论如何,由于两方之一的超时而被打破并重新建立......)。如果您有一个非常敏感的数据集并且要发送大量数据,那么我建议每天左右轮换密钥以减轻这种风险(只需以安全的方式进行即可)。