中间人攻击与HTTPS
[toc]
HTTP协议
HTTP(hypertext transfer protocol )协议是一种七层协议,是万维网通信的基石,通常使用tcp协议(HTTP3使用quic(udp)),默认端口80
请求方法
GET、HEAD:获取资源
POST:上传资源
PUT:修改资源
DELETE:删除资源
TRACE:回显请求
OPTIONS:回复资源所有可用方法
CONNECT:留给SSL加密使用
幂等性
在函数式编程中,幂等函数是对任何值x具有f(f(x))= f(x)属性的函数,在编程领域,则意为同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的
GET、HEAD、PUT、DELETE、OPTIONS、TRACE都是幂等的,而GET、HEAD、OPTIONS、TRACE一般来说没有副作用。
状态码
- 1xx消息:请求已被服务器接收,继续处理
- 2xx成功:请求成功
- 3xx重定向:重定向
- 4xx请求错误:客户端错误
- 5xx服务器错误:服务器错误
HTTP keeep-alive
HTTP1.1加入
优点:同时打开的TCP链接少了、降低延时
缺点:请求后保持链接,可能会影响性能
HTTPS
HTTPS(hypertext transfer protocol secure)是使用HTTP通信,使用SSL/TLS加密数据包,默认端口443
传输过程
证书验证阶段:
- 浏览器发起HTTPS请求
- 服务端返回HTTPS证书和SSL非对称加密公钥
- 浏览器,验证HTTPS证书合法性,合法就生成随机数
传输阶段:
- 浏览器通过SSL公钥加密随机数,传输到服务端
- 服务端通过SSL私钥解密,通过随机数构造对称加密(TLS),通过TLS传输
如何验证证书合法性
证书包含:公钥、持有者信息、证书机构信息(CA)、数字签名和算法、有效期等
证书签发:
- CA把各种信息打包通过计算得到hash值
- CA使用私钥对hash值加密生成证书签名
- 将证书签名加到文件证书上,形成数字证书
证书校验:
- 浏览器通过同样hash算法得到hash值
- 浏览器用公钥对CA数字签名解密与自己算的hash值比较,若相同就是可信的
证书信任链:通过当前证书-中间证书-根证书逐级担保信任
中间人攻击
A与C进行通信时,需要经过B进行传输,B获取了A和C的通话信息,B分别伪装成A和C通信,伪装成C和A通信
非对称加密场景
A发送公钥给C时,B作为中间人攻击,B也生成公私钥,B将自己的公钥发给C和C通信,B通过A发送的公钥和A通信
HTTPS中的中间人攻击
在缺少证书验证环节时,可以进行HTTPS中间人攻击,具体流程如下
- A与C进行通信时,本地请求劫持,B成为中间人
- B返回自己伪造的证书给A,B与C通信
- A不会验证证书,直接创建随机数,与B进行通信
- B与C按照正常流程进行通信
本网站内容均采用 CC-BY-NC-SA 许可协议。转载请注明来自 LongTao!
评论