证明携带代码:自动化安全策略验证与结合分析
147 浏览量
更新于2024-06-17
收藏 666KB PDF 举报
"证明携带代码:验证条件生成与安全策略的自动验证"
本文主要探讨了证明携带代码(Proof-Carrying Code, PCC)的概念,这是一种确保代码安全性的方法,允许代码生产者附带机器可检查的证明,以保证代码在消费端的安全执行。PCC系统的关键组件包括验证条件生成器(Verification Condition Generator, VCG)、注释和证明器。在早期的PCC系统中,VCG需要生成易于证明和检查的验证条件,但其复杂性可能导致难以理解和信任。为了克服这个问题,基本的证明携带码要求验证条件直接反映程序的安全属性,从而减少了对VCG的依赖,但这通常会产生复杂的证明对象。
文章提到了一种系统架构(见图1),其中包含了编译器、证明器、分析仪和注释。编译器生成代码,证明器处理证明,而分析仪则可能包括不同的程序分析技术,如类型分析器和间隔分析。分析仪产生的注释用于补充程序的安全信息,这些注释需要被验证。类型分析器可以提供关于类型安全的证明,而间隔分析可能有助于确保程序的内存安全性。这些注释可以通过VCG生成的验证条件进行组合和递增验证,且新的注释可以用已验证的旧注释作为可信事实来支持。
安全策略是PCC的核心,它们定义了代码执行时应满足的安全要求。例如,类型安全、正确的指令解码以及程序计数器的有效范围等。尽管直接表示这些安全属性可能导致高阶逻辑的使用,使得自动证明生成变得复杂,但对于特定策略,如类型系统,仍可以从其复杂性中提取证明。
作者们特别指出,开放验证器(Open Verifiers)代表了一种折衷方案,它们在基础和经典PCC之间寻求平衡,可能允许更多的自动化,同时保持证明的可理解性和有效性。整个系统的可信度取决于最小化不受信任的组件,并确保所有组件,包括VCG和分析器,在形式化验证工具如Isabelle/HOL中进行形式化和验证,以提高整个系统的可靠性。
证明携带代码提供了一种强大的工具,用于确保软件的安全性,通过形式化的方法验证代码和其伴随的证明。这一领域的工作旨在简化验证过程,增强证明的可信任度,同时提高自动化的程度,以便更有效地处理复杂的安全策略。
2021-07-08 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
cpongm
- 粉丝: 5
- 资源: 2万+
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫