(一)SSL(Secure Sockets Layer)协议
(1)定义:由Netscape开发的传输层(应用层和TCP层之间)安全协议,用于构建C/S之间的安全通道。
(2)原理:将应用层信息加密或签名处理后经TCP/IP网络送至对方,收方验证无误后解密还原信息。
(3)目的:在两个应用层间相互通信时,使被传送信息具有保密性及可靠性。
(二)协议构成
协议 | 用途 | 分层协议 | 说明 | |
1 | SSL握手协议(SSL Handshake Protocol) | 在C/S收发数据前,提供相互认证服务,并相互协商双方通信加密算法及加密密钥 作用:协调客户和服务器状态,使双方能够达到状态同步 | 握手协议(Handshake Protocol) | 身份鉴别和安全参数协商 |
密码规格变更协议(Change Cipher Spec) | 通知安全参数变更 | |||
报警协议 (Alert protocol) | 关闭通知和错误报警 | |||
2 | SSL记录协议(SSL Record Protocol) 传输层上方 | 将各种较高层协议(如HTTP或SSL握手协议)封装后传送 | 记录层协议(Record Protocol) | 传输数据分段、压缩及解压缩、加密及解密、完整性校验等 |
(三)安全通信服务
安全通信服务 | 说明 | 安全服务 | 举例 | |
1 | 保密性通信 | 握手协议产生秘钥后,开始加解密数据(对称) | 保密性 | DES、AES |
2 | 点对点身份认证 | 非对称式密码算法 | 可认证性 | RSA、DSS |
3 | 可靠性通信 | 信息传送时含完整性检查,使用有密钥保护的MAC(含安全杂凑函数) | 完整性 | SHA、MD5 |
(四)协议数据处理过程
(1)SSL将数据(data)分割成可管理区块长度
(2)选择是否要将己分割数据压缩
(3)加上消息认证码(MAC):确保消息的完整性和身份验证
(4)将数据加密,生成即将发送的消息。
(5)接收端消息解密、验证、解压缩,重组后传送至较高层(如应用层)
(五)消息认证码(MAC,Message Authentication Code)
认证码产生方式
- 报文加密
- 消息认证码(MAC)
- 基于hash函数的消息认证码(HMAC)
(六)SSL对比IPSec建立阶段
(1)第一阶段:Handshake phase(握手阶段):类似IPSec IKE的作用
- 协商加密算法
- 认证服务器
- 建立用于加密和MAC(Message Authentication Code)用的密钥
(2)第二阶段:Secure data transfer phase(安全的数据传输阶段):类似IPSec ESP的作用
在已经建立的SSL连接里安全传输数据。
(七)SSL/TLS握手
wireshark抓包完整的TLS1.2的握手过程
前三个报文为TCP三次握手,SYN、SYN/ACK、ACK,用于为TLS建立连接,这是所有基于TCP的上层协议所必需经历的阶段。
接下来是SSL/TLS握手过程(部分加密,部分不加密),依次为:
(1)版本、算法以及其他参数协商:Client Hello,Server Hello
(2)认证:Server Certificate,Client Certificate Request、Client Certificate、Certificate Verify【双证时出现】
(3)对称加密密钥种子参数交换:Server Key Exchange【DH交换时出现】,Client Key Exchange
(4)改变加密方式从非对称加密到对称加密:Client Change Cipher Spec,Server Change Cipher Spec
(5)完整性保证:Client Encrypted Handshake Message,Server Encrypted Handshake Message
(6)真正数据传输:Client Application Data、Server Application Data