This paper presents the first machine-checked proof of noninterference for a language with gradual information-flow control, thereby establishing a rock solid foundation for secure programming languages that give programmers the choice between runtime versus compile-time enforcement. Along the way we uncovered a flaw in one of the noninterference proofs in the literature, and give a counterexample for one of the main lemmas. The particular language studied in this paper, $\lambda_{\mathtt{SEC}}^\star$, is based on the GLIO language of Azevedo de Amorim et al. [2020]. To make the design more accessible to other researchers, this paper contributes the first traditional semantics for the language, that is, we define compilation from $\lambda_{\mathtt{SEC}}^\star$ to a cast calculus and design a reduction semantics for the latter that includes blame tracking. In addition to the proof of noninterference, we also mechanize proofs of type safety, determinism, and that compilation preserves types.
翻译:本文展示了第一个经过机器检查的不干涉具有渐进信息流控制的语言的证据,从而为安全编程语言奠定了坚实的坚实基础,使程序员可以在运行时间和编译时间执行之间做出选择。 在我们发现文献中一个不干涉证据存在缺陷的同时,我们发现文学中一个不干涉证据的缺陷,并给一个主要的利玛斯提供了反示例。本文研究的特定语言,即$lambda ⁇ matht{SEC ⁇ tstar$,以阿泽维多·德阿莫林等人的GLIO语言[202020]为基础。为了让其他研究人员更容易获得设计,本文提供了该语言的第一种传统语义,也就是说,我们定义了从$\lambda ⁇ matht{SECZZZZtar$到一个刻度的汇编,并为后者设计了一个包含责任追踪的减少语义。除了不干预证据外,我们还机械化了类型安全、确定论和编译保护类型的证据。