paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Programs from Proofs

从证明生成程序(Programs from Proofs)
TOPLAS 39(2)2017匹配度 2/10 · 论文属于程序验证、静态分析与抽象解释方向,与用户关注的 PL→AI(LLM/Agent 程序的静态分析)和 AI→PL(用 LLM/Agent 改进静态分析/形式化验证)无直接关联,也不涉及浮点程序分析或贝叶斯程序分析。仅在广义程序分析与形式化验证方法上有弱关联。引用 4 inbox
Marie-Christine Jakobs, Heike Wehrheim
dblp: 2026-09-10crossref: 2026-09-10

AI 速览

一句话:提出 PfP 框架,将安全证明转化为易检查程序,使消费者能快速验证不可信代码的安全性。

针对 Proof-Carrying Code 因附加证明证书过大而检查低效、难以在不可信软件提供者与资源受限消费者场景中实用的问题,本文提出 Programs from Proofs(PfP)框架。其核心思想是不把证明附加到代码,而是利用生产者端自动安全证明,将程序转换为易检查形式。具体地,生产者构造抽象可达图(ARG),按需展开控制流自动机(CFA);昂贵分析增量确定展开程度,廉价分析负责安全检查,并由 ARG 生成新程序,使其 CFA 结构与图同构,从而消费者端用廉价分析即可快速判定安全。PfP 是通用框架,可实例化不同分析。作者在可配置程序分析工具 CPAchecker 上实现多种实例,开展实验并与 PCC 技术比较。

问题
PCC 技术常因附加证明证书过大而导致安全检查低效,难以在不可信代码提供者和资源受限消费者之间实现实用的安全执行。
方法
提出 PfP 框架:生产者端通过自动安全证明构造抽象可达图并按需展开控制流自动机,再生成 CFA 结构与图同构的新程序,消费者端用廉价分析快速检查安全。
评估
在可配置程序分析工具 CPAchecker 上实现多种 PfP 实例,进行实验并与 PCC 技术进行比较。
原文摘要(Abstract)

Today, software is traded worldwide on global markets, with apps being downloaded to smartphones within minutes or seconds. This poses, more than ever, the challenge of ensuring safety of software in the face of (1) unknown or untrusted software providers together with (2) resource-limited software consumers. The concept of Proof-Carrying Code (PCC), years ago suggested by Necula, provides one framework for securing the execution of untrusted code. PCC techniques attach safety proofs, constructed by software producers, to code. Based on the assumption that checking proofs is usually much simpler than constructing proofs, software consumers should thus be able to quickly check the safety of software. However, PCC techniques often suffer from the size of certificates (i.e., the attached proofs), making PCC techniques inefficient in practice. In this article, we introduce a new framework for the safe execution of untrusted code called Programs from Proofs (PfP). The basic assumption underlying the PfP technique is the fact that the structure of programs significantly influences the complexity of checking a specific safety property. Instead of attaching proofs to program code, the PfP technique transforms the program into an efficiently checkable form, thus guaranteeing quick safety checks for software consumers. For this transformation, the technique also uses a producer-side automatic proof of safety. More specifically, safety proving for the software producer proceeds via the construction of an abstract reachability graph (ARG) unfolding the control-flow automaton (CFA) up to the degree necessary for simple checking. To this end, we combine different sorts of software analysis: expensive analyses incrementally determining the degree of unfolding, and cheap analyses responsible for safety checking. Out of the abstract reachability graph we generate the new program. In its CFA structure, it is isomorphic to the graph and hence another, this time consumer-side, cheap analysis can quickly determine its safety. Like PCC, Programs from Proofs is a general framework instantiable with different sorts of (expensive and cheap) analysis. Here, we present the general framework and exemplify it by some concrete examples. We have implemented different instantiations on top of the configurable program analysis tool CPA checker and report on experiments, in particular on comparisons with PCC techniques.

链接与引用

DOI 原文 · DBLP

BibTeX
@article{JakobsW17,
  title = {Programs from Proofs},
  author = {Marie-Christine Jakobs and Heike Wehrheim},
  journal = {ACM Transactions on Programming Languages and Systems},
  volume = {39},
  number = {2},
  year = {2017},
  doi = {10.1145/3014427}
}