Search papers, labs, and topics across Lattice.
This paper addresses the enforcement of dynamic release information flow policies, a critical advancement for managing confidentiality and integrity in real-world systems where security concerns are not static. The authors introduce a novel type system that not only formalizes a core language for dynamic release policies but also proves its soundness through new proof techniques. Their implementation as an extension to the Rust programming language, alongside practical case studies, demonstrates the effectiveness of this approach in real-world applications like conference reviewing systems and Civitas.
Soundly enforcing dynamic release policies could revolutionize how we handle evolving security concerns in software systems.
Information flow analysis is the de facto method of assessing confidentiality and integrity issues. However, the widespread adoption of information flow analysis in real-world systems is still lacking, partly due to a fundamental gap between theory and practice: the dynamic nature of security concerns in real-world systems goes beyond the scope of existing techniques that assume a static policy (i.e., data secrecy does not change). Recognizing the fundamental gap, a substantial amount of research has studied various aspects of it (e.g., enabling declassification, endorsement, and invocation policies). A recent work takes a step further by formalizing a promising end-to-end policy called dynamic release that unifies prior formalizations by allowing information flow restrictions to downgrade and upgrade in arbitrary ways. However, how to soundly enforce the powerful dynamic release policy is still an open question. In this paper, we present the first type system that enforces dynamic release policy and formally prove its soundness. More specifically, we (1) formalize a core language that enables dynamic release policy, (2) develop a type system that checks dynamic release policy, (3) develop new proof techniques and formally prove that the type system enforces dynamic release policy, and (4) implement a prototype of the type system as an extension to the Rust language, along with case studies on conference reviewing system and Civitas.