通过之前的文章,我们可以知道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协议由两层组成: Record协议和Handshake协议。
- Record协议: 使用对称密钥对传输数据进行加密,并使用HMAC对数据进行完整性校验,实现了数据的安全传输。
- 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在握手时进行Cookie校验,防止dos攻击(放重放)。
- DTLS在握手时具有身份证书和数据签名,防止篡改和冒充。
- DTLS在握手时使用公钥密码进行加密,防止秘密密钥被泄露。
- DTLS在通信时使用秘密密钥进行加密,防止通信内容泄露(机密性)。
- DTLS在传输方面使用HMAC对数据完整性进行校验,防止数据被篡改(完整性)。
总结来说,DTLS可以看做为TLS的升级版,使其可以在UDP协议正常使用,为给UDP提供端到端的安全通道。
免责声明:素材源于网络,如有侵权,请联系删稿。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。