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

时间:2012-01-23 16:05:26

标签: security sockets

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

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

由于

1 个答案:

答案 0 :(得分:4)

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

但是,这不会回答您原来的 IF 问题,应更改会话密钥。答案是......这取决于您的安全要求。一个很好的指导原则是,如果你看到足够的加密数据,那么任何加密的通信最终都可以被解密(这是多么实际/可行,这可能会有很大差异)。因此,经常更换钥匙是一件非常好的事情。如果您通过安全连接传递少量数据并且数据不敏感,那么您可以在不经常的基础上做到这一点(实际上,您的SSL / TLS)会议可能会因为两方中的一方在某种程度上定期超时而被破坏和重建......)。如果您有一个非常敏感的数据集并且您要发送大量数据,那么我建议每天左右轮换密钥以减轻这种风险(只是以安全的方式进行)。