【密码学原理】传输层安全——SSL协议
Web安全的威胁有
安全套接层协议(SSL)体系结构
SSL为TCP提供可靠的端到端安全服务,SSL不是单个协议而是两层协议,如图所示
SSL中包含定义了两个重要概念:SSL会话和SSL连接
- 连接:提供合适服务类型的一种传输,对SSL来说,连接表示的是对等网络关系,连接时短暂的,每个连接与一个会话相关
- 会话:SSL会话是一个客户端和服务器间的关联,会话是通过握手协议创建的,定义了一组多个连接共享的密码安全参数。会话可以用于减少为每次连接建立安全参数的昂贵协商费用
SSL记录协议
提供两种服务:
- 保密性:握手协议定义了加密SSL载荷的传统加密共享**
- 消息完整性:握手协议定义了生成消息认证码(MAC)的共享**
SSL记录协议的整个操作过程如图所示
记录协议接收一个要传送的应用消息,将其分为块、压缩、加上MAC、加密,加上一个SSL头,将得到的最终数据单元放入一个TCP段中。
第一步是分段,每个上层消息被分成若干小于或等于字节的段,接着进行可选择压缩,压缩必须采用无损压缩,并且增加长度不能超过1024字节。接着对压缩数据计算MAC,然后将压缩消息和MAC用对称加密,加密对内容增加长度不能超过1024字节,可用加密算法:
对流密码而言,压缩消息和MAC一起被加密,MAC在加密之前计算,然后将MAC和压缩后的明文一起加密。
对分组密码而言,填充应该在MAC之后,加密之前进行。
SSL记录协议的最后一步是加上一个SSL头:
- 内容类型(8位):封装段使用的高层协议
- 主版本号(8位):表明SSL使用的主版本号
- 从版本号(8位)
- 压缩长度(16位)
SSL修改密码规范协议
协议由一个仅包含一个字节的值为1的消息组成,此消息使得挂起状态被复制到当前状态中,用于更新此链接使用的密码套件。
SSL警报协议
报警协议用于向对等实体传递SSL相关的警报,警报消息按照当前状态压缩和加密。
每个消息由两个字节组成,值1表示警报,值2表示致命错误,传递消息出错的严重程度。如果级别是致命的,则SSL将立即终止连接,而会话中的其他连接将继续进行,但不会在此会话中建立新连接。第二个字节包含描述特定警报信息的代码。警报有:
- 意外信息
- MAC记录出错
- 解压失败
- 握手失败
- 非法参数
- 结束通知
- 无证书
- 证书出错
- 不支持的证书
- 证书撤销
- 证书过期
- 未知证书
SSL握手协议
此协议允许客户端和服务器相互认证,协商加密和MAC算法,保护数据使用的**通过SSL记录传送。握手协议再传递应用数据之前使用。握手协议由客户端和服务器间交换的一系列消息组成,每个消息由三个域组成:
- 类型(1字节):表明10中消息中的一种,消息类型如下图
- 长度(3字节):消息的字节长度
- 内容
客户端和服务器之间建立逻辑连接的初始交换如图所示