admin 管理员组

文章数量: 1086019


2024年3月20日发(作者:androidapp开发框架)

SSL/TLS 原理详解

本文大部分整理自网络,相关文章请见文后参考。

SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量

做到层次清晰。正文开始。

1. SSL/TLS概览

1.1 整体结构

SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下:

tls-ssl-_tcp-ip_

SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据

传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前

版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。

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

SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供

数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在

SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加

密密钥等。

TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整

性。

TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它

建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1,它是写入了 RFC 的。该

协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为

TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。

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

1. 认证用户和服务器,确保数据发送到正确的客户机和服务器;

2. 加密数据以防止数据中途被窃取;

3. 维护数据的完整性,确保数据在传输过程中不被改变。

1.2 TLS与SSL的差异

1. 版本号:TLS记录格式与SSL记录格式相同,但版本号的值不同,TLS的版本1.0使用的版本号为

SSLv3.1。

2. 报文鉴别码:SSLv3.0和TLS的MAC算法及MAC计算的范围不同。TLS使用了RFC-2104定义的HMAC

算法。SSLv3.0使用了相似的算法,两者差别在于SSLv3.0中,填充字节与密钥之间采用的是连接运

算,而HMAC算法采用的是异或运算。但是两者的安全程度是相同的。

3. 伪随机函数:TLS使用了称为PRF的伪随机函数来将密钥扩展成数据块,是更安全的方式。

4. 报警代码:TLS支持几乎所有的SSLv3.0报警代码,而且TLS还补充定义了很多报警代码,如解密失败

(decryption_failed)、记录溢出(record_overflow)、未知CA(unknown_ca)、拒绝访问

(access_denied)等。

5. 密文族和客户证书:SSLv3.0和TLS存在少量差别,即TLS不支持Fortezza密钥交换、加密算法和客户

证书。

6. certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息计算MD5和

SHA-1散列码时,计算的输入有少许差别,但安全性相当。

7. 加密计算:TLS与SSLv3.0在计算主密值(master secret)时采用的方式不同。

8. 填充:用户数据加密之前需要增加的填充字节。在SSL中,填充后的数据长度要达到密文块长度的最

小整数倍。而在TLS中,填充后的数据长度可以是密文块长度的任意整数倍(但填充的最大长度为255

字节),这种方式可以防止基于对报文长度进行分析的攻击。

TLS的主要增强内容

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

强内容:

1. 更安全的MAC算法

2. 更严密的警报

3. “灰色区域”规范的更明确的定义

TLS对于安全性的改进

1. 对于消息认证使用密钥散列法:TLS 使用“消息认证代码的密钥散列法”(HMAC),当记录在开放

的网络(如因特网)上传送时,该代码确保记录不会被变更。SSLv3.0还提供键控消息认证,但

HMAC比SSLv3.0使用的(消息认证代码)MAC 功能更安全。

2. 增强的伪随机功能(PRF):PRF生成密钥数据。在TLS中,HMAC定义PRF。PRF使用两种散列算法

保证其安全性。如果任一算法暴露了,只要第二种算法未暴露,则数据仍然是安全的。

3. 改进的已完成消息验证:TLS和SSLv3.0都对两个端点提供已完成的消息,该消息认证交换的消息没有

被变更。然而,TLS将此已完成消息基于PRF和HMAC值之上,这也比SSLv3.0更安全。

4. 一致证书处理:与SSLv3.0不同,TLS试图指定必须在TLS之间实现交换的证书类型。

5. 特定警报消息:TLS提供更多的特定和附加警报,以指示任一会话端点检测到的问题。TLS还对何时应

该发送某些警报进行记录。

2. 密钥协商过程——TLS握手

SSL协议分为两部分:Handshake Protocol和Record Protocol。其中Handshake Protocol用来协商密

钥,协议的大部分内容就是通信双方如何利用它来安全的协商出一份密钥。 Record Protocol则定义了传

输的格式。

由于非对称加密的速度比较慢,所以它一般用于密钥交换,双方通过公钥算法协商出一份密钥,然后通过对

称加密来通信,当然,为了保证数据的完整性,在加密前要先经过HMAC的处理。


本文标签: 数据 协议 消息 认证 密钥