小迪安全系列笔记---02数据包详解(HTTP和HTTPS的详解)

XDSec—02数据包详解

B站小迪安全系列视频的笔记整理

一、HTTP协议

1.1、概述

  1. 名称:超文本传输协议,(HyperText Transfer Protocol),是应用最广泛的一种互联网协议
  2. 作用:是一个基于TCP/IP协议栈的用来传输数据的协议;一般用于B/S架构:客户端通过http请求发送给服务器,服务器一般监听80端口,之后发出http响应,传输的数据类型有html文件、图片、等等
  3. 特点:支持C/S模式,是一种请求/响应式的协议,时无状态的协议,服务端不保留与客服交易是的任何状态;是无连接的协议,服务器处理完请求后,会断开连接,为了弥补这种不足,就产生了cookie和session
  4. http报文组成
    1. 请求行:包含请求方法、URL、协议版本
    2. 请求头(Requert Header)
    3. 请求体
  5. URL和URI
    1. URI:统一资源标识符,标识一个具体的网络资源,是一个抽象的概念,用于唯一标识一个资源,如同身份证号
    2. URL:统一资源定位符,标识一个具体的网络资源并且标识了具体找到该资源的路径,可以说是URI的一种实现方式,如同一个人的定位位置;如果该资源改变了路径,旧的URL就失效了,但URI还是存在的
    3. URI包括:URL和URN(统一资源名称,给网络上的一个资源唯一标识一个号码,如1234,想访问该资源时直接通过解析器解析该号码,就可以找到资源的位置,但目前仍未实现)

1.2、数据包

  • 抓包

    在这里插入图片描述

    使用burpsuite开启代理,火狐挂代理,即可在http history栏中看到所经过的所有数据包,上图为http请求数据包,下图为http响应数据包

    在这里插入图片描述

2.1、请求数据包内容详解

  1. 请求行:即图一数据包的第一行,由三个标记组成,并用空格隔开
    1. 请求方法:GET、POST、HEAD、PUT等共八种,最常用的就是前两种,图一为GET方法
    2. 请求URL:即要找的资源的网络绝对路径,上图的URL为/,即根目录
    3. HTTP版本:有1.0、1.1、2.0版本,最常见为1.1版
  2. 请求头:由关键字和值组成,之间用:隔开,主要关键字有以下:
    1. HOST:请求的地址域名和端口
    2. User-Agent:用户代理,即浏览器的用户代理信息,有浏览器信息和操作系统信息等
    3. Accept:浏览器支持的请求类型,为MIME类型
    4. Accept-language:浏览器接受的语言类型
    5. Accept-ENcoding:浏览器能处理的压缩代码
    6. Connection:连接类型,图一close标识请求处理完毕后会断开连接
    7. Cookie:保存在用户浏览器端的用来做用户验证的一端文本片段
    8. Upgrade-Insecure-Requests:http 自动升级到https,防止跨域问题但是域名端口都不同的不会提升
    9. Cache-Control:强制要求服务器返回最新的文件内容,也就是不走缓存,返回的200
  3. 空行:图一的第11行,这是必须的一行
  4. 请求数据

2.2、响应数据包详解

  1. 状态行:包括协议版本,状态响应码和状态描述
    1. 协议版本:同请求,常用http1.1
    2. 状态响应码
      1. 1XX:信息,服务器收到了请求,需要请求者继续执行
      2. 2XX:成功,操作成功被接收或处理
      3. 3XX:重定向,需要进一步的操作以完成请求
      4. 4XX:客户端错误,请求包含语法错误或无法完成请求
      5. 5XX:服务器错误,服务器在处理请求的过程中发生了错误
    3. OK、Created、Not Found等,是对状态响应码的描述
  2. 响应头:键值对组成,同上的请求头,主要内容有以下:
    1. Date:服务器响应的格林尼治时间
    2. Server:服务器的类型信息,图二为指出服务器为apache,版本为2.4.46
    3. X-Powered-By:告知网站使用何种语言或框架编写
    4. Set-Cookie:从服务器向用户发送的Cookie,用于下次浏览器的请求
    5. Upgrade:请求客服端升级协议
    6. Connection:连接类型
    7. Vary:记录了代理服务器返回特定数据参考了哪些请求字段
    8. Content-Length:返回数据的长度
    9. Content-Type:回送数据的类型

二、HTTPS协议概述

  • HTTP的传输内容是明文,容易被窃取
  • HTTP不能验证数据的完整性,我们不知道数据是否被篡改
  • HTTP未对对方身份进行认证识别

HTTP不符合安全三要素,因此是不安全的协议

2.1、HTTPS的概述

  1. 名称:全称Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的HTTP通道,是在HTTP的基础上通过传输加密和身份认证的保证了传输过程的安全性;HTTPS中的S指的是SSL,也可以说是Secure;可以理解为HTTPS==HTTP+SSL/TLS
  2. SSL:Secure Sockets Layer,安全套接字协议,是为网络通信提供安全和数据完整性的一种协议;是为了在通信时加密数据和保证数据完整性

2.2、HTTPS工作流程

主要流程可概括为:发起请求、验证身份、协商密钥、加密会话

在这里插入图片描述

  1. 客户端像服务器发出对请求
    • 客户端生成随机数A发送给服务器,并告诉服务器自己使用的加密算法和摘要算法
  2. 服务器将数字整数发送给客户端
    • 服务器生成随机数B;并根据客户端适配一种加密算法和摘要算法,用CA的证书公钥解密得到数字证书和签名;将证书、随机数B、算法一起发给客户端
  3. 客户端验证数字证书:由浏览器的TLS完成
    1. 检索浏览器内置证书,找到和服务器发来证书同一机构的证书后,则取出该证书的公钥、会话密钥算法、随机数B
    2. 用机构的公钥解密得到服务器发来的证书,得到证书内容和签名,这里就完成了数字签名,验证了服务器身份,此时浏览器就信任了服务器证书和公钥
    3. 浏览器生成随机数C,根据和服务器商议的会话密钥算法使用A、B、C生成会话密钥X
    4. 使用服务器的公钥加密随机数C并发给服务器
  4. 服务器得到会话密钥
    • 服务器使用私钥解密加密了的随机数C,并根据会话密钥算法使用A、B、C生成会话密钥X
  5. 双方进行加密通话
    • 双方使用会话密钥X对通信内容进行加密和解密

对于上述步骤可以看出:

  1. 会话建立阶段,即生成会话密钥X的阶段,使用的是非对称加密算法
  2. 通信阶段使用对称加密算法

这样是因为非对称加密速度慢,对算力要求高,一直使用非对称加密会加大双方的负担

HTTPS之所以安全,是因为完成了数据加密身份验证和验证了数据的完整性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值