> 文档中心 > OpenHarmony深度解读之分布式软总线:设备认证机制浅析

OpenHarmony深度解读之分布式软总线:设备认证机制浅析


一、概述

为保证设备互联安全性,即保证用户数据在多个终端设备间的安全流转,OpenHarmony提供了可靠的设备认证机制,主要分为设备间信任关系的建立和设备通信时信任关系验证两个阶段。
设备认证提供了IoT主控设备(手机、平板等)与IoT配件设备(如智能家居、智能穿戴等)间建立并验证帐号无关点对点信任关系的能力。具备这种信任关系的设备在通信连接时可搭建安全的连接通道,实现用户数据的端到端加密传输。

二、设备认证机制的实现

  • IoT主控设备的身份标识

IoT主控设备在与配件设备建立点对点信任关系时,会生成椭圆曲线公私钥对作为本设备的身份标识;IoT主控设备上可能存在多种IoT设备互联业务,设备认证组件将针对不同的IoT设备互联业务为主控设备生成不同的身份标识,形成不同业务间的隔离。

  • IoT配件设备的身份标识

IoT配件设备同样会在与主控设备建立点对点信任关系时,生成椭圆曲线公私钥对作为本设备的身份标识;其中私钥不出IoT设备,设备每次恢复出厂设置时,会重置该公私钥对。
上述的身份标识用于IoT主控设备与IoT配件设备间的安全通信,下面将描述基于身份标识的帐号无关点对点信任关系建立与验证的实现。

  • 设备间点对点信任关系的建立与验证

IoT主控设备和IoT配件建立帐号无关点对点信任关系的过程,实际上是相互交换身份标识的过程。
在信任关系建立过程中,用户需要在主控设备上输入配件设备提供的PIN码(或其他形式的共享信息)。典型的PIN码呈现形式为:对于有屏幕的设备,该PIN码动态生成;对于没有屏幕的设备,该PIN码由设备生产厂家预置并打印在设备上;PIN码的格式,可以是一个用户可读的6位数字,也可以是一个二维码。在用户完成PIN码输入后,主控设备和配件设备将调用设备认证服务基于PAKE协议完成认证会话密钥协商,并基于该会话密钥,安全的交换各自身份公钥。
当建立过信任关系的主控设备与配件设备间进行通信时,双方将相互交换身份公钥,并通过检查本地是否存储对端身份信息的方式确认对端与本设备的信任关系。进一步地,基于双方的身份公私钥对,通信对端设备可以基于STS协议进行密钥协商并建立安全通信通道,支撑设备间通信数据的端到端加密传输。
备注:本博客部分内容参考该模块的README文件。

三、设备认证协议的数据包格式分析

  1. 数据包头部格式
    OpenHarmony深度解读之分布式软总线:设备认证机制浅析
    各个字段的意义如下:
    Identifier:协议标识符,占4个字节,默认值为0xBABEFACE,幻数,用来唯一标识该协议数据包头部。
    Module:数据包类型。占4个字节,一共有10种类型,用来标识对端的设备处于认证阶段的状态类型。
    Seq:数据包序列号。占8个字节,用于通信会话中数据包的有序管理和索引。
    Flags:数据包标识。占4个字节,有FLAG_REPLY、AUTH_UNKNOWN、AUTH_INIT三种类型,用来标识通信类型。
    DataLen:数据包负载部分的长度,占4个字节。

  2. 数据包负载格式

对于不同的Module类型,数据包负载有不同的格式,这里主要介绍加密的数据包类型:
OpenHarmony深度解读之分布式软总线:设备认证机制浅析
各个字段的意义:
Session_Key_Index:会话密钥索引。占4个字节,用于索引会话密钥,便于查找。
Data:数据的密文形式,解密之后以json格式的字符串存储。