0%

多root key 管理

多个信任根:允许具有不同访问权限的多个实体共享芯片,同时每个实体都有自己的 “虚拟 “安全核心和私有安全域。

分层安全:加强对加密模块和其他安全资源的访问。确保关键密钥只能通过硬件获得,不能通过软件访问。

隔离操作:在远离通用处理的专用安全执行域中执行广泛的安全功能

目的性强:从根本上为安全而设计。具有最先进的防篡改和安全技术,包括抵抗侧信道和故障注入攻击。

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 后可能会有很多并列的服务, 通过权限授权可以访问一组共享的资源