SSL协议
体系结构
SSL是一个中间层协议,在开放式互联参考模型中,SSL介于传输层和应用层之间,属于Socket层的实现,与应用层协议无关,可以透明的建立在应用层协议之上
SSL是一个分层协议,由记录层和握手层组成。其中,握手层包含SSL握手协议,SSL修改密码规范协议,SSL告警协议,记录层包括SSL记录协议
SSL握手协议
SSL握手协议建立在SSL记录协议之上,用于在实际的数据传输开始前通信双方进行身份认证,加密算法协商,加密密钥交换等
握手协议由一系列在客户和服务器间交换的报文组成。每个报文由类型,长度,内容三部分组成
1.类型(1字节),指SSL握手协议报文类型
2.字节(3字节),以字节为单位的报文长度
3.内容。使用报文有关的内容参数
SSL修改密码规范协议
为了保障SSL传输过程的安全性,客户端和服务器双方应该每隔一段时间改变密码规范。
该协议的报文由单个字节消息组成,是最为简单的协议
SSL告警协议
如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息。
该协议的报文由两个字节组成,第一个字节指明告警的类别,第二个字节指明告警的类型
警示消息又两种:
- 告警消息。通信双方仅记录日志
- 致命错误。通信双方立即终断会话,并消除本方缓存中的会话记录
SSL记录协议
记录协议建立在可靠的传输协议之上,包括了记录头和记录数据格式的规定,为高层协议提供基本的安全服务,具体实施数据的封装,压缩/解压缩,加密/解密,计算和校验MAC等与安全有关的操作。
1.内容类型(8位)。用以说明封装的高层协议。已经定义的内容类型有:握手协议,修改密码协议,告警协议和应用数据协议
2.主要版本(8位)。SSL的主要版本
3.次要版本(8位)。SSL的次要版本
4.压缩长度(16位)。明文数据以字节为单位的长度,如果压缩则是压缩后的长度。
SSL协议的安全实现
1.保密性。SSL协议利用对称密钥算法对传输的数据进行加密
2.身份认证性。SSL协议基于证书对服务器和客户端进行认证,确保数据发送到正确的客户端和服务器,其中客户端认证是可选的
3.完整性。SSL协议使用MAC算法来校验数据的完整性
SSL协议的握手过程
1.客户端向服务器发送问候消息,该消息包含SSL版本号,随机数,会话ID,密码套件,压缩方法等信息
- 随机数。一个用于生成主密钥的32字节随机数
- 会话ID。客户端在此次连接中想使用的会话标识符
- 密码套件。每个密码套件以SSL开头,用WITH分割密钥交换算法,加密算法,散列算法
2.服务器向客户端返回问候消息
3.服务器将自己的证书附在问候消息之后,使客户端能用服务器证书中的公钥认证服务器
4.密钥交换方法有6种:无,RSA,匿名Diffle-hellman,固定Diffle-hellman和Fortezza。如果阶段一协商的交换算法为Fortezza,则服务器需要向客户端发送一条服务器密钥交换消息。
5.如果服务器要求验证客户端,则向客户端发送一个客户证书请求
6.服务器发送问候结束消息,并等待客户端响应
7.客户端利用服务器响应消息认证服务器的真实身份,若果服务器要求认证客户端,客户端就对双方都已知且在握手过程中的唯一一段数据进行签名,然后把签名后的数据连同自己的证书发送给服务器。
8.客户端密钥交换阶段,客户端根据交互得到的所有信息生成会话预备主密钥pre_master_sercet,并用服务器的公钥加密后发送给服务器
9.客户端利用pre_master_sercet生成主密钥master_sercet,然后利用主密钥生成会话密钥session_sercet,客户端向服务器发送一条修改密码规范消息,通知服务器以后从客户端来的消息将用session_sercet加密
10.客户端向服务器发送握手结束消息,表明握手过程中客户端部分已经完成
11.服务端利用私钥解密pre_master_sercet,利用相同的方式生成主密钥master_sercet,再生成会话密钥session_sercet,通知客户端以后从服务端来的消息将用session_sercet加密
12.服务端向客户端发送握手结束消息,表明握手过程中服务端部分已经完成