安全C语言的设计与实现

来源 :中国科学技术大学 | 被引量 : 0次 | 上传用户:xiaobaitu11
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在社会高度信息化的今天,社会生产生活高度依赖软件系统,因此软件系统的安全性与可靠性也就显得愈加重要,通过形式化验证的方式保证程序的安全是一种重要的手段。形式化验证有两种方法,一种是模型检测,模型检测能够通过遍历系统所有的状态空间,自动验证有穷状态的系统并构造不满足性质定理的反例。另一种是演绎推理,它使用形式化的方式对程序进行数学推理,尽管以这种方式实现的自动验证工具早已有实验室开发出来,但是至今都无法在工业界使用。究其原因在于自动定理证明方面的困难,因为不管是断言语言描述能力的提升、循环不变式的推断、别名判断和验证条件的证明等,最终还是受到自动定理证明器能力的影响。鉴于这些原因,在研究自动定理证明的同时,应当适当考虑降低对自动定理证明期待,可以通过设计安全的语言去提高合法程序的门槛,同时设计规范语言来描述程序代码的行为性质以降低定理证明器的负担。本文主要贡献:第一,设计了一种面向验证的C语言子集,称为安全C语言。在基于HOare逻辑推理规则对程序进行形式验证过程中,每当使用赋值公理{Q[E/x])x=E{Q}(Q是赋值语句的后断言,Q[E/x]表示对Q中所有x代换为E)时,必须保证后断言Q与赋值语句x=E中没有潜在别名,否则Q[E/x]是最弱前断言的结论不可靠,而C语言广泛存在的别名,给基于Hoare逻辑的推理带来难题。本文在基于C99标准之上,从别名的角度讨论了C语言的安全性以及其会给程序验证带来的问题,并以此为启示设计了安全C语言,在安全C语言中要求对C语言中各种类型增加编程限制来使得对这些被限制类型的变量操作表现得较为规范,同时还要求使用标注对程序加以说明以减轻定理证明器负担。第二,设计了一种规范语言,规范语言定义了安全C语言要求的标注的语法语义及使用方式,规范语言以形式化的方式描述C程序的行为性质,这些对C程序行为性质的描述最终都会传递给自动定理证明器,从而更大程度上帮助自动定理证明器认知程序的行为,并最终验证程序行为是否符合规范中的描述。在规范语言中还专门引入形状描述来表示指针相关性质,以解决指针引起的别名导致程序难以验证这一问题。第三,基于clang实现了安全C语言要求的编程约束检查以及规范语言的分析。
其他文献
近年来随着交通技术的进步,交通设施不断得到改善,智能交通系统(ITs,Intelligent Transport System)的应用也越来越广泛。智能交通系统中的交通诱导子系统是出行和运输管理系
随着以太网的普及和宽带应用的发展,光纤到户(FTTH)被普遍认为是一种理想的综合接入方案。自2003年起,ITU-T陆续推出了G984.X系列标准来定义吉比特级无源光网络(GPON)系统。G
边缘是图像最基本的特征。边缘检测是图像处理领域最重要的研究课题之一,在模式识别、纹理分析、特征提取领域有着广泛的应用,受到学者的广泛关注。目前在边缘检测研究领域已
现代计算机技术的迅猛发展极大地促进了科学计算可视化的发展,二维离散矢量场可视化是科学计算可视化的重要组成部分。目前,可视化的应用领域十分广泛,几乎涉及自然科学与工
时延测试是检验电路时序正确性的有效手段,作为集成电路测试的一个关键环节,在芯片制造中被广泛使用。国际半导体蓝图预测2020年集成电路特征尺寸将达到10纳米,不断提高的工
数据库技术是信息化社会的重要基础,数据库课程是国内高校计算机专业的必修课程。数据库教学中高效能、高质量实验技能训练,对提高课程的教学质量起着至关重要的作用。因此,
麻醉机作为在现代医疗中必不可少的器械之一,不仅可以在病人手术中进行全身麻醉使用,而且还可以替代危重病人的自我呼吸。麻醉机系统是一个复杂的系统,它涉及到机械、控制、
随着互联网和移动互联网的快速发展,如何高效地组织和管理海量的网页信息越来越成为棘手的问题。网页分类研究作为Web挖掘的一个基础步骤,在搜索引擎、主题爬虫和维护目录式
随着移动智能手机设备的广泛使用和针对手机的移动应用开发技术的迅速发展,用户界面设计变成了一项复杂和耗时的工作。研究一种有效率的用户界面开发方法,对于减少界面设计的
全球信息化时代的到来,使得信息技术在各行各业的应用日益广泛和深入。在这样一个时期,信息安全保障工作,尤其是确保基础网络、重要信息系统和信息内容的安全,已成为信息化发展中