接上文
在上一篇文章中,讲了下ARM在ARMv9中人工智能领域的相关技术SVE2,以及其他人工智能相关的布局。对于ARMv9是否能给ARM带来腾飞,仅根据SVE2,我认为是不够的。
ARMv9另一大技术点是安全,本文会重点介绍ARMv9的CCA(Confidential Compute Architecture)技术和MTE(Memory Tagging Extension)技术。最终,结合两大方向,给出我对这个问题的结论。
安全,永远的安全
随着越来越多的设备连在网上,随着越来越多的数据被采集,随着人们隐私意识的不断增强,安全问题不断成为社会议论的焦点,相关的软硬件技术也在不断产生和迭代。赛门铁克仅在2020第一季度,就在IoT的Honypots中侦测到近1亿9千万次攻击,平均每秒超过100次[1]。
作为芯片IP提供设计者,ARM在其中扮演的角色至关重要。硬件的安全方案是软件无法攻克的,因此ARM有责任为当前社会的安全问题提供安全的硬件底座。这也就是为什么TrustZone技术被ARM在ARMv6中发布以来,已经被广泛的使用,提供可靠的安全启动,加解密等服务。下面我们先简单介绍下TrustZone的基本原理。
另一个世界(TrustZone)
TrustZone最核心思想就是在真实的世界(normal world)之外并行的增加了一个安全世界(secure world),两个世界都是完整的(都有硬件,操作系统,应用软件)。安全世界是全知全能的,但真实世界则对安全世界不感知的。创世纪(系统启动)先从安全世界开始,真实世界被安全世界定义后才被启动。而当待定的事件(比如特定的异常)在真实世界中被触发后,真实世界会被暂停,切换到安全世界来处理完成后再切换回真实世界,这段逝去的时间对于真实世界是无感的。
有了这样的硬件设计,就可以把一些敏感重要的信息和处理过程放在安全世界处理,对于这个数据的访问和过程调用,被封装成服务调用,在真实世界中被使用。比如安全启动的信任链的起点总是从安全世界开始,比如敏感的加解密过程也可以放在安全世界等等。
ARM的TrustZone设计是比Intel的TPM技术更方便的。TPM仅仅是把固定的能力设计成安全可靠,但ARM的TrustZone是提供了一个完整的世界,提供的功能可被软件完整定义,这样就提供了非常强的可塑性。
但TrustZone也有它的局限性。TrustZone基于的安全模型是低安全等级的软件对于高安全等级的软件是完全可见的,因此应用的安全性是会被操作系统和Hypervisor影响的。随着对于安全的诉求不断增加,TrustZone已经逐渐不够用了,此次ARMv9的发布,ARM和微软合作开发了CCA技术。
更多的世界(CCA)
前文说TrustZone是增加了一个并行的安全世界,在CCA中,更是增加了一个Realm的概念,也就是可以给应用创建一个单独的世界,这个世界对于其他的Realm,操作系统,hypervisor甚至是安全世界都是不透明的。所以那些商业软件就可以运行在这个世界中,这样那些商业敏感数据和代码是被硬件隔离保护的。即使其他的应用被攻破,这些商业软件的敏感信息也是安全的。 在CCA技术中,hypervisor仅仅用于资源分配和调度,而Realm是被Realm Manager管理的。应用会被Realm Manager认证是不是可信的。通过使用Realm,信任链变短了,可信应用可以跑在任意的设备上,而不需要考虑底层的操作系统,这样整个系统的安全设计会大大简化。在最近的一份调查报告显示,91%的被调查企业表示,通过CCA,企业的机密数据得到保护的话,会大大提高企业的创新能力 [3]。 迄今为止,ARM并未发布CCA的详细资料。但既然CCA的开发是ARM和微软合作的结果,相信微软未来会基于CCA的硬件推出其完整的软硬件协同的安全解决方案的。 ## C/C++语言的新生(MTE) 相信使用C/C++的工程师都曾经或者正在被各种内存问题困扰,特别是use-after-free,简直是无解问题。同样在安全领域,内存安全问题也是安全漏洞的重灾区。微软安全响应中心的研究表明,约70%的漏洞是内存安全问题 [4]。谷歌安卓项目发现超过75%的漏洞是内存安全问题 [5]。 针对内存安全问题,ARM在ARMv8.5中作为可选扩展首次发布MTE(Memory Tagging Extension)技术,在ARMv9中成为默认配置。
MTE简单来说就是在内存上打标记(tag),而后续的内存访问操作同样也是带标记的,如果标记不匹配,则会发生异常被操作系统捕获进而采取相应的处理。 MTE的实现是有硬件开销的,对每16Byte内存打一个4bit的Tag。另外,针对性能问题,MTE提供了精确检查(precise check)和非精确检查(imprecise check),精确检查可以定位具体出问题的内存访问指令,而非精确检查可以定位出问题的线程。因此在实际的使用中,可以按需配置。 谷歌已经宣布要在安卓里面使用MTE技术 [7],相信在未来会有更多的系统会采用这个技术,提供内存安全的检测,从而减少漏洞。 # 结论 如文章开头所说,ARM在过去10多年间取得了举世瞩目的发展,其中ARMv8的64bit和ARMv8-M的TrustZone起到了重要的作用。但本次ARMv9的发布,至少从目前放出的资料看,所发布的技术并没有像64bit这样亮眼的技术,而更像是一些小功能的集合。 当我们回想ARM过去的成功时,技术在其中并不是唯一的因素。ARM的License授权的商业模式,CISC精简指令集和不保证前向兼容的决策带来的优秀的性能功耗比,智能手机和物联网的蓬勃发展的时代契机,都在其中扮演了至关重要的角色。 从软银的2020年度报告中,我们可以看到ARM的未来10年的规划:
从图中可以看到,除了保持智能手机和IoT上的霸主地位外,ARM会在网络设备,数据中心,云端服务器和车联网领域发力,这也就不难理解ARMv9除了不断提升性能外,为何要在AI和安全领域不断投入了。 个人认为,ARMv9的发布,技术上并没有太大的突破,无法让ARM保持前些年快速发展的势头。但ARM在CPU/GPU/NPU上已经有了完整的装备,在各拓展领域中会保障其稳步发展。ARM的最大威胁不是来自当前各IP巨头,反而可能是RISC-V。RISC-V更友好的开源模式,更轻的历史包袱,都可能会使其成为下一个腾飞的ARM。到底未来如何,让我们拭目以待。