清晰图解https如何防范中间人攻击
https/tls原理
HTTPS访问的三个阶段
第一阶段 认证站点
客户端向站点发起HTTPS请求,站点返回数字证书。客户端通过数字证书验证所访问的站点是真实的目标站点。
第二阶段 协商密钥
客户端与站点服务器协商此次会话的对称加密密钥,用于下一阶段的加密传输。
第三阶段 加密传输
客户端与站点直接使用已协商的对称加密密钥传输数据。
以下用一张图描绘CA、站点服务器、客户端之间的交互关系
中间人攻击
中间人攻击的几种形式
- 直接抓取报文获得明文信息
- 非法中间加密代理,窃取明文信息
- 留存密文,如果对称密钥泄露,解密历史报文
中间人攻击的防范
防范直接获取明文
加密传输报文
防范非法中间加密代理
黑客对客户端伪装成服务器,对服务器伪装成客户端,通过非法代理窃取会话数据。上面图示的第一、第二阶段可以防止这种非法代理行为。虽然黑客可以获取站点的证书,伪装成站点服务器接收请求,但黑客没有站点服务器私钥,无法与实现客户端实现密钥交换,不能窃取明文的会话数据。
防范解密历史报文(前向安全性)
防范解密历史报文,这种安全防护叫前向安全。早期的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,可以伪造数字证书,伪装成服务器。但是只能用于测试,不能实现真正意义上的窃取数据。
清晰图解https如何防范中间人攻击相关推荐
- HTTPS 防范中间人攻击原理
HTTPS因为增加了CA证书,可以在会话前通过证书验证证明通信的彼此就是所声称的人,因此可以防范中间人攻击.这种防范中间人攻击的前提是在HTTPs协议的双向认证上.如果仅仅实现了HTTPs的单向认证, ...
- HTTPS原理和防范中间人攻击
HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加 ...
- HTTPS怎么避免中间人攻击
1. HTTP 协议 在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念. 1.1 HTTP 协议介绍 HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层. HT ...
- HTTPS 原理及中间人攻击
随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议.大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL .非对称加密. CA证 ...
- 课堂上传纸条如何防范中间人攻击?
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 这个我比较有经验 ...
- HTTPS如何防止中间人攻击
首先服务器需要向数字认证机构(以下简称CA)申请证书,比如现在服务器想发布一个网站www.abc.com(以下简称abc),服务器生成公开密钥算法的一对密钥,比如RSA密钥.服务器会先生成一个证书签名 ...
- HTTPS中间人攻击,HTTPS被抓包了怎么办?
目录 一.写在前面 二.什么是中间人攻击 三.https 是绝对安全的吗 四.中间人攻击的初步了解 五.中间人攻击的深入了解 六.https 是如何防止中间人攻击的 SSL-Pinning 七.浏览器 ...
- 漫话:如何给女朋友解释为什么吴某凡会被中间人攻击?
中间人攻击 中间人攻击(Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们 ...
- 什么是中间人攻击?如何抵御中间人攻击?
相对于其他攻击方式,中间人攻击是一个特殊的存在,它是一种间接性的入侵攻击,由来已久,而且随着通信技术的不断发展,中间人攻击也越来越多样化.那么到底什么是中间人攻击?如何防范中间人攻击?本文为大家介绍一 ...
最新文章
- rocketmq(三 java操作rocket API, rocketmq 幂等性)
- win10弹不出密码输入框_电脑互访提示输入网络密码,怎么办?
- Masm for Windows集成开发环境编写汇编程序
- 怎样安装php52-71,CentOS如何安装PHP5和PHP7
- [LCP28] 采购方案
- 一次PHP中SQL的Where子句无效问题的解决之旅
- atmega8a如何烧写程序_快捷又安全!如何利用芯片内部Bootloader烧写程序?
- linux系统安装klocwork,linux下klocwork的使用
- 华为牛人的十年工作感悟
- 如何加载CASS DAT格式文件
- CocosCreator之KUOKUO带你做刚体移动与物品拾取到背包
- Codeforces Round #766 (Div. 2)C. Not Assigning
- 几个实用的app和网站
- caffe的安装配置(CUDA7.5+VS2013)
- Win7环境下硬盘安装XP(无光驱/光盘安装XP)
- JS 中 Object 的 keys 是无序的吗?
- 复现Thinkphp5 5.0.22/5.1.29远程代码执行漏洞
- bilibili账号申诉中心_B站的申诉渠道究竟在哪啊
- android 跳转到系统Settings界面的所有Intent
- 三分钟读懂 Chainge(橙子):跨链转账的王者, DeFi 中自由转移的应用聚合平台
热门文章
- Windows cannot be installed to this disk. The selected disk has an MBR partition table
- BCELoss() RuntimeError: the derivative for ‘target‘ is not implemented
- 最早的手动式计算机工具是,计算工具发展史
- 一场史无前例的改革正在重塑中国!
- IT部门如何摆脱不堪重负的局面?
- 通过CMD命令查询端口占用追查追踪EXE/进程/反电脑木马病毒的方法
- HJ53 杨辉三角的变形(c++)
- 80X86汇编语言程序设计教程(杨季文)习题答案四
- jwt实战详解--B站编程不良人视频笔记
- 微软有没有类似excel服务器的产品,除了Win,Office,微软还有哪些牛哄哄的产品?...