DTLS是什么?它和TLS有什么關系?

通過之前的文章,我們可以知道TLS可以看做是SSL的升級版,而我們今天要聊的這個DTLS和TLS是什么關系呢?讓我們接著往下看。

DTLS的簡介

在了解DTLS之前,我們先來了解另一個名詞,叫做UDP,它的全稱為User Datagram Protocol,中文名是用戶數(shù)據(jù)報協(xié)議。UDP的特點就是它是無連接的,但同樣有安全傳輸?shù)男枨?,而TLS協(xié)議并不能用于UDP協(xié)議,于是就有了DTLS協(xié)議。

DTLS全稱為Datagram Transport Layer Security,中文名為數(shù)據(jù)包傳輸層安全性協(xié)議,它是基于TLS擴展,使之支持UDP協(xié)議,DTLS 1.0 基于 TLS 1.1,DTLS 1.2 基于 TLS 1.2(所以沒有DTLS1.1版本)。

DTLS

DTLS的基本原理

DTLS協(xié)議由兩層組成: Record協(xié)議和Handshake協(xié)議。

  1. Record協(xié)議: 使用對稱密鑰對傳輸數(shù)據(jù)進行加密,并使用HMAC對數(shù)據(jù)進行完整性校驗,實現(xiàn)了數(shù)據(jù)的安全傳輸。
  2. Handshake協(xié)議:使用非對稱加密算法,完成Record協(xié)議使用的對稱密鑰的協(xié)商。

DTLS和TLS的區(qū)別

簡單的來說,DTLS是TLS的升級版,兩者的握手過程基本上是一致的,差別以及特別說明如下:

  • DTLS中HelloVerifyRequest是為防止DoS攻擊增加的消息。
  • TLS 沒有發(fā)送證書申請,這個也不是必須的,是反向驗證即服務器驗證客戶端。
  • DTLS的Record協(xié)議 新增了序號和紀元,以及ClientHello中新增了Cookie,以及握手中新增了碎片信息(防止超過UDP的MTU),都是為了適應UDP的丟包以及容易被攻擊做的改進。
  • DTLS最后的警報是將客戶端的加密警報消息,解密之后直接響應給客戶端的,實際上服務器應該回應加密的消息,這里服務器回應明文是為了解析客戶端加密的那個警報包是什么。

DTLS

DTLS協(xié)議的作用

DTLS使用非對稱加密分發(fā)對稱加密的密鑰,即DTLS握手。DTLS握手完成后,即可使用對稱加密的密鑰進行加密通信。

  • DTLS握手流程如下:

DTLS握手流程

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

  • DTLS在握手時進行Cookie校驗,防止dos攻擊(放重放)。
  • DTLS在握手時具有身份證書和數(shù)據(jù)簽名,防止篡改和冒充。
  • DTLS在握手時使用公鑰密碼進行加密,防止秘密密鑰被泄露。
  • DTLS在通信時使用秘密密鑰進行加密,防止通信內(nèi)容泄露(機密性)。
  • DTLS在傳輸方面使用HMAC對數(shù)據(jù)完整性進行校驗,防止數(shù)據(jù)被篡改(完整性)。

總結來說,DTLS可以看做為TLS的升級版,使其可以在UDP協(xié)議正常使用,為給UDP提供端到端的安全通道。

免責聲明:素材源于網(wǎng)絡,如有侵權,請聯(lián)系刪稿。