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

ava*_*sin 6 security api ssl https

我正在研究企业API,它可用于企业服务,MITM可能会产生可怕的后果.

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

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

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

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

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

在此先感谢,将很乐意为您提供任何帮助/建议.

UPD:VPN(由frenchie推荐)不适合这种情况

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

Bru*_*uno 6

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

我不确定你用什么谷歌搜索,但正确使用SSL/TLS可以保护你免受MITM攻击.

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

SSL/TLS中的加密已经使用对称加密完成.仅通过非对称加密进行身份验证.

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

防止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堆栈都支持此功能,并且不一定适用于HTTP over TLS(据我所知,缺少有关主机名验证的规范).

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