据我所知,信任之根对于在设备上实现安全引导是必要的。如果信任的根来自于硬件安全元素,如HSM/TPM/.
因此,对于没有硬件安全元素的设备,是否有办法在软件中实现信任根?实现RoT从而在此类设备上安全引导的正确/最佳实践是什么?
发布于 2021-05-13 21:01:54
是的你可以。可以使用eFuse存储根证书的公钥。这就成了信任的根源。eFuses只能写一次,一旦eFuses被写入到eFuse数组中就会被吹坏,这是不可逆的。为了防止对第一阶段引导加载程序的物理篡改,必须在非可编程存储上刻录,这种存储必须是物理上难以替换的,如果攻击者试图破坏PCB,则可能会损坏PCB。为此您可以使用CPU芯片。使用公钥,可以使用PKI在第二阶段引导加载器上验证签名。第二阶段,可以用公钥硬编码引导加载程序,以验证内核和内核验证系统。
要撤销根证书的公钥,您必须提供空的eFuse数组,这些数组以后可以通过推送OTA更新来写入新的公钥。若要撤消信任链中后期阶段的公钥,请替换其硬编码公钥并重新命名其签名。对于回滚保护,还可以在eFuse中存储第二阶段引导加载程序的最后已知运行版本,该版本可以在每次引导时验证。如果eFuse数组用完,您就不能再撤销根公钥,因此在绝对必要时应该使用它们。
众所周知,高通、Snap巨龙和三星Exynos使用eFuse来启动信任的根,并验证保修状态。
发布于 2021-05-13 17:49:26
因此,对于没有硬件安全元素的设备,是否有办法在软件中实现信任根?
不是的。当软件被不可信的硬件加载时,您已经失败了。当它甚至不安全的时候,不能称之为安全引导。
https://security.stackexchange.com/questions/249341
复制相似问题