安全从业者脑中有一系列的安全名词,比如安全三要素Confidenciality 、Integrity、Availability,比如硬件安全品牌TPM、TrustZone、SGX、Titan-M,比如软件层面的安全能力Isolation、Access Control,又比如漏洞缓解措施DEP、ASLR、CFI。从这些名词可以看出,软件最基础的安全能力都得自于硬件的支持,如果一个硬件没有特权级别,那就不要期望能实现什么安全能力了(没有MPU,基本的隔离都没办法做了)。硬件能力如同原材料,能做成什么样的美味佳肴就靠厨师(工程师)的本领了。因此在考虑未来产品安全的发展趋势时,硬件安全的未来演进是非常值得参考的。硬件安全系列主要讲述下ARM指令集的演进、Intel SGX解决方案以及苹果和Google硬件安全芯片的应用。本篇文章就从我们最熟悉的ARM开始讲起。
ARM在v7架构中就已经有了Security Extension,也就是TrustZone,其目的也很简单,在不增加硬件成本的情况下为设备提供一个可信执行环境。此种情况下CPU分为两个模式,Normal World和Secure World,两个世界有其各自独立的MMU,与之配套的TZASC(用于隔离内存)、TZPC(用于隔离外设)以及CCI总线构成了Cortex系列上的可信执行环境。软件所需要做的无非是配置好两个世界的切换,构建Secure World的OS和安全能力。在安全世界,软件开发者基于MMU构建了DEP和ASLR,配合安全世界的特权级别划分(SEL0和SEL1)实现用户态和内核态隔离,用户态应用之间的隔离。除此之外,CPU指令直接支持AES和HASH算法让加解密算法在ARM处理器上执行的更加高效。
当前手机上的主流芯片都是基于ARM v8架构,比如苹果A12,高通骁龙855,海思麒麟980。而且已经明确能从ARM官网看到v8.x的演进,比如:
- v8.1/2: 引入PAN和UAO,让内核态的程序在一定程度上不允许访问用户空间的资源;
- v8.3:引入Pointer Authentication,这是一项关键更新,当前苹果的A12芯片已经具备了此硬件特性,此特性在硬件上实现了CFI(Control Flow Integrity),保证执行流的正确,防止ROP的攻击。
- v8.4:ARM会在安全世界引入hypervisor,也就是SEL2,有了这一层,在软件层面就可以支持多个TEEOS,一定程度解决TEE碎片化问题,同时对于安全级别要求更高的业务(比如支付)可以跑在一个独立TEEOS中,与通用的TEEOS隔离开。
- v8.5 ARM会引入BTI(防JOP攻击)和Memory Tagging(内存区域标记,有效检测溢出和UAF漏洞)。
除了Cortex A系列指令集的演进,ARM还将TrustZone带入到了Cortex M系列,在MCU上构建一个可信执行环境。此处的TEE具备MCU的低功耗和相比A系列CPU安全世界与非安全世界更快的切换速度。在Cortex M上引入TrustZone主要用于安全启动、固件安全、创建可信根,同时可控制安全外设,比如独立的安全存储、随机数产生器、安全始终。M系列上虽然引入了隔离的安全世界,但不会降低业务的实时性(相比没有TEE的MCU的确定性时延)。当前已经有厂商生产了支持TrustZone的M系列的芯片,比如MicroChip的SAM L10和L11(基于Cortex M23),详细参考安智客之前的一篇《支持轻量化TEE的ARM Cortex-M23/33 芯片厂商》。值得注意的是,除了Cortex M23和M33,ARM也提供了一个新的 IP CortexM35P,此MCU除了具备TrustZone能力外(防软件攻击),还具备防物理攻击的能力(继承自SC300的安全特性),可应用在某些高安领域,如果成本可以接受的话,有可能是未来IoT新品的主力。
专为防硬件攻击设计的securecore SC300,cpu核心为ARM v7-M,SC300集合了Cortex M3以及防硬件攻击的能力(防侧信道攻击和故障注入攻击),之前基于Cortex M3开发过程序的工程师可以非常容易的切换到SC300进行代码开发。骁龙845中的SPU就是基于SC300,具备智能卡级别的安全能力,可用于移动支付业务的部署。
除了CPU和MCU,ARM还提供很多安全IP,比如CryptoCell、CryptoIsland,前者提供硬件的加解密能力,后者除了提供加解密能力外还提供可编程的能力(内置了MCU)。
以上都是为ARM为Security而设计的IP,除此之外,ARM也在为Safety设计专门的IP,比如Cortex R52。
综合上面的描述,我们可以勾勒出如下ARM体系架构演进的路线。
由此可以看出,ARM不断通过硬件指令集的扩展从硬件层面直接防止控制流和数据流的攻击,提升黑客攻击难度;同时ARM将TrustZone引入IoT领域,支持轻量化TEE的部署,在IoT领域为安全业务提供可信执行环境和可信根。有了这些丰富的硬件安全能力,软件开发者就需要考虑如何使能这些安全能力,构建更安全可信的系统。