HTTPS原理和对中间件攻击的预防
一、https/tls原理
HTTPS访问的三个阶段
第一阶段 认证站点
客户端向站点发起HTTPS请求,站点返回数字证书。客户端通过数字证书验证所访问的站点是真实的目标站点。
第二阶段 协商密钥
客户端与站点服务器协商此次会话的对称加密密钥,用于下一阶段的加密传输。
第三阶段 加密传输
客户端与站点直接使用已协商的对称加密密钥传输数据。
以下用一张图描绘CA、站点服务器、客户端之间的交互关系
二、中间人攻击
中间人攻击的几种形式
- 直接抓取报文获得明文信息
- 非法中间加密代理,窃取明文信息
- 留存密文,如果对称密钥泄露,解密历史报文
中间人攻击的防范
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原理和对中间件攻击的预防相关推荐
- HTTPS原理和防范中间人攻击
HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加 ...
- 计算机网络中的安全、常见攻击、以及HTTPS原理与抓包实践
文章目录 计算机网络中的安全.常见攻击.以及HTTPS原理与抓包实践 计算机网络中的安全 什么是安全? 报文机密性 - 我们的谈话会被窃听吗? 报文完整性 - 我收到的报文被篡改过吗? 端点鉴别 - ...
- 浅谈Charles抓取HTTPS原理及HTTP CONNECT
浅谈Charles抓取HTTPS原理 在关于HTTPS,你需要知道的全部中,分析了HTTPS的安全通信过程,知道了HTTPS可以有效防止中间人攻击.但用过抓包工具的人都知道,比如Charles,Fid ...
- https原理与实践
HTTPS 原理与证书实践 分类: Web应用 1.1 网络安全知识 1.1.1 网结安全出现背景 网络就是实现不同主机之间的通讯,网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台 ...
- HTTPS原理全面介绍【备查】
来源:https://www.cnblogs.com/haimishasha/p/11373034.html 目录 应用层协议:HTTPS 1. HTTPS定义 2. 密码学基础 3. HTTP通信问 ...
- HTTPS原理、单向和双向认证
参考文章:https://blog.51cto.com/11883699/2160032 https://www.songma.com/news/txtlist_i39807v.html 众所周知,W ...
- HTTPS原理解析-转
这篇文章关于Https的讲解真的是太透彻了,转过来备忘. 来源:腾讯bugly 另附两个SSL/TLS的交互详解:一.二 基于此文章的学习总结:下一篇文章 1.HTTPS 基础 HTTPS(Secur ...
- HTTPS那些事(一)HTTPS原理
点我进入原文 谈一下, 个人对这个HTTPS 的理解:HTTPS 使用 TLS/SSL 加密传输的数据信息. 1.选择相互的加密算法和hash算法, hash 是为了保证数据完整性. 2. 使用非对称 ...
- https原理和数字证书
https原理和数字证书 为什么需要加密? 什么是对称加密? 什么是非对称加密? 非对称加密+对称加密? 中间人攻击 数字证书 数字签名 浏览器验证过程 怎么证明CA机构的公钥是可信的? HTTPS( ...
最新文章
- TickableObjects 和 ITickable
- vue-axios 安装和应用
- html转word并保持格式不变,表格从Word转Excel想保持格式不变?用这两种方法,保你轻松搞定...
- Hadoop处于风雨飘摇中
- reactor p java_Java反应式框架Reactor中的Mono和Flux
- java win10 通知_如何在Java中创建Windows通知
- petshop4.0 详解之七(PetShop表示层设计)
- unity ab包加载_Unity资源管理和打包
- MYSQL查询近一年 近一月 近一周 今天数据 没有数据返回0 按时间有序返回数据
- 计算机专业英语影印版试题,计算机专业英语(2008影印版)复习资料
- 服务器appcrash的问题怎么修复,APPCRASH问题如何解决
- 生日快乐,我想念你们
- git问题:head detached at xxxx
- C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
- 微信小程序详细图文教程-10分钟完成微信小程序开发部署发布
- 区块链培训中的Golang为什么这么重要?怎么学?
- python 监目录文件变动,然后在做些其它的操作,watchdog 详细解答
- hadoop block split 区别
- Charles——charles 主界面的介绍
- 用数学方法计算井字棋合法局面数——波利亚定理的简单应用