基于 SMM 的 TCB 的最小架构

问题

如何实现TCB的最小化一直是系统开发者及安全工作者追求的目标,一个最小化的TCB不仅可以使保证程序正确运行所需要依赖集足够小,从而使得对于程序完整性和运行结果正确性的测量更简易可靠。而且对于远程验证,不需要发送整个系统的信息,可以有效地避免被验证主机内部信息的泄露。

传统的TCB包括,BIOS, DMA, bootloader, OS,所要验证应用程序高层或更高层的应用程序集,应用程序本身。要验证某一个应用程序的部分的安全敏感代码的执行的可信,要包含所有的这些。其中OS包含上百万的代码,隐藏着很多的已知和未知的bug,在OS中运行的其他应用程序更包含了很多bug,这些都大大地增加了验证的困难度,降低了验证结果的可信度。

如今很多有很多关于TCB最小化的研究,很多利用了虚拟机有效的减小了TCB的大小,但是现如今的VMM仍然包含十几万的代码,并且随着功能的增加代码量还在急剧的增长。Flicker利用了硬件虚拟化技术,将敏感代码放在隔离的环境执行有效的实现了TCB的最小化,但是由于其使用了最新的技术,所以不能运用到传统的系统上。

方法

本系统提出了基于SMM隔离环境的最小化的TCB架构,利用SMM产生的隔离环境,通过建立动态信任根有效的实现具有和Flicker的类似的最小化特性,同时由于SMM是Intel 80386开始就提供的一种保护模式,所以该架构可以有非常广应用范围,让更多传统系统实现了TCB的最小化。

架构图 架构图

实验

主要将这个架构应用到三个实例中,通过实验的测试该结构可以在OS被感染的情况下,依然有效的对安全敏感代码进行保护,实现了最小化的TCB。在性能测试中对TCB最小化进行了一些性能的评估。

总结

我们的提出基于SMM的最小化TCB架构,可以使TCB的大小减小到最小,验证者只需要信任一部分我们提供的少量初始化代码,和安全敏感代码本身,就可以对执行结果进行有效的信任。该架构可以很好的适用于传统配备硬件虚拟化的电脑,具有很好的通用性。通过实验,该架构可以有效的保证敏感代码的安全,执行的可信任性。

资助:本项目得到中国重点基础研究基金973项目和国家自然科学基金资助。