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文件。

DD一下: 欢迎大家关注公众号<程序猿百晓生>,可以了解到一下知识点。

erlang 复制代码
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案) 
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......

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

  1. 数据包头部格式

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

  1. 数据包负载格式

对于不同的Module类型,数据包负载有不同的格式,这里主要介绍加密的数据包类型:

各个字段的意义: Session_Key_Index :会话密钥索引。占4个字节,用于索引会话密钥,便于查找。 Data:数据的密文形式,解密之后以json格式的字符串存储。

相关推荐
奋斗的小青年!!1 天前
Flutter浮动按钮在OpenHarmony平台的实践经验
flutter·harmonyos·鸿蒙
Georgewu1 天前
【HarmonyOS应用开发】鸿蒙应用实现横竖屏切换的两种方式以及注意事项
harmonyos
万少1 天前
告别素材焦虑!用 AI 一键生成鸿蒙项目图片素材
ai编程·harmonyos
wszy18091 天前
外部链接跳转:从 App 打开浏览器的正确姿势
java·javascript·react native·react.js·harmonyos
奋斗的小青年!!1 天前
OpenHarmony Flutter 拖拽排序组件性能优化与跨平台适配指南
flutter·harmonyos·鸿蒙
sinat_384241091 天前
HarmonyOS应用开发的trae cn全面实战指南
华为·harmonyos
崎岖Qiu1 天前
【OS笔记35】:文件系统的使用、实现与管理
笔记·操作系统·存储管理·文件系统·os
txinyu的博客1 天前
HTTP服务实现用户级窗口限流
开发语言·c++·分布式·网络协议·http
独自破碎E1 天前
RabbitMQ中的Prefetch参数
分布式·rabbitmq
小雨下雨的雨1 天前
Flutter 框架跨平台鸿蒙开发 —— Stack 控件之三维层叠艺术
flutter·华为·harmonyos