安全之安全(security²)博客目录导读
目录
一、ARM简史
二、什么是ARMv9?
三、ARMv9及其关键特性介绍
1、指针验证代码
2、分支目标识别
3、特权访问禁止
4、矢量指令
5、机密计算,又名“领域内存扩展”
四、总结
在深入了解ARMv9的实际含义及其在物联网技术中的作用之前,首先要确定ARM本身是什么,以及其架构迄今为止的发展历程。
广义上讲,ARM架构是ARM控股公司开发的一系列中央处理器单元。基于被称为RISC的精简指令集计算架构,ARM处理器被广泛应用于从数字电视和机顶盒、从智能手机到移动计算机的各种消费设备。自2014年以来,ARM一直是世界上使用最广泛的32位指令集架构。
随着技术在商业和日常生活中扮演着越来越重要的角色,用户需要从连接的设备获得流畅的体验。
为了实现这一点,大多数小工具现在都安装了嵌入式处理器,这些处理器不仅体积小巧,而且有助于确保消费者设备尽可能高效地运行。
尽管制造商可以选择在其设备中实现各种嵌入式架构,但ARM是迄今为止最受欢迎的,约占所有智能手机处理器的95%。
第一个ARM指令集版本早在1985年就与最初的ARM处理器一起推出,自那时以来,该体系结构已经发生了重大变化。
首先, ARM的每个新处理器系列都按时间顺序命名,从ARM1开始,到2002年运行到ARM11。然而,当Cortex处理器系列于2005年推出时,命名方式发生了变化。
这意味着每一个新处理器现在都被命名为“Cortex”,后面跟着相应的字母和数字。
虽然ARM的命名方式可能会让任何非软件工程师感到困惑,但只要记住,ARM1和ARM11等是处理器系列,而ARMv8和ARMv9等是这些处理器的设计架构即可。
回到ARMv9本身,2021 年3月ARM公司公布了该处理器架构的这一迭代。在宣布ARMv9时,ARM提出了其愿景,希望在未来十年内成为下一个3000亿芯片的计算平台。
事实上,ARM声称新架构“在未来两代移动和基础设施CPU中,CPU性能将提高30%以上”。
自推出ARMv9以来,ARM宣布了一系列架构扩展,旨在通过添加指令集内实现的指令来构建该产品。
如果说ARMv8是值得借鉴的,那么我们很可能会看到在ARMv9的整个生命周期中实现更多的扩展。然而,这些是ARMv9目前的主要特点。
安全世界中的虚拟机管理程序支持
如果管理程序足以满足系统设计者的安全要求,ARM将永远不需要TrustZone技术,该技术主要提供一种经济高效的方法来隔离系统中的安全关键组件。这是通过硬件将富操作系统与较小的安全操作系统分离来实现的。
然而,TrustZone于2004年首次引入,此后该技术取得了显著进步。
2023年,管理程序可以利用系统内存管理单元[SMMU],在片上系统[SoC]设计中提供类似TrustZone的隔离。因此,ARM为安全世界引入了虚拟机管理程序支持。
这是向前迈出的积极一步,前提是在设备的Trusted Execution Environment(可信执行环境)[TEE]中保持相同的系统级隔离,并且安全地写入管理程序。
ARMv9的核心功能之一是指针认证码[PAC]。
作为AArch64ARMv8-A的一部分被ARM引入的指针认证方案旨在使攻击者更难修改内存中受保护的指针而不被检测到。
它的工作原理是提供一个特殊的CPU指令,在存储指针之前,将加密签名(或PAC)添加到指针的未使用的高阶位。一旦从内存中读回指针,另一条指令将删除并验证签名。
写入和读取之间对存储值的任何更改都会使签名无效,CPU将其解释为内存损坏。
因此,CPU在指针中设置一个高阶位,使其无效,并导致设备崩溃。本质上,PAC在确保设备免受攻击和抵御攻击方面发挥着不可或缺的作用。
在ARMv8.3引入的PAC中,ARM添加了元数据来区分五种指针类型——两种用于数据,两种用于代码,一种用于一般用途。
错误使用这些指针类型会导致异常,从而使代码库更坚固,以防返回定向编程[ROP]和跳转定向编程[JOP]等攻击。
ARM还包括分支目标识别[BTI],该分支目标识别作为ARMv8.5安全扩展的一部分,已扩展到ARMv9。这提供了间接分支及其目标周围的控制流完整性[CFI],从而有助于限制针对设备的JOP攻击次数。
分支目标指令[BTI]存在于BTI自身。也称为“着陆台”,它们可以对处理器进行配置,使间接分支(BR和BLR)只能允许目标着陆台指令。
如果一个间接分支的目标不是一个着陆台,则会生成一个“分支目标异常”。这是为了防止攻击者跳到代码段中,因为只允许有效的入口点。
因此,通过绕过功能参数检查进行攻击的可能性大大降低。
被称为PAN的Privileged Access Never是针对ARMv8 64位规范的内存访问保护中检测到的漏洞而引入的。其目的是防止对用户数据的特权访问,除非将其明确启用为安全机制以防止可能的攻击。
这是通过启用内核模式(或管理程序)来阻止其自己对地址区域的访问来实现的。虽然这看起来像是一种奇怪的方法,但这确实说明,哪怕攻击突破了内核的防御,其影响也非常有限。
ARM在矢量支持领域引入了广泛的新技术。基于向量的数学在高速计算中至关重要,尤其是在图像分析、生物特征安全和密码学等领域。
ARM架构的矢量指令始于ARM NEON和单指令/多数据[SIMD]指令,这些指令通过可扩展矢量扩展[SVE]在整个ARMv8中得到了增强。
ARMv9随后引入了SVE2,SVE2通过ARMv9.2中的可伸缩矩阵扩展[SME]进一步扩展。此外,ARM还添加了一些新的通用矩阵乘法[GEM]指令,以减少带宽内存。
实际上,所有这些技术都是为了提供更好的方法来处理大量“数字”,即图像或加密数据块。
根据ARM的说法,在ARMv9中添加其机密计算功能有助于为隔离、机密性和真实性提供硬件基础,可与TrustZone技术媲美。
机密计算旨在通过将计算置于基于硬件的安全性中,保护部分代码和数据在使用过程中不被访问或修改,甚至不被授权软件访问或修改。
机密计算体系结构[CCA]基于一个名为Realms的概念,该概念在一个独立于安全和非安全环境的区域中工作。这意味着Realms能够保护敏感数据和代码不受系统其他部分的影响,而不管它是在使用中、静止中还是在传输中。
从Trustonic的角度来看,ARMv9中两个最重要的功能是其内存标签扩展[MTE]和通向FF-a接口的安全管理程序[Cortex-a固件框架]。
这两个特点都是Kinibi 600 TEE的关键部分。鉴于MTE和FF-A的复杂性,我们将在ARMv9的下一篇博客中深入探讨这些功能,解释为什么我们决定在Kinibi 600中实现它们。
我们很自豪能够成为ARM生态系统的关键组成部分。通过采用ARMv9,我们在技术上取得了重大进步,在TEE中实现了许多关键功能,这些功能预计要到2023/24年才能广泛使用。
我们在ARMv9方面遥遥领先,因此得以站在一个令人难以置信的有利位置上,支持我们的客户拥抱架构。更重要的是,我们已经一直在为ARMv7和ARMv8客户提供服务,我们在处理不同的CPU架构方面毋庸置疑是一对安全的合作伙伴。
就ARMv9本身而言,它其实并不像许多原始设备制造商(OEM)所认为的那样是“一个巨大的变化”。
尽管如此,它确实带来了许多令人兴奋的新功能。例如,该体系结构引入了关键的安全相关技术,这些技术有助于加强ARMv8产品的软硬件环境。
直接的性能增强以BTI、PAC和MTE等形式出现,而间接的使能因素如媒介能力的改进则有助于加强技术。
鉴于其整体结构的复杂性,要完全清楚地解释ARMv9是比较难的,但在我们的帮助下,OEM可以充分利用该架构,优先进行战略部署和功能实现,保持一贯的优势。