可信计算是一种信息系统安全新技术,包括可信硬件、可信软件、可信网络和可信计算应用等诸多方面。
2007年,中国国家自然科学基金委员会启动“可信软件重大专项”支持可信软件的研究。
软件的可信性问题也日益突出,以高可信软件工程技术为重要内容的软件研究成为软件技术研究的热点之一[高可信软件工程技术]。所谓可信软件,通常是指在特定环境下其运行行为及其结果符合人们预期,并在受到干扰时仍能够提供连续服务的软件[可信软件期初研究重大研究计划综述]。
目前软件可信性验证的主要进展如下:
形式化方法在可信软件技术中有重要的应用与实践[formal methods: practiceand experience]。从理论框架上看,抽象解释理论是一个重要的方向[Abstract interpretationbased formal methods and future challenges]。从技术上看,软件分析以软件为对象通过静态或动态的方法进行人工或自动分析,以验证、确认、监控或发现软件性质(或者规约、约束),取得重要进展[软件分析技术进展]。例如,Coverity [www.coverity.com]、C Global Surveyor [precise andscalable static program analysis of NASA flight software],ASTREE [a static analyzer for large safety-critical software]等静态分析工具能较好地分析程序中是否有运行时错误,包括未初始化变量访问、空指针引用、数组访问越界等等。基于抽象解释的软件分析工具ASTREE。
静态分析工具往往检验与应用无关的程序性质,例如无空指针引用等,如果要验证一些应用相关的性质(如实践响应时序)则可以运用模型检验技术。
模型检验是形式验证一个令人瞩目的途径[Clarke E M. model checking.Massachusetts: MIT press,2000]。其基本思想是把待验证的系统抽象为又穷状态系统,所期望的系统性质用时序逻辑公式等来表达,模型检验技术通过又穷状态上的高效搜索来判断待验证系统是否满足所期望的性质。如果不满足,则给出一个系统行为的反例说明系统为何不满足性质。
近年,软件系统模型检验[Jhala R. software modelchecking. Acm comput surv,2009]是个热点,它的主要挑战之一是如何应对软件系统比硬件系统更为研究的状态爆炸问题。
一个应用模型检验的实例:NASA在其软件验证中应用了模型检验工具,并研发了工具Java Pathfinder [http://babelfish.arc.nasa.gov/trac/jpf],JPF通过对以java虚拟机为基础的Java程序的状态模型进行构造与搜索(core JPF)来对用户定义的关键性质进行检验。成功应用于一个数字引擎操作系统DEOS的验证[verifying time partitioning in the does scheduling kernel formalmethods]。首先, 利用程序切片技术进行了切片, 去除与期望性质无关的代码 , 然后以此代码为基础进行了抽象和环境生成后作为JPF模型检验工具的输入, 其中运用了状态压缩、偏序归约和启发式搜索等技术来缓解模型检验的状态爆炸问题 如果性质不满足则进行源级调试和维护。
把静态与动态的分析验证技术结合起来是未来软件可信性保证的重要方向,一些工作已经展示了其前景[unassisted and automaticgeneration of high-coverage tests for complex systems programs][dynamicsymbolic execution for invariant inference]。
在可信性评估时也强调证据手段的多样性,从而建立一个综合的证据链。例如英国学者littlewood和Wright提出了用贝叶斯信念网(bayesianbelief net)来建立多支撑证据论证,评估的结论可以综合运用测试方法获得的证据与通过验证方法获得的证据。[the use ofmultilegged arguments to increase confidence in safety claims forsoftware-based systems: a study based on a bbn analysis of an idealized example]
这是根据沈院士的介绍得出的大致的可信计算的几个研究领域。
沈昌祥,张焕国,王怀民,王戟,赵波,严飞,余发江,张立强,徐明迪.可信计算的研究与发展[J].中国科学:信息科学,2010,40(02):139-166.