动态加载应用程序突破边界
1. 启动过程与封闭模型
1.1 启动过程验证
在启动过程中,系统会进行一系列的验证操作:
- ROM 会验证清单的 RSA 签名,其中 Intel 公钥的 SHA - 256 指纹被硬编码在 ROM 中。
- 启动 ROM 会验证从闪存加载的第一个固件模块的 SHA - 256 摘要。
- 后续模块的完整性由在启动过程中先前已验证并加载的模块之一进行验证。
当模块被加载时,它会执行必要的初始化操作,然后创建一个“工作”线程来等待事件。常见的事件包括系统中断、主机发起的 HECI(主机 - 嵌入式通信接口)消息以及其他模块的服务请求。模块在接收到事件后会处理该事件,然后等待下一个事件。
1.2 封闭模型及其优势
从设计上看,在引擎上运行的模块必须作为引擎固件系统的一部分进行编译,在清单中注册,并预先安装在闪存上。对于给定产品的一组固件应用程序和模块,在编译时就已确定,并且在离开相关机构后无法更改。从这个角度来看,引擎是一个独立的系统,对加载新应用程序持封闭态度。
封闭模型具有显著的优势。在安全管理方面,由于在启动过程和运行时实施了完整性检查机制,引擎的边界得到了很好的保护,攻击者很难向系统注入 rootkit 和其他恶意软件,安全架构无需担心外部应用程序带来的潜在漏洞和缺陷。在产品质量方面,封闭模型使验证过程更加简单,因为功能测试是在预定义且恒定的配置上进行的,一些常见的软件和系统问题,如集成复杂性和组件兼容性问题,在此模型下并不适用。
1.3 封闭模型的缺点
然而,封闭模型也存在一些明显的缺点:
- <
超级会员免费看
订阅专栏 解锁全文
1479

被折叠的 条评论
为什么被折叠?



