协议 - TLS和SSL

参考资料

概述

SSL(Secure Sockets Layer,安全套接层),及其继任者 TLS(Transport Layer Security,传输层安全性协议)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。是由网景公司(Netscape)研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。

SSL协议

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

协议分层

SSL协议可分为两层:

  • SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

  • SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL握手协议有三个子协议如图:

  1. 握手协议(Handshake protocol):用于会话建立。

  2. 改变密码规约协议(Change cipher spec protocol):用于通知安全参数的建立。

  3. 告警协议(Alert protocol):用于向对方发出告警信息。

提供服务

SSL协议提供的服务主要有:

  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2. 加密数据以防止数据中途被窃取;
  3. 维护数据的完整性,确保数据在传输过程中不被改变。

工作流程

SSL协议的工作流程:

服务器认证阶段:

  1. 客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;

  2. 服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;

  3. 客户端根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;

  4. 服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

用户认证阶段:

在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

TLS协议

安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。

该协议由两成组成:TLS记录协议(TLS Record)和TLS握手协议(TLS Handshake)。较低的层为TLS记录协议,位于某个可靠的传输协议(例如TCP)上面。

TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。TLS在SSLv3.0的基础上,提供了以下增加内容:

  1. 更安全的MAC算法
  2. 更严密的警报
  3. “灰色区域”规范的更明确的定义

SSL/TLS协议应用

SSL/TLS协议主要解决的以下3个问题:

  1. 客户端对服务器端的认证
  2. 服务器端对客户端的认证
  3. 在客户端和服务器端建立安全的数据通道

抓包实践 ———— 以登陆163邮箱为例子

ipconfig确认本机的ip地址

无线局域网适配器 WLAN:
   IPv4 地址 : 10.1.1.229

确认163的访问地址:

ping www.mail.163.com
正在 Ping hdweb.mail.split.netease.com [123.126.96.184] 具有 32 字节的数据

103.74.50.116 -> 北京市 网易云BGP数据中心
1
2
3
4
5
6
7
8
9
10
11

服务器认证阶段:(待加图描述)

  1. 客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;

  2. 服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;

  3. 客户端根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;

  4. 服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

详细过程如下所示:

163邮件登录报文,确保浏览器开启了SSL、TLS功能

客户端 Client Hello 报文:

server hello报文:

服务器认证报文:

客户端认证报文: