论文标题

COMMCSL:使用抽象的通勤性证明并发程序的信息流安全性

CommCSL: Proving Information Flow Security for Concurrent Programs using Abstract Commutativity

论文作者

Eilers, Marco, Dardinier, Thibault, Müller, Peter

论文摘要

信息流安全性可确保程序操纵的秘密数据不会影响其可观察到的输出。证明信息流安全性对于并发程序尤其具有挑战性,在此过程中,秘密数据的操作可能会影响线程的执行时间,从而影响不同线程之间的相互作用。即使攻击者没有观察到执行时间,这种内部计时渠道也可能影响程序的可观察结果。并发程序中信息流安全性的现有验证技术试图证明秘密数据不会影响线程的相对时机。但是,这些技术通常是限制性的(例如,因为它们不允许在秘密数据上进行分支),并对执行平台做出了强有力的假设(忽略缓存,具有数据依赖性运行时的处理器指令以及影响执行时间的其他常见功能)。在本文中,我们提出了一种新颖的验证技术,用于并发程序中的安全信息流,以提高这些限制,并且对时序行为没有任何假设。关键思想是证明所有在共享数据通勤上执行的突变操作,以使不同的线程交流不会影响其最终值。至关重要的是,仅对于包含将泄漏到公共输出的信息的共享数据抽取抽象才需要通勤性。与标准的通勤性相比,许多操作要满足抽象的通勤性,这使我们的技术广泛适用。我们在CommCSL中正式化了我们的技术,这是一种关系并发分离逻辑,并支持基于通勤的推理,并在Isabelle/Hol中证明了其合理性。我们基于Viper验证基础架构实现了CommCSL,这是一种基于Viper验证的自动化验证者,并证明了其验证具有挑战性示例的能力。

Information flow security ensures that the secret data manipulated by a program does not influence its observable output. Proving information flow security is especially challenging for concurrent programs, where operations on secret data may influence the execution time of a thread and, thereby, the interleaving between different threads. Such internal timing channels may affect the observable outcome of a program even if an attacker does not observe execution times. Existing verification techniques for information flow security in concurrent programs attempt to prove that secret data does not influence the relative timing of threads. However, these techniques are often restrictive (for instance because they disallow branching on secret data) and make strong assumptions about the execution platform (ignoring caching, processor instructions with data-dependent runtime, and other common features that affect execution time). In this paper, we present a novel verification technique for secure information flow in concurrent programs that lifts these restrictions and does not make any assumptions about timing behavior. The key idea is to prove that all mutating operations performed on shared data commute, such that different thread interleavings do not influence its final value. Crucially, commutativity is required only for an abstraction of the shared data that contains the information that will be leaked to a public output. Abstract commutativity is satisfied by many more operations than standard commutativity, which makes our technique widely applicable. We formalize our technique in CommCSL, a relational concurrent separation logic with support for commutativity-based reasoning, and prove its soundness in Isabelle/HOL. We implemented CommCSL in HyperViper, an automated verifier based on the Viper verification infrastructure, and demonstrate its ability to verify challenging examples.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源