通信安全及SSL协议
SSL协议
- 一、通信安全
-
- (一) 通信安全的安全目标
- (二)概念
-
- 1. 必要的装备
- 2. 把工具组合起来使用
- (三)密码学 - 摘要算法
- (四)CA “数字证书颁发机构” 过程
- 二、SSL协议的解释和加密
-
- (一)简单的安全通道协议
-
- 1. 构建玩具安全协议TSP
- 2. 单向握手
- 3. 双向握手
- 4. 导出密钥
- 5. 数据传输
- 6. 总结
- (二)SSL协议
-
- 1. SSL协议目标
- 2. SSL的历史
- 3. SSL协议的位置
- 4. TLS和SSL的主要区别
- 5. SSL协议的分层模型
- 6. SSL协议的C/S架构
- 7. SSL握手协议功能
- 8. 握手主要工作流程
- 9. 认证服务器的身份
- 10. SSL协议规范语言基本类型
- 11. SSL握手协议
-
- (1)单向SSL握手 in Wireshark
- (2)Handshake协议
- (3)ChangeCipherSpec协议
- (4)ClientHello in Wireshark
- (5)算法套件
- 12. SSL记录协议
-
- SSL记录协议的功能
- 13. 数据传输主要工作流程
- 三、高级SSL协议
-
- (一)SSL会话与连接
-
- 1. SSL连接与会话的差异
- 2. SSL连接与会话的关系
- 3. SSL会话恢复过程
- 4. SSL会话密钥导出
- 5. SSL各类工作密钥的作用
- (二)初始化向量(IV)
- (三)客户端证书认证
- (四)有客户端认证的全握手过程
- (五)认证客户端的身份
- (六)CertificateRequest
-
- Certificate (C) in Wireshark
- (七)PFS(perfect forward secrecy)完美前向安全性
- (八)ECDH算法基础
-
- 1. 椭圆曲线算法ECC
- 2. ECDHE预主密钥协商过程
- 4. 完美前向安全性PFS总结
- (九)SSL使用场景
- (十)SSL加速产品
-
- 1. NSAE应用安全网关
- 2. NetGate SSL VPN网关
一、通信安全
(一) 通信安全的安全目标
-
保密性( confidentiality)
- 保证数据在通信过程中不被窃听
-
消息完整性( message integrity)
- 保证数据在通信过程中不被篡改
-
端点认证( endpoint authentication
- 保证通信过程中双方身份的真实性
- 单向认证
- 双向认证
(二)概念
1. 必要的装备
-
加密
- 将明文通过加密算法和密钥转换为密文
-
消息摘要( Message Digest)
- 将任意长度的消息作为输入,产生一个表示消息特征的定长字符串,也称为数字指纹,具有不可逆性和抗冲突性
-
MAC( message authentication codes,信息验证码)
- 保证消息不被篡改的算法,MAC类似于摘要算法,但是在计算MAC时还需要采用一个密钥,目前基本采用HMAC,即 Hash MAC
-
公钥基础设施PK
- 私钥签名、公钥加密、数字证书等等技术等集合,提供身份认证、数据保密性、完整性、操作抗抵赖性
2. 把工具组合起来使用
-
数据加密
- 公钥方式用于加密共享密钥
- 共享密钥用于加密通信数据
-
数据签名
- 先计算通信数据的消息摘要
- 发送方私钥加密消息摘要进行数字签名
(三)密码学 - 摘要算法
- 原文
- 摘要算法
- 摘要值
特点:
- 不可逆
- 不能通过摘要推导出原文
- 碰撞空间大
- 不可能创造出消息M‘让它和消息M与相同的哈希值
常用对称算法:
MD5、SHA1、SHA256、SHA384、SHA512、SM3
(四)CA “数字证书颁发机构” 过程
- 发送方和接收方彼此信任签发对方证书的CA(信任证书颁发机构证书)
- CA可以是多级的,通过证书链来实现信任关系
- 证书链的第一级是“自签”的,被称为“根CA″,中间级别的CA被称为中级CA
二、SSL协议的解释和加密
(Alice发送方,Bob接收方)
(一)简单的安全通道协议
1. 构建玩具安全协议TSP
- 简单的安全消息系统只能发送单条消息
- 交互式的系统需要建立一组可以在整个连接中使用的密钥
- 构建一个Alice和Bob在通信过程中对双方进行认证并建立一组密钥的简单安全通道协议,称之为玩具安全协议(Toy Security Protocol,TSP)。
- 握手(Handshake)。Alice和Bob使用他们的证书和私用密钥来对对方进行认证并交换共享密钥。
- 导出密钥(Key derivation)。Alice和 Bob 使用达成一致的共享密钥导出一组加密密钥,以用于对传输进行保护。
- 数据传输(Datatransfer)将要传输的数据分割成一系列的记录(record),并对每条记录单独加以保护,这样使得数据一准备好就可以进行传输,一旦接收就可以进行处理。
- 关闭连接(Connection closure)。使用特殊的、经过保护的关闭消息,来安全地关闭连接。这样可以阻止攻击者伪造关闭操作而截断正在传输的数据。
2. 单向握手
- 简单的握手——完成单向认证的握手
- 给Bob发送一条Hello消息,告诉她已经作好了通信准备
- Bob以他的证书作为应答
- Alice产生一个准备和Bob共享的单一的密钥,称之为主密钥(master
secret,MS) - 使用Bob证书中的公钥加密MS发送给Bob
- Bob使用自己的私钥解密出MS获得了通信共享密钥
3. 双向握手
- 简单的握手——完成双向认证的握手
- 给Bob发送一条 Hello消息,告诉她已经作好了通信准备
- Bob以他的证书和 Nonce作为应答
- Alice产生一个准备和Bob共享的单一的密钥,称之为主密钥( master secret,MS)
- Alice使用Bob证书中的公钥加密MS,再使用自己的私钥做数字签名
- Bob验证 Alice的证书并获取证书公钥,使用 Alice的公钥验证 Alice的签名
- Bob使用自己的私钥解密出MS获得了通信共享密钥
Nonce是或 Number once的缩写,在密码学中 Nonce是一个只被使用一次的任意或非重复的随机数值。
4. 导出密钥
只有一个共享密钥是不是够用
- 使用同一个密钥来完成不止一种类型的加密操作被认为是不安全的
Ecs用于将数据从客户端发送到服务器端的加密密钥
Mcs用于从客户端发送到服务器端数据的MAC密钥
EsC—用于将数据从服务器端发送到客户端的加密密钥
Msc——用于从服务器端发送到客户端数据的MAC密钥
- 使用一个称作密钥导出函数( key derivation function,KDF的工具来导出上述各种用途的密钥
KDF的输入是主密钥MS和Bob所发送的 Nonce,输出是上述各种用途的密钥
5. 数据传输
-
如何防止重放攻击(MITM Attack)
-
攻击者将截获记录重新发送给接收者
-
将记录进行编号
-
编号必须成为MAC输入的一部分,以防攻击者对席号进行修改
-
M=MAC(MxSequencelD)x=cs或sc
-
序号不能阻止攻击者重放Alice的所有消息,需要Bob每次握手都生成一个新的Nonce,新的握手会使用新的一组不同的密钥
-
如何防止截断攻击(Truncation Attack)
-
攻击者可以很容易伪造数据包,例如TCP的关闭连接,Bob意识不到Alice的消息没有传完整
-
根据记录中运载的数据是普通数据还是控制信息,规定其类型
-
M= MAC(MxSequencell TypelD),x=Cs或sc
例如类型字段为0表示数据对待如果为1则表示控制信息,我们需要采取一种简单的约定,即所有的控制数据都由一个简单的数字构成。我们保留0来指示正在关闭连接,而使用非0数字来表示错误
6. 总结
- TSP包含了SSL绝大多数的核
栈江湖: 引用「2. 对称密钥管理方案:」 非常全面
技术小白白~: 必须来个收藏,妥妥的高手呀,平时可以多多交流,大佬可以给个WX吗?
大家一起学编程(python): 作者肯定是那个别人家的孩子
自由学者亻伊宸: 这个太秀了,支持博主
盼盼编程: 感谢博主分享,讲的挺不错,希望后面有更多的文章!