2020年9月10日,华为开发者大会上,广受外界关注的鸿蒙操作系统(HarmonyOS)2.0版本正式发布。华为宣称鸿蒙是一款面向未来的、全场景的、分布式操作系统,这意味着鸿蒙系统在手机、电脑,以及更加丰富的物联网(IoT)设备上都将是通用的。因此,数据的跨设备调用和流转在鸿蒙设备间将非常普遍。调用数据的设备越多,自然面临的安全风险就越大。在提供优质服务与绝佳用户体验的同时,安全与隐私保护问题也就成了用户无法忽视的焦点。面向全场景的鸿蒙系统在现实中都存在哪些挑战呢?面对这些挑战,采用分布式安全技术的鸿蒙系统又是如何应对的呢?本文将从数据和系统等方面来剖析鸿蒙系统的安全机制。
展望未来,在万物互联的时代,物联网设备和系统势必在更加广泛的领域发挥重要作用并深刻地变革我们的生活。国际数据公司(IDC)的报告显示,2019年智能家居物联网设备的出货量超过8.15亿台,并预测到2023年,这一数字将达到13.9亿。彼时,随着用户拥有的设备越来越多,单一设备的数据将无法满足用户的需求,数据在设备间的共享与流转将变得越来越频密。目前,要实现跨平台/跨设备的无线连接,通常都需在数据传输的两端设备上安装特定软件,且这种数据服务都是基于本地的。例如,要将安卓手机连接到Ubuntu或者Mac电脑上,就难免会用到类似KDE Connect这样的软件。由于用户必须参与到软件安装与配置等工作中,其体验自然不佳。而且,由于数据服务在本地完成,安全性也颇受考验。鸿蒙系统分布式数据管理的目标就是为开发者在系统层面解决这些问题,让应用开发变得简单。它能够保证多设备间的数据安全,解决多设备间数据同步、跨设备查找和访问的很多关键技术问题。
首先,为了支持数据的跨设备调用,HarmonyOS以分布式软总线为基础,实现了应用程序数据和用户数据的分布式管理。用户数据不再与单一物理设备绑定,业务逻辑与数据存储分离,应用跨设备运行时数据无缝衔接,为打造一致、流畅的用户体验创造了基础条件。在通过可信认证的设备间,分布式数据服务支持应用数据相互同步,为用户提供在多种终端设备上一致的数据访问体验。分布式数据管理示意图如下所示:
华为消费者业务软件部总裁王成录认为:“HarmonyOS从诞生的那一天着眼点便与Android不在一条赛道上”。而HarmonyOS的精髓之一就是分布式理念。从数据管理的角度来看,分布式系统可以通过网络整合并管理每台设备上的数据和资源,并将这些分散的数据重组成一个超级虚拟终端。正如人们平常所说的:“不要把鸡蛋都放在同一个篮子里”,相比于传统的集中式数据管理,分布式模式下,数据分散的存储在各处(而非与单一物理设备绑定),既为数据的跨设备流转提供便利,也显著提升了数据管理的可靠性和安全性。此外,分布式系统与生俱来的高度内聚性和透明性在HarmonyOS也得以充分体现。业务逻辑与数据存储相分离,状态事件、属性信息与文本数据相分离,这种相互独立、彼此隔离的边界划分,可以实现彼此影响的最小化,从而使得安全性进一步提升。这种设计思想在计算机领域也是广泛存在的,就好比沙盒或TrustZone,看点还在于鸿蒙如何将其发挥到淋漓尽致。
可以用WPS文档的跨设备共享来作为鸿蒙系统分布式数据管理的一个具体案例。在该场景下,文档大小、路径等属性信息存储到了分布式数据库中,源文件则被存放在分布式文件系统中,数据在跨设备浏览的过程中不会放入单个设备的存储器,而是直接通过分布式文件系统的接口完成跨设备文件访问。
其次,为了实现用户数据在设备互联场景下在各个设备之间的安全流转,需要保证设备之间相互正确可信,即设备和设备之间建立信任关系,并能够在验证信任关系后,搭建安全的连接通道,实现用户数据的安全传输。设备互联支持基于鸿蒙系统的IoT设备(如AI音箱、智能家居、智能穿戴等设备)与IoT主控设备间建立点对点的信任关系,并在具备信任关系的设备间,搭建安全的连接通道,实现用户数据端到端加密传输。设备之间的信任关系具体而言是指IoT主控设备和IoT设备之间建立的可信关系。设备间可信关系建立的流程如下图所示:
IoT主控设备为不同的IoT设备管理业务生成不同的身份标识,形成不同IoT管理业务间的隔离,该标识用于IoT主控设备与IoT设备之间的认证以及通信。IoT业务身份标识为椭圆曲线公私钥对。IoT设备会生成各自的设备身份标识,用来与IoT主控设备通信。该身份标识同样为椭圆曲线公私钥对。IoT设备私钥不出IoT设备,设备每次恢复出厂设置,会重置这个公私钥对。上述身份标识可用于IoT主控设备与IoT设备间的安全通信,具体来说,当IoT主控设备与IoT设备通过信任绑定流程交换业务身份标识或设备标识后,可以进行密钥协商并建立安全通信通道。这类基于非对称加密的公私钥体系可以说是当今虚拟世界最为依赖的、且十分成熟的一套安全基石。尤其是在像金融等安全等级要求极高的领域,亦是被广泛采用。
IoT主控设备和IoT设备建立点对点信任关系的过程,实际上是相互交换IoT设备的身份标识的过程。在点对点建立信任关系的过程中,用户需要在IoT主控设备上,输入IoT设备上提供的PIN码:对于有屏幕的设备,该PIN码动态生成;对于没有屏幕的设备,该PIN码由设备生产厂家预置;PIN码的展示形式,可以是一个用户可读的数字,也可以是一个二维码。随后,IoT主控设备和IoT设备间使用PAKE协议完成认证和会话密钥协商过程,并在此基础上,通过协商出的会话密钥加密传输通道用于交换双方设备的身份标识公钥。当建立过信任关系的IoT主控设备与IoT设备间进行通信时,双方在完成上述信任关系绑定后,基于本地存储的对端身份公钥相互进行认证;在每次通信时基于STS协议完成双向身份认证以及会话密钥协商,之后设备使用此会话密钥加密双方设备间的传输通道。
最后,从数据安全的角度,上述IoT设备间信任关系的建立过程中其实已经涉及到了诸多类似密钥管理、证书管理和安全存储等服务。为此,鸿蒙系统提出了基于密钥管理和存储服务(HUKS,Huawei Universal Keystore Service)的系列安全机制。HUKS提供了证书管理、密钥管理、安全存储和密钥认证服务,当前在鸿蒙系统上主要是提供密钥管理和安全存储服务,同时支撑hichain(设备身份认证平台)的基础设备认证能力。如下是HUKS的功能结构图:
HUKS在使用中有如下约束,由于这些约束的共同作用,对于入侵者而言,发动恶意攻击将变得十分困难:
- 密钥安全存储:密钥要求存储于安全存储区域,数据不可以修改,恢复出厂设置时出厂预置的密钥不能被删除。
- 密钥访问安全:鸿蒙系统通过将不同应用数据保存在不同的位置,来实现应用间数据的隔离。通过参数结构体中包含UID和进程ID,来实现不同应用间的数据隔离。
- 不支持并发访问:HUKS本身不考虑多个应用同时调用的情况,也不考虑资源的互斥。如果有多个应用都会用到HUKS服务,那么应该由每个应用各自链接一份HUKS库,并由业务传入持久化数据存储的路径,以实现应用间的数据存储分开。数据存储在各应用各自存储目录下。
实际进行鸿蒙系统应用开发时,对于设备认证功能,推荐使用HiChain来对接HUKS,HUKS可以向HiChain等应用提供密钥的产生、导入、导出、加密/解密、存储、销毁,证书的导入和查询,秘密信息的存储等能力。
当前,全球智能移动终端市场蓬勃发展,Android以87.6%的市场份额独占鳌头。每个APP都依赖于Android应用程序框架来得以运转。例如,若没有框架的LMS(位置管理器服务),APP将无法获取GPS位置。然而,越来越多的安全漏洞在Android应用程序框架中被发现。一些已知的漏洞可能导致大规模的网络攻击并严重损害用户的安全和隐私,例如恶意APP可以利用它们来窃取用户密码,在后台拍照,启动UI欺骗攻击,并篡改用户数据。“从诞生的那一天着眼点便与Android不在一条赛道上”的鸿蒙系统具有充分的后发优势,至少从安全这一角度,显然是广阔天地、大有可为的。不仅如此,面向未来,立足万物互联,更是机遇与挑战并存。从以上分析不难看出,在基础框架搭建时,鸿蒙已经开始布局,在分布式数据管理、数据安全机制,以及设备互联安全等方面都有所着力。让我们拭目以待,随着更多搭载鸿蒙的设备发布,随着更多运行在其上的应用被开发出来,鸿蒙将如何变革我们的数字生活吧。
*本文原文发表于CSDN首页,参见【2】
**同时欢迎关注+订阅我的《系统安全专栏》(详情参见【3】), 本专栏主要介绍系统安全、软件分析与逆向工程中常用的各种工具、方法,与思路。涉及到的知识点包括编译器构建、代码混淆、符号执行、及其他系统底层知识。介绍到的工具包括但不限于:LLVM、angr、sysdig等。
【本文完】
参考文献
【1】HarmonyOS安全指南
【2】面向全场景的鸿蒙系统能有多安全?
【3】系统安全专栏