TLS 协议-对称加密原理
这篇文章介绍一下 TLS 协议,TLS 有着 20 多年的历史,包括了很多种加密方式,下面通过学习对称加密原理和非对称加密原理对 TLS 协议加深理解。
1.TLS 设计的目的
身份验证
保密性
完整性
2.TLS/SSL 发展史及通用模型
3.TLS 协议
Record 记录协议
对称加密
Handshake 握手协议
验证通讯双方的身份
交换加解密的安全套件
协商加密参数
4.TLS 安全密码套件
密钥交换算法
身份验证算法
对称加密算法、强度、工作模式
签名 hash 算法
5.对称加密示意图
6.基于 XOR 的对称加密原理
6.1 XOR 真值表
6.2 基于 XOR 的加密示意图
6.3 基于 XOR 的解密示意图
6.4 填充明文
Block cipher 分组加密:将明文分成多个等长的 Block 模块,对每个模块分别加解密
目的:当最后一个明文 Block 模块长度不足时,需要填充
填充方法
位填充:比
bit
位为单位来填充以字节为单位填充
7.对称加密工作模式
允许使用同一个分组密码密钥对多块数据加密,并且保证其安全性:
7.1 ECB(Electronic codebook)模式
直接将明文分解为多个块,对每个块独立加密
问题:无法隐藏数据特征(例如给一张图片加密之后图像特征可能还在)
7.2 CBC(Cipher-block chaining)模式
每个明文块先与前一个密文块异或后,再加密
问题:加密过程串行化
7.3 CTR(Counter)模式
通过递增一个加密计数器以产生连续的密钥流
问题:不能提供密文消息完整性校验(这个问题可以通过哈希函数校验码来解决)
7.4 GCM 模式
GCM 是在 CTR 模式的基础上增加一个 MAC 哈希值来校验数据完整性的:
8.AES 加密算法
8.1 AES 的三种密钥长度
AES 分组的长度是 128 位(16 字节):
AES | 密钥长度(32位比特) | 分组长度(32位比特) | 加密轮数 |
---|---|---|---|
AES-128 | 4 | 4 | 10 |
AES-192 | 6 | 4 | 12 |
AES-256 | 8 | 4 | 14 |
8.2 AES 加密步骤
把明文按照 128 bit(16 字节) 拆分成若干个明文块,每个明文块是 4*4 矩阵
按照选择的填充方式来填充最后一个明文块
每一个明文块利用 AES 加密器和密钥,加密成密文块
拼接所有的密文块,成为最终的密文结果
8.3 AES 加密流程
C = E(K,P),其中 E 为每一轮算法,每轮密钥皆不同:
初始轮
AddRoundKey 轮密钥加
普通轮
AddRoundKey 轮密钥加
SubBytes 字节替代
ShiftRows 行移位
MixColumns 列混合
最终轮
SubBytes 字节替代
ShitRows 行移位
AddRoundKey 轮密钥加
扫码关注