我的朋友和我正在创建一个使用node.js后端的iPhone应用程序。我们一直在争论是否应该使用一些加密库来加密我们发送到node.js服务器的全部或部分后载荷。 (我们打算使用一些版本的RNCryptor,或类似的东西。)我的问题是,如果我们已经在使用HTTPS,我们真的需要这种额外的加密级别吗?
我理解加密服务器本身数据的好处。但是,我们是否需要对传输中的数据进行额外加密??
很抱歉,如果这个问题过于宽泛......
答案 0 :(得分:3)
不,您最好确保您的TLS配置安全。在这种情况下,强烈建议使用TLS 1.2和ECDHE,AES或Chacha20 / Poly1305以及其他现代原语(也为TLS 1.3做好准备)。
当然,您可以为静态数据添加安全性,但这可能不是您的主要目标。是的,如果你确实想要这样做,那么你也可以使用一个完善的容器格式,在这种情况下你肯定会比RNCryptor
更糟糕,即使它没有被标准化。当然,您仍然必须以有意义的方式将其集成到您的安全协议中。
对于这类系统,为系统创建威胁模型非常重要。如果您的线程模型需要它(例如在Terry给出的示例中,公司使用MitM攻击)那么您应该开始寻找。 在这种情况下,您还应该决定加密客户端(只有客户端可以解密)或服务器端。
早期可能是首选安全性,但您必须以某种方式存储客户端私钥,这通常不可能安全地执行。在这种情况下,数据当然也隐藏在服务器中(但是由于您控制应用程序,客户端仍然不能完全安全地防止将明文泄露给您或控制服务器的人。)
答案 1 :(得分:2)
这实际上取决于您尝试保护数据的内容。
HTTPS对于大多数用途来说足够安全,但是如果浏览器中安装了不受信任(或意外/不需要)的根证书并且您位于攻击者控制流量的网络上,则完全不安全。 / p>
有些公司安装了自己的根证书,因此可以MITM包括所有浏览器流量,包括HTTPS。
此外,还有一些实际的CA颁发了证书,这些证书可以让攻击者假装几乎任何人。对于合适的价格,任何人都可以[在此插入您的银行]。
如果您正在尝试保护您的本地ISP,那么您可能没问题。如果您使用的是公司发行的计算机或浏览器,或者有理由认为您的证书存储可能已被篡改,则需要额外的加密来保护您的数据。