https全面讲解——TLS/SSL协议解析

第一部分:什么是https协议?

由于安全方面的考虑目前大部分站点尤其是知名的大站点都是采用https,来代替之前的http。https的广泛使用也被很多人关注和学习。http "调用" SSL/TLS 中的加密算法与协议逻辑实现保密传输。https不能说是一个协议,只能说是一种应用,不过这种应用占绝大部分比例;SSL加密http内容默认使用443端口,SSL还可以加密Email 默认使用995、465端口。

要注意: 任何一个应用层协议(http smtp ftp 等)都可以“调用” TLS/SSL 来加密其明文数据。

https = http + SSL / TLS   这个表达式可以简要的表明https与TLS/SSL的关系。

一个系统介绍TLS协议,加密算法,以及使用 openssl 建立私有CA的课程:http://edu.51cto.com/sd/89f15

第二部分:TLS/SSL 协议解析

(1)SSL 与 TLS 协议的工作层面

SSL: secure socket layer 安全套接字层 (目前是SSLv2 与 SSLv3 ,2个版本)

TLS: transport layer security 传输层安全 ,是国际标准化组织实现的加密层。

SSL 与 TLS 都是加密协议与算法 ,用来保证安全的。

TCP/IP 4层模型:

(4) 应用层

<--------------(3.5) TLS/SSL 相当于3.5层

(3) 传输层

(2) 网络层

(1) 物理层

 

OSI 7层模型 :: Open System Interconnect  开放系统互联

(7) 应用层

(6) 表示层 <-------------- SSL/TLS

(5) 会话层

(4) 传输层

(3) 网络层

(2) 数据链路层

(1) 物理层

实际应用中只有TCP/IP 4层模型,7层模型只是理论的模型,数据链路层与网络层和物理层都有相关,很模糊,TCP/IP 4层模型 中将数据链路层 归到网络层,其实数据链路层和网络层和物理层都相关,划分到网络层还是划分到物理层都是可以的。TCP/IP 4层模型 每一层都会对应具体的协议。而OSI7层理论模型是理论模型,没有具体的协议与其一一对应。

 

在应用层和传输层之间加入了SSL/TLS,通常说的SSL/TLS其实是实现了算法和协议的库,这个库提供加密的功能,应用层调用这些功能。在 Linux中的openssl 是SSL/TLS和多种加密算法的开源实现 它实现了几乎所有的加密算法,功能十分强大。openSSL 包括: libcrypto 实现算法 ; libssl 实现TLS/SSL协议的库,libssl是基于会话的,实现了身份认证 ,数据加密, 会话完整性等。使用openssl也可以模拟一个证书发布机构,openSSL的命令行工具是openssl 。所以最前面所说“保密通信”,而不是“加密通信“,原因就是单独的加密是不能孤立存在的,里面涉及到密钥的生成,传输,以及通信双方的身份认证等很多问题。

 

(2)TLS 的记录协议的若干子协议

记录协议 (record protocol)

整体上看,TLS用记录协议(record protocol)实现与底层的数据交换。其他协议将不透明数据缓冲区的数据提交给它,记录协议传输这些数据。记录协议 中的每个“数据包” 包括标头和数据,除了可见字段,还会给每个TLS记录指定唯一的64位序列号,但不会在线路上传输。通信双方都有自身的序列号并跟踪来自另一端的记录的数量。这些值是对抗重放攻击的一部分。

一条记录是TLS协议中的最小单元。每个记录以5字节的元数据开头,即内容类型(1字节)、协议版本(2字节)和数据长度(2字节)。如果缓冲区超过记录的长度限制(16 384字节),记录协议会将其切分成更小的片段。反过来也可以的,同一个子协议的小缓冲区也可以组合成一个记录,这些是由应用数据协议完成的。

https全面讲解——TLS/SSL协议解析_第1张图片

 

一个刚建立的连接上,最初的消息传输是没有受到加密保护的(从技术上讲,就是使用了 TLS_NULL_WITH_NULL_NULL 密码套件)。这是必需的,否则第一次协商就无法进行。

一旦握手完成,记录层就开始按照双方协商达成的参数进行加密和完整性验证。

记录协议只关注数据传输和加密,将其他功能转交给子协议;这个方法使TLS可以扩展,可以很方便地添加子协议。子协议伴随着记录协议被加密,所有子协议都会被其加密保护(以协商参数为准)。

TLS定义了四个核心子协议:

(1)握手协议(handshake protocol),

(2)密钥规格变更协议(change cipher spec protocol),

(3)应用数据协议(application data protocol),

(4)警报协议(alert protocol)。

 

其中握手协议是重点:TLS的握手协议完成了密钥的生成,传输,以及通信双方的身份认证这些重要的工作。

 

 

 

你可能感兴趣的:(TLS/SSL协议)