我们正在使用 SSL 使我们的客户端和骨干服务器之间的连接更安全。如果我们也使用另一种加密机制对传输的数据进行两次加密,这真的有意义吗?例如,通过 AES 加密数据,然后在 SSL 连接上传输数据?
在 SSL 连接内使用加密
信息安全
加密
tls
保密
2021-09-08 19:49:13
3个回答
这实际上取决于您要保护的内容。
SSL 仅保护传输中的数据,以及两个设定点之间的数据。它不保护静态数据,也不保证数据来自声称的人。
因此,如果您需要在数据存储在任一端点时保护数据,那么加密它可能是有意义的。或者,如果您需要保证数据来自某一方,那么签署它可能是有意义的。
另一方面,如果您只是解密数据并将其存储在端点,而不进行任何身份验证,那么添加另一个传输层就没有多大意义。
安全性通常分层工作,因此了解每一层提供的内容很重要。SSL 只是一个传输层,只保证发送的数据没有被截获,或者被中间的攻击者替换。
几乎可以肯定,不,特别是如果客户端是浏览器。SSL/TLS 起作用的一个原因是它已经嵌入到客户端中。没有什么可以在传输过程中被攻击者截获和修改的明文传输。如果 SSL 本身被破坏,那么您发送的任何加密(例如基于 JavaScript 的加密)都可能被主动攻击者修改以使其无效,或者被动攻击者窃取内部加密方案的密钥以使数据可解密,并且无论如何你都输了。
所以不,在一般情况下,不值得增加复杂性而不实际获得安全性。在某些情况下,确实实现实际上可能是有意义的,但除非你有一个非常强烈的论据来说明为什么它会因为你的特定架构而产生,否则一般情况都适用。
已建立的 SSL/TLS 协议为所有重要的密钥交换提供了便利。您提出的附加加密层当然会增加机密性(数据安全的原则之一)。但是,确定 AES 可以使用什么密钥将是另一个令人头疼的问题,尤其是当您希望密钥在每个会话中都发生变化时。
@Xander 正确地指出,添加另一层加密会破坏客户端浏览器。但你已经知道了。通过添加另一层,客户端和服务器都可能需要修改。