我一直在阅读许多关于RoT的研究文章--信任的根--用于建立从BIOS到内核的连锁信任根。然而,这篇文章的大部分内容都简要介绍了RoT如何为不同的品牌工作。关于RoT的一篇好文章是劳伦斯·刘( Lawrence )的RoT:安全的基础。
但是,我面临的最大问题之一是如何使用引导、操作系统和应用程序建立信任机制,即RoT如何确保它们的真实性。
例如,假设我破坏了引导加载程序,RoT机制如何检测它?它是否检查了引导加载程序代码的哈希,但是如果有公司更新呢?
请给我看相关的文章。
发布于 2021-01-22 23:01:41
问得好!你所链接的那篇文章,对我来说,用了很多话说得很少(我发现它缺乏具体细节)。相反,我的答案将建立在这一页上:
本文使用了与您链接的文章不同的术语。我将使用微软的术语。我相信“安全启动”==“信任之根(RoT)",但我不是百分之百肯定。
Disclaimer1:下面是我对这个复杂过程的理解,我仍然是这个领域的学生。欢迎改正。
Disclaimer2:我对“固件”这个词的使用有点草率,使用它意味着启动序列中的任何预操作系统内核。
安全引导是一小部分固件代码。这是启动的第一件事。它提供了一个地方数据库,其中包括:
如果在给定平台上可用硬件TPM,则这可能是或不可能得到硬件TPM的支持。
安全引导固件本身的
更新
安全启动代码本身不会在运行时进行验证,但是,由于它是在系统启动时运行的第一段代码,所以更新或修改它的唯一方法是要求它更新自己,并且在更新固件存储中的自己的代码之前,它将检查任何更新包上的代码签名。因此,假设您信任设备上提供的原始安全启动代码,您可以信任它的所有更新。
当引导序列中的固件尝试加载另一个固件模块时,它将首先询问安全引导模块“这允许运行吗?”安全启动模块将执行以下检查:
- If no, fail; binary is signed by an untrusted vendor.- If no, hash this binary and check if it is directly listed in the database?
- If yes, succeed; binary is trusted.
- If no, fail; binary is not trusted.这意味着,如果其他固件是由受信任的供应商生成的,或者是在安全引导本地数据库中显式信任的,那么安全引导将只允许其他固件运行。
https://security.stackexchange.com/questions/243709
复制相似问题