上个世纪60年代之后上市的汽车与保护嵌入式Linux系统安全有哪些共同之处呢?在2015年Linux安全峰会的一次演讲上,Linux基金会协作项目IT团队的系统管理员Konstantin Ryabitsev曾经用汽车比喻信息技术安全。他解释道:到上世纪末,汽车已具有较高的可靠性,在运送乘客时,车辆本身很少发生故障。然而,当时的汽车设计并未考虑人为误操作因素导致的意外事故,如果汽车发生碰撞事故,驾驶员获得的安全保护很有限。今天,汽车厂商为汽车配备了安全气囊、紧急停车、防侧滑系统、溃缩式转向柱、碰撞检测、预制动系统等多项安全措施。同样,当今的信息技术安全现状很像上个世纪60年代的汽车,系统本身可靠,但尚未考虑人为失误的影响。
Ryabitsev的演讲主要针对的是Linux服务器安全,虽然具体内容较少直接适用于嵌入式系统,但是,他谈到的安全原则对于嵌入式系统同样具有重要意义。当前,仍有太多的企业在产品设计中忽视安全这个重要因素:工程师着力于提升产品质量和功能安全,却未能制定信息安全事故应急方案,甚至有些团队不重视数据的价值,在设计中没有缜密考虑信息安全,存在亡羊补牢的思想,这导致多数企业看不到人为错误或新型攻击向量对用户或企业造成的严重损害或损失。为此,我们发布了一份技术白皮书,这样,在STM32MP1 和 STM32MP2 上运行的嵌入式系统可以像今天的汽车一样安全,即使出了问题,仍能安然无虞。
在《嵌入式系统设计原理》(Design Principles for Embedded Systems1)一书中,作者KCS Murti将安全攻击分为物理攻击和逻辑攻击两大类。物理攻击可能具有侵入性,例如,攻击者侵入芯片内部或干扰芯片正常工作;物理攻击也可以采取"非侵入式"方式,最常见的是侧信道攻击攻击。在此类攻击中,攻击者可能利用时钟与内存参数攻击系统,或通过分析功耗特征推导特定功能。意法半导体很早就开始设法提高行业的安全意识,因此,STM32MP1和STM32MP2微处理器为客户提供了重要的物理攻击防护措施,犯罪分子试图通过物理攻击方法入侵芯片的风险很低。
当企业提及嵌入式系统安全时,通常情况下指的是防范逻辑攻击的安全措施。简而言之,逻辑攻击的意图是窃取数据或者非法获取恶意软件的运行权限,泄露数据信息,导致系统以及相连系统崩溃。当大众媒体报道网络安全问题时,主要谈论的是逻辑攻击。逻辑攻击是最常见的网络攻击方式,因为实施容易,成本低,通常利用程序漏洞或缺陷即可发动攻击。
逻辑攻击同样可能攻击硬件功能或安全系统。例如,当Spectre和Meltdown 漏洞首次曝光时,引发行业震动:这个两个漏洞可让程序从内存窃取敏感数据或绕过安全防护机制入侵系统。根据 Arm的报告,STM32MP1的Cortex-M4和Cortex-A7架构及STM32MP2的Cortex-M33和Cortex-A35架构均不存在这两个漏洞。另一相似的典型案例是OpenSSL的Heartbleed 漏洞,该缺陷让攻击者有机会窃取原本应受保护的信息,迫使开发者不得不紧急检查软件代码,修补漏洞,否则后果严重。意法半导体的OpenSTLinux平台的OpenSSL没有该漏洞风险。
上述案例是无法预测的事件,我们应从中汲取经验教训。开发团队需要预判这些无法预测的风险,制定完善的漏洞审查计划,并确保补丁能够得到快速部署。这就是意法半导体白皮书阐述主要概念并帮助管理人员理解基础安全知识的原因所在。因为在大多数情况下,黑客甚至无需利用明显的漏洞,大多数攻击都依赖于人为失误或社会工程学手段。打开调试端口并保持开放状态,执行错误的加密运算,或泄露管理员密码,这些情况很容易出现。打个比方,医学领域经常告诫从业者,当听到马蹄声时,首先应该想到的是马,而不是斑马。在信息技术安全领域也是如此,当发生数据泄露事件时,首先应该考虑是不是常见情况。
STM32Trust及其安全解决方案
嵌入式系统的安全也会因开发者生态系统的存在而变得更加稳固。 意法半导体向上游贡献驱动补丁,与开源社区紧密合作,因此,我们可以快速修补漏洞,并使用标准化工具开发软件,提高安全功能的普惠性。我们还通过创建一些项目,例如,STM32Trust 或ST Partner Program帮助客户开发关键的安全功能。例如,OpenSTLinux发行版已集成实施安全引导所需的工具与安全固件更新基础架构。此外,有些客户想要把安全功能开发外包给第三方,这时,他们可以委托ST 合作伙伴,例如, Witekio 及其FullMetalUpdate ,以提高开发项目的可靠性和效率。最后,这份白皮书向决策者和行业专家保证,他们并不是在孤军奋战。
ST可信基础架构——STM32MP1引导链顺序(信任链)参考设计
为了让信息技术 (IT) 更加可靠,尤其是在应对人为失误的情况下,企业必须建立一条由可信设备系统构成的可信链。如果应用层不安全,用户就无法获得安全保障;同理,如果操作系统不值得信任,开发者很难创建安全的应用。由此可见,可信计算概念是信息技术安全的基础。根据Murti的理论定义2,可信是软硬件件"强制实施既定安全策略"的可靠保证。例如,操作系统必须确保普通用户仅具备部分权限,且无法取得管理权;同理,应用程序不得越权访问安全策略规定的不得访问的资源。
在信息技术安全领域存在一个公理:如果底层不可信,上层就不可能真正安全。例如,如果操作系统不可信,应用程序就会变得不安全。即便已采集的数据被软件加密,但是,只要操作系统不可信,用户仍无法得到没有黑客入侵系统和窃取数据、密钥等信息的保证。同理,若硬件平台不可信,操作系统将不会很安全。真正安全的嵌入系统依赖于业界称之为可信链(CoT)的逐层完整性验证。
在传统意义上,可信链(CoT)表示一个从最下面的硬件层到最上面的应用层构成的可信层工作流程。但是,管理者需认识到,一条真正的可信链不应局限于系统本身,应延伸到系统以外的更远处。开发者必须保护自己的开发成果,制定风控指引,并预判意外事件。假如秘钥被心怀不满的员工窃取,那么密钥还有什么用?同理,企业须确保交付给OEM厂商的固件是安全的,企业耗费心力保护软件安全,必须获得恶意攻击者无法窃取源码的保证。真正的信息技术安全必须考虑到所有人为因素,并提前做好应急备案。
因此,业界采用数学算法加密标准保护数据安全,这些加密系统假设攻击者熟悉这些算法。现在,安全专家不再依靠开发者隐藏访问权限,而是预料到黑客知道他们在做什么。但是,因为成本太高,计算量太大,破解算法变得不切实际。因此,有很多公司选择 RSA合AES密码加密算法或CRYSTALS-Dilithium 等新后量子加密算法标准。尽管攻击者很熟悉这些算法,但是,如果实施方法正确,这些算法是无法破解的。随着能够加快加密算法运算的硬件 IP 引擎的问世,运行加密算法而不影响处理性能的设想变为了现实。
根据UEFI Forum,硬件可信根是计算机系统可信链的起点。硬件可信根是保证系统底层值得信赖的安全机制,因为引导加载软件代码是经过多项验证与认证。简而言之,可信根提供若干个保证:确保没有人启用新的调试接口或篡改固件配置等操作。可信根使用不可变的根密钥验证代码完整性,并采用安全的引导加载程序。密钥位于硬件内部这一事实还可有效防止黑客克隆系统。
鉴于固件在建立可信根方面的重要性,许多人开始使用加密固件。简而言之,在MCU或 MPU上加载的代码是无法读取的,必须先在主控制器内部用安全方法解密,这意味着没有人眼可以窥视解密后的代码,然后,主控制器运行检查工具,验证固件的完整性。STM32MP13 和 STM32MP25 微处理器具有专门的内存保护机制和安全功能,尽管增加了解密步骤,但仍可保证强大的处理性能。加密固件还确保工业间谍无法访问源代码。
建立一条可信链,工程师和管理人员可能无从下手。因此,白皮书列出了创建一个可靠的可信链所需的主要模块。例如,白皮书解释了 STM32MP1和 STM32MP2环境如何有一个基于可信根的参考引导顺序,安全启动使用 TF-A 软件,安全操作系统采用OP-TEE软件,在外存 RAM 中进行Linux 内核初始化时,第二阶段引导加载程序使用U-Boot软件。我们还有一个 wiki 知识库,帮助开发人员开发所有这些模块。因此,白皮书是一个帮助项目经理启动项目的助力踏板。
ST 还提供安全固件安装机制,例如,安全秘钥配置。开发人员在硬件安全模块 (HSM) 上给密钥加密,OEM厂商安装的是加密数据和加密信息,MPU 通过 HSM模块在内部对加密的数据信息进行解密处理。因此,没有人能够运行不受保护的引导加载程序或访问敏感数据,客户还可以跟踪 OEM厂商向多少台设备烧录了代码。因此,保证可信链延伸到引导加载程序或软件层以外的更高的层次,而且还是一个完善的产品设计制造方法,具有很重要的意义。
审查系统的重要性
嵌入式系统行业再也不能忽视其他行业积累的信息安全实践经验。几年前,企业很少审查自己的嵌入式系统,因为他们没有看到其中的价值。在许多情况下,数据仍保留在本地设备上,并且没有敏感信息。然而,在下一个自动化时代,互联互通的嵌入式设备越来越多,智能化水平也越来越高。因此,公司必须审查操作日志,定期检查软件执行情况,并监控流量以防入侵。像今天的汽车一样,只有能够预测即将发生碰撞或险情,才能有效地保护驾乘者的安全,因此,工程师必须紧跟最新的安全技术发展趋势3。
安全认证的兴起是另一个新趋势。监管机构等组织机构正在创建认证标准规范,以保证网络安全解决方案可靠稳健。例如,STM32MP1 和 STM32MP2 的真随机数发生器已经通过了 NIST SP 800-90B 等安全标准测试,可以帮助客户顺利通过 SESIP 3 级认证。因此,需要获得 FIPS 140-3 认证的管理者可以二次使用我们的 SP 800-90B 证书,将产品更快地推向市场。同样,STM32MP135 和 STM32MP25的预认证方法还能大幅降低银行应用开发者取得要求严格的 POS PCI-PTS认证的难度。
远程服务器
此外,企业必须制定应急计划,以便在发现漏洞或入侵事件后迅速做出反应。部署应急响应计划可以节省宝贵的时间,并极大地辅助决策过程,同时还可以避免在紧张和压力之下做出仓促的决策。团队可以从网上各种资源中汲取灵感。例如,美国网络安全和基础设施安全局的《网络安全事件和漏洞响应手册》就是一个很好的参考样本。该手册主张创建两个手册:一个处理事件,另一个处理漏洞。该手册并非每个方面都适用于嵌入式系统或私营企业,但仍具有重要参考价值。
在嵌入式系统中引入固件无线更新 (FUOTA) 机制也很重要。远程修补系统在处理危机的时候至关重要,但是,FUOTA实施起来特别复杂。在《物联网》杂志最近发表的一篇文章中,法国研究人员分析了 FUOTA 背后的挑战,包括资源限制、网络拓扑、设备管理、安全性。实现FUOTA要求在嵌入式系统与远程服务器端必须有多个组件协同运行。实际上, FUOTA的实施在很多情况下比人们想象的更容易,选择外包服务通常是最具成本效益的解决方案。
意法半导体已将芯片板级支持包(BSP)整合进入Linux内核主线版本
目前有一个明显的向开源社区靠拢的趋势。随着 STM32MP1的推出,意法半导体承诺将继续执行贡献驱动程序补丁的政策,继续开发支持OpenSTLinux操作系统。除了已经谈到的优势外,使用开源软件还可以简化工作流程。使用开放的主流工具意味更容易招募英才和项目交接。在许多情况下,与专有解决方案相比,开放软件有更多的支持资源和知识经验。加入社区往往会提振士气。在知道项目有更大的用途后,工程师们更愿意接手项目。例如,贡献上游驱动补丁,如果被很多业界同仁采用,将会提升个人成就感。
因为许可协议的为题,有些企业不愿意采用开源技术。对于在Linux系统上运行专有应用程序和按照GPL(通用公共许可证)使用工具,业界存在认知误区。事实恰恰相反,TF-A、OP-TEE、U-Boot等开源软件允许企业在自身系统架构上搭建商用解决方案,而无需担忧法律风险。根据沃顿商学院2004年的研究论文预测,开源平台完全具备赚钱潜力,未来许可协议将有助于厘清相关法律争议。意法半导体的技术白皮书可以帮助企业管理层更好地厘清这个问题,以正确的心态开始他们的项目。
合作的重要性
美国总统于2021年5月签署的《关于加强国家网络安全的行政令》建议服务提供商在信息技术安全方面加强合作。目前,该行业正在进入一个新的时代,对嵌入式系统的要求要更加严格。数据越来越宝贵,即使是消费级系统也成为关键业务节点,保护信息不再是可有可无的事情。通过吸取白皮书中讲述的经验教训,并与开源社区和 ST 合作伙伴计划的成员合作,企业可以改变现有安全文化。信息安全不该是亡羊补牢,而是引导公司创建的强大的嵌入式系统,即使在面临安全挑战时,也能蓬勃发展。