背景 在上信息安全课程的时候,经常听到SSL层协议为web安全提供一种安全保障机制,但是该协议的具体操作过程以及对协议的格式不甚了解。现所看论文是对网络安全协议验证方法的研究,并使用CSP(通信顺序进场)语言对SSL协议进行了描述,在对抽象语言进行理解之前,我想首先得理清SSL的具体过程。
协议简介
- 安全套接字(Secure Socket Layer,SSL)协议是一种用于Web浏览器与Web服务器之间安全交换信息的加密协议,提供三个基本的安全服务:完整性、保密性、认证性。
- 秘密性: SSL客户机和服务器之间传送的数据经过了加密处理,网络中的非法窃听者所获取的信息都将是无意义的密文信息
- 完整性: SSL利用散列(HASH)函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器和客户机之间的信息受到破坏。
- 认证性:利用证书技术和可信的第三方认证,可以让客户机和服务器相互识别对方的身份。
- SSL于1994年被一位名为Netscape的人开发的,专门用来保护Web的通信, 后来成为了世界上最著名的web安全机制,所有主要的浏览器都支持SSL协议。目前有三个版本:2、3、3.1,最常用的是1995年发布的第三版本。
- SSL协议位于可靠的传输层协议(如:TCP)之上,应用层(如:HTTP)之下。使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。
文章图片
0x01: SSL握手协议
文章图片
- 作用时间
客户机和服务器用SSL连接通信时使用的”第一个”子协议。在应用层发送报文之前实行。
- 功能
协商SSL协议的版本、协商加密套间、协商密钥参数、验证通讯双方的身份或仅验证服务器身份(可选)、建立SSL连接
- 握手流程(以单方向认证为例)
文章图片
形象化比喻:
C(Client): 我想和你进行安全通话,我的对称算法有DES,RC5,秘钥交换算法有RSA和DH,摘要算法有MD5和SHA。
S(Server): 我们用DES-RSA-SHA这对组合。这是我的证书C,你拿去验证我的身份。 ——协商SSL协议的版本
C: (通过CA验证S证书的真实性,若有误,发出警告断开连接)下面我要用你的公钥进行加密,给你发消息了。
消息内容:生成per_master_secret(用于对初始化向量和hmac密钥进行加密),使用S的公钥对per_master_secret加密后发送给S
C:我说完了(使用公钥加密) ——认证身份&&生成ClientKeyExchange
S: (用私钥进行解密获得per_master_secret)生成初始化向量、hmac秘钥、加密密钥,并用per_master_secret进行加密后发送给C
S:我说完了 ——协商完毕一套加密算法
SSL会话建立完毕,应用层可以开始发送数据!
- SSL握手协议报文格式
文章图片
3个字段:Type,Length,Content
Type:(1字节)该字段指明使用的SSL握手协议报文类型
1) hello_request:
Length:(3字节)以字节为单位的报文长度。
2) client_hello:
3) server_hello:
4) certificate:
5) server_key_exchange:
6) certificate_request:
7) server_done:
8) certificate_verify:
9) client_key_exchange:
10) finished: 引用块内容
Content:(≥1字节):对应报文类型的的实际内容、参数
详情可见 SSL报文详解
- 作用时间
作用于所有的SSL通信,记录协议封装上层的握手协议、警告协议、改变密码格式协议、应用数据协议
- 功能
1) 分组、组合
2) 压缩、解压缩
3) 以及消息认证
4) 加密传输等
- 记录流程
文章图片
- SSL记录报头
文章图片
推荐阅读
- DDOS防护为何需要不断升级(它的对手是一条暴利的“黑色产业链”)
- 网络信息安全记录|我是如何一步步获取房东的WiFi后台管理密码的【社工思路】
- TCP和UDP常见面试题(全面)
- linux|实践三 网络嗅探与协议分析
- 渗透测试|SRC挖掘密码重置漏洞总结
- web安全|基于报错和延时的注入(不限场景)
- xss|XSS 常用标签及绕过姿势总结
- 黑客工具|漏洞扫描工具Nessus详细使用教程
- 路由器|小白零基础入门系列-IP地址基础(上篇)