OpenHarmony实战:轻量级系统之安全子系统移植

安全子系统提供网络设备连接、认证鉴权等功能,依赖mbedtls实现硬件随机数以及联网功能。

由于每个厂商芯片硬件与实现硬件随机数的方式不同,需要适配硬件随机数接口。

移植指导

OpenHarmony提供了mbedtls的开源三方库,路径为"//third_party/mbedtls"。此库中提供了"mbedtls_platform_entropy_poll"、"mbedtls_hardclock_poll"、"mbedtls_havege_poll"、"mbedtls_hardware_poll"等几种产生随机数的方式。厂商需要根据芯片适配"mbedtls_hardware_poll"方式。

移植实例

  1. "config.json"添加文件系统。 路径:"vendor/MyVendorCompany/MyProduct/config.json"

    修改如下:

    复制代码
    {
      "subsystem": "security",
      "components": [
        { "component": "hichainsdk", "features":[] },
        { "component": "huks", "features":[]}
      ]
    },
  2. 配置宏,打开硬件随机数接口相关代码。 根据mbedtls的编译文件可以看出,配置宏的位置在"MBEDTLS_CONFIG_FILE=<../port/config/config_liteos_m.h>"文件中。

    路径:"third_party/mbedtls/BUILD.gn"

    复制代码
    if (ohos_kernel_type == "liteos_m") {
      defines += [
        "__unix__",
        "MBEDTLS_CONFIG_FILE=<../port/config/config_liteos_m.h>",
      ]
    }

    根据代码我们可以看出需要配置"MBEDTLS_NO_PLATFORM_ENTROPY"、"MBEDTLS_ENTROPY_HARDWARE_ALT"两个宏,才能编译硬件随机数的相关代码。

    路径:"third_party/mbedtls/library/entropy.c"

    复制代码
    #if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES)
    #if !defined(MBEDTLS_NO_PLATFORM_ENTROPY)
        mbedtls_entropy_add_source( ctx, mbedtls_platform_entropy_poll, NULL,
                                    MBEDTLS_ENTROPY_MIN_PLATFORM,
                                    MBEDTLS_ENTROPY_SOURCE_STRONG );
    #endif
    ......
    #if defined(MBEDTLS_ENTROPY_HARDWARE_ALT)
        mbedtls_entropy_add_source( ctx, mbedtls_hardware_poll, NULL,
                                    MBEDTLS_ENTROPY_MIN_HARDWARE,
                                    MBEDTLS_ENTROPY_SOURCE_STRONG );
    #endif
    ......
    #endif /* MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES */
    }
  3. 适配硬件随机数接口 接口定义如下:

    路径:"third_party/mbedtls/include/mbedtls/entropy_poll.h"

    复制代码
    int mbedtls_hardware_poll( void *data,unsigned char *output, size_t len, size_t *olen );

表1 安全子系统配置项

配置项 意义
disable_huks_binary 是否编译HUKS源码。 (1) 默认值: false,不编译HUKS源码。 (2) 其他值: true,编译HUKS源码。
disable_authenticate 是否需要裁剪hichain认证功能。 (1) 默认值: true,不裁剪。 (2) 其他值: false,裁剪hichain认证功能。
huks_use_lite_storage 是否采用轻量化存储方案。无文件系统、仅有flash存储的设备,可采用轻量化存储方案。 (1) 默认值: true,使用轻量化存储。 (2) 其他值: false,不使用轻量化存储。
huks_use_hardware_root_key 是否使用硬件根密钥。设备存在硬件根密钥能力时,需要根据自身能力适配硬件根密钥方案;HUKS提供的RKC方案仅为模拟实现。 (1) 默认值:false,默认值,默认无硬件根密钥。 (2) 其他值:true,设备具有硬件根密钥相关能力时,应自行适配。
huks_config_file 是否使用HUKS默认配置文件。 (1) 默认值:"":使用HUKS默认配置文件hks_config.h。 (2) 其他文件:产品可在HUKS支持能力集合中自行选择所要支持的特性。

说明: 在添加安全子系统时,可直接通过配置feature来选择安全子系统特性。

复制代码
{
  "subsystem": "security",
  "components": [
    { "component": "hichainsdk", "features":[] },
    { "component": "huks", "features":
      [
        "disable_huks_binary = false",
        "disable_authenticate = false"
      ]
    }
  ]
},

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony **多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)**技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料****

鸿蒙(HarmonyOS NEXT)最新学习路线

  • HarmonOS基础技能
  • HarmonOS就业必备技能
  • HarmonOS多媒体技术
  • 鸿蒙NaPi组件进阶
  • HarmonOS高级技能
  • 初识HarmonOS内核
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频 ,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类...等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料****

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .......

《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ......

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ......

获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料****

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。

相关推荐
哲科软件1 小时前
跨平台开发的抉择:Flutter vs 原生安卓(Kotlin)的优劣对比与选型建议
android·flutter·kotlin
独行soc4 小时前
#渗透测试#批量漏洞挖掘#HSC Mailinspector 任意文件读取漏洞(CVE-2024-34470)
linux·科技·安全·网络安全·面试·渗透测试
Me4神秘5 小时前
Linux国产与国外进度对垒
linux·服务器·安全
coder_pig5 小时前
跟🤡杰哥一起学Flutter (三十四、玩转Flutter手势✋)
前端·flutter·harmonyos
老K(郭云开)5 小时前
谷歌浏览器安全输入控件-allWebSafeInput控件
安全
simple丶5 小时前
【HarmonyOS】鸿蒙蓝牙连接与通信技术
harmonyos·arkts·arkui
Whoisshutiao6 小时前
网安-XSS-pikachu
前端·安全·网络安全
站在巨人肩膀上的码农6 小时前
全志T507 音频ALSA核心层注册流程分析
驱动开发·音视频·安卓·全志·alsa·声卡
还是奇怪7 小时前
Linux - 安全排查 2
linux·运维·安全
前端世界7 小时前
HarmonyOS开发实战:鸿蒙分布式生态构建与多设备协同发布全流程详解
分布式·华为·harmonyos