一种安全语言的设计及形式证明.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种安全语言的设计及形式证明

一种安全语言的设计及形式证明 华保健 中国科学技术大学计算机系 合作者:陈意云 李兆鹏 王志芳 葛 琳 软件安全的挑战 软件系统应用越来越广泛,其安全问题也愈发突出 来源:CNCERT/CC 2006年度报告 2007年上半年的统计数据已经超过了06全年的统计数据 程序设计语言本身的安全性对高安全需求软件起着基础作用 现有研究方法及其问题(1) 程序分析的方法 基于这些方法的工具:LC-Lint、Purify和PREFix等 相对简单;可扩展性好;代价相对较低 分析结果一般不具备完备性 类型系统技术 成功用于Java、C#和ML等广泛使用的语言 轻量级语法方法;模块性良好 表达能力有限;不允许显式存储管理 现有研究方法及其问题(2) 类型细化 依赖类型、应用类型和单元素类型等 从不同层面一步增强了类型系统的表达能力 受表达能力限制,仅在不多的论域取得了结果 程序验证和公理语义 携带证明的代码(PCC)、ESC/Java和Spec#等 更通用的框架;表达能力更强 程序员负担重;受限于定理证明器的证明能力 我们的研究目标 安全语言设计和实现 安全语言面向系统程序设计 研究内容 语言设计;公理语义系统;出具证明编译器;语言和公理系统的性质证明等 把携带证明的代码技术(PCC)推向实用 面向系统程序设计语言;更丰富的安全策略 对高安全需求软件的设计和实现技术进行探索 依靠程序设计语言设计和实现技术 本文主要工作和贡献 研究了类型系统和逻辑系统相结合的安全机制 应用到所设计的类C的命令式语言PointerC上 主要特色是定型规则中包含显式副条件 副条件表达更丰富的安全策略 提出了指针逻辑 Hoare逻辑的扩展 证明了语言的安全性和指针逻辑的可靠性 用机械化方法 证明在Coq中完成 源语言--PointerC 源语言PointerC是类C的命令式语言 选取了C语言核心的表达式和控制结构 包含malloc,free操作 为什么选择C? C是最重要的系统程序设计语言之一,但不安全 出于效率考虑 使用类型系统和逻辑系统相结合的静态机制 研究重点是指针操作的安全问题 类型系统、副条件 PointerC定型规则包含显式的副条件 典型示例: 断言语言 扩展的一阶逻辑 必须证明这些副条件 成立 保证程序的安全性 指针逻辑的设计目的 证明副条件成立是困难的 副条件和值相关 传统上依赖运行时动态检查 不成立则抛出异常 Java/C#等 试图静态证明副条件 以Hoare逻辑推理的方式 困难部分是指针操作的安全性 对Hoare逻辑做了扩展,提出指针逻辑 指针逻辑(1) 基本思想 在每个程序点表达指针值的信息 有效、空或者悬空 指针逻辑(2) 基本思想 在每个程序点表达指针值的信息 有效、空或者悬空 指针逻辑(3) 基本思想 以推理规则表达语句给指针信息带来的变化 最强后条件演算 指针逻辑(4) 基本思想 以推理规则表达语句给指针信息带来的变化 最强后条件演算 操作语义 操作语义的定义基于抽象机器模型 包括全局变量区、栈、堆等 操作语义由一系列归约规则组成 语句 在机器模型 上的执行 在机器模型上形式描述安全策略: 无下标越界 无空(悬空)指针引用 无内存泄漏 语言安全性定理及其证明 经过类型系统和指针逻辑检查的程序是安全的 不违反安全策略 证明步骤: 机器模型上形式化安全策略 无数组越界,无空(悬空)指针引用;无内存泄漏 证明安全策略对操作语义是不变式(Invariant) 证明在Coq中完成 机械化证明 指针逻辑可靠性定理及其证明 证明指针逻辑(公理语义系统)对PointerC的操作语义可靠。主要步骤: 给出指针逻辑断言在机器模型上的语义解释 特别考虑了推理规则中的副条件 在基础逻辑中形式化指针逻辑的推理规则 包括断言 证明指针逻辑对操作语义可靠 如果一个断言在语法系统中可证,则它语义有效 证明在Coq中完成 机械化证明 出具证明编译器--PLCC 相关工作 程序性质证明 ESC,ATS等 面向系统编程的安全语言 Cyclone,CCured等 出具证明的编译器 Flint/SML, TouchStone, Special J, TIL/TAL等 语言定义和实现的机械化 SML(Twelf),CMinor(Coq),CAP(Coq)等 进一步的工作 扩展源语言 支持部分指针算术 calloc操作 扩展指针逻辑系统 支持不规则数据结构的推理,如图等 设计和实现出具证明编译器原型系统 研究编译器和定理证明器交互 程序验证和程序优化等 结论 研究了类型系统和逻辑系统相结合的安全机制 应用到所设计的类C的命令式语言PointerC上 主要特色是定型规则中包含显式副条件 副条件表达更丰富的安全策略 提出了指针逻辑

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档