了解硬件信任根

作者:Andrew Elias,安全IP研发部,Synopsys公司

作为消费者,我们越来越依赖于互联设备。诸如智能手机、手表和家庭自动化系统等设备正在成为我们日常生活的一部分,而且我们希望他们能够正确运行,同时保护好我们的个人信息。但遗憾的是,并不是所有这些设备都能够安全地运行,从而有可能使我们的个人数据,甚至使我们人身都处于危险之中。

例如,在2016年晚些时候,研究人员已经证明黑客可以通过一种方式让人们受到伤害:远程访问特斯拉Model S车型的控制系统。此漏洞使研究人员能够访问和控制制动系统、发动机、天窗、门锁、后备箱、侧视镜,等等(图1)。这个漏洞存在于信息娱乐和WiFi连接之中,研究人员能够借此攻击它并利用它来访问汽车的控制器局域网(CAN)总线。研究人员负起责任并向特斯拉报告了这个问题。特斯拉随后提供了一个无线软件更新。但特斯拉并没有就此止步 -- 他们还采取了一项新措施对安装到CAN总线上的任何新固件强制执行一套代码署名政策。

虽然特斯拉没有公布他们到底是如何在其系统中实施该安全性措施的,但在其SoC中采用硬件信任根将会给他们带来非常强大的安全边界。

图1:对互联汽车进行安全攻击的示例

图1:对互联汽车进行安全攻击的示例

硬件信任根的组件

硬件信任根可以由以下四个基本构件来定义:

  1. 保护性硬件提供可信执行环境(TEE),供特权软件运行。
  2. 至少,它必须执行一个或多个经过验证的密码功能,例如基于AES的加密。
  3. 必须具有某种形式的篡改防护机制,并可用于整个运行时间。
  4. 一个主机可以与之交互的灵活但简单的用户界面,这种交互通过主机CPU和/或主控制器切换GPIO来进行。

为了满足所有这些标准,一个硬件信任根将包括各种组件,这首先从一个安全边界security perimeter)开始。该安全边界定义了SoC上需要保护的内容。它可以通过各种方式来实现,包括经由一个网关连接到主总线的专用总线。

其次,信任根将有一个运行安全软件/固件的安全CPU。对于硬件信任根中所支持的大多数安全功能,其实施方式由在该CPU上运行的软件来定义。CPU周围的资源将协助提高这些功能的安全性和性能。

信任根的第三个元素是运行时内存。在CPU上运行软件时,设计人员需要保护软件所需要的运行时数据,更明确地说就是STACK(栈)数据、HEAP(堆)数据和全局数据。这些数据中将包含明文方式的密钥以及其他敏感信息。确保这个区块周围的安全性至关重要。

接下来是防篡改,它对于硬件信任根不可或缺。在安全CPU上运行外来代码之前,需要对这些代码进行验证。这可以通过许多方式来实现,例如,使用只能由硬件信任根访问的专用ROM。

尽管大多数加密函数都可以在软件中得到支持,但加密技术在使用硬件加速器时通常可以占用更少的内存资源并且能够更快地运行。借助于硬件加密加速器,一方面可以保持高性能,另一方面可以降低CPU的频率,从而能够节省功耗、减少运行时内存,并因此节省SoC的面积。这对于那些因其安全性功能而需要高级性能需要高性能安全功能的成本敏感型应用至关重要,例如汽车应用。

硬件信任根需要一个真随机数发生器(TRNG)。这个模块总是能够产生各种安全功能所需要的高质量熵。安全地、不受篡改地访问这个模块是至关重要的。如果对TRNG的访问受到破坏,将导致许多安全性功能出现安全漏洞。

例如,许多协议生成临时信息以保护端点之间的连接。用于产生这些临时信息的高质量熵降低了可预测性,从而保护了信息。通过干扰这个进程,可以提高可预测性,从而会增加协议的安全性漏洞。

包含一套安全时钟安全计数器,对于需要进行可靠时间测量的应用非常重要。只有当硬件信任根能够访问无法被篡改的时钟源时,使用安全时钟才会有效。这种类型的时钟的一个常见例子是安全实时时钟(RTC),它通常是电池供电,并以相对较低的时钟频率运行。例如,应用程序可以使用这样的时钟来管理任何基于时间的权限策略。

硬件信任根的最后一个组件是安全存储。对持久存储进行安全的访问对于需要状态知识(state knowledge)的应用来说是必不可少的。例如,只有当硬件信任根能够安全地访问非易失性存储器(NVM)时,设备的反回滚(anti-rollback)功能才可能真正地安全。信息不能被篡改至关重要,而且对该信息的访问也不能被篡改同样重要。

硬件信任根的功能

硬件信任根的核心是它所支持的安全性功能。这些功能提供了便利性,同时也在所有的操作阶段(如关机、上电、运行时操作以及与外部实体通信)为SoC产品生命周期管理提供了强有力的保护。

安全监控可以用于SoC的上电和运行时操作期间。这将确保SoC的组件以及组件之间的交互能够正常运行。例如,该功能可以在主机CPU执行时监视主机指令代码。插入恶意指令的企图将会导致硬件信任根向主机发回通知。

安全检验/验证负责借助密码算法检验SoC上代码和/或数据的有效性。该检验操作必须以精细的操作方式来运行,而硬件信任根可以保证这一点。这是上电阶段的理想选择,并且能够确保正确的启动过程。不仅如此,它也可以在运行时阶段使用,例如,与需要正确验证证书的应用一同使用。常见密码操作的例子包括RSA签名验证和ECDSA。

存储保护可以提供一种在SoC上提取明文数据并利用加密和验证安全地对其进行保护的途径。对于设备绑定而言,这种保护可以采用设备唯一密钥(DUK),数据只能由拥有该DUK的设备成功读取。

安全通信在成功地完成了验证和密钥交换协议之后才能够进行。安全通信通常使用临时对称会话密钥进行加密,而在其他情况下,则使用HMAC密钥进行验证。这些密钥(也包括来自协议的主临时密钥)是在硬件信任根内部生成的,因此受到保护并且不受任何片上攻击的影响。

密钥管理将密钥资料保存在硬件信任根之内。只允许间接访问这些密钥,并根据应用层依照权限和策略进行管理。假设权限级别是正确的,密钥的任何导入都必须经过验证,而且密钥的任何导出都必须进行封装,以确保对秘密资料的持续保护。常见密钥管理应用的例子包括硬件安全模块(HSM)采用公钥加密标准(PKCS)#11接口应用程序来管理密钥的策略、权限和处理。

DesignWare tRoot H5硬件安全模块

DesignWare® tRoot™ H5硬件安全模块(HSM)是Synopsys公司高度安全的硬件信任根,它能够让互联设备安全地、唯一地识别和验证自身,以便为远程设备管理和服务部署创建安全的通道。tRoot的先进设计能够解决复杂的威胁,其方式是在设备关机、启动、运行时以及与其他设备或云端通信期间保护设备。tRoot在整个设备生命周期中持续一贯地提供安全性,为SoC设计人员提供功率、尺寸和性能方面的超级高效的组合。

图6:具有信任根的DesignWare tRoot H5硬件安全模块

图2:具有信任根的DesignWare tRoot H5硬件安全模块

DesignWare tRoot H5 HSM提供了高度的安全性,因为TEE在硬件中是隔离的。运行在CPU上的软件定义了所支持的安全性功能,实现了高度的可扩展性和灵活性。诸如安全指令控制器和安全数据控制器等逻辑块提供了顺利构建安全功能的能力。tRoot HSM支持多级安全启动、安全更新以及安全调试等安全功能。此外,它还提供了密钥管理支持,能够使用PKCS#11接口来帮助管理静态密钥和临时密钥。

tRoot HSM可以在系统中实现,无需锁定内存,因为它可以共享系统中已有的内存资源。其独特的体系结构可以有效地适应未来的安全性要求和标准,并实现功能、服务和环境的个性化,从而在包括火爆的物联网市场在内的许多市场中实现业务增长和赢利。tRoot支持各种各样的附加功能,包括远程设备和功能激活、安全密钥配置和管理、安全通信、安全的现场固件更新,等等。