根隔离对SoC设计至关重要

描述

OEM 越来越多地要求其下一代系统具有更高的安全性。反过来,系统和片上系统 (SoC) 设计人员也有责任保护敏感资产免受未经授权或恶意访问。在大多数情况下,设计社区选择硬件而不是软件方法来将安全性设计到他们的设计中。

今天,设计师们看到了各种各样的安全处理器品牌。但是,它们中的大多数都遵循几乎相同的芯片架构。最好的特点是基本上有两个域,一个是非安全的,而另一个是安全的,用一个比特将安全域与非安全域分开,图 1。

soc

图 1a 和图 1b – 安全芯片架构的特点是具有两个域。一个是非安全的(图 1b),而另一个是安全的(图 1a),其中一个位将安全域与非安全域分开。

此外,来自不同实体的不同应用程序(其中一个实体可能是 SoC 供应商、设备 OEM、服务提供商、最终用户或设备生态系统中的其他参与者)可能在同一安全域中运行。但是,它们并不是相互隔离的,它们不仅可以访问自己的密钥,还可以访问其他应用程序的密钥。硬件分区不在不同实体之间,它只在安全和非安全之间。

用于安全应用程序的沙箱

实际上,安全处理器使用一位来为安全应用程序创建一个沙箱,图 1a。计算机安全术语中的“沙盒”是指一种软件或硬件结构,通过该结构创建一个单独的、受限制的环境,仅用于运行某些应用程序,通常对其操作有一组特定的限制。

实际上,这个沙箱是用于安全应用程序的,可以说每个安全应用程序都在同一个沙箱中运行。运行安全应用程序的实体之间没有隔离。如果一个安全应用程序正在运行,它与所有其他应用程序一起处于那个“安全”的世界中。在这种情况下,问题出现了,因为不同的实体在安全环境中可能不完全信任彼此。如果一个实体受到恶意攻击,就会危及所有其他实体的安全。

让我们以一个写得不好的数字版权管理 (DRM) 内容保护应用程序为例。它可能会危及在同一处理器上运行的支付应用程序的安全性,并允许访问银行信息。同样,这里的问题是应用程序之间缺乏隔离。一个写得不好或恶意的应用程序可能会危及在该处理器上运行的其他应用程序的安全性。

这是一个缺点。另一个问题是存在范围广泛的攻击,攻击者可以借此改变设计中信号的值。那些所谓的“故障攻击”或“故障攻击”是基于扰乱电路以改变其操作。它们的范围从简单的电源和时钟故障到激光脉冲、电磁脉冲等。此类正确执行的攻击可以将位控制安全模式更改为某些操作从非安全转换为安全,从而允许非安全应用程序访问敏感数据和密钥。

多域和隔离

另一方面,考虑具有多个域或多个信任根的安全处理器内核,如图 2 所示。在这种情况下,每个实体都有一个单独的安全域。并且这些安全域使用强大的硬件安全性彼此完全分离。密钥和硬件资源等安全资产是完全隔离的。

soc

图 2 – 具有多个域或多个信任根的安全处理器内核。

在此安全处理器架构中,每个实体都有自己的一组签名应用程序。当安全处理器从一个应用程序切换到另一个应用程序时,所有上下文都会从安全处理器中清除。当从一个应用程序切换到另一个应用程序时,该安全处理器中不会保留任何数据、密钥或其他信息。唯一的例外是在不同应用程序之间传递消息的能力,如果应用程序编写者明确需要的话。这确保了不同实体之间不能共享上下文。

因此,安全资产完全安全地分配给特定实体,因此默认情况下没有重叠,这意味着不能允许不同的实体访问相同的资源。但是,如果分配得当,重叠是可以接受的。

假设 SoC 供应商使用了一个测试和调试端口。它希望为其 OEM 客户提供相同的测试和调试端口。它们可能允许为 OEM 根设置与为 SoC 供应商的根设置相同的权限位,从而允许访问该特定测试和首次亮相资源。

相反,SoC 供应商可能想要保留其他测试和调试端口而不提供它们。因此,在如何进行这些分配方面具有完全的灵活性,并且很大程度上取决于 SoC 设计人员想要重叠的资源类型。其他安全功能不能重叠。以加密和解密密钥为例。每个实体都有一个单独的密钥空间或一组密钥,它们不能相互共享。

分配给每个根的键

在这种多根信任架构中,一组密钥被分配给每个根。如上所述的一项操作是它们使应用程序能够为每个根进行不同的签名。因此,每个根基本上都有自己的私有应用程序集。当应用程序被加载到安全处理器内核中时,根被识别,然后硬件专门为该根配置自己。

此外,与根关联的密钥提供了根使用的一组完整、隔离的派生密钥。因此,一把钥匙可以变成多把钥匙,这些钥匙可以用于相当多的不同安全操作。但是每个根的每组密钥都是唯一的,一个根无法从另一个根访问密钥,这是硬件强制执行的。

一组权限也与每个根相关联。这些权限与安全处理器内核中的不同硬件资源相关,例如调试和 I/O 引脚。这些不同的资源可以在不同的根之间进行分区,同样是硬件强制执行的。一个 root 可以访问调试端口;另一个根可能没有或只有部分访问权限。

一个根可能能够控制芯片上的某些外部逻辑。另一个根可能能够控制一组不同的外部逻辑,但可能与另一个根不同。在这种情况下,让我们再次使用我们的测试和调试示例。SoC 供应商有一个根,使其能够完全控制测试和调试逻辑并完全控制该 SoC 其他方面的配置。

它可能会向购买其 SoC 的 OEM 授予部分功能,但不是全部。SoC 供应商可能不希望 OEM 能够访问所有测试和调试逻辑,因为 OEM 可能对供应商不想共享的 SoC 技术了解太多。它可能允许 OEM 配置 SoC 的某些部分,但不是全部。

从一个实体到另一个实体的委托是根的另一个方面。就像 SoC 供应商可以将某些权限委托给 OEM 一样,如果 SoC 供应商授予 OEM 这样做的权利,OEM 也可以将某些权利委托给服务提供商。但是,该委托的权利和许可必须是 OEM 已经拥有的权利和许可的子集。

此外,根据业务关系和系统要求,SoC 供应商可能会让 OEM 删除 SoC 供应商的根。这意味着 SoC 供应商将不再能够在 OEM 的设备上运行软件。

对即将推出的 SoC 设计至关重要的根隔离

如今,对于绘图板上的几乎所有设备和系统而言,安全性变得越来越重要。但是,设计人员必须记住,安全有不同的用途,不同的实体需要安全功能。

例如,芯片制造商需要为自己的芯片产品制造和测试提供安全的功能。他们的 OEM 客户也需要针对其特定应用的安全性。服务提供商和其他人可能也需要安全功能。因此,SoC 设计人员需要提供可以由这些不同实体在芯片的整个生命周期中使用的安全性。但是,他们希望在不损害自身安全的情况下实现这一目标。

正如我们在这里所说,这个想法是在应用程序之间进行隔离。一个编写不当或恶意的应用程序可能会危及该 SoC 中所有其他应用程序的安全性。底线是避免每个应用程序容易受到恶意攻击,同时在该 SoC 上运行的所有应用程序之间保持完全信任。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分