科技颠覆者 发表于 2024-8-5 10:14:50

近端安全互联样例利用指导

样例介绍

本样例基于rk3568开辟板,通过封装openharmony安全子系统deviceauth组件提供的能力,实现了一组可用于装备间快速建立可信认证和毗连的接口,通过预先定义关系网,在装备初始化阶段完成端端装备间的认证,构建安全的数据传输通道。
场景介绍

本样例可以作为一个SDK集成到装备版本中,供上层业务APP或IOT SDK利用,具体应用场景可参考下图:
https://img-blog.csdnimg.cn/img_convert/8fa277c1e3b9b1acbaab6864955c5ff3.webp?x-oss-process=image/format,png
场景1:在都会鸿蒙的智慧管廊场景中,可以通过近端安全互联组件进行装备间可信认证与毗连,当燃气监测仪监测到燃气走漏时,及时对现场进行有效处置惩罚。比方:场景内甲烷浓度超标,但是风机没有正常启动,容易造成火灾,导致职员伤亡。在集成近端安全互联组件后,近端装备间可以建立安全的毗连,当发生燃气走漏时,可以实现电磁阀主动关闭、风机主动开启,制止管廊内发生火灾。
场景2:在交通鸿蒙的智慧隧道场景中,可以通过近端安全互联组件进行装备间可信认证与毗连,当气体检测仪检测到浓度超标时,近端装备可以主动运行,及时处置惩罚现场,制止人工处置惩罚错过最佳时间,产生二次伤害。比方:隧道内的气体检测仪检测到浓度超标,但是风机未启动,导致有毒有害气体无法排出,造成职员伤亡。在集成近端安全互联组件后,近端装备间可以组建安全的通信网络,当隧道内气体浓度超标时,检测仪可以直接发送指令给风机,通知风机启动,及时将有毒有害气体排出隧道。
基于上述场景,产生了如下需求:近端装备间实现安全的组网和通信,可以大概自发进行联动。
本样例以rk3568开辟板作为载体,实现装备的近端安全互联与通信,可以应用于上述场景,有效解决该场景中存在的问题。
https://img-blog.csdnimg.cn/img_convert/46b65e3ba3b67bce0de0e6382a708e86.webp?x-oss-process=image/format,png
样例实现的功能包括:


[*] 同局域网装备间的互联
[*] 获取装备预置的PIN码
[*] 基于PIN码和deviceauth模块实现装备互信认证
[*] 点对点装备间数据安全传输
本样例可以配合IOT SDK一起利用,IOT SDK主要负担装备注册与PIN码管理的功能,利用者也可以根据自身的实际情况选择用业务APP取代。
IOT SDK源码可以从如下地址获取:https://github.com/huaweicloud/huaweicloud-iot-device-sdk-c
束缚与限定

特殊说明



[*] 本样例仅适用于端端装备间须要保持长毗连的场景,除非本端业务主动断开与对端装备的毗连,样例自己不会主动超时断开。
[*] 装备间毗连断开后,当再次毗连时会重新进行装备认证,因此会获得新的会话密钥。
[*] 保持长毗连可以保障装备间数据传输的及时性,但也存在一些安全隐患,比如会话密钥不会进行更新,时间太长就存在走漏的风险,如果对该安全风险比较敏感,请勿利用本样例。
硬件说明

通过测试,rk3568开辟板在作为服务端时,最多可毗连100台客户端,在作为客户端时,最多可毗连100台服务端。
本样例仅选取两块rk3568开辟板进行介绍与演示,其中一块作为服务端,一块作为客户端。
环境准备

硬件准备

安装windows 10及以上操作系统的PC主机
两台rk3568开辟板
构建环境

起首须要在PC主机上安装Ubuntu操作系统,以提供基础的编译环境,安装方法可参考:https://developer.huawei.com/consumer/cn/training/course/video/C101639987816176315
然后完成Ubuntu基础环境的配置,可参考:https://developer.huawei.com/consumer/cn/training/course/video/C101639988048536240
在Ubuntu系统中下载源码前请先实行如下指令安装所需的工具:
sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs liblz4-tool libssl-dev libtinfo-dev libtinfo5 openjdk-17-jre-headless libc6 libstdc++6 default-jdk u-boot-tools mtools mtd-utils scons gcc-arm-linux-gnueabi
该样例适配的源码版本为:Openharmony-3.1-Release,请确保下载代码时分支选择精确。
源码获取方式可参考开源社区文档 http://www.openharmony.cn/download ,选择第一种获取方式,并利用以下命令更换文档中的下载命令:
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/OpenHarmony-v3.1-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
编译验证

下载源码后,须要先编译rk3568版本通过,以确保编译环境正常可用。
切换到源码根目录,实行如下命令,安装编译器及二进制工具:
bash build/prebuilts\_download.sh
接着实行如下命令进行版本编译:
./build.sh --product-name rk3568 --ccache

编译完成后,日志中显示如下,则表现编译成功:
\=====build rk3568 successful.
编译生成的镜像文件在 out/rk3568/packages/phone/images/ 目录下。
集成样例

样例源码介绍

样例源码存放在00_src目录下,各个目录中的文件功能如下表:
目录功能说明dconnectcaseone基于openharmony安全子系统deviceauth组件开辟的分布式安全通信样例,可用于多个装备间基于预先定义的关系网完成可信认证与毗连,构建安全的数据传输通道test用于验证样例功能可用的业务程序示例代码,利用者可以参考该代码定制自己的业务程序figures用于存放readme文件中的图片资源 修改社区源码

基于rk3568装备集成编译该样例时,须要按照如下步骤修改源码(+表现增加行,-表现删除行):


[*]修改base/security/deviceauth/common_lib/impl/src/clib_types.c文件内容:
void *ClibMalloc(uint32_t size, char val)
{
-    if (size == 0 || size > CLIB_MAX_MALLOC_SIZE) {
+    if (size == 0) {
         return NULL;
   }
   void* addr = malloc(size);


[*]修改base/security/deviceauth/common_lib/interfaces/clib_types.h文件内容:
#define NULL 0
#endif

-#define CLIB_MAX_MALLOC_SIZE 4096 /* 4K */
-
#ifdef __cplusplus
extern "C" {
#endif


[*]修改build/prebuilts_download.sh文件内容:
-node_js_ver=v12.18.4
+node_js_ver='v12.18.4'
node_js_name=node-${node_js_ver}-${host_platform}-x64
node_js_pkg=${node_js_name}.tar.gz


[*]修改third_party/jsframework/package.json文件内容:
   "sinon": "^9.2.2",
   "ts-node": "^9.0.0",
   "tslib": "^2.0.3",
-    "typescript": "^4.1.2"
+    "typescript": "4.1.3"
   }
}
接着按照如下流程将样例集成到rk3568产品版本中:


[*] 在社区源码的vendor目录下新建目录kits,并将00_src目录下的全部文件放到kits目录下。
[*] 修改build/subsystem_config.json文件,增加如下内容,新增一个subsystem:
"kits": {
"path": "vendor/kits",
"name": "kits"
},


[*]修改productdefine/common/products/rk3568.json文件,在parts中新增kits中的两个部件:
"type": "standard",
"product_build_path": "device/hihope/build",
"parts":{
      "kits:dconnectcaseone":{},
      "kits:test":{},
      "ace:ace_engine_standard":{},
编译镜像

切换到源码根目录,实行如下命令,进行编译构建:
./build.sh --product-name rk3568 --ccache

编译成功后,在 /out/rk3568 目录中通过如下指令检查是否包含本样例:
find ./out/rk3568 -name "libdconnectcaseone.z.so"
通过如下指令检查是否包含测试用业务程序:
find ./out/rk3568/kits -name "demo"
如果找不到样例对应的so文件,请检查00_src目录下的文件是否全部放到了kits目录下(请注意:ohos.build文件也是必须的)。
烧录镜像

环境准备

从 out/rk3568/packages/phone/images/ 目录下复制编译成功的rk3568镜像文件到PC的windows环境中。
然后按照如下流程配置PC的HDC环境:


[*]切换到Ubuntu环境中的源码根目录,实行如下命令,编译ohos-sdk包:
    ./build.sh --product-name ohos-sdk --ccache


[*] 编译完成后,从out/sdk/ohos-sdk/windows/ 目录下将toolchains目录整个复制出来,放到D盘根目录下。
[*] 将toolchains目录中的hdc_std.exe文件重定名为hdc.exe,方便后续利用,如下图所示:
https://img-blog.csdnimg.cn/img_convert/fa3821c2f7a28fe6964cb6167ec4560d.webp?x-oss-process=image/format,png


[*]在环境变量-系统变量-Path中新建一项,值设置为D:\toolchains,之后可以在cmd窗口中直接利用HDC指令:
https://img-blog.csdnimg.cn/img_convert/4295b72c7b1ee98cca864445c4eea317.webp?x-oss-process=image/format,png
烧录指导

请参考如下链接进行烧录:
https://gitee.com/hihope_iot/docs/blob/master/HiHope_DAYU200/docs/%E7%83%A7%E5%BD%95%E6%8C%87%E5%AF%BC%E6%96%87%E6%A1%A3.md
烧录验证

烧录完成后,开辟板正常启动进入桌面(若未正常启动,需检查烧录是否失败)。
保持USB线仍为毗连状态,在PC上开启一个cmd窗口,实行 hdc list targets,可以看到对应装备的序列号,如下图:
https://img-blog.csdnimg.cn/img_convert/e5bc39eea25f7a3924d4c4ef19b28390.webp?x-oss-process=image/format,png
接着按下图所示指令实行,可以看到输出libdconnectcaseone.z.so的具体信息,则表现烧录成功:
https://img-blog.csdnimg.cn/img_convert/fa7931c56fc570d34cf16fa58448f766.webp?x-oss-process=image/format,png
别的,业务程序对应的可实行文件可通过如下方式找到:
https://img-blog.csdnimg.cn/img_convert/23d81b32501a1dbdbfe7f83b57fb8ba8.webp?x-oss-process=image/format,png
利用说明

开辟板烧录镜像完成后,可以通过HDC指令进入装备的shell界面,切换到/system/bin目录下,通过ls -l demo指令可以看到可实行文件demo,就是我们的测试用业务程序。
将两台装备毗连网络,通过ifconfig指令查察装备的IP地址,按照下图所示的操作将其中一台装备初始化为服务端,另一台初始化为客户端,在实行客户端初始化时两头装备会主动进行绑定和认证,可以新开一个shell窗口查察认证过程中的日志。
服务端初始化(上边为初始化操作指令,下边为样例打印的日志):
https://img-blog.csdnimg.cn/img_convert/bdfb1e846083986843e54ff43a76c4fe.webp?x-oss-process=image/format,png
客户端初始化(上边为初始化操作指令,下边为样例打印的日志):
https://img-blog.csdnimg.cn/img_convert/0fa4dbbfe1729ab59886133bdcdd62cd.webp?x-oss-process=image/format,png
可信认证(左侧为服务端,右侧为客户端,认证会在初始化客户端时主动触发):
https://img-blog.csdnimg.cn/img_convert/5169f32d5d740a3b2ca2b8d5a6736316.webp?x-oss-process=image/format,png
收发数据(左侧为服务端,右侧为客户端):
https://img-blog.csdnimg.cn/img_convert/5c44e36efe54b95daef77e6e786bf8ae.webp?x-oss-process=image/format,png
接口列表

本样例将枚举及宏定义、回调函数、对外接口的定义内容放置于下面的头文件中:
dconnectcaseone/interface/include/dconncaseone_interface.h
回调函数

接口名描述typedef void (*SendDataCallback)(const char *device, uint32_t result)数据发送回调函数typedef void (*ReceiveDataCallback)(const char *deviceId, const char *receiveData, uint32_t datelen)数据接收回调函数typedef bool (*IsValidIP)(const char *ip)校验当前毗连服务端的客户端IP地址是否合法typedef bool (*IsValidDeviceID)(const char *deviceID)校验当前毗连服务端的客户端的装备ID是否合法typedef char *( *GetAuthKey)(const char *targetDeviceID)获取对应装备的PIN码typedef char *( *GetDeviceID)()获取本装备ID 样例接口

接口名描述DCONN_API_PUBLIC uint32_t InitDConnCaseOne(uint32_t type, const char *ipAry, char *errorIp);初始化样例。初始化类型:INIT_SERVICE/INIT_CLIENTipAry:IP地址字符串初始化服务端时仅可传入一个 IP 地址初始化客户端时可传入多个,以半角逗号分隔DCONN_API_PUBLIC void RegisterCallback(const CallbackParam *callback);注册回调函数DCONN_API_PUBLIC uint32_t DConnSendData(const char *targetDeviceId, const char *data, uint32_t dataLen);发送数据DCONN_API_PUBLIC void UnRegisterCallback();取消注册回调函数DCONN_API_PUBLIC void CloseDConnCaseOne();关闭样例DCONN_API_PUBLIC const char *GetDConnVersion();获取样例版本号 为了能让各人更好的学习鸿蒙(HarmonyOS NEXT)开辟技能,这边特意整理了《鸿蒙开辟学习手册》(共计890页),希望对各人有所帮助:https://qr21.cn/FV7h05
《鸿蒙开辟学习手册》:

如何快速入门:https://qr21.cn/FV7h05


[*]基本概念
[*]构建第一个ArkTS应用
[*]……
https://img-blog.csdnimg.cn/img_convert/afd6b98a09014e557566dec0fd065c41.webp?x-oss-process=image/format,png
开辟基础知识:https://qr21.cn/FV7h05


[*]应用基础知识
[*]配置文件
[*]应用数据管理
[*]应用安全管理
[*]应用隐私掩护
[*]三方应用调用管控机制
[*]资源分类与访问
[*]学习ArkTS语言
[*]……
https://img-blog.csdnimg.cn/img_convert/c02d1bcf9201e3d3d8baf3b812f8e370.webp?x-oss-process=image/format,png
基于ArkTS 开辟:https://qr21.cn/FV7h05


[*]Ability开辟
[*]UI开辟
[*]公共事件与通知
[*]窗口管理
[*]媒体
[*]安全
[*]网络与链接
[*]电话服务
[*]数据管理
[*]后台任务(Background Task)管理
[*]装备管理
[*]装备利用信息统计
[*]DFX
[*]国际化开辟
[*]折叠屏系列
[*]……
https://img-blog.csdnimg.cn/img_convert/ac0f330dc7d6738a5b1180f68865890c.webp?x-oss-process=image/format,png
鸿蒙开辟面试真题(含参考答案):https://qr18.cn/F781PH

https://img-blog.csdnimg.cn/img_convert/b2b4ab55693c8db2d124f48f0ea89c1d.webp?x-oss-process=image/format,png
鸿蒙开辟面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开辟必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开辟系统底层方向
5.鸿蒙音视频开辟方向
6.鸿蒙车载开辟方向
7.鸿蒙南向开辟方向
https://img-blog.csdnimg.cn/img_convert/48b1e7eff01309fe163e3e6dcf6fba55.webp?x-oss-process=image/format,png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 近端安全互联样例利用指导