嵌入式引导代码安全性是技术提供商正在研究的漏洞分析的一个重要领域。但是,在添加数字签名或身份验证步骤后,营销部门会立即将解决方案标记为“安全启动”。现在是时候研究安全boot_的真正含义,以及如何根据终端系统中的安全风险对安全启动技术进行分级。关键考虑因素包括保护的内容和方式、可用的安全启动功能、将要求与功能和声明相匹配以及开放标准工作。
随着“网络安全意识”成为2010年白宫的首要任务,很明显,当今大多数意识工作都集中在互联网系统上。很少有外展活动关注嵌入式系统的安全漏洞,除非这样的安全漏洞成为新闻。
嵌入式处理器中的头号漏洞来源是设备的初始启动阶段。这是作者的断言,但可以通过搜索有关嵌入式安全的学术论文、安全会议上的讨论以及设备制造商的反馈来独立评估这一陈述的真实性,这些设备制造商可以证明他们的产品在市场上被篡改和克隆的方式。
在过去几年中,这些已发布和未发布的安全事件的数量促使软件行业关注微处理器和嵌入式处理器启动过程的安全性。本文进行分析的原因很简单:通过评估使用任何安全启动解决方案在系统中真正设计了多少安全性,设计人员可以更明智地决定他们从研发和采购资金中获得多少实际终端系统安全性。
您在保护什么 - 以及如何保护?
负责系统安全的架构师应该提出两个关键问题(图 1)。评估安全启动技术安全级别的第一个问题是该功能是否实际上阻止了嵌入式设备或系统的启动代码和软件IP的暴露。有权访问引导设备或进程的最复杂的对手是否可以访问代码,然后将其用于逆向工程目的?
图1:安全启动要求的两个关键问题
如果是这样,黑客将拥有克隆系统、插入恶意软件、制定对策或利用其他方法根据漏洞或缺陷禁用系统所需的所有信息。不保护代码本身的安全启动技术无法提供针对最坚定的攻击者的真正安全性,并且可能会泄露关键的知识产权。
关于安全启动技术的下一个问题是:它解决了哪些类型的威胁?这个问题有点复杂。一些安全启动技术旨在防止替换更改的启动代码(“未经授权的替换”),这可能会在初始化处理器后将恶意软件或安全后门引入处理器。其他功能尝试限制可更改的启动参数,例如加载设备时的多阶段启动代码源,以便对手无法中断启动过程并将错误命令或安全后门替换到设备设置中。
安全启动功能
目前,各种方法都作为安全启动技术实施。这包括数字签名二进制文件、安全和受信任的引导加载程序、引导文件加密和安全微处理器。
数字签名的引导文件为防止 Internet 上跟踪的一些最广泛的引导加载攻击提供了重要的第一步。虽然一些制造商称此功能为“安全启动”,因为它增加了对重复攻击的抵抗力,但如果验证模块未集成到嵌入式处理器中,则在验证过程中仍然容易受到攻击。此外,这种安全启动不解决嵌入在启动文件本身中的专有和敏感信息的保护问题。
提高引导加载程序的信任和安全级别也是行业安全和意识的重要一步。证明引导加载程序的安全性或信任级别本身就是一个多变量问题,在很大程度上取决于引导过程的复杂性。例如,当通过网络加载引导代码时,引导加载程序的安全性和信任可能仅与网络本身一样安全。保护大型多方网络是一个比嵌入式处理器的安全启动更大的问题。这是启用远程固件更新的系统中的安全因素。
引导文件加密/解密和专用安全微处理器是安全嵌入式处理器相对较新的设计特征。它们提供硅电路嵌入式功能,以保护操作代码并管理安全启动。
将需求与功能、声明和标准相匹配
目前导致组件功能“安全启动”的主要机制是由嵌入式处理器在启动过程中验证的数字签名软件启动映像。此过程几乎可以与任何软件映像加密方案共存。
毫无疑问,与没有数字验证的系统相比,添加数字签名验证步骤可以提高安全性。但是,在审查核查过程以及使用数字签字和核实数字签字的方法之前称这一系统为“安全启动”,并不一定是真正的主张。它也是一个命名法,不允许将一个“安全启动”方案与另一个方案进行比较,以确定哪个更安全,或者哪个提供分层的安全启动功能。
目前只有一个主要的行业组织专注于为处理器和嵌入式处理器的启动完整性制定商用标准:可信计算组织(TCG)。这个国际行业联盟包括许多最大的操作系统和处理器提供商;TCG联盟致力于创建一个通用的非专有标准,以提高用户计算环境的“信任”级别。该小组显著推进了提高运行时代码执行完整性的事业。
TCG 开发了一种称为“可信平台模块”(TPM)[1] 的通用标准,用于监控系统内的运行内核,包括启动阶段和操作阶段。还指定了移动信任模块 (MTM)。TPM 旨在对加载的操作系统映像进行数字签名,并确定在启动阶段或其他阶段是否存在任何篡改。TPM 标准的最新版本有一些零星的采用和规范,尤其是在政府系统中[2]。
使用商用开放标准通常是实现新特性和功能的最具成本效益的方法,尽管并不总是最安全或防篡改的。军事客户倾向于采用强大的纵深防御方法来实现分层安全和冗余,这通常与开放标准的成本效益目标背道而驰。
“安全”对产品的真正含义
当CPU Tech的工程师谈论嵌入式系统中的“安全启动”时,他们将其定义为具有多级加密的完全加密的启动文件,由安全工程师在受控环境中实施。这涉及配置设备,使其仅从可通过唯一硬件 ID 与安全处理器匹配的加密文件启动。此过程保护引导代码和其中的任何专有信息,通过专用的内部安全处理器管理引导过程以防止代码篡改,并遵循安全操作系统的引导加载程序准则来约束未知的配置状态。安全启动的这些元素如图 2 所示。
图2:安全启动系统的分离元素
最终目标:更安全的系统
正如系统架构师所熟知的那样,安全启动本身并不是目标。安全启动功能的目的是设计一个更安全的整体系统,其中初始化过程和操作代码本身受到保护,不会被篡改和反向工程。没有一个系统是万无一失的,因此在嵌入式系统设计中使用术语“安全启动”时,我们应该谨慎和明智。
作者主张嵌入式技术提供商和工程师将描述符“数字签名引导文件”、“加密引导”、“引导代码身份验证”和“可信引导加载程序”指定为需求和系统规范中的单独功能。此外,安全性极高的系统的购买者可能希望更详细地指定引导功能。这将避免当前围绕术语“安全启动”的混淆,该术语现在是一个抽象术语,指的是各种单点解决方案和功能。
审核编辑:郭婷
-
处理器
+关注
关注
68文章
19170浏览量
229187 -
嵌入式
+关注
关注
5069文章
19023浏览量
303457
发布评论请先 登录
相关推荐
评论