SSL/TLS 协议技术分享会纪要
目的
-
理解SSL和TLS区别
-
理解SSL协议在整个网络通信模型中所处的位置
-
理解SSL、http、https之间的区别和联系
-
掌握TCP连接的握手过程和SSL连接的握手过程
-
使用wireshark抓包加深对这一过程的理解
- 握手操作
- http、https的心跳机制
- 纠正http每次都会进行握手的认知误区
-
加密和解密
- 非对称加密
- 对称加密
- 数字签名
- 理解SSL 为什么安全?
- 理解数字签名 为什么有效?
SSL/TLS 简介
-
TLS: Transport Layer Security 传输层安全协议
- TLS 握手协议(TLS Handshake): 使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听
- TLS 记录协议(TLS Record): 确定传输层数据的封装格式, 使用握手协议协商出来的key做加密/解密
-
SSL: Secure Sockets Layer 安全套接层协议, TLS 协议 的前身
TLS/SSL 协议在网络层所处的位置
网络参考模型.jpeg- http, TLS/SSL 协议同属于应用层
HTTPS 和 TLS/SSL 关系
application角度网络模型.png这个模型把应用层协议分的更细, 将SSL/TLS 协议独立了出来,从这个角度来讲http协议位于更上层。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
TLS 握手过程
TCP 握手流程
Tcp握手过程.pngSSL的握手流程
TLS握手过程.png使用wireshark 抓包
-
SSL端口号: 443
-
http 示例
- 可见完整的tcp握手操作
- 可见明文信息
- 可见心跳包的存在 (keep-alive) ,心跳间隔约1秒, 但心跳包持续时间较短
- 前后间隔较短的请求,不会反复触发握手操作
- https 实例
- 可见完整的tcp握手操作
- 紧接着进行ssl握手操作
-
可见心跳包的存在 (keep-alive) ,心跳间隔约1秒, 但心跳包持续时间较长
![非对称机密过程.png](https://img.haomeiwen.com/i2031664/7f8a686014b0e7f5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
验证
加密和数字证书
- 对称加密:算法公开,密钥保密
- 非对称加密(加密密钥和解密密钥不一样): 加密公开,解密保密
-
产生原因
- 解决对称密钥分配问题
- 解决数字签名问题
-
组成
-
密钥
- PK(Public Key) : 加密密钥公开
- EK(Secret Key): 解密密钥私有
-
算法
- 加密算法E: 公开
- 解密算法D: 公开
-
-
特性
- 对于报文X进行D运算和E运算或进行E运算和D运算其结果是一样的
-
结论:
- 在知道公钥的情况下,任何客户端都可以与服务端通信
- 由于只有服务端持有解密密钥,那么服务端对报文X进行E运算, 客户端对报文进行D运算,则可以得到还原报文X,而且能确认报文的来源于该服务器。
数字签名
- 鉴别性: 即可以追溯发送者身份
- 完整性: 即可以确认报文的完整性(没有被篡改)
- 不可否认性: 即发送者不能抵赖对保温杯的签名
数字签名能起到标识符的作用,但是并不安全,通常会和加密组合使用
兼具保密和数字签名.png
参考文章
提问
客户端如何鉴别数字签名,如何确定其有效性 --Reporter: KNOX
数字签名过程:
手绘数字签名过程.png
数字签名讲解.png
网友评论