首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有安全引导的TPM使用

没有安全引导的TPM使用
EN

Security用户
提问于 2022-04-08 08:50:26
回答 1查看 683关注 0票数 1

我被要求提高公司物联网设备的安全性,并加密存储分区。它是一个通用的基于arm的设备,目前可以从各种来源(USB、网络、sd卡等)启动。

该公司希望添加一个TPM芯片来执行分区加密。

我是否正确地认为,一个缺乏安全引导的系统,例如,通过网络引导可以引导任何操作系统的系统,都不可能是安全的?我设想网络引导的OS可以要求TPM芯片解密加密的分区,这表明这个系统几乎没有实际安全性。

最后,如果有一个uboot变体使用TPM芯片来实现诸如短靴这样的安全引导,这实际上是安全的吗?我情不自禁地认为,一个允许任何引导加载程序运行的系统,将允许任何安全机制在足够的时间内被反向设计。

EN

回答 1

Security用户

发布于 2023-01-04 09:23:31

很有可能很安全地做这件事。常用的方法是使用平台配置登记册(PCRs)来“封存”卷加密密钥,这是位存器和其他TPM--支持卷加密方案--的方法。加密密钥(或用于派生密钥的值)存储在(可能在) TPM中,其策略是只有在某些PCRs有其预期值的情况下才能释放。虽然可用的PCRs集略有不同,但一般概念在所有情况下都是相同的: PCRs包含系统一直使用到给定时间点的数据滚动散列。输入PCRs的第一批数据是在“信任度量的核心根”( CRTM )执行期间完成的。CRTM通常是不可写的代码,它“扩展”了一些关键代码--通常是设备的低级固件( PCR和类似设备上的BIOS/UEFI)--并将该代码的配置数据扩展到另一个PCR中。然后,该代码(低级固件)将扩展下一阶段的代码,例如引导加载程序或最小解密实用程序等,直到您进入主操作代码为止。以这种方式扩展到PCR中的代码被称为PCR“测量”;对代码的任何更改都将导致PCR中的不同值。

当您生成加密密钥并使用TPM策略将其存储到TPM中时,卷加密就进入了这个故事,TPM策略本质上说,“只有当下面的PCRs集有其当前值时,密钥才可用”。通常,您希望这是对代码的每个PCR,直到解密代码将接管的程度,或者至少是对代码的每个PCR,直到所测量的代码本身将在进一步的章节中验证密码签名,直到解密代码。因此,在启动进程未被篡改的情况下(而且只有在此情况下),密钥才可用。攻击者修改固件、引导加载程序或解密工具(或类似于没有完全OS的嵌入式设备)--无论是直接地,还是通过从不同的引导设备/程序启动--将意味着PCRs没有相同的值,并使解密密钥不可用。

请注意,此过程不会阻止启动替代系统,也不会从本质上验证系统是否使用可信密钥进行签名(尽管所测量的代码可能执行这样的验证,PCRs不知道也不关心)。这些功能是安全启动的保障。相反,此过程只是确保只有在启动序列(直到某个点)与密匙被密封时相同的情况下才释放密钥。

有针对基于TPM的卷加密的攻击。首先,您显然需要防止恶意代码在过了解密过程打开密钥的点后执行。在PC机和手机上,这是操作系统安全特性的领域;在嵌入式设备上,您可能只是不允许任何方法在引导过程中达到这一点之后运行任意代码。您还需要防止外部系统(例如通过Thunderbolt或PCI Express连接器,或在板上调试接口)对直接内存访问( DMA )进行保护,或者完全阻止DMA,或者限制DMA读取解密密钥所在的地址(也不需要写入任何地址,因为可以用来加载获取和显示解密密钥的任意代码)。这些担忧在所有的卷加密方案中都很常见,不能通过安全启动或类似的方式直接阻止(尽管没有安全启动,可能会修改一些非加密的数据以在密钥被打开后控制系统,从而绕过OS的安全控制)。

在一些情况下,与基于TPM的加密相关的安全引导可以直接为加密提供更多的安全性。例如,“冷引导”攻击是让系统正常启动的地方,因此卷加密密钥被打开并存储在RAM中,以便对加密卷进行解密(并在写入时加密)。然后,设备被关闭,并-在RAM失去它的电荷-重新启动的固件,不擦除RAM在启动。PCRs将不一样,但这并不重要;恶意固件可以从从正常引导中保存的RAM中读取明文密钥。这种攻击在具有独立RAM的设备上要容易得多,因为这种攻击可以非常冷(例如使用低温冷液体),以将RAM中的数据的断电寿命延长到分钟,并允许从一个设备中取出数据并安装到另一个设备(如果可能的话,完全避开安全启动)。以这种方式攻击SoC更棘手,但本质上并不是不可能的,因为通常有一种方法可以使板在不擦除内存的情况下重新启动/加载代码,即使这不是官方支持的。但是,使用安全引导可能会防止恶意固件运行,破坏冷引导攻击,即使攻击者可以在不擦除或丢失RAM解密密钥的情况下启动设备。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/261028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档