一种用于指针程序安全性证明的指针逻辑陈意云华保健葛琳王志芳(中国科学技术大学计算机科学与技术系,合肥230026)(中国科学技术大学苏州研究院软件安全实验室,苏州215123)摘要:在高可信软件的各种性质中,安全性是关注的重点,其中软件满足安全策略的证明方法是研究的热点之一
本文根据我们所设想的安全程序的设计和证明框架,为类C语言的一个子集设计了一个指针逻辑系统
该逻辑系统是Hoare逻辑系统的一种扩展,它用推理规则来表达每一种语句引起指针信息的变化情况
它可用来对指针程序进行精确的指针分析,所获得信息用来证明指针程序是否满足定型规则的附加条件,以支持程序的安全性验证
该逻辑系统也可用来证明指针程序的其它性质
关键词:软件安全,指针逻辑,Hoare逻辑,指针分析,类型系统中图法分类号:TP3011引言在高可信的各种要求中,安全性(包括safety和security)是关注的重点
Safety是指软件运行时不引起危险、灾难的能力,而security是指软件系统对数据和信息提供保密性、完整性、可用性、真实性保障的能力
本文所讲的安全性主要是指safety,但是软件的safety和security是有联系的,黑客通常就是利用缓冲区溢出、数组访问越界、悬空指针访问等低级的safety错误,来破坏系统和获取未经授权的控制等
因此提高safety有助于保证security
程序性质证明(而不是历史上的程序正确性证明)领域近十年来有了很大的发展,许多学者提出了不同的思路,这些思路主要采取基于类型的或基于逻辑的方法,用于高级语言程序或低级语言程序的性质证明
基于类型方法的典型研究有类型化汇编语言(TypedAssemblyLanguage)[1]和类型细化(typerefinement)理论[2]的研究
基于逻辑方法的典型研究有携带证明的代码(Proof-CarryingCode,简称PC