1、传输层安全协议发展历史
TLSv1.3 改善握手流程,减少了时延,并采用完全前向安全的密钥交换算法
2、传输层安全协议提供的安全服务
3、会话和连接
-
一个SSL会话是在客户与服务器之间的一个关联
-
会话由握手协议协商创建
-
会话定义了一组可供多个连接共享的密码安全套件集合
-
避免为每一个连接提供新的安全套件所需的昂贵的协商代价
-
会话定义的安全套件集合包括:
-
会话标志:由服务器选择的一个任意字节序列,用以标识一个活动的或可激活的会话状态
-
对等体数字证书:标识客户端和服务器的X.509.v3证书。可为空。
-
压缩方法:加密前进行数据压缩的算法
-
密码规范:指明数据体加密的算法(无,或DES等)以及散列算法(如MD5或SHA-1)用以计算MAC
-
主密钥(48B):48字节秘密,在client与server之间共享
-
可恢复性:一个标志,指明该会话是否能用于产生一个新连接
-
一个连接是一个提供一种合适类型服务的传输
-
连接是暂时的,每一个连接和一个会话关联
-
-
-
连接状态参数描述:
-
服务器和客户端随机数:server和client为每一个连接所选择的序号
-
服务器写MAC密钥:一个密钥,用来对server送出的数据计算消息认证码
-
服务器写密钥:用于server进行数据加密,client进行数据解密的对称保密密钥
-
客户端写MAC密钥:一个密钥,用来对client送出的数据计算消息认证码
-
客户端写密钥:用于client进行数据加密,server进行数据解密的对称保密密钥
-
初始化向量:当数据加密采用CBC方式时,每一个密钥保持一个IV
-
该字段由SSL的握手协议字段产生,以后保留每次最后的密文数据块作为初始向量
-
-
序列号:每一方为每一个连接的数据发送与接收维护单独的顺序号
-
当启用新的密码套件时,序号置为0,最大2^64-1
-
-
4、SSL体系结构
-
握手协议
-
建立一个会话,实现双向身份鉴别和安全套件协商
-
-
记录协议
-
利用握手协议协商的算法和密钥封装上层协议消息,包括SSL握手协议、改变密码规范协议、报警协议和应用曾协议,实现数据源发鉴别、保密性和完整性
-
-
改变密码规范协议
-
只有一种消息,该消息内容只有一个字节,用于通知双方开始使用新约定的安全套件
-
-
报警协议
-
-
将SSL有关的警告传输给对方实体
-
level=1(警告):意外消息、MAC记录出错、解压失败握手失败、非法参数
-
level=2(致命):无证书、证书出错、不支持的证书、证书撤销、证书过期、未知证书。此时,终止连接,其他连接继续,但此对话不能建立新连接。
-
5、记录协议
-
五个步骤
-
分块、压缩、计算消息认证码、加密和封装
-
-
分块
-
首先要进行分块,每块的长度不超过2^14字节
-
-
压缩
-
如果协商了压缩算法,则用当前会话状态指定的压缩算法压缩数据
-
压缩数据必须要做到不丢失信息,即为无损压缩,且压缩之后增加的数据长度不超过1024字节
-
数据压缩不是必须的,是可选的,也没有默认的压缩算法,由双方协商确定
-
出于安全考虑,在最新的TLS1.3中已经取消压缩
-
-
计算MAC
-
在数据压缩之后,记录协议会用当前会话的密码规范中指定的MAC算法生成消息认证码
-
SSL指定了MAC算法,基于基本的哈希函数MD5或者SHA1
-
认证密钥、填充1,包序列号、上层协议标识、压缩后的分段长度、压缩后的分段连接一起计算Hash
-
此哈希值和填充2、认证密钥再连接计算Hash得到消息认证码
-
Hash:MDA或SHA1
-
填充1:0011 0110 对MD5重复48次,对SHA1重复40次
-
填充2:0101 1100 对MD5重复48次,对SHA1重复40次
-
压缩后的分段:如果没有压缩,则指明文数据段
-
HMAC中认证密钥和填充域是异或关系,而SSL中是连接关系
-
加密
-
用当前会话的密码规范中指定的加密算法加密数据,加密算法为对称加密,加密的内容包括压缩数据加上消息认证码,加密对内容长度的增加不能超过1024Byte
-
-
封装
-
记录协议对加密后的密文添加SSL首部,然后添加TCP首部封装成传输层报文
-
-
SSL消息格式
-
内容类型,一个字节,指封装的数据协议类型,包括SSL本身的握手协议、密码规范修改协议和报警协议,然后是上层的应用层协议
-
主版本号和从版本号各占一个字节,如SSLv3.0的主版本号为3,从版本号为0
-
压缩长度占两个字节,如果选择了压缩,指压缩之后的数据段长度,如果没有压缩,则指明文数据段长度,此长度限定不超过2的10次方+2048字节
-
-