如何通过HTTPS保护MITM攻击数据?

时间:2012-08-08 16:32:02

标签: security api ssl https

我正在开发企业API,可用于企业服务,MITM可能会产生可怕的后果。

我们决定使用HTTP而不是HTTP,但在谷歌搜索之后我才明白SSL只是不够。

据我所知,使用SSL时存在两个主要漏洞: 1)现在有很多CA提供商公司,所以没有人受到MITM攻击的保护,正常证书被破解者使用(我发现一些文章,据说VeriSign有秘密部门,为MITM提供秘密服务,当时VeriSign是全球唯一的CA) 2)使用ARP缓存中毒时,大多数MITM攻击都是可能的

所以,我暂时只能看到一个解决方案但不确定它是否是最佳实践: 由于API是内部的,我可以使用以下内容: 1)使用对称加密algorythm加密数据 2)限制ips,能够使用API​​(如在应用程序中,如在服务器防火墙中)

这够了吗?也许还有其他最好的做法来建立真正安全的连接,这将使MITM变得不可能吗?

如果这个解决方案(SSL +对称加密算法)没问题,请为这类问题建议最合适的加密算法吗?

提前致谢, 很高兴得到任何帮助/建议。

UPD:VPN(由frenchie提供建议)不适合此背景

UPD2:公钥 - 私钥(RSA-like)是可能的(thx 2 Craigy),但在服务器端非常昂贵。

3 个答案:

答案 0 :(得分:6)

  

我们决定使用HTTP而不是HTTP,但谷歌搜索后我   我知道只有SSL是不够的。

我不确定您使用Google搜索,但正确使用SSL / TLS可以保护您免受MITM攻击。

  

如果这个解决方案(SSL +对称加密algorythm)没问题,可以   请为这种方法提供最合适的加密算法   问题

SSL / TLS中的加密已经使用对称加密完成。只有通过非对称加密才能进行身份验证。

  

据我所知,使用SSL时存在两个主要漏洞:   1)现在有很多CA提供商公司,所以没有人受到保护   来自MITM攻击,其中正常证书由破解者使用(i   发现了一些文章,据说VeriSign有秘密   当VeriSign时,为MITM提供秘密服务的部门   是全球唯一的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颁发的证书的计算机。这可能是一个问题(如果您的浏览器使用操作系统证书存储库,则包括软件更新)。

  • 原则上,您可以完全避免使用证书并使用Pre-Shared Keys密码套件。但是,并非所有SSL / TLS堆栈都支持此功能,并且不一定适用于HTTP over TLS(据我所知,缺少有关主机名验证的规范)。

您可能也对Security.SE上的这些问题感兴趣:

答案 1 :(得分:4)

如果您想要防御Man-in-the-middle attacks,那么您使用对称密钥加密技术可以防止数据被第三方泄露是正确的。然而,您面临分发密钥的问题,这是非对称密钥密码术吸引人的原因之一。

要在网络上使用非对称密钥加密技术防御MITM攻击,您可以设置自己的Public-key infrastructure。您可以设置并管理Certificate Authority禁用所有其他,这样任何人都无法假装成其他人,从而阻止了MITM攻击。如果CA遭到破坏,那么MITM攻击将再次成为可能。

为确保我们处于同一页面,这些建议与实施无关。您可以使用任何Symmetric-key algorithm作为第一个建议。

对于第二个建议,您需要一个更复杂的系统,称为非对称系统或Public-key cryptography。它们基于RSA等算法。

SSL是一种使用公钥加密技术进行密钥交换和对称加密来发送消息的协议。

答案 2 :(得分:1)

正确地防御中间人攻击需要两件事:

  • 绝不通过HTTP为您的网站服务;只监听HTTPS流量
  • 在长时间生效的响应中使用Strict-Transport-Security标头

使用SSLStrip攻击的ARP中毒依赖于浏览器启动与服务器的HTTP连接并稍后转换为HTTPS。正是在这个过渡点,攻击才会生效。

但是,如果浏览器将请求作为HTTPS请求发起,则在发生任何其他事件之前,握手会将服务器验证到浏览器。基本上,如果发生了中间人攻击,将通知用户无法建立SSL连接,或者服务器不是正确的服务器。

从不通过HTTP为您的网站提供服务会强制任何链接到该网站的人在链接中使用HTTPS。 Strict-Transport-Security标头指示兼容的浏览器将通过HTTP进行通信的任何尝试转换为HTTPS。

对于您的用例,似乎除了上述两个建议之外的任何其他解决方案都是过度的。要阅读有关Strict-Transport-Security的更多信息,请参阅the Wikipedia article on Strict-Transport-Security