报文加解密原理_通讯安全 - TLS基本原理

本文介绍了TLS(Transport Layer Security)的发展历程,从SSL1.0到TLS1.3的主要改进。TLS旨在建立安全的通信通道,其握手过程包括协商密码算法、生成主密钥和验证身份。TLS协议由记录层、握手协议等子协议组成,握手阶段确保了加密算法的一致性和双方的信任建立。
摘要由CSDN通过智能技术生成

ec193f8b0f6f8078ee5f6443954a738f.png

㈠ TLS 的成长史

TLS 全称为Transport Layer Security,意指传输层安全,是解决网络安全的重量级武器。传输层安全最早由网景公司所开发,那时的名字还不叫TLS,而是SSL Secure Sockets Layer,即安全套接字层。

TCP/IP 的四层模型,如下图所示。

429220fe78ecb63e62752eba8df2b200.png

从SSL 字面意思,安全套接字,我们可以理解 SSL 是位于传输层之上,也就是传输层和应用层之间。从这个设计我们也可以看出,SSL/TLS 非常灵活。所有应用层的协议,如上网用的 http, 传输文件的 FTP,收发邮件的 POP3 以及 SMTP,都可以透明地使用 SSL/TLS 所提供的安全服务。举例说明:我们经常看到的 HTTPS,就是上层应用 HTTP 直接调用 TLS 所提供的加密传输服务,从而让我们的上网行为不会被他人轻易的监听修改。 同样,SMTPS、FTPS 都是过去不安全的应用层协议,通过TLS 中间层,进行对方身份认证,从而达到对数据进行保密及认证的作用。

SSL1.0 是个不成熟的版本,并未对外发布。 1995 年网景公司对外发布了 SSL2.0 版本,但是 SSL2.0 被认为是一个不安全的协议版本,具体表现在:

- 哈希函数使用了 MD5;

- 握手消息没有做保护,易遭受中间人攻击;

- 消息完整性检查和消息加密使用了同一个密钥;

- 可以很容易中断会话。

1996 年网景发布了 SSL3.0。1999 年 TLS1.0 发布,它基于SSL3.0 之上,可看成是 SSL3.1版。SSL3.0 和 TLS1.0 使用非常广泛。之后,2006 年 TLS1.1 发布,主要是BugFix;2008 年 TLS1.2 发布。TLS1.1 和TLS1.2 都没有发现明显的安全缺陷。但是仅 TLS1.2 提供了较先进的带认证的加解密方式 (AEAD) 。上述版本一直使用到 2015 年6 月,IETF 互联网工作小组提议废除 SSL3.0。

2018 年 TLS1.3 发布,将之前协议中加密传输前,额外的两个来回的握手简化为1 个来回。还根据安全通讯的一些研究,大大减少了密码套件的选择,比如不再有3DES, RC4, AES-CBC, SHA1, MD5 选择,同时取消了使用RSA 作为密钥交换的方式。关于密钥交换的方式,这个我们后面会详细提到。

㈡ TLS 的一般原理

两阶段协议

TLS 的目的是建立起一个安全的通道。在建立安全通道、可以安全地传输数据之前,我们要经历一个TLS 握手过程。我们可以理解 TLS 协议是一个两阶段的协议,如下图所示。一个是握手阶段,一个是应用数据加密传输阶段。

08d68e1c59c859edeec2d41c64f91c51.png

TLS 子协议

同时,TLS 的协议又具有层次结构,如下图所示,所有的报文都会通过记录层协议 Record Layer Protocol 进行打包传输。

8c9edccf34746703c7f166f34bda017c.png

在记录层协议之上,又分为握手协议 Handshake Protocol,改变密码规格协议 ChangeCipherSpec Protocol,警告协议 Alert Protocol,以及应用数据协议 Application Data Protocol。本课程重点在于使用 TLS 以及调试 TLS 相关的握手协议。

TLS 握手

握手阶段有三个目标:① 关于密码算法达成一致;② 关于密码算法的参数达成一致,因为密码算法的参数时一个主密钥分割而成,这里是如何形成主密钥;③ 验证对方身份,建立信任。

如下图所示,以 TLS1.3 之前的握手协议为例:

9e8f9c5cbca3a0941ec7b73341f2e2ba.png

首先,客户端向服务器端打招呼,发送Hello 消息。Hello 消息包括:① 自己的版本号;② 会话ID;③ 随机数(这个随机数是一个输入,用来创建会话的对称密钥,初始化向量以及消息验证码密钥);④ 一些建议的密码套件,包括什么样的密钥协商算法、签名算法、哈希算法、会话对称密钥算法以及验证码算法。

服务器端看到客户端向它打招呼,要根据客户端打招呼的信息,决定选择那种加密算法。虽然客户端是有它的喜好,但是服务器也要根据自己的实际情况作出选择。然后同样要发送 Hello 消息。Hello 消息与客户端发送的类似,包括:① 自己的版本号;② 会话ID;③ 服务器生成的随机数(这个随机是一个输入,和客户端的随机数一道,作为输入,用来创建会话的对称密钥,初始化向量,以及消息验证码密钥);④ 如果服务器返回所选择的算法;⑤ 同时返回给客户端服务器的证书;⑥ 如有必要,服务器可以要求客户端提供证书。

双方打了招呼,则需要进一步双方协商生成一个主密钥的前密钥,英文叫pre-master secret。这个密钥生成方式又有两种,一种是由客户端生成,通过证书的公钥加密发送给服务器端;另外一种是客户端与服务器基于DH 协议的各种变种,各自生成。密钥生成方式是在Hello 消息中选择并达到一致的。

一旦双方有了生成主密钥的基础 --- 主密钥的前密钥、客户端随机数、服务器端随机数。双方可以根据一致的算法 PRF 生成主密钥。主密钥拆分成三组密钥:① 消息验证码密钥;② 初始化向量;③ 用来加密的对称密钥。

这时客户端可以向服务器表示要改变加密方式,进行加密通讯。同样服务器端也可以做同样的表示。

于是握手阶段完成,双方达到了同一个状态,同时获得了所有进行加密通讯的参数,就可以进行第二阶段应用加密。

93020f39f4373b084b5719e7d87a4184.png

点击链接观看更多相关课程

电堂科技​c.51diantang.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值