定义

首先要明白tls1.3相当于是互联网通信的快递员 是传输层三次握手与应用层信息传递之间的一个安全区域 过程就相当于快递员直接拿出目前最坚固、最轻便的保险箱(强加密算法),用一次性的超级密码锁(完美前向保密),并且你们快速确认彼此身份(高效握手),然后信件立刻被安全送走,整个过程又快又安全
既然要介绍tls1.3不妨来了解一下传输层到应用层的整个流程 这里的流量包来源于鸿蒙2025

tcp三次握手

首先是要经过tcp的三次握手 进行三次握手的目的是为了确认双方的接收能力和发送能力是否正常。
第一次握手: 客户端向服务器端发送报文
证明客户端的发送能力正常
第二次握手:服务器端接收到报文并向客户端发送报文
证明服务器端的接收能力、发送能力正常
第三次握手:客户端向服务器发送报文
证明客户端的接收能力正常

tls1.3加密流程

-tip1:客户端发送clienthello消息 主要包括客户端支持的协议版本 会话ID 密码套件 压缩算法 密钥共享等等
-tip2:服务端回复serverhello 主要包含选定的加密套件 发送证书给客户端 使用证书对应的私钥对握手消息签名并且将结果发给客户端 选用客户端提供的参数生成临时公钥 结合选定的参数计算出用于加密的http消息的共享密钥 服务端生成的临时公钥通过keyshare消息发送给客户端
-tip3:客户端接收到keyshare消息后 使用证书公钥进行签名验证 获取服务端的临时公钥 生成会话所需的共享密钥
-tip4:双方使用生成的共享密钥对信息进行加密传输 保证安全性

应用层信息解读

服务端参数下发

{"MSG_TYPE":600,"data":"{\"requestId\":\"703914\",\"appId\":\"deviceauth_service\",\"msg\":[{\"type\":1,\"data\":{\"vr\":\"2.0.0\",\"salt\"(随机数(类似TLS的Server Random)):\"C7C72A7F89AD5C5400517338E7C699E6DD6B9F73907A0696AEBF445295530C09\",\"index\":1,\"total\":1,\"type\":0,\"credUrl\"(支持的凭证类型):\"{\\\"credentialType\\\":0,\\\"keyType\\\":0,\\\"trustType\\\":0,\\\"isDirectAuth\\\":true}\",\"ability\":[{\"protocol\":1,\"tdCmds\":[]}],\"spCmds\":[]}},{\"type\":3,\"data\":{\"protocol\":1,\"authData\"(身份标识):{\"event\":1,\"authIdC\":\"3845364438383443344341353232353636363842303935334238323835303942313939424238464134383441324244303930423937343431413942313630323200\"}}}],\"opCode\":0}\u0000","dataLen":544}

对应TLS:ServerHello + Certificate + ServerKeyExchange

客户端响应参数

{"MSG_TYPE":700,"data":"{\"requestId\":\"703914\",\"appId\":\"deviceauth_service\",\"msg\":[{\"type\":2,\"data\":{\"vr\":\"2.0.0\",\"type\":0,\"credUrl\":\"{\\\"credentialType\\\":0,\\\"keyType\\\":0,\\\"trustType\\\":0,\\\"isDirectAuth\\\":true}\",\"ability\":[{\"protocol\":1,\"tdCmds\":[]}],\"spCmds\":[]}},{\"type\":3,\"data\":{\"protocol\":1,\"authData\":{\"event\":2,\"salt\"(客户端随机数(Client Random)):\"C0C7CD73C79052EB2FD924B13AAF67F0\",\"epkS\"(服务端临时公钥(类似ECDHE公钥)):\"474E062A90E96D1BD8F54A3D73AB83304311C66D4D8126BDCB881D3242C1C17B\",\"authIdS\"(客户端身份标识):\"3842394231343136333145443336333545364137323046384537413645343643363733343944453541353936423741344433363446303231323641393832373700\"}}}]}\u0000","dataLen":555}

对应TLS:ClientKeyExchange(携带临时公钥)

客户端密钥确认

{"MSG_TYPE":600,"data":"{\"requestId\":\"703914\",\"appId\":\"deviceauth_service\",\"msg\":[{\"type\":3,\"data\":{\"protocol\":1,\"authData\":{\"event\":3,\"epkC\"(客户端临时公钥):\"6036A8E874DCE91FD72072391FC47764150275F16E82803144F03DA21257B519\",\"kcfDataC\"(密钥计算数据(类似Finished消息)):\"F122A6EA13E1C705B4F0A98C54BBAF9724821701ACBCE15566790643F9AC1A88\"}}}]}\u0000","dataLen":268}

对应TLS:Client发送公钥及密钥派生凭证

服务端密钥确认

{"MSG_TYPE":700,"data":"{\"requestId\":\"703914\",\"appId\":\"deviceauth_service\",\"msg\":[{\"type\":3,\"data\":{\"protocol\":1,\"authData\":{\"event\":4,\"kcfDataS\"(服务端计算的密钥凭证):\"9BFE483AEA897B0888B6BF1994742E26868E3DF22E23B7362531FEE24E3F516C\"}}}]}\u0000","dataLen":194}

对应TLS:Server Finished 验证密钥一致性

{"ITF_VER":"1.1","MSG_TYPE":502,"publicKey":"1CCC767680E34F68EDDF18DD864BD9CB7802945DADA6DB55C44EDB80A56AEC7A"}
{"ITF_VER":"1.1","MSG_TYPE":503,"publicKey":"B966B008D83ADE6B2BFF5C6282D77FAFEC0DA2F35268AE1AADA518CCA8ADB116"}
{"ITF_VER":"1.1","MSG_TYPE":104,"REPLY":0,"isFinish":false}

MSG_TYPE:502/503
双方交换最终公钥(publicKey字段),用于后续加密通信。
类比TLS:交换的RSA/ECDSA公钥用于数据加密。
MSG_TYPE:104
返回REPLY:0(成功),但isFinish:false表明会话未完全关闭。
类比TLS:握手完成但连接保持活跃。

tls1.3和tls1.2的区别

简洁性与速度

使用 TLS 1.2 需要两次往返( 2-RTT )才能完成握手,然后才能发送请求。
TLS 1.3 的握手不再支持静态的 RSA 密钥交换,这意味着必须使用带有前向安全的 Diffie-Hellman 进行全面握手。使用 TLS 1.3 协议只需要一次往返( 1-RTT )就可以完成握手

  • tls1.2

ClientHello → ServerHello → Certificate → ServerKeyExchange → CertificateRequest → ServerHelloDone → ClientKeyExchange → [ChangeCipherSpec] → Finished → [ChangeCipherSpec] → Finished

  • tls1.2

ClientHello → ServerHello → [EncryptedExtensions] → [Certificate] → [CertificateVerify] → Finished → [EndOfEarlyData] → Finished

安全性与加密方法

TLS 1.2 支持多种密码套件,提供各种加密、身份验证和哈希算法组合。然而,过多的选项也增加了选择安全性较低的密码套件的风险,可能会使通信暴露于漏洞。使用多种密钥交换方法,包括RSA 但RSA 涉及服务器向客户端发送加密的预主密钥
TLS 1.3 将支持的密码套件缩小到五个,全部基于带关联数据的认证加密 (AEAD) 原则。此简化旨在提高安全性和效率。同时在密钥交换机制上要求使用 Diffie-Hellman 密钥交换,具体来说是椭圆曲线变体 (ECDHE) 此方法可确保更高效、更安全地协商加密密钥