TLS协议

传输层安全

定义

TLS(Transport Layer Security,传输层安全)是IETF标准化的传输层安全协议,为TCP连接提供加密、完整性校验(MAC)与身份认证(证书验证)。TLS由SSL演进而来,HTTPS、MQTT over TLS、CoAP over DTLS、API调用等均基于TLS/DTLS,是物联网端到端安全与安全架构的重要组成部分。TLS 1.3被QUIC内置,作为HTTP/3的加密层。

版本与特性

  • TLS 1.2:广泛部署,支持多种密码套件(如AES-GCM、ChaCha20-Poly1305),需2-RTT握手
  • TLS 1.3:RFC 8446,简化握手(1-RTT)、移除弱算法、强制前向安全(ECDHE),支持0-RTT恢复
  • DTLS:UDP版TLS,用于CoAP、WebRTC、QUIC等,支持丢包与乱序场景

握手与密钥交换

TLS握手包括:客户端Hello(支持的版本、 cipher suites)→服务器Hello(选定参数、证书)→密钥交换(ECDHE/RSA)→Finished(验证握手完整性)。握手完成后建立加密通道,应用数据经对称加密(AES-GCM等)传输。证书链验证确保服务器身份,防止中间人攻击;双向TLS(mTLS)可同时验证客户端,常用于物联网设备与平台认证。

典型应用场景

TLS广泛应用于HTTPS、API网关、MQTT broker、物联网平台、VPN(如WireGuard外的传统VPN)、RADIUS over TLS(RadSec)等。物联网设备与云端通信时,强烈建议采用TLS/DTLS加密,保障数据机密性与完整性。

达希物联的物联网设备与云端平台通信时,数据经HTTP/HTTPS、MQTT over TLS等协议传输,TLS是保障传输安全的核心。达希物联在为客户配置物联网平台对接、证书管理、设备认证时,会协助客户启用TLS 1.2及以上版本,配置证书校验与双向认证(mTLS),确保设备在公网、专网等场景下的数据传输安全。

握手证明身份,记录层才保护数据

TLS先用握手商定版本、密码套件和密钥,再用记录层对应用数据做对称加密和完整性保护。身份靠证书链:服务器出示证书,终端验证链能追到自己信任的根,并且证书里的名字与正在访问的主机名一致。密钥交换在现行做法里使用临时椭圆曲线密钥,使以前录下的报文不能被事后解密。TLS 1.3把握手缩到一个往返并删掉一批过时套件;TLS 1.2仍常见,但要限制套件,不能为了兼容把空加密或静态RSA留在列表里。DTLS把同样的握手用在UDP上,要能处理丢包和乱序,CoAP一类协议走的是DTLS而不是TCP上的TLS。

加密成功只说明信道上的字节被保护,不说明对方是预期的那台服务器。跳过名字校验或接受任意证书,中间人可以出示自己的证书把会话接过去。双向认证再要求客户端也出示证书或预共享密钥,平台才能确认是哪一台设备。

链、名字和时间三者缺一不可

使用TLS的条件是终端有正确的信任锚、能读到当前时间、并且访问的域名写在证书的使用者或备用名称里。用IP直连而证书只签了域名,校验会失败。设备没有电池保持的时钟,上电时间停在出厂年份,会把没有过期的证书判成尚未生效或已经过期。证书链若缺了中间证书,终端只存根证书时也无法把它接上。嵌入式设备还要负担握手的内存和往返,蜂窝时延大时,过短的握手超时会在成功前被应用放弃。

0-RTT恢复能少一次往返,但早期数据有重放风险,不适合开锁、支付这类不能执行两次的指令。会话票证若长期不轮换,票证密钥泄漏会扩大影响面。与完整性保护的关系是:TLS的记录层已经带完整性,空口完整性是另一层;不要用其中一层替代另一层,也不要在TLS之内再关闭校验“以节省算力”。

跳过校验或把过期套件留在列表里

现场最常见的是调试时关闭证书校验,量产固件忘记打开。链路仍然加密,攻击者却可以冒充平台。另一类是只校验根、不校验主机名,任何由同一公共CA签发的证书都能通过。时钟回拨、中间证书未下发、证书轮换后旧固件不认新根,都会表现为间歇性连接失败,容易被误判成SIM故障。TLS 1.0或1.1、RC4、关闭前向保密的套件若仍留在服务器优先列表里,旧设备会协商到弱算法,安全扫描和实际保护不一致。

还应避免把根私钥或设备私钥烧进同一份可被读出的固件镜像。私钥一旦随维修包流出,撤销证书之前的所有设备都可被仿冒。排查握手失败时要看告警是未知CA、名字不符、过期还是协议版本不匹配,四种改法完全不同。只看到应用日志里的“SSL error”就去换卡,定位不到密钥材料。

握手失败要先看告警类型。未知证书颁发机构、主机名不符、时间不在有效期内、协议版本或套件不匹配,四种处理完全不同。设备没有可靠时钟时,会把仍在有效期内的证书判成未生效。只校验到根、不核对主机名,则同一颁发机构签发的其他证书也能把会话接走。调试开关若在量产镜像里仍然关闭校验,加密还在,身份已经不可信。应在失败日志里保留告警名称,而不是只保留一个笼统的握手错误。


相关链接

返回通信类知识库