论文部分内容阅读
随着信息技术的飞速发展,计算机日益渗透到各个领域,人们的工作生活越来越多地依赖于计算机。相应地,计算机的可信性问题也成为研究热点。软件作为计算机的灵魂,控制着计算机的工作方式,提高软件的可信性成为一个关键的需求。
解决软件可信性问题需要从不同的角度进行研究。本文的研究是在可信计算组织(TCG)提出的可信计算(Trusted Computing)技术基础之上,从软件运行环境的角度入手,着力于解决软件运行时的可信性问题。一个可信的软件运行环境应当具备提高软件运行可信性的能力、证明软件运行可信性的能力和证明自身的能力。围绕这三个能力,本文对一些关键的支撑技术进行了研究,包括:针对应用程序的可信运行环境架构;软件运行的保护机制;软件运行可信性模型的形式化分析;软件运行可信性的度量机制;软件配置可信性的度量机制;运行环境中的动态信任根;操作系统的运行可信性等。本文的主要创新点包括:
(一)提出了一个基于虚拟机的可信运行环境槊构
为了有效地保护软件运行,并同时降低开销,本文提出一个基于虚拟机的可信运行环境架构。该架构采用两层虚拟化,下层采用传统的虚拟机技术,划分普通域和安全域,关键的安全服务运行在安全域中。上层采用轻量级虚拟化,即在普通域的操作系统之上创建隔离环境,对绕过传统保护措施的特殊访问机制(例如跨进程的内存访问机制)进行虚拟化,使得一个进程不会受其他隔离环境中的进程影响。
(二)提出了三种运行可信性模型,并给出形式化分析以及相应的度量机制
本文提出了一种软件运行的抽象描述方法,并在此基础上研究了软件运行的可信性模型。共提出了三种模型,分别为基于运行完整性的模型、基于控制流完整性的模型和基于数据流完整性的模型,并对它们分别进行了形式化的分析。研究了基于这些模型的可信性度量机制,提出了一种编译阶段的插桩方法,对编译阶段的抽象语法树(AST)进行变换,自动加入度量代码,不会给开发人员带来额外的负担。着重研究了对控制流完整性的度量,提出了在运行过程中动态检查函数指针类型的方法。该方法使用带标签的类型基调来进行快速类型匹配,时间开销和空间开销都很低。
(三)提出了一种基于语义的软件配置可信性的度量方法
已有的软件配置度量方法是度量配置文件的Hash值,而查询者则需要为配置文件的每个可信版本保存一个Hash值以进行检查,这种方法不能处理配置文件有大量可信版本的情况。本文提出的方法是把配置文件的内部语义信息与查询者的可信策略进行逻辑比较,该方法可以简洁地表达查询者的可信策略。
(四)提出了一种基于动态信任根的操作系统可信性证明支持方案
本文讨论了运行可信性度量中的动态信任根问题,分析了在没有硬件支持和有硬件支持两种情况下动态信任根的创建。对操作系统的动态可信性采用多种度量技术相结合的方法,保证准确性。把证明服务运行在安全域中,以保证其安全性,并提出了跨虚拟机的内存和文件访问方法,为证明服务提供了支持。
以上一些关键支撑技术方面的创新,可以增强软件运行环境对软件运行的保护能力,以及向用户证明软件运行可信性的能力,为建立用户到计算机系统的信任关系提供了良好的支持。