前言
本文主要是介绍https的原理,以及未想要学习中间人攻击的同学打个基础
https
http面临的问题
明文传输,信息容易被泄露或者篡改
tcp基础上添加TLS/SSL
Transport Layer Security:传输加密协议,规定了如何为网络中传输的数据进行加密和解密。
SSL(Secure Socket Layer):早期由网景公司设计的加密协议,后贡献给IETF组织,并最终重命名为TLS。
除了HTTPS外,TLS可以被应用于任何基于TCP/IP协议的上层协议或应用程序,如SFTP协议,SMTP协议,数据库间通信加密等等。
解决方案一:使用对称加密去加密要传输的数据
问题:预主密钥也可能泄露
解决方案二:使用非对称密钥去加密预主密钥
问题:如何保证这个公钥是服务器发的,而不是中间人发的?
解决方案3:证书代替非对称加密中的公钥
最终https的全过程
证书
介绍
由证书颁发机构Certificate Authority(简称CA)所签发
唯一标识一个站点的身份信息
申请流程
准备CSR文件,包含网站域名,IP地址,公司名称,地理位置,邮箱地址,公钥
拿着CSR文件向CA机构申请证书
CA机构把证书颁发给服务器
证书创建的原理
怎么保证证书没有被篡改过:使用证书指纹
证书指纹:用于唯一标识一个证书(确保证书的完整性)
Hash加密:单项加密算法
不可逆性:无法对一个散列值做逆向操作来获取其原始数据
唯一性:不同的数据其计算得出的散列值永远不同,而同一输入计算出的散列值永远一样
怎么确保指纹的真实性:使用数字签名
数字签名:用于验证证书身份的真实性
利用PKI进行加密和解密操作,来验证证书真伪
CA使用私钥加密指纹,公钥解密指纹
根证书预安装:所有操作系统都默认安好了所有受信任的CA的根证书
根证书中包含了CA的公钥,这样防止了获取到的公钥是假的公钥的可能
中间人攻击演示(使用Burp模拟中间人)
https中间人攻击原理
准备工作:
1.浏览器设置代理
2.确认流量转发到了burp
此时浏览器事先安装了证书,所以burp能正常转发
演示:
1.Burp重新生成根证书,重启使其生效
- Burp Suite会生成全新的密钥对,包括新的私钥和对应的公钥。
- 使用新生成的私钥对新的公钥及其他信息(如颁发者名称、有效期等)进行自签名,生成新的CA根证书。此证书包含了新公钥,并由新私钥签名。
由于之后签名的都是新的私钥,导致之后的数据传输,浏览器中旧的根证书验签会失败,此时再次发起一个请求,会观察到页面无法访问.如下图:
2.为浏览器安装burp的自签名根证书
生成根证书
为浏览器安装根证书
测试
再次发https请求,观察浏览器页面变化,可以看到流量成功经过Burp到了服务器
打开Burp,观察到经过Burp的数据是明文传输,说明Burp确实起到了中间人的效果
总结
通过本次实验,更加深入的理解了Https协议的工作流程,对中间人攻击的一个基础框架有了一定的认识。
(注:本文介绍Https原理方面有部分图片来自于互联网,如有侵权,请联系删除)