安全C语言程序验证器中验证条件生成器的扩展设计与实现

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:ssathena
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
交通、电力、军事等关键领域对软件的可靠性和安全性要求越来越高,因为其严重关乎国民的人身和财产安全。C语言在上述基础领域软件的开发中有广泛的应用。C语言灵活高效的特性允许程序员做相当底层的操作,但也导致C程序容易出现非法指针解引用、内存泄漏、缓冲区溢出等缺陷。  形式化验证是一种可以严格保证程序可靠性的方法。本课题组正在研发一个安全C语言验证器,其功能是对携有程序标注的安全C语言程序进行演绎推理,验证程序是否满足预期规范。  安全C语言验证器中验证条件生成器的作用是支持安全C语言和规范语言SCSL的语法,实现每条语句的演算规则,并根据演算规则遍历源程序进行演算,同时产生程序点的断言和合理有效的验证条件。本文的工作是对安全C语言验证器中的验证条件生成器进行扩展。  本文的主要工作和贡献如下:  第一、参与规范语言SCSL中逻辑变量、幽灵代码、字符串类型、带命名行为协议和多函数协议的设计,提高了规范语言的表达能力,同时独立设计和实现了对应的演算规则。  第二、基于Hoare逻辑设计和实现跳转语句goto、continue和break、选择语句switch以及函数调用语句的演算规则,使得验证器可以支持更多C的语法和控制结构,扩大了验证器的适用范围。同时实现了赋值语句前对全称量化断言和谓词的展开,减轻了自动定理证明器的负担。  第三、根据C语言的语义提出了一种适用于程序验证的栈区内存模型,可以支持结构体和多级指针等数据类型,并基于该模型实现了取地址、多级解引用和指针关系运算等操作的演算规则。同时基于该模型提出了一种判断别名的算法,能够在应用Hoare赋值规则前准确完成别名替换。  经过上述扩展设计与实现,提高了安全C语言验证器的证明能力和可用性。目前已经成功验证多例C程序,其中包括快速排序、冒泡排序、字符串匹配等经典算法。
其他文献
当今时代,高校数字化校园建设正在蓬勃发展中,它是教育信息化的关键步骤之一。国内各大高校依照自身的实际情况和建设目标都在不遗余力的进行数字化校园建设,众多高校展开了
近年来神经网络的研究备受关注,大尺寸的神经网模型在应用中表现出优异的性能。大量的神经网络参数,如,神经元与突触连接,使神经网络具有计算密集和存储密集的特点,难以在资
随着信息化进程的加速,现代战争已经进入信息化时代,而信息战的一个重要组成部分便是战场通信系统。如何利用现代数字化和计算机可视化技术来武装和改造部队,并通过改变战场
随着信息技术的发展,各种形式的恶意代码日益增多,现在已经渗透到我们生活的各个方面。现有的安全软件大多需要依赖服务器的支持来更新病毒库,而且对于这些安全软件一直有盗
膜计算是生物计算中一个新的分支,它是从生物体活细胞的结构和功能中抽象出来的计算模型。膜计算也被称为膜系统或P系统。这个研究方向由罗马尼亚科学家Gheorghe.P un于1998年
我国配电网大部分为中性点谐振接地系统,在配电网架空线路的各类故障中,单相接地故障占比最大。在线故障检测和定位是智能电网自愈功能实现的基础,目前故障选线应用比较成熟,在线故障定位基于故障选线提出,目的在保证电力供应的情况下迅速确定、排除单相接地故障,提高供电可靠性。在线故障定位首先需要获取准确的配电网运行信息,配电网分布范围较广,分支繁多,物联网中的许多方法和技术,对准确、快捷采集电网运行时的状态信
近年来,面向服务架构(SOA)已成为系统集成的主要解决方案,SOA的提出在一定程度上解决了多个应用集成的问题。SOA架构的基础设施是企业服务总线(ESB),随着企业业务复杂度的增
随着计算机软硬件和互联网技术的飞速发展,云计算技术得到了广泛的应用。各种不同规模的云数据中心在世界范围内普及开来。然而,如此数量庞大的云数据中心带来的是一个严重的
僵尸网络是融合了当前计算机病毒、网络蠕虫和特洛伊木马等恶意软件技术的、能够可控的发起各种网络攻击活动的平台。在与安全研究者的不断对抗中,僵尸网络使用各种网络协议
语音情感识别技术具有广泛的应用前景,因此语音情感的识别研究具有重要的意义。本文以生气、高兴、中性、悲伤四种情感状态为例,对情感特征的提取、选择以及识别方法进行研究,主