我们决定使用 HTTPs 而不是 HTTP,但在谷歌搜索之后,我了解到仅 SSL 是不够的。
我不确定你用谷歌搜索了什么,但如果使用正确,SSL/TLS 可以保护你免受 MITM 攻击。
如果此解决方案(SSL + 对称加密算法)可以,您能否为此类问题建议最合适的加密算法?
SSL/TLS 中的加密已经使用对称加密技术完成。只有身份验证是通过非对称加密完成的。
据我了解,使用 SSL 时有两个主要漏洞:
- 现在有很多 CA 提供商公司,所以没有人受到 MITM 攻击的保护,普通证书被黑客使用(我发现了一些文章,据说 VeriSign 有秘密部门,它为 MITM 提供秘密服务,而 VeriSign 是全球唯一的 CA)2)大多数 MITM 攻击在使用 ARP 缓存中毒时都是可能的
防止 MITM 攻击正是证书的目的。客户端 (a) 检查是否在预期时使用了 HTTPS,以及 (b) 检查服务器证书的有效性,这完全是客户端的责任。
第一点可能很明显,但这是像sslstrip这样的工具所做的那种攻击:它们是 MITM 降级攻击,完全阻止用户访问 HTTPS 页面。作为用户,请确保您在应该是 HTTPS 的 HTTPS 页面上。在企业环境中,告诉您的用户他们必须检查他们是否通过 HTTPS 访问您的服务器:只有他们可以知道(除非您也想使用客户端证书身份验证)。
第二点(证书验证)也取决于客户端,尽管其中大部分是在浏览器中自动完成的。用户有责任不忽略浏览器警告。证书验证的其余部分往往通过预先安装的 CA 证书(例如 Verisign 的)来完成。
如果发生 MITM 攻击(可能是通过 ARP 中毒),用户应该得到一个不正确的证书并且不应该继续。正确的 HTTPS 验证应该允许您拥有安全连接或根本没有连接。
您提到的漏洞与证书验证(PKI 模型)有关。实际上,验证服务器证书是否正确取决于您的浏览器信任的 CA 证书。在那里,任何受信任的 CA 原则上都可以为任何服务器颁发证书,因此该模型是列表中最弱的 CA。如果一个受信任的 CA 为一个站点颁发一个假证书并将其提供给另一方,这就像让一个护照办公室颁发一个真正的“假”护照一样好。反击非常棘手,但有一些方法可以解决它。
您可以依赖诸如Perspective Projects之类的扩展,它们监视证书更改,即使两者都是受信任的。此类警告应提示用户调查证书更改是否合法(由您的公司完成)。
更根本的是,您可以部署自己的 CA,从用户浏览器中删除所有受信任的 CA 证书并仅安装您自己的 CA 证书。在这种情况下,用户将只能安全地连接到具有您的 CA 颁发的证书的计算机。这可能是一个问题(如果您的浏览器使用操作系统证书存储库,则包括软件更新)。
原则上,您可以完全避免使用证书并使用预共享密钥密码套件。但是,并非所有 SSL/TLS 堆栈都支持这一点,并且不一定适用于基于 TLS 的 HTTP(据我所知,缺少有关主机名验证的规范)。
您可能还对 Security.SE 上的这些问题感兴趣: