一、https/tls原理

HTTPS访问的三个阶段

第一阶段 认证站点

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

第二阶段 协商密钥

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

第三阶段 加密传输

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

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

二、中间人攻击

中间人攻击的几种形式

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

中间人攻击的防范

1.防范直接获取明文

加密传输报文

2.防范非法中间加密代理

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

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

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

三、FAQ

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

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

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

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

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

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

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

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

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

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

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

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

————————————————
版权声明:本文为CSDN博主「shrun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/oZhuZhiYuan/article/details/106650944

HTTPS原理和对中间件攻击的预防相关推荐

  1. HTTPS原理和防范中间人攻击

    HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加 ...

  2. 计算机网络中的安全、常见攻击、以及HTTPS原理与抓包实践

    文章目录 计算机网络中的安全.常见攻击.以及HTTPS原理与抓包实践 计算机网络中的安全 什么是安全? 报文机密性 - 我们的谈话会被窃听吗? 报文完整性 - 我收到的报文被篡改过吗? 端点鉴别 - ...

  3. 浅谈Charles抓取HTTPS原理及HTTP CONNECT

    浅谈Charles抓取HTTPS原理 在关于HTTPS,你需要知道的全部中,分析了HTTPS的安全通信过程,知道了HTTPS可以有效防止中间人攻击.但用过抓包工具的人都知道,比如Charles,Fid ...

  4. https原理与实践

    HTTPS 原理与证书实践 分类: Web应用 1.1 网络安全知识 1.1.1 网结安全出现背景 网络就是实现不同主机之间的通讯,网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台 ...

  5. HTTPS原理全面介绍【备查】

    来源:https://www.cnblogs.com/haimishasha/p/11373034.html 目录 应用层协议:HTTPS 1. HTTPS定义 2. 密码学基础 3. HTTP通信问 ...

  6. HTTPS原理、单向和双向认证

    参考文章:https://blog.51cto.com/11883699/2160032 https://www.songma.com/news/txtlist_i39807v.html 众所周知,W ...

  7. HTTPS原理解析-转

    这篇文章关于Https的讲解真的是太透彻了,转过来备忘. 来源:腾讯bugly 另附两个SSL/TLS的交互详解:一.二 基于此文章的学习总结:下一篇文章 1.HTTPS 基础 HTTPS(Secur ...

  8. HTTPS那些事(一)HTTPS原理

    点我进入原文 谈一下, 个人对这个HTTPS 的理解:HTTPS 使用 TLS/SSL 加密传输的数据信息. 1.选择相互的加密算法和hash算法, hash 是为了保证数据完整性. 2. 使用非对称 ...

  9. https原理和数字证书

    https原理和数字证书 为什么需要加密? 什么是对称加密? 什么是非对称加密? 非对称加密+对称加密? 中间人攻击 数字证书 数字签名 浏览器验证过程 怎么证明CA机构的公钥是可信的? HTTPS( ...

最新文章

  1. TickableObjects 和 ITickable
  2. vue-axios 安装和应用
  3. html转word并保持格式不变,表格从Word转Excel想保持格式不变?用这两种方法,保你轻松搞定...
  4. Hadoop处于风雨飘摇中
  5. reactor p java_Java反应式框架Reactor中的Mono和Flux
  6. java win10 通知_如何在Java中创建Windows通知
  7. petshop4.0 详解之七(PetShop表示层设计)
  8. unity ab包加载_Unity资源管理和打包
  9. MYSQL查询近一年 近一月 近一周 今天数据 没有数据返回0 按时间有序返回数据
  10. 计算机专业英语影印版试题,计算机专业英语(2008影印版)复习资料
  11. 服务器appcrash的问题怎么修复,APPCRASH问题如何解决
  12. 生日快乐,我想念你们
  13. git问题:head detached at xxxx
  14. C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
  15. 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布
  16. 区块链培训中的Golang为什么这么重要?怎么学?
  17. python 监目录文件变动,然后在做些其它的操作,watchdog 详细解答
  18. hadoop block split 区别
  19. Charles——charles 主界面的介绍
  20. 用数学方法计算井字棋合法局面数——波利亚定理的简单应用

热门文章

  1. python selenium T3
  2. cookie注入讲解
  3. hdu 4322 最大费用流
  4. delphi下实现ribbon界面的方法(一)
  5. 使用Combres 库 ASP.NET 网站优化
  6. 网络数据库的复制和同步(转摘)
  7. 318. Maximum Product of Word Lengths
  8. cout输出数组_让程序从1开始一直执行++操作,10秒钟能输出最大的数是多少
  9. C++ reverse memcpy
  10. php聊天功能逻辑原理,@xxx提及用户,这种功能的实现原理是怎样的?