根隔离:显式安全性的关键

描述

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

如今,设计人员将获得各种安全处理器品牌。但是,它们中的大多数都遵循几乎相同的芯片架构。它最好的特征是基本上有两个域,一个是非安全的,而另一个是安全的,用一个位将安全域与非安全域分开,图 1。

处理器

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

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

用于安全应用程序的沙盒

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

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

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

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

许多域和隔离

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

处理器

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

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

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

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

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

分配给每个根的键

在此信任体系结构的多个根中,将为每个根分配一组密钥。如上所述的一个操作是,它们使应用程序能够针对每个根进行不同的签名。因此,每个根本质上都有自己的一组私有应用程序。将应用程序加载到安全处理器内核时,将标识根,然后硬件专门为该根配置自身。

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

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

一个根可能能够控制芯片上的某些外部逻辑。另一个根可能能够控制一组不同的外部逻辑,但可能与另一个根不同。在本例中,让我们再次使用我们的测试和调试示例。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
完善资料,
赚取积分