我们将构建一个网络安全是重大问题的应用程序。该应用程序通过互联网(公共网络)提供,但应传输敏感数据和敏感的机密文件,这些文件应尽可能安全,以防止可能的攻击,例如:人在中间人。
当然,应用程序将使用SSL加密。但是,SSL已被黑客入侵,我们不知道它是否足够安全,只能使用SSL。
所以我的问题是:如果我们在使用JavaScript ADDITIONALLY(对称或非对称加密)进行网络传输之前加密数据,那么使用SSL的在线应用程序的安全性是否有任何好处?
因此,数据会被双重加密,这会让攻击者难以阅读,即使他们设法破解了SSL加密。
附加问题:在通过网络传输文件之前,是否有一个很好的JavaScript库用于加密客户端上的文件?
(注意:我们知道加密和解密客户端文件的可能性,因此它们在服务器上不可读(因为客户端密钥未知)。但是,服务器应该有可能的文件阅读,如果有用,应该双重加密,但每个客户使用不同的密钥)。
答案 0 :(得分:1)
对于SSL / TLS,根据您对客户端的控制程度,您可以使用证书锁定功能,该功能非常有效。基本思想是,不是硬编码根证书,而是硬编码您要连接的服务器的实际证书(或您信任的签署其他证书的证书)。
对于一个好的JavaScript加密库,请尝试sjcl。使用JavaScript加密存在一些潜在的缺点,特别是如果您不信任SSL / TLS(例如,攻击者可以更改您正在下载的加密库),但我已经使用了sjcl一段时间并且对此感到满意。
如果您需要更多信息,请发布有关您的威胁模型,软件以及您对客户端和服务器端软件的假设的更多信息。
答案 1 :(得分:0)
是的,附加加密可以缓解某些非常具体的攻击,因为您可以完全控制它的开始和结束位置。 SSL终止于Web服务器,有时甚至更早(例如,如果您的数据中心使用深度数据包检查或SSL卸载);附加加密可以保护数据以明文形式发送的区域中的数据。
话虽如此,双重加密并不常见。我为那些非常高价值目标的组织工作,我们不做那样的事情。
无论你做什么,都不要替换SSL。它为您提供的不仅仅是加密;它为您提供身份验证,这可能更重要。