重大公告:2023年阿里云双11服务器限时大降价(1核2G1年仅需49元+2核4G1年100元) 速度点击查看!!!

清晰图解https如何防范中间人攻击

3,508次阅读
没有评论

学编程,学架构,拓视野,欢迎访问猿视野
本文永久更新地址:https://www.yundashi168.com/374.html
求学问道讲究:知其然,知其所以然。

资料参考:

https/tls原理

HTTPS访问的三个阶段

第一阶段 认证站点

客户端向站点发起HTTPS请求,站点返回数字证书。客户端通过数字证书验证所访问的站点是真实的目标站点。

第二阶段 协商密钥

客户端与站点服务器协商此次会话的对称加密密钥,用于下一阶段的加密传输。

第三阶段 加密传输

客户端与站点直接使用已协商的对称加密密钥传输数据。

以下用一张图描绘CA、站点服务器、客户端之间的交互关系

清晰图解https如何防范中间人攻击

中间人攻击

中间人攻击的几种形式

  • 直接抓取报文获得明文信息
  • 非法中间加密代理,窃取明文信息
  • 留存密文,如果对称密钥泄露,解密历史报文

中间人攻击的防范

防范直接获取明文

加密传输报文

防范非法中间加密代理

黑客对客户端伪装成服务器,对服务器伪装成客户端,通过非法代理窃取会话数据。上面图示的第一、第二阶段可以防止这种非法代理行为。虽然黑客可以获取站点的证书,伪装成站点服务器接收请求,但黑客没有站点服务器私钥,无法与实现客户端实现密钥交换,不能窃取明文的会话数据。

防范解密历史报文(前向安全性)

防范解密历史报文,这种安全防护叫前向安全。早期的HTTPS实现中,客户端将会话密钥通过站点公钥加密后,发送给服务器,服务器用私钥解密。此时如果服务器私钥保管不善泄露,黑客如果留存了历史报文,可以解密获取会话密钥,从而还原历史报文数据。目前通过DH算法保证前向安全。在第二阶段,客户端与服务器只交换少量信息,双方便可独立计算出临时会话密钥用于加密。即使黑客事后获取私钥,也不能计算出会话密钥,从而实现前向安全。

FAQ

为什么不直接使用非对称密钥加密传输报文?

首先非对称密钥加解密效率低,不如对称密钥,一般使用AES等加密算法。其次前面也提到,只使用非对称密钥加解密不能保证前向安全性。

浏览器怎么知道所访问的站点不是伪造的?

浏览器主要依靠数字证书来确认所访问的站点不是伪造的。当浏览器通过https访问站点,站点须返回数字证书。数字证书是CA机构“签发”的电子文件,其中包含使用者信息、站点公钥、颁发者(CA)信息和CA指纹等。假设数字证书是完全可信的,且其中的内容也是不可篡改的。浏览器首先验证数字证书中的使用者(站点)信息与所访问的站点域名是否一致,然后用数字证书中的站点公钥挑战站点服务器,只用拥有私钥的真实站点才能通过挑战。因此可以确保所访问的站点是真实的。

注意:如果验证有问题,浏览器会提示风险访问。

为什么数字证书是可信的?

CA机构是可信的,CA本身也包含一个非对称密钥对,私钥用于“签发”的数字证书,公钥发布出去用于验证数字证书。CA使用非对称密钥配合HASH算法保证数字证书可信且不可篡改。CA将使用者信息、站点公钥、有效期等关键信息打包做HASH运算,再将HASH运算结果用CA私钥签名生成指纹。然后将以上全部信息打包成数字证书。黑客没有私钥不可以伪造证书签名,且证书的内容如果被修改,HASH结果就会改变。因此黑客不可伪造或者篡改证书,有效的数字证书是可信的。

浏览器怎么知道CA是可信的?

浏览器主要依据客户端操作系统保存的根证书列表判断CA的权威性。如上图,在Windows操作系统中,这个列表放在“受信任的根证书颁发机构存储区”中,这个列表实际上是CA机构的根证书集合,根证书包含CA机构的信息和公钥。只要是这个列表中的CA签发的证书,浏览器就认为可信。微软会动态维护根证书列表,用户需要管理员权限才能向这个列表中加入CA证书。

注:Windows客户端运行在内网中时,若无法联网更新根证书列表,此时可能会出向访问https应用缓慢。解决方法如下:

https://support.microsoft.com/km-kh/help/2677070/an-automatic-updater-of-untrusted-certificates-is-available-for-window

为什么有些软件如Fiddler可以还原https报文?

Fiddler是通过中间代理的方式抓取报文,还原https报文的前提是在客户端的根证书列表下加入Fiddler生成的CA根证书。这样Fiddler就成为CA,可以伪造数字证书,伪装成服务器。但是只能用于测试,不能实现真正意义上的窃取数据。

arison
版权声明:本站原创文章,由arison2021-09-04发表,共计3043字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)