赞
踩
「作者简介」:2022年北京冬奥会中国代表队,CSDN Top100,学习更多干货,请关注专栏《网络安全自学教程》
SSL(Secure Socket Layer)是「安全套接层协议」,在握手过程中使用非对称秘钥加密实现数据的机密性;使用哈希算法实现数据的完整性。
SSL3.1开始名字改成了TLS,TLS在SSL的基础上进行了「标准化」,实际上两个协议的功能没有明显的差距。
SSL1.0 | SSL2.0 | SSL3.0 | SSL3.1 | SSL3.2 | SSL3.3 | SSL3.4 |
---|---|---|---|---|---|---|
TLS1.0 | TLS1.1 | TLS1.2 | TLS1.3 | |||
内部 | 弃用 | 弃用 | 可用 | 可用 | 主流 | 可用 |
SSL协议分为两层:
补充:第二层一共有4种子协议,多个子协议信息可以包含在一个记录协议的数据包里,但必须标识出来。除了握手协议还有三个需要了解的协议:密码参数协议、警报协议、应用数据协议。
SSL协议执行的时候分为两个阶段:
SSL协议的握手过程如下图
接下来我们详细讲解每个握手阶段作用:
上面的过程是单向认证模式,比较常见;如果使用双向认证模式,握手还会增加以下过程:
每个TLS的数据包都有5个字节的报文头(下图圈中的地方):
Handshake 握手协议是TLS中最复杂的协议,有10种握手消息类型。
1)HelloRequest:(不常见)连接使用太长时间后,服务器强制客户端重新协商握手。
2)Client Hello:开始握手协商,携带客户端支持的加密算法列表、压缩算法列表、扩展列表,供服务器选择。
3)Server Hello:开始握手协商,返回服务器选择的加密算法、压缩算法。
4)Certificate:发送公钥证书列表。
5)ServerKeyExchange:发送服务器的密钥交换算法参数,用于后续的对称加密。
6)CertificateRequest:服务器验证客户端身份,不常见。
7)ServerHelloDone:服务器完成握手协商时发送。只提示,不携带其他信息。
8)ClientKeyExchange:为服务器提供密钥交换算法参数,用于生成对称加密的密钥。
9)CertificateVerify:客户端使用此消息来证明服务器拥有与其公钥证书相对应的私钥。该消息保存由客户端进行数字签名的哈希信息。
10)Finished:也叫Encrypted Handshake Message,标识握手协商已完成、CipherSuite加密已激活。从这个报文开始加密发送,报文携带先前所有握手信息的哈希值,用来验证数据的完整性,防止数据被篡改。
1)cmd 中 ping weibo.com
获取微博IP;
ping返回的地址有时会变,用 nslookup weibo.com
解析微博的IP;
解析列表中的4个IP,我们都抓,以防IP变动导致没抓到包。
2)打开wireshark,过滤微博的IP _ws.col.protocol == "TLSv1.2" and (ip.addr==123.125.107.13 or ip.addr==123.125.107.14 or ip.addr==202.108.0.99 or ip.addr==202.108.0.98)
后,开启抓包,访问微博。
3)从抓包结果可以看出来,前几个包是握手,握手完成以后才开始传数据。
4)握手有10个过程,一个数据包可以包含多个握手过程,比如第三个包,就同时包含了Certificate、Server Key Exchange、Server Hello Done三个过程。
第一个包是我给微博发的 Client Hello,意思是我要开始握手协商了。
Handshake Type 是握手类型,这里的类型是Client Hello。
Length 和 Version是数据包长度和协议版本。
Random 是客户端生成的随机数,用来生成对称密钥。
Session ID 是会话ID,短期内重复连接时,会话可以复用。
Cipher Suites 是客户端支持的加密算法,服务器可以从这个列表里选择它认为最安全的一个算法,后续用来加密数据。
Compression Methods 是客户端支持的压缩算法。
Extensions 是一些扩展。
第二个包是微博给我返回的 Server Hello,意思是它也要跟我开始握手,协商加密参数。
Cipher Suite是服务器选择的加密算法,握手完成后会用这个算法加密数据。
Compression Method 是服务器选择的压缩算法,这里是null,说明没选,数据不被压缩。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。