通过之前的文章,我们可以知道TLS可以看做是SSL的升级版,而我们今天要聊的这个DTLS和TLS是什么关系呢?让我们接着往下看。

DTLS的简介

在了解DTLS之前,我们先来了解另一个名词,叫做UDP,它的全称为User Datagram Protocol,中文名是用户数据报协议。UDP的特点就是它是无连接的,但同样有安全传输的需求,而TLS协议并不能用于UDP协议,于是就有了DTLS协议。

DTLS全称为Datagram Transport Layer Security,中文名为数据包传输层安全性协议,它是基于TLS扩展,使之支持UDP协议,DTLS 1.0 基于 TLS 1.1,DTLS 1.2 基于 TLS 1.2(所以没有DTLS1.1版本)。

DTLS

DTLS的基本原理

DTLS协议由两层组成: Record协议和Handshake协议。

  1. Record协议: 使用对称密钥对传输数据进行加密,并使用HMAC对数据进行完整性校验,实现了数据的安全传输。
  2. Handshake协议:使用非对称加密算法,完成Record协议使用的对称密钥的协商。

DTLS和TLS的区别

简单的来说,DTLS是TLS的升级版,两者的握手过程基本上是一致的,差别以及特别说明如下:

  • DTLS中HelloVerifyRequest是为防止DoS攻击增加的消息。
  • TLS 没有发送证书申请,这个也不是必须的,是反向验证即服务器验证客户端。
  • DTLS的Record协议 新增了序号和纪元,以及ClientHello中新增了Cookie,以及握手中新增了碎片信息(防止超过UDP的MTU),都是为了适应UDP的丢包以及容易被攻击做的改进。
  • DTLS最后的警报是将客户端的加密警报消息,解密之后直接响应给客户端的,实际上服务器应该回应加密的消息,这里服务器回应明文是为了解析客户端加密的那个警报包是什么。

DTLS

DTLS协议的作用

DTLS使用非对称加密分发对称加密的密钥,即DTLS握手。DTLS握手完成后,即可使用对称加密的密钥进行加密通信。

  • DTLS握手流程如下:

DTLS握手流程

DTLS的安全性在以下几个方面得到了保障:

  • DTLS在握手时进行Cookie校验,防止dos攻击(放重放)。
  • DTLS在握手时具有身份证书和数据签名,防止篡改和冒充。
  • DTLS在握手时使用公钥密码进行加密,防止秘密密钥被泄露。
  • DTLS在通信时使用秘密密钥进行加密,防止通信内容泄露(机密性)。
  • DTLS在传输方面使用HMAC对数据完整性进行校验,防止数据被篡改(完整性)。

总结来说,DTLS可以看做为TLS的升级版,使其可以在UDP协议正常使用,为给UDP提供端到端的安全通道。

免责声明:素材源于网络,如有侵权,请联系删稿。