Static information flow control (IFC) systems provide the ability to restrict data flows within a program, enabling vulnerable functionality or confidential data to be statically isolated from unsecured data or program logic. Despite the wide applicability of IFC as a mechanism for guaranteeing confidentiality and integrity -- the fundamental properties on which computer security relies -- existing IFC systems have seen little use, requiring users to reason about complicated mechanisms such as lattices of security labels and dual notions of confidentiality and integrity within these lattices. We propose a system that diverges significantly from previous work on information flow control, opting to reason directly about the data that programmers already work with. In doing so, we naturally and seamlessly combine the clasically separate notions of confidentiality and integrity into one unified framework, further simplifying reasoning. We motivate and showcase our work through two case studies on TLS private key management: one for Rocket, a popular Rust web framework, and another for Conduit, a server implementation for the Matrix messaging service written in Rust.
翻译:静态信息流通控制(IFC)系统能够限制程序内的数据流动,使脆弱的功能或机密数据能够静态地与无保障的数据或程序逻辑隔开。尽管IFC作为保证保密和完整性的机制 -- -- 计算机安全所依赖的基本特性 -- -- 的广泛适用性,但现有的IFC系统几乎没有什么用处,要求用户解释复杂的机制,如安全标签标签的标签以及这些标签内保密和完整性的双重概念。我们建议了一个与以前的信息流通控制工作有很大差异的系统,选择直接解释程序员已经工作过的数据。我们这样做,自然地、无缝地将相互分离的保密和完整性概念合并为一个统一的框架,进一步简化推理。我们通过两个案例研究来激励和展示我们的工作:一个是火箭,一个流行的Rust网络框架,另一个是Conduit,一个是Rust撰写的矩阵信息服务服务器。