验证IoT设备身份认证通道加密的操作指南

  1. 在Ubuntu虚拟机/阿里云ECS,命令行终端中,运行如下抓包命令:

tcpdump host iot-sec.itls.cn-shanghai.aliyuncs.com -w lp_id2.pcap
  1. 开启一个新命令行终端,运行demo程序(mqtt_id2_demo):

  • 等待MQTT over ID²-iTLS建连成功,日志中出现心跳响应(“heartbeat response”)

  1. 中断tcpdump抓包程序,得到指定的抓包数据文件(lp_id2.pcap)

  2. 在个人电脑,在命令行(如Windows PowerShell),使用远程拷贝命令将抓包数据文件拷贝到个人电脑上

scp Username@IPaddr:/Path/lp_id2.pcap ./
  • Username:ECS/Ubuntu虚拟机的用户名

  • IPaddr:ECS/Ubuntu虚拟机的IP地址,其中ECS使用公网IP

  • Path:抓包数据文件在虚拟机上的路径

  1. 在个人电脑上,使用Wireshark软件(如没有,请先自行安装)打开抓包数据文件(lp_id2.pcap)

  • 在控制栏,分析->启用的协议中,将MQTT勾选取消:

image.png

  1. 基于抓包数据,进行 ID²-iTLS身份认证和安全通道建立过程分析:

  • 基于ID²的设备端身份认证:

image.png

image.png

image.png

  • 在第一个Client Hello握手报文中,上报设备 ID² ID,到ID²服务端申请认证挑战字(32字节字符串)

  • 通过Hello Verify Request报文,下发ID²认证挑战字;设备端基于挑战字生成 ID²设备端认证码

  • 在第二个Client Hello握手报文中,上报 ID²设备端认证码进行设备身份认证

  • 基于ID²的服务端身份认证:

image.png

  • ID²服务端在认证 ID²设备的同时,生成 ID²服务端认证码,并通过Server Hello报文下发到设备端,进行服务端身份认证

  • 基于ID²的iTLS会话密钥协商:

image.png

  • 在Server Hello报文中,同时带有通过ID²服务端加密的PresharedKey(会话密钥派生因子),到设备端通过ID²接口解密

    • iTLS的设备端和服务端基于相同的PresharedKey派生出会话密钥,用于后续应用数据的加密

  • 基于iTLS会话密钥的应用数据加密:

image.png

  • 从如上截图可见,iTLS安全通道建立后,传输的应用数据都通过iTLS加密保护传输(防窃取和篡改)

  1. 分析总结:

  • 通过上面的抓包可见,ID²-iTLS通过6个握手报文、1253字节数据量即可完成整个握手过程;在TLS握手过程中,基于ID²(挑战字模式)完成设备端和服务端的身份认证,并加密下发会话密钥派生因子,完成会话密钥的协商,建立安全的数据传输通道。

  • ID²-iTLS提供双向认证和数据安全传输特性外,相比标准TLS,具有资源占用低(无需解析和处理x509证书复杂的逻辑),握手报文少,握手数据量小等优点,是一个针对物联网(IoT)场景设计的轻量级安全连接协议,提供类似标准TLS的安全能力,同时减少协议对设备和网络的依赖,满足物联网(IoT)对连接安全的需求