HTTPS公认证书的问题

背景

有不少分析HTTPS原理的文章,在提到中间人攻击问题时,都以中间人证书是自己签发生成的,不被系统信任,当验证时是通过不了的,HTTPS连接断开。这让人下意识认为:只要不信任非公认证书,中间人攻击就不存在了。
然而,实际上一个邪恶组织是可以通过申请合法证书,并且利用这个合法证书达到中间人攻击目的。那么它的原理是什么呢?请往下看。

HTTPS基础

HTTPS组成

HTTPS = HTTP + SSL/TLS
实际上,现在绝大部分都是采用TLS,所以:HTTPS = HTTP + TLS

HTTPS背后的基础技术

对称加密与非对称加密技术,比如AES和RSA。
消息摘要算法,MD5。

HTTPS原理说明

一句话说明:HTTPS就是通过RSA技术确认对方,并商议后续通信加密的过程。

在互联网上,如何确认对方?技术的基础就是RSA。
通过RSA生成一对秘钥(公钥与私钥),通过私钥与MD5对一段信息加密,那么,就可以通过公钥解密并确认这段信息是否由此私钥加密,是否中间被修改,也就是做到了信任的数字化以及信任链的数字化。
通过商业化,即成立一个组织,这个组织是全球公认的。那么由这个组织私钥加密的所有文件,潜在来讲都是可以被信任的。

那么,当我们向一个公认组织申请证书认证时,产生的证书,就表明我们自身已经是可以被大众信任的。

当确认对方之后,客户端通过发送随机数等信息给服务端,然后通过这段数据生成对称加密秘钥,并测试一次数据加密传输过程。后续的所有正文都是通过生成的秘钥加密解密传输的。

公认组织证书签发存在问题

任何一个组织机构,都可以申请证书。那么,如果有一个邪恶的组织,同样申请的一个证书,此时该怎么办呢?这也是许多文章没有去深入追究的问题。

如果某个客户端,仅仅做“basic X.509 certificate trust evaluation”,那么就刚好可以被这个邪恶组织利用。因为它可以变成一个中间人,并且客户端与服务端是毫无知晓的。
为什么呢?简单来讲,就是基础的X.509证书验证规则,就是验证证书是否是合法的以及是否过期。刚刚好,这个邪恶组织证书完全符合要求。
此时,这个组织就可以利用自己的私钥,解密客户端内容,并且用解密后的内容模拟客户端再次去服务端请求信息,同时模拟服务端回复信息给客户端,而它们对此毫无知觉。

那么,如何破解呢?当然是添加基础X.509验证之外的规则,比如DNS-Name验证,或者更严谨的是客户端添加服务器的公钥。不考虑其他因素,那么,中间攻击者将毫无立足之地。

以iOS-AFNetworking3.0为例

对证书验证处理是在AFSecurityPolicy类。我们可以看到,默认处理方式是包括DomainName验证的,也就是默认情况下,任何一个邪恶组织都无法通过这道门槛。

转载于:https://my.oschina.net/treebug/blog/2979203

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值