3

我们将构建一个网络安全是大问题之一的应用程序。该应用程序通过互联网(公共网络)提供,但应传输敏感数据和敏感的机密文件,这些文件应尽可能安全,以防止可能的攻击,例如中间人。

当然,应用程序将使用 SSL 加密。然而,SSL 已经被黑客入侵了,我们不知道它是否足够安全以仅使用 SSL。

所以我的问题是:如果我们在网络传输之前使用 JavaScript 加密(对称或非对称加密)对数据进行加密,那么使用 SSL 的在线应用程序的安全性是否有任何好处?

因此数据将被双重加密,这将使攻击者难以阅读,即使他们设法破解 SSL 加密。

附加问题:在通过网络传输文件之前,是否有一个好的 JavaScript 库可以在客户端加密文件?

(注意:我们知道客户端加密和解密文件的可能性,因此它们在服务器上不可读(因为客户端密钥未知)。但是,服务器应该可以读取和如果有用,无论如何都应该进行双重加密,但每个客户端使用不同的密钥)。

4

2 回答 2

1

对于 SSL/TLS,根据您对客户端的控制程度,您可以使用证书固定,这非常有效。基本思想是,您不是硬编码根证书,而是硬编码您正在连接的服务器(或您信任的服务器签署其他证书)的实际证书。

至于一个好的 JavaScript 加密库,试试sjcl。使用 JavaScript 加密有一些潜在的缺点,特别是如果您不信任 SSL/TLS(例如,攻击者可以更改您正在下载的加密库),但我已经使用 sjcl 一段时间并且对它很满意。

如果您需要更多信息,请发布有关您的威胁模型、软件以及您对客户端和服务器端软件所做的假设的更多信息。

于 2013-11-04T23:00:55.443 回答
0

是的,额外的加密可以缓解某些非常具体的攻击,因为您可以完全控制它的开始和结束位置。SSL 终止于网络服务器,有时甚至更早终止(例如,如果您的数据中心正在使用深度数据包检测或 SSL 卸载);附加加密可以保护数据以明文形式发送的区域中的数据。

话虽如此,双重加密并不常见。我为那些都是非常高价值目标的组织工作,我们不做那种事情。

无论您做什么,都不要替换 SSL。它为您提供的不仅仅是加密;它为您提供身份验证,这可以说是更重要的。

于 2013-11-05T02:41:56.950 回答