espressif乐鑫官网ESP32C6低功耗无线模块TLS/DTLS协议介绍,TLS 协议介绍,安全传输层(Transport Layer Security,TLS) 是建立在 TCP 协议基础上的协议,服务于应用层,它的前身是安全套接字层(Sccure SocketLayer,SSL) 协议。通过 TLS 协议,可以将应用层的报文加密后交由 TCP 层传输。
espressif乐鑫官网ESP32C6低功耗无线模块TLS 的作用,TLS 协议主要解决了如下三个网络问题:
保证数据的机密性:所有的数据都采用加密传输,可防止数据被第三方窃取
保证数据的完整性:所有的数据都采用校验机制,一旦被篡改,通信双方会立刻发现
保证数据通信双方身份:通信双方可以采取证书认证,保证通信双方身份的合法性。
espressif乐鑫官网ESP32C6低功耗无线模块TLS协议的工作方式,TLS 协议可以分为两部分:记录层,通过使用客户端和服务器端协商后的密钥进行数据加密传输;握手层,客户端和服务器端进行协商,确定一组用于数据传输加密的密钥串。TLS协议模型其中的握手层包含4 个子协议:握手协议 (Handshake Protocol)、更改加密规范协议 (Change Cipher Spec Protocol)、应用数据协议 (Application Data Protocol)和警告协议 (Alert Protocol)。
(1)记录层。记录层负责在传输层交换的所有底层数据,并且可以对数据进行加密。espressif乐鑫官网ESP32C6低功耗无线模块每一条TLS 记录以一个短标头开始,标头包含了记录内容的类型(或子协议)、协议版本和长度。底层数据经过分段(或者合并)、压缩、添加消息认证码、加密后转为 TLS 记录的数据部分TLS。
(2) 握手层的主要作用如下:
1)握手协议。其职责是生成通信过程所需的共享密钥和进行身份认证。这部分使用无密码套件,为防止数据被窃听,通过公钥密码或 Difhe-Hellman 密钥交换技术进行通信。
2)更改加密规范协议。用于密码切换的同步,是在握手协议之后的协议。握手过程中使用的协议是“不加密”这一密码套件,握手协议完成后则使用协商好的密码套件。
3)应用数据协议。通信双方真正用于数据传输的协议,传输过程通过握手层的应用数据协议和 TLS 记录协议来进行传输。
4)警告协议。当发生错误时使用该协议通知对方,如握手过程中发生异常、消息认证码错误、数据无法解压缩等。
(3)TLS 加密所使用的算法如下:
1)散列函数 Hash。用于验证数据的完整性,常见的加密算法有 MD5、SHA等。
2)对称加密算法。用于应用数据的加密,espressif乐鑫官网ESP32C6低功耗无线模块常见的加密算法有 AES、RC4、DES 等。
3)非对称加密算法。用于身份认证和密钥协商,常见的加密算法有 RSA、DH等。
(4)TLS 的基本工作方式是,客户端与服务器端采用非对称加密算法认证身份并且协商对称加密算法的密钥,然后使用对称加密数据和数据摘要进行数据通信。
1) Client Hello。客户端发送支持的 TLS 协议的高版本、自已支持的所有加密套件,用于将生成对话密钥的随机数等信息发送给服务器端。
2) Server Hello。服务器端接收到客户端发送的 Client Hello 报文后,根据客户端发送的协议版本和加密套件,选择 TLS 协议版本以及一个加密套件后返回给客户端。
3)(可选)Send Certificate。服务器端发送自己的服务器端证书给客户端,用于客户端校验服务器端的合法性。
4)(可选)Request Certificate。在服务器端需要校验客户端的证书时,若选择双向验证,服务器端则会向客户端发送证书请求报文。
5)Server Hello Done。服务器端告知客户端,服务器端已经将所有的握手消息发送完毕,服务器端会等待客户端发送消息。
6)(可选) Response Certificate。如果选择双向验证,客户端则会向服务器端发送客户端的证书,用于服务器端校验客户端的身份。
7)Client Key Exchange。客户端使用服务器端的公钥,对客户端公钥和密钥种子进行加密后再发送给服务器端。
8)(可选)Certificate Verify。如果选择双向验证,则客户端用本地私钥生成数字签名,并送给服务器端,让其通过收到的客户端公钥进行身份验证。
9) Create Secret Key。espressif乐鑫官网ESP32C6低功耗无线模块通信双方基于密钥种子等信息生成通信密钥。
10)Change Cipher Spec。客户端通知服务器端已将通信方式切换到加密模式。
11)Finished。客户端做好加密通信的准备。
12) Change Cipher Spec。服务器端通知客户端已将通信方式切换到加密模式。
13)Finished。服务器端做好加密通信的准备。
14)Encrypted/Decrypted Data。双方使用客户端密钥,通过对称加密算法对通信内容进行加密/解密。
15)Closed Connection。通信结束后,任何一方发出断开 TLS 连接的消息。
espressif乐鑫官网ESP32C6低功耗无线模块DTLS 协议介绍,数据包传输层安全性协议(Datagram Transport Layer Security,DTLS) 是基于UDP协议的协议,服务于应用层。TLS 协议不能保证UDP 协议传输的数据安全,因此DTLS 协议在现有的TLS 协议架构上进行了扩展,使之支持 UDP 协议,即成为 TLS 协议的一个支持数据包传输的版本。DTLS 1.0基于 TLS 1.1、DTLS 1.2 基于 TLS 1.2。DTLS 协议的加密算法、证书、加密流程与 TLS 协议基本一致。
espressif乐鑫官网ESP32C6低功耗无线模块DTLS 协议与 TLS 协议的区别,DTLS 协议的工作原理和 TLS 协议基本一致,除了有以下几个差异:
(1)在握手阶段,DTLS 协议加入了 Cookie 机制。DTLS 协议在 1.0 版本就加入了 Cookie机制,用于服务器端对客户端的校验,可避免DoS 攻击。当客户端发送 Client Hello 给服务器端后,服务器端并不会直接回复 Server Hello 来进行握手流程,而是回复 Hello Verify Request报文给客户端,并且该报文会携带 Cookie 值。当客户端收到该报文后,会将该 Cookie 值写入Client Hello 报文中重新发送给服务器端,服务器端收到后校验本地的 Cookie 列表来决是否需要进行握手。
(2)支持重传机制。espressif乐鑫官网ESP32C6低功耗无线模块由于 UDP 协议本身不像 TCP 协议那样支持重传,所以 DTLS 协议引了重传机制。以上述 Client Hello 报文为例,当客户端发送了 Client Hello后,客户端会启用一个定时器来接收服务器端回复的 Hello Verify Request 报文;如果服务器端在一定的时间内
没有回复,客瑞就会重新发一次 Clicnt flelo 报文。同理,服务器端发送报文后,也会启用一个定时器来判断是否超时、是否需要重发。
(3)支持有序接收。UDP协议是无序的,DTLS 协议在握手报文中增加 message_seq字段,用于接收方根据该字段顺序处理报文。接收方会像 TCP 协议那样提供一个接收缓冲区接收乱序报文,并且根据 message seq 字段顺序处理报文。
(4)支持报文大小限制。UDP 是面向报文的协议,TCP 是面向字节流的协议。espressif乐鑫官网ESP32C6低功耗无线模块TCP 协议支报文的分片和重组,而UDP 协议报文如果超过了 MTU(链路层的大传输单元),就会在IP层被强制分片,接收方接收后根据 IP 报头进行报文重组。如果有一包丢失就会导致整个UDI报文无效。因此 DTLS 协议选择在 UDP 协议之上对握手消息做了分段,在握手报文中增加fragment_offset 字段和 fragment_length 字段,分别代表这段报文相对消息起始偏移量和这段报文的长度。