扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共3页)
安全环境边界
在讨论具体的安全系统技术之前,我们必须首先讨论安全环境边界,因为这会影响所需的保护类型。
系统架构师首先要采取的步骤之一是在自己的系统中设定安全边界。安全边界在不同标准中的命名也有所不同。例如,TS 33.401规范称之为“安全环境”,而TS 33.320称其为“受信任的环境”。NIST FIPS140标准称之为“加密边界”。不管其命名如何,安全环境边界都是一个明确定义的连续界限,用于为模块建立物理边缘,并包含所有的安全、加密操作 和敏感安全参数。所有支持安全操作的硬件、固件和软件功能都发生在这个边界内部。常见的安全边界定义方式为将整个系统包含在内,即包含全部板件。但也可以 定义出更加紧凑的边界(例如,包含单个IC)。
图2:安全边界示例
安全边界的定义对接口保护和SSP、固件、软件的保护方式有影响。例如,在使用板/系统级边界的时候,可以用明文方式将敏感参数存储在DRAM等板级存 储器中。与此相反,在采用基于IC的边界时,任何存储在DRAM中的SSP都会落在已经建立的安全边界之外;因此要对这类数据进行加密并提供完整的保护。 尽管如此,使用比较紧凑的边界(例如基于IC的边界)仍然有其合理性,因为它具备多种优势,允许将单个安全设计重复用于多个系统或多种封装。
不管安全边界的位置在什么地方,关键在于系统硬件要能够支持系统架构人员所要求的模型。
硬件可信根
所有安全系统的基础是“可信根”。“可信根”是一种无条件受信任的组件。该组件一般存储对系统具有关键意义的机密,提供受信任功能,并通过这些功能和机 密将信任扩展到其他实体。在可信根向系统其余部分和外部实体扩展信任的过程中,必须具备对攻击的抗御能力。另外可信根必须以硬件而非软件的方式提供。
硬件可信根一般为系统将要执行的功能类型存储密钥。其中部分密钥公开,部分密钥保密。公共密钥指在安全系统中使用的密钥,虽然值是公开的但不会破坏系统 的安全性。保密密钥指在可信根中以保密方式持有的密钥,不会以任何形式直接提供。如果保密密钥被攻击和发现,系统就会被侵入。在嵌入式系统设计中,存储在 硬件可信根中的数据包括:芯片主机密钥或者根密钥;公共安全引导密钥;认证密钥;安全数据存储密钥;其他用于描述系统行为的系统特定参数。
安全引导
“安全引导”指提供软件和配置完整性检查和认证的过程。在软件镜像或配置被允许在处理器上运行之前,应首先检查镜像以确保镜像未经修改(即完整性检查) 并确保镜像由系统制造商创建(即认证)。安全引导的过程包括:利用加密散列函数(比如SHA-256)来确保完整性;利用公共密钥加密(比如RSA或者 ECC椭圆曲线加密)为镜像进行数字签名。系统制造商在工厂中留存私钥,而把公钥当作硬件可信根的组成部分提供给系统。只有经过正确私钥数字签名的软件才 能在器件上运行,进而在系统上运行。由于使用了公钥加密技术,即便攻击者获得了公共安全引导密钥,也不会增大系统的安全风险。
除完整性 检查和认证之外,系统制造商有权废除被认定为不安全的旧软件版本。产品进入现场使用阶段后,通常会发现一些软件安全漏洞。除非进行防回滚检查,否则经过正 确签名的较早镜像将在系统上运行。软件的当前版本是安全引导头的组成部分。防回滚检查功能将在安全引导阶段对当前软件版本与最低限度可接受软件版本进行比 较。当前版本信息作为完整性检查的组成部分受到保护,在不修改SHA-256散列结果(最终是签名)的情况下不能单独进行修改。如果当前版本低于最低可接 受的版本,系统将不会引导和运行。
系统制造商可能还希望为软件提供保密性,保护开发商的知识产权不被克隆。如果系统使用现成的硬件,安 全引导流程将防止竞争对手通过简单购买或构建相同硬件并克隆软件的方式制作出相同或极其类似的产品。软件镜像在存储到板载闪存之前会事先进行加密和实施完 整性保护,在网络中传输时也是如此(以升级为例)。安全引导流程还包含解密操作,并作为镜像认证流程的一部分。密钥块(key Blob)也是安全引导头的组成部分。“密钥块”是一种加密密钥存储结构,作用是在加密密钥处于安全边界之外时对它们进行保护。一旦密钥块位于安全边界之 内,系统会使用芯片主机密钥对密钥块进行解密,以得出真正的解密密钥。芯片主机密钥是一种保密密钥,不会提供给除安全引导硬件之外的任何资源。当解密密钥 恢复后,将被安全引导流程用于解密源代码。
分层安全引导流程
引导嵌入式处理器和 系统一般会涉及多个引导阶段(图4)。安全引导依赖于可信且不可改变的初始引导加载程序。为满足这些要求,处理器使用存储在ROM中的第一级引导代码。按 原理来说,ROM是不可修改的。初始引导代码随即检查下一引导阶段的完整性并使用硬件可信根密钥对其进行认证。一旦下一阶段软件认证通过,CPU将开始执 行经过验证的潜在的解密代码。这个过程可以根据系统制造商的需要在多个阶段反复进行。这样会创建一个“信任链”,在这个“信任链”中,软件和配置文件层叠 在前一个阶段之上,并可以确保安全性(前提是前一个阶段的安全性得到保证)。每个阶段都经过逐步检查,以确保其合规性。如果任何一个阶段未能通过安全引导 检查,则系统将无法引导和运行。
敏感安全参数(SSP)和数据存储
一般来说,我 们定义SSP的目的是用来包含任何短期密钥、安全会话状态和其他不需要在电源重启后保留的安全参数。FIPS 140-3标准的定义包含SSP定义中的关键安全参数和公共安全参数。他们将关键安全参数(CSP)定义为“任何安全相关的机密信息(例如秘密的加密私 钥、共享机密、口令和PIN等认证数据),这些信息一旦被泄漏或者修改就会损害加密模块的安全性”;将公共安全参数定义为“任何安全相关的公共信息,这些 信息一旦被修改同样会损害加密模块的安全性。”不管具体的定义如何,SSP以及设备制造商认定的任何关键数据都必须得到保护。
图4:分层安全引导流程和信任链
一旦系统安全地完成引导,就会产生需要保护的短期数据。如果该数据存储在安全环境边界之外或者在安全环境边界之内用明文存储,都必须使用某种加密技术予以保护。如果数据存储在安全边界之内,全部边界接口都必须是安全的,同时要防止对明文数据的访问。
在SSP和敏感数据存储中普遍采用的几种方法:
· 内部安全存储器
· 缓存加锁
· 为存往DRAM中的数据加密
第一种方法是提供一种内部安全存储器,不在DRAM中进行外部缓存,一般采用小型SRAM。这个存储器可以用来存储少量数据,但无法为容纳大量数据而进行扩展。
缓存加锁是指在DRAM或数据缓存中指定一个范围,防止存储在这个缓存范围中的数据被回写到外部DRAM中。这样做的效果相当于将缓存加锁部分安放到片 上RAM中。缓存加锁可以在任何一级缓存上实现,但对于处理器的系统缓存来说效果最好。以处理器为参考点,系统缓存一般属于3级缓存,比1级缓存大128 到256倍。加锁1级或者2级缓存也可以实现,但不能过度,以免过多地降低处理器和系统的性能。系统缓存加锁有多个优势。首先,加锁范围大小比经济可行的 专用内部安全存储器更大,从而提供更大的安全数据存储空间。系统缓存加锁的第二个优势在于,它可用于锁定片上安全数据和指令。出于对性能或者安全的考虑, 可将指令锁定在缓存中。例如,可能需要防止某些关键代码段被暴露。在安全引导过程中,该代码可从闪存中解密,然后存放在加锁的系统缓存中,避免在DRAM 中以明文方式暴露。系统缓存加锁适用于少量或中量数据。但是,当缓存线被加锁后,缓存和存储系统的总体性能会受到影响。如果缓存被“过度加锁”,系统性能 就会严重下降。
最后一种方法是为存往DRAM的数据提供某种加密。为DRAM数据加密的这种方法具有更强的扩展性,因为不存在内部 SRAM或者系统缓存加锁带来的大小限制。有两种方案可供讨论。第一种方案是通用的方法,即“确切”地找出哪些是敏感数据,然后给这些数据加密。安全引擎 使用名为“安全上下文”的数据结构来存储密钥和与特定安全会话有关的其他信息。通用解决方案为安全上下文提供解密和加密,或者仅在上下文进入和离开安全引 擎时提供上下文的密钥。这种方法在保护上下文数据方面性能良好,但无法保护尚未被识别的敏感数据。第二种方案是一种可覆盖大量数据的优秀技术,用于为整个 或更大的DRAM段提供可选加密。TS 33.320这样规定:“包括加密密钥、认证证书、用户信息、用户层数据和控制层数据在内的敏感数据不得在家庭基站(HeNB)中以明文方式提供给非授权 的访问。”这项要求可以通过DRAM加密予以满足。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者