验证IoT设备身份认证通道加密的操作指南
- 在Ubuntu虚拟机/阿里云ECS,命令行终端中,运行如下抓包命令: 
tcpdump host iot-sec.itls.cn-shanghai.aliyuncs.com -w lp_id2.pcap- 开启一个新命令行终端,运行demo程序(mqtt_id2_demo): 
- 等待MQTT over ID²-iTLS建连成功,日志中出现心跳响应(“heartbeat response”) 
- 中断tcpdump抓包程序,得到指定的抓包数据文件(lp_id2.pcap) 
- 在个人电脑,在命令行(如Windows PowerShell),使用远程拷贝命令将抓包数据文件拷贝到个人电脑上 
scp Username@IPaddr:/Path/lp_id2.pcap ./- Username:ECS/Ubuntu虚拟机的用户名 
- IPaddr:ECS/Ubuntu虚拟机的IP地址,其中ECS使用公网IP 
- Path:抓包数据文件在虚拟机上的路径 
- 在个人电脑上,使用Wireshark软件(如没有,请先自行安装)打开抓包数据文件(lp_id2.pcap) 
- 在控制栏,分析->启用的协议中,将MQTT勾选取消: 

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



- 在第一个Client Hello握手报文中,上报设备 ID² ID,到ID²服务端申请认证挑战字(32字节字符串) 
- 通过Hello Verify Request报文,下发ID²认证挑战字;设备端基于挑战字生成 ID²设备端认证码 
- 在第二个Client Hello握手报文中,上报 ID²设备端认证码进行设备身份认证 
- 基于ID²的服务端身份认证: 

- ID²服务端在认证 ID²设备的同时,生成 ID²服务端认证码,并通过Server Hello报文下发到设备端,进行服务端身份认证 
- 基于ID²的iTLS会话密钥协商: 

- 在Server Hello报文中,同时带有通过ID²服务端加密的PresharedKey(会话密钥派生因子),到设备端通过ID²接口解密 - iTLS的设备端和服务端基于相同的PresharedKey派生出会话密钥,用于后续应用数据的加密 
 
- 基于iTLS会话密钥的应用数据加密: 

- 从如上截图可见,iTLS安全通道建立后,传输的应用数据都通过iTLS加密保护传输(防窃取和篡改) 
- 分析总结: 
- 通过上面的抓包可见,ID²-iTLS通过6个握手报文、1253字节数据量即可完成整个握手过程;在TLS握手过程中,基于ID²(挑战字模式)完成设备端和服务端的身份认证,并加密下发会话密钥派生因子,完成会话密钥的协商,建立安全的数据传输通道。 
- ID²-iTLS提供双向认证和数据安全传输特性外,相比标准TLS,具有资源占用低(无需解析和处理x509证书复杂的逻辑),握手报文少,握手数据量小等优点,是一个针对物联网(IoT)场景设计的轻量级安全连接协议,提供类似标准TLS的安全能力,同时减少协议对设备和网络的依赖,满足物联网(IoT)对连接安全的需求