3 协议工作过程3.1 SSL的分层结构
文章插图
图4 SSL协议分层
如图4所示 , SSL位于应用层和传输层之间 , 它可以为任何基于TCP等可靠连接的应用层协议提供安全性保证 。SSL协议本身分为两层:
l 上层为SSL握手协议(SSL handshake protocol)、SSL密码变化协议(SSL change cipher spec protocol)和SSL警告协议(SSL alert protocol);
l 底层为SSL记录协议(SSL record protocol) 。
其中:
l SSL握手协议:是SSL协议非常重要的组成部分 , 用来协商通信过程中使用的加密套件(加密算法、密钥交换算法和MAC算法等)、在服务器和客户端之间安全地交换密钥、实现服务器和客户端的身份验证 。
l SSL密码变化协议:客户端和服务器端通过密码变化协议通知对端 , 随后的报文都将使用新协商的加密套件和密钥进行保护和传输 。
l SSL警告协议:用来向通信对端报告告警信息 , 消息中包含告警的严重级别和描述 。
l SSL记录协议:主要负责对上层的数据(SSL握手协议、SSL密码变化协议、SSL警告协议和应用层协议报文)进行分块、计算并添加MAC值、加密 , 并把处理后的记录块传输给对端 。
3.2 SSL握手过程SSL通过握手过程在客户端和服务器之间协商会话参数 , 并建立会话 。会话包含的主要参数有会话ID、对方的证书、加密套件(密钥交换算法、数据加密算法和MAC算法等)以及主密钥(master secret) 。通过SSL会话传输的数据 , 都将采用该会话的主密钥和加密套件进行加密、计算MAC等处理 。
不同情况下 , SSL握手过程存在差异 。下面将分别描述以下三种情况下的握手过程:
l 只验证服务器的SSL握手过程
l 验证服务器和客户端的SSL握手过程
l 恢复原有会话的SSL握手过程
3.2.1 只验证服务器的SSL握手过程
文章插图
图5 只验证服务器的SSL握手过程如图5所示 , 只需要验证SSL服务器身份 , 不需要验证SSL客户端身份时 , SSL的握手过程为:
(1) SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给SSL服务器 。
(2) SSL服务器确定本次通信采用的SSL版本和加密套件 , 并通过Server Hello消息通知给SSL客户端 。如果SSL服务器允许SSL客户端在以后的通信中重用本次会话 , 则SSL服务器会为本次会话分配会话ID , 并通过Server Hello消息发送给SSL客户端 。
(3) SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给SSL客户端 。
(4) SSL服务器发送Server Hello Done消息 , 通知SSL客户端版本和加密套件协商结束 , 开始进行密钥交换 。
(5) SSL客户端验证SSL服务器的证书合法后 , 利用证书中的公钥加密SSL客户端随机生成的premaster secret , 并通过Client Key Exchange消息发送给SSL服务器 。
(6) SSL客户端发送Change Cipher Spec消息 , 通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC计算 。
(7) SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值 , 利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等) , 并通过Finished消息发送给SSL服务器 。SSL服务器利用同样的方法计算已交互的握手消息的Hash值 , 并与Finished消息的解密结果比较 , 如果二者相同 , 且MAC值验证成功 , 则证明密钥和加密套件协商成功 。
(8) 同样地 , SSL服务器发送Change Cipher Spec消息 , 通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算 。
(9) SSL服务器计算已交互的握手消息的Hash值 , 利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等) , 并通过Finished消息发送给SSL客户端 。SSL客户端利用同样的方法计算已交互的握手消息的Hash值 , 并与Finished消息的解密结果比较 , 如果二者相同 , 且MAC值验证成功 , 则证明密钥和加密套件协商成功 。
SSL客户端接收到SSL服务器发送的Finished消息后 , 如果解密成功 , 则可以判断SSL服务器是数字证书的拥有者 , 即SSL服务器身份验证成功 , 因为只有拥有私钥的SSL服务器才能从Client Key Exchange消息中解密得到premaster secret , 从而间接地实现了SSL客户端对SSL服务器的身份验证 。
推荐阅读
- 开淘宝店需要做哪些准备 淘宝网上开店前需要做哪些准备工作
- |为何很多聪明人都装傻?学会在这三个工作岗位中装傻,让你如鱼得水
- 茶叶进行抽验工作,凤冈娄山春茶叶商标获贵州省著名商标,娄山春茶叶
- 水写布是什么原理?
- 茶苗如何移栽,做好茶苗移栽种植工作
- 网上开店需要准备什么 开网店前需要做什么准备工作
- 大数据助力精准帮扶,无锡物价局开展茶叶成本收益数据核对调查工作
- 两台电脑组成局域网
- 茶枕传承保健之功效,茶枕的保健原理及功效介绍
- 如何远程开启你的电脑:WoL的原理和陷阱