论文标题
验证了混合敏感性并发程序的安全汇编
Verified Secure Compilation for Mixed-Sensitivity Concurrent Programs
论文作者
论文摘要
仅通过源代码证明程序不会泄漏敏感的数据在推理和现实之间存在差距,这只能通过考虑编译器的行为来填补。此外,软件并不总是将自己限制在单线读取计算的奢侈品中,并使用静态专用于每个用户的资源来确保其数据的机密性。这导致混合敏感性并发程序,该程序可能会在其线程之间共享内存以在不同时间保持不同灵敏度级别的数据;对于此类程序,尽管有并发影响,但编译器必须保留此类混合敏感性重用的价值依赖性协调。 在这里,我们证明,使用isabelle/hol,可以验证编译器保留非干预,最严格的机密性属性,用于混合敏感性并发程序是可行的。首先,我们提出了精致的概念,该概念保留了我们为支持此类程序而旨在支持的非干预的同时价值依赖的概念。由于证明非干预提供的精炼可能比通常用于验证语义性保护汇编的标准改进要复杂得多,因此我们的概念包括将语义预言与安全性保护问题分开的分解原则。其次,我们证明了这些完善概念适用于已验证的安全汇编,通过在单频道编译器上行使它们,以进行混合敏感的并发程序,这些程序使用静音锁,从通用的命令性语言到通用的Riscyles组装语言。最后,我们在非平凡的混合敏感性并发程序上执行编译器,该程序对现实世界的用例进行建模,从而将其源级的非截断属性保存到汇编级别的模型。 (纸上完整的摘要)
Proving only over source code that programs do not leak sensitive data leaves a gap between reasoning and reality that can only be filled by accounting for the behaviour of the compiler. Furthermore, software does not always have the luxury of limiting itself to single-threaded computation with resources statically dedicated to each user to ensure the confidentiality of their data. This results in mixed-sensitivity concurrent programs, which might reuse memory shared between their threads to hold data of different sensitivity levels at different times; for such programs, a compiler must preserve the value-dependent coordination of such mixed-sensitivity reuse despite the impact of concurrency. Here we demonstrate, using Isabelle/HOL, that it is feasible to verify that a compiler preserves noninterference, the strictest kind of confidentiality property, for mixed-sensitivity concurrent programs. First, we present notions of refinement that preserve a concurrent value-dependent notion of noninterference that we have designed to support such programs. As proving noninterference-preserving refinement can be considerably more complex than the standard refinements typically used to verify semantics-preserving compilation, our notions include a decomposition principle that separates the semantics-preservation from security-preservation concerns. Second, we demonstrate that these refinement notions are applicable to verified secure compilation, by exercising them on a single-pass compiler for mixed-sensitivity concurrent programs that synchronise using mutex locks, from a generic imperative language to a generic RISC-style assembly language. Finally, we execute our compiler on a nontrivial mixed-sensitivity concurrent program modelling a real-world use case, thus preserving its source-level noninterference properties down to an assembly-level model automatically. (Full abstract in paper)