首页> 外文学位 >Interfacing compilers, proof checkers, and proofs for foundational proof-carrying code.
【24h】

Interfacing compilers, proof checkers, and proofs for foundational proof-carrying code.

机译:连接编译器,证明检查器和基础证明代码的证明。

获取原文
获取原文并翻译 | 示例

摘要

Proof-Carrying Code (PCC) is a general framework for the mechanical verification of safety properties of machine-language programs. It allows a code producer to provide an executable program to a code consumer, along with a machine-checkable proof of safety such that the code consumer can check the proof before running the program. PCC has the advantage of a small Trusted Computing Base (TCB), since the proof checking can be a simple mechanical procedure. A weakness of previous PCC systems is that the proof-checking infrastructure is based on some complicated logic or type system that is not necessarily sound.; Foundational Proof-Carrying Code (FPCC) aims to further reduce the TCB size by an order of magnitude by building the safety proof based on the simple and trustworthy foundations of mathematical logic. There are three major components in an FPCC system: a compiler, a proof checker, and the safety proof of an input machine-language program. The compiler should produce machine code accompanied by a proof of safety. The proof checker verifies, sometimes also reconstructs, the safety proof before the program gets executed.; We have built a prototype system. Our prototype is the first end-to-end FPCC system, including a type-preserving compiler from core ML to SPARC (based on SML/NJ), a low-level typed assembly language LTAL, a foundational proof-checker Flit, and a nearly complete machine-checkable soundness proof. The system compiles Core ML programs to SPARC code, accompanied with programs in a low-level typed assembly language; these typed assembly programs serve as the proof witnesses of safety of the corresponding SPARC machine code. Our Flit proof checker includes a simple logic programming engine enabling efficient proof-checking.; In this thesis, I'll explain the design of interfaces between these components and show how to build an end-to-end FPCC system. We have come to the following conclusion: a type system (a low-level typed assembly language) should be designed to check machine code; and the proof-checking should be factored into two stages, namely typechecking of the input machine code and verification of soundness of the type system. Since a type checker can be efficiently interpreted as a logic program, Flit's logic programming engine enables efficient proof-checking.
机译:验证代码(PCC)是对机器语言程序的安全属性进行机械验证的通用框架。它允许代码生产者向代码使用者提供可执行程序,以及机器可检查的安全证明,以便代码使用者可以在运行程序之前检查证明。 PCC的优点是小型可信计算库(TCB),因为证明检查可以是简单的机械过程。以前的PCC系统的一个弱点是,证明检查基础结构是基于一些不一定健全的复杂逻辑或类型系统。基础证明代码(FPCC)旨在通过基于简单和可信赖的数学逻辑基础构建安全证明来进一步将TCB大小减小一个数量级。 FPCC系统中包含三个主要组件:编译器,证明检查器和输入机器语言程序的安全证明。编译器应产生带有安全证明的机器代码。证明检查器在执行程序之前验证(有时还重建)安全证明。我们已经建立了一个原型系统。我们的原型是第一个端到端FPCC系统,包括从核心ML到SPARC的类型保留编译器(基于SML / NJ),低级类型化汇编语言LTAL,基础证明检查器Flit和几乎完整的机器可检查的稳健性证明。系统将Core ML程序编译为SPARC代码,并附带低级类型的汇编语言的程序;这些类型化的汇编程序可作为相应SPARC机器代码安全性的证明。我们的Flit证明检查器包括一个简单的逻辑编程引擎,可进行有效的证明检查。在本文中,我将解释这些组件之间的接口设计,并说明如何构建端到端FPCC系统。我们得出以下结论:应该设计一种类型系统(一种低级的类型化汇编语言)来检查机器代码。验证检查应分为两个阶段,即输入机器代码的类型检查和类型系统的健全性验证。由于类型检查器可以有效地解释为逻辑程序,因此Flit的逻辑编程引擎可以进行有效的证明检查。

著录项

  • 作者

    Wu, Dinghao.;

  • 作者单位

    Princeton University.;

  • 授予单位 Princeton University.;
  • 学科 Computer Science.
  • 学位 Ph.D.
  • 年度 2005
  • 页码 157 p.
  • 总页数 157
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类 自动化技术、计算机技术;
  • 关键词

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号