请教下:TEE安全启动程序是存储在ROM中还是在FLASH中?若是在FLASH中,其是否通过ROOT方式更新或修改?谢谢
白大侠说:TEE 引导flow 在整个trusted boot chain 中,rom 和 flash中可能存储了不同stage 的boot 代码,rom 中代码作为root trusted code,加载flash 或其他存储设备中的第二级 boot image,第二级image 甚至第三级的待会才是真正负责加载TEE image
MTS补充:flash中的TEE启动程序,应是可被ROOT修改的。程序放在FLASH中就是为了方便更新修改,如此,TEE安全性怎么保证呢?
修改后可能会导致签名失效吧?
引导加载启动过程会先验证签名吗?由谁验证呢?
应该要由上一级来验证其签名
MTS:是由RoM开始一级一级验证签名吗? 这样,TEE完全装载运行是否时间很长?
白大侠:有签名验证,或者每一阶段的image 都是AES 之类的标准加密的,篡改了image 以后,boot完整性验证不过就fail了.验证过程可以专用硬件模块做offloading 加速.
热心码农:是的,一级一级验证签名。时间上取决于系统性能,如果不够的话,可以用硬件加速
MTS:想确认:ARM TrustZone内核中都是有专门的RoM存放初始安全引导及签名验证程序?而后以此为基础一级一级验证。RoM目前有多大? 目前ARM TrustZone内核有硬件加速模块吗?
白大侠:ROM 的设计每家SOC vendor 可能都不一样,整个boot chain 的flow 也不一定不相同. ROM 有多大,这取决不同SOC的设计,与ROM提供的功能有一定关系. 有没有硬件加速,不同SOC有不同的设计.需不需要签名,与你实际的应用场景有关, 也与SOC vendor 提供给你的solution 有关. TEE 一般指运行在 secure world EL1和EL0 的image,和 EL3中的secure monitor code 分开梳理可能更容易点.
ARM有篇文档叫Trusted Board Boot Requirements(TBBR),介绍如何实现secure boot,Arm Trusted Firmware也实现了TBBR,不过每个公司实现的可能有些不一样。
ATF的分为BL1,BL2,BL31,BL32,BL33,基本上是可以这么认为BL1类似BootROM是存在ROM作为信任根,BL2是Secure bootloader,Monitor,PSCI的code都是在BL31,都是存着在flash上,启动是进行逐级校验形成信任链