多个信任根:允许具有不同访问权限的多个实体共享芯片,同时每个实体都有自己的 “虚拟 “安全核心和私有安全域。
分层安全:加强对加密模块和其他安全资源的访问。确保关键密钥只能通过硬件获得,不能通过软件访问。
隔离操作:在远离通用处理的专用安全执行域中执行广泛的安全功能
目的性强:从根本上为安全而设计。具有最先进的防篡改和安全技术,包括抵抗侧信道和故障注入攻击。
Sharing a Root of Trust is Potentially Risky
一旦进入安全域,一个应用程序被认为是安全的。但如果一个应用程序实际上是恶意的呢?- 该应用程序可能会感染其他人,窃取信息,并将敏感信息暴露给恶意的一方
在一个单一的信任根内,一方的恶意程序可以访问另一方的敏感信息
multi roots of trust
Multiple Roots of Trust 041
相比之下,多个root key可允许不同的实体,如芯片供应商、OEM和服务提供商在同一芯片中拥有自己的 “虚拟 “安全核心,但每个都有一个私有安全域。
每个实体都拥有其签名的应用程序集。当处理器切换应用程序时,所有的上下文都会从处理器中刷新。默认情况下,没有数据、密钥或其他信息持续存在,确保实体之间不共享上下文
密钥被分配给每个根,允许应用程序在每个根中以不同的方式进行签名。
- 一个主根设置每个(子)信任根的权限和特权
- 每个实体及其安全进程/应用程序都被分配到自己的专用信任根
- 当一个应用程序被加载到安全处理器时,根被识别,硬件被配置为该根
初始时, 芯片制造方被分配了master root, 拥有完全的权限
master root 可以授权其他实体创建其他的master root, 也可以限制只有一个master root
为什么允许创建其他的master root ? 通常芯片由芯片方给到oem后, oem 也想拿到所有设备的所有权限.
master root 也可以授权其他的master root 有擦除它的权限, 所以芯片给到oem后, oem可以创建master root, 然后把芯片的master root禁用
- 硬件信任根可以设计成只有授权的软件才能在信任根上运行。
- 在一个有多个根的信任根中,每个根都可以与用于签名(授权)软件的密钥相关联。
- 当一个签名的应用程序运行时,它继承了它所关联的根的权限和密钥
- 由一个根签署的软件不能访问与另一个根相关的数据和密钥
- 尽管应用程序是软件,但对硬件、权限和钥匙的访问权的执行都可以在硬件中执行。
与一个根相关的基础钥匙可以用一个钥匙派生函数来派生新的钥匙。这意味着一个钥匙可以变成许多钥匙, 这些钥匙可以用于非常多的不同的安全操作
- 每一组钥匙对每个根来说都是唯一的
- 一个根没有办法访问另一个根的钥匙,这是硬件强制执行的
- 钥匙是即时派生的,所以它们只在使用时存在,在不使用时清空
例子 汽车芯片
- 芯片制造商需要主根用于制造、测试和调试
- 一级供应商为OEM(汽车制造商)创建模块。一级供应商需要编写软件,测试和调试芯片和模块;在大多数情况下,将抹去芯片主根,并为OEM创建新的主根
- OEM需要使用信任根的所有功能,以及为服务中心和其他方创建新的根。OEM在许多情况下会抹去1级主根,以便OEM可以控制信任根的所有使用
- 服务中心获得有限的权限;例如,没有OEM的授权,不能安装新固件
The Personalization Root key pair may be owned by
- the SoC designer or
- the manufacturing personalization provider
每层的公钥私钥被每个实体持有, 每个实体的安全应用应当被其持有的私钥签名
每一个根都可以被抹去(禁用)
- Personalization Root key 可以通过OTP中的一个位来禁用
- Personalization Root key 在某个量产的阶段后会被禁用
- 禁用某个 root key 的安全应用需要有禁用这个key的权限
- 每个实体的安全应用也能禁用自己的root key(被授予了相应权限时).
例子
Secure Application Management & the Secure Boot Use Case 051
For the secure boot use case Secure Application Dev1:
- Dev1 Root 可以被用作secure boot流程, secureboot 流程可以视作 dev1 root的安全应用
- Dev1 Root 有一组资源, secureboot 流程中需要访问这些资源, 且有权限访问这些资源.
- Dev1 Root 下的安全应用不能访问 Dev2 root1 或 root2 的资源, 除非被授予了相应的权限.
secure boot 流程做完后, Dev1 root 的安全应用就不再需要了
Dev2 root1 可以为boot 起来的系统(OS)提供后续的密码学的服务
Dev2 root2 的安全应用 可以访问独立或共享的资源:
- root2 后可能会有很多并列的服务, 通过权限授权可以访问一组共享的资源