电子说
作为 SoC 和系统设计人员,您是否正在寻找在不牺牲安全性的情况下保持处理效率的方法,尤其是在听到了很多关于 Spectre、Meltdown 和 Foreshadow 的信息之后?许多设计人员正在寻求 RISC-V 的开放指令集架构 (ISA) 来设计从头开始就安全的安全引擎。
这些安全引擎充当协处理器,因为主 CPU 管理并发执行多个进程的主要工作负载。然而,设计人员意识到其中许多应用都需要安全硅 IP 隔离应用之间的安全资产。
如果您的 SoC 有多个需要访问安全资产的应用程序,最好这些应用程序不能访问彼此的资产。例如,不希望他们的银行应用程序能够访问他们的 DRM 视频播放密钥,反之亦然。另一个好处是一个应用程序中的安全漏洞不会泄露另一个应用程序使用的安全资产。
为了满足这些要求,安全处理器,如Rambus的 CryptoManager 信任根 (CMRT) ,必须具有多个硬件信任根,这些信任根在安全硅 IP 本身内受支持但隔离。简而言之,每个实体都有自己的虚拟信任根,并且无需信任其他实体即可执行安全功能。
信任根 (RoT) 提供了可信计算环境中的安全基础。为了支持多个根,安全硅 IP 必须能够识别当前根 i(即,每个根必须具有处理器已知的唯一标识符)。
一旦根被识别,安全硅 IP 必须应用该根的特定策略。该策略作为一组在硬件中强制执行的权限来实现。这些权限描述了根对加密处理器中可用的安全和非安全资产的访问。可以通过这样一种方式建立权限,即给定根对资产的访问与任何其他根完全隔离。如果需要该功能,还可以允许两个根访问同一组资产。
建立 RoT
要建立信任根,安全硅 IP 应用程序开发人员必须创建公钥和私钥对。椭圆曲线密码术 (ECC) 或 RSA 密钥对适用于此目的。为公钥计算一个唯一的加密值,称为散列摘要,并将此散列摘要用作根的唯一标识符。必须将公钥的散列摘要安全地提供给安全硅 IP 的非易失性存储器 (NVM)。私钥用于计算应用程序二进制映像的数字签名,该二进制映像旨在在安全硅 IP 内执行。
在运行时,当应用程序加载到安全硅 IP 中时,签名、虚拟根公钥和其他元数据将附加到应用程序的映像中。安全硅 IP 使用附加到映像的公钥来确定该公钥的哈希摘要是否与存储在处理器 NVM 中的虚拟根的 ID 匹配。如果找到匹配项,则使用公钥来验证应用程序本身的哈希摘要的签名。如果图像的签名得到验证,安全处理器会在硬件中应用应用程序的根权限。
请注意,创建应用程序的实体拥有私钥。安全硅 IP 永远不会看到这个密钥,该密钥由实体安全地持有并且永远不应该暴露。
KDF 在隔离应用程序中的作用
安全硅 IP 内部的硬件密钥派生功能 (KDF) 对于进一步提供虚拟根之间的隔离是必要的。KDF 应基于标准,例如美国国家标准与技术研究院 (NIST) SP 800-108。KDF 接受几个用于派生密钥的输入。为了提供根之间的隔离,唯一的根标识符用作 KDF 的一个输入。
当应用程序加载到安全硅 IP 中时,根标识符被编程到 KDF 中。这意味着由两个不同的根私钥签名的两个不同的应用程序不能派生同一组密钥,即使 KDF 的所有其他输入参数都相同。因此,在安全硅 IP 内执行的应用程序可以使用 KDF 来派生其自己独特的应用程序对称密钥或 ECC 密钥对。
使用 KDF 派生应用程序密钥的另一个好处是您不需要将密钥存储在 NVM 中。静态存储在内存中的密钥总是容易受到攻击。下次应用程序需要使用特定密钥时,应用程序会执行与之前执行的相同的密钥派生过程。
使用此 KDF 的优点是您可以重复重新导出相同的对称或 ECC 公钥和私钥对。它们总是即时派生的。一旦应用程序完成了密钥,它就会从系统中刷新。
简而言之,两个不同的虚拟根不能创建相同的键。原因是可以使用 KDF 派生的密钥使用根的标识符作为数据的一部分来派生这些密钥。这就是在应用程序之间实现加密隔离的方式。
其他资产
的隔离 安全硅 IP 可以将在给定虚拟根上下文中执行的应用程序的隔离扩展到派生密钥之外。例如,希望应用程序不共享 NVM 的区域。此外,人们可能希望限制对安全硅 IP 的通用输入和输出 (GPIO) 的访问。给定虚拟根权限所应用的策略可以维持对此类资产的严格访问控制。
一些应用程序要求安全硅 IP 通过安全总线将派生密钥或从 NVM 读取的密钥传送到外部处理单元。由于其单一用途或性能原因,可以使用该外部处理单元。必须设置虚拟根的权限,以便只有应将密钥传递给外部处理单元的应用程序才能这样做。不打算将密钥传递给外部处理单元的其他应用程序不应访问安全总线。
结论
在此安全保护伞下,为此安全硅 IP 开发应用程序的实体维护其特定虚拟根的私钥。因此,其他实体无法访问这些派生密钥、特定密钥总线、NVM 内存的地址范围、GPIO 引脚或任何其他相关数据。这可以阻止其他人尝试通过攻击或意外导出这些关键数据。例如,开发人员的错误不会导致错误地访问他人的资产。
这些资产在硬件中受到保护。一旦在硬件中为基本密钥、NVM、安全密钥目的地和其他相关资产设置了权限,应用程序就无法修改这些权限。它们是在硬件中设置的,不能被覆盖。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !