鸿蒙发布前后,众说纷纭。朋友圈有人参加了HDC.2019, 并放出图片两张,信息量很大。熟悉移动设备系统架构的人士从第一张图可以推测出HarmonyOS的内核就是TrustZone OS (或称作TEE, Trusted Execution Environment),但也许还不能确定鸿蒙和安卓的关系… 那么第二张图则明确了鸿蒙和Android-Linux内核的关系-- 在2013年之前,ARM TrustZone及TEE很少被业界关注,直到Apple先后推出Touch ID和Apple Pay。熟悉TrustZone及TEE的相关概念对解读前面两张图算是必要条件。 ARM TrustZone的概念和目标与OS中常见的User Space和Kernel Space的分隔[Ref 3]相类似,ARM TrustZone从芯片设计层面开始为安全应用提供了一个可信、隔离的运行环境(即TEE), TEE和非可信运行环境(也称为普通或丰富运行环境)同时跑在ARM处理器上,简单说来如下图所示,蓝色线框中就是TrustZone及TEE-- 2013年以前,有少量终端把DRM模块预置在TEE。从iPhone 5S, Apple开始支持指纹解锁(Touch ID),指纹模组的总线接口、指纹相关的数据和鉴权处理都由TrustZone-TEE管理(Apple处理器上运行的TEE称作Secure Enclave); 从iPhone 6,Apple开始支持银行卡服务,银行卡数据和相关处理也由TEE管理。从2014年,安卓手机大厂纷纷跟进指纹解锁,TEE也随之出现在(几乎)每一台支持指纹解锁(或Face ID)的移动设备中。 因为TEE和特定的芯片设计紧密相关(TrustZone需要控制特定的处理单元、总线、接口等),每款主流的移动处理器系列都会提供一个或多个适配的TEE选项,比如高通会提供QSEE, 三星/MTK会支持Trustonic, 而海思麒麟所适配的就是基于鸿蒙内核的iTrustee了。 这么多厂商的不同TEE实现,当然会给安全应用的开发者带来困扰。有鉴于此,在智能卡OS领域有丰富经验的标准组织,Global Platform,在2010年前后开始为TEE定义各种接口标准,下图就是引入部分GP标准后的系统框架-- 在不同厂商的移动设备上,Rich OS可以是iOS,Android或HarmonyOS等, 其中Android和HarmonyOS都基于Linux Kernel。 宏内核、微内核与SEL4我们都知道Linux Kernel是宏内核,如下图所示,宏内核是把基本内核功能(进程调度及通信、内存管理)和系统服务(文件系统、设备驱动、网络服务等)置于同一地址空间,微内核是把基本内核功能和系统服务置于不同的地址空间[Ref 5]。 相应的,由于内核及服务的访问开销更小,宏内核系统通常具有更高的性能;因为内核更小,以及对系统服务的限制授权,微内核通常更易移植、更安全[Ref 4]。 有网文谈到鸿蒙内核是SEL4相当的,SEL4是第三代微内核的一个实现,使用形式化方法对内核和规格的一致性做了完整的验证。2014年,东软发布其TrustZone OS方案TEEI, 就是微内核及SEL4相当的[Ref 6]。 一些推论经过前文对TrustZone-TEE及微内核的介绍,再来看HDC.2019的两张图,可以得出几个推论:
References[3] Introduction to Kernel space and User space [4] Microkernel [5] What is the Difference between Microkernel and Monolithic Kernel? |
|
来自: hewii > 《Software Tech.》