一句话:提出 LIO:以 Haskell 库形式实现动态信息流控制,用浮动标签与 current clearance 处理异常下的机密性与完整性。
LIO 是一个基于语言的动态信息流控制(IFC)系统,目标是以 Haskell 库而非修改运行时的方式实现 IFC。它采用粗粒度的浮动标签方案:用可变的 current label 表示计算上下文中数据的敏感级别,读取敏感信息时提升该标签以限制后续效应;同时提供显式标注的 labeled value 封装敏感计算结果,避免 current label 蔓延。LIO 还以 current clearance 约束 current label,提供自主访问控制以应对隐蔽信道,并支持可变引用与异常。异常用于编码并从监视器失效中恢复,在保持数据机密性与完整性的同时,回应了动态 IFC 因监视器失效而泄漏信息的长期担忧。
Abstract We describe a language-based, dynamic information flow control (IFC) system called LIO. Our system presents a new design point for IFC, influenced by the challenge of implementing IFC as a Haskell library, as opposed to the more typical approach of modifying the language runtime system. In particular, we take a coarse-grained, floating-label approach, previously used by IFC Operating Systems, and associate a single, mutable label—the current label —with all the data in a computation's context. This label is always raised to reflect the reading of sensitive information and it is used to restrict the underlying computation's effects. To preserve the flexibility of fine-grained systems, LIO also provides programmers with a means for associating an explicit label with a piece of data. Interestingly, these labeled values can be used to encapsulate the results of sensitive computations which would otherwise lead to the creeping of the current label. Unlike other language-based systems, LIO also bounds the current label with a current clearance , providing a form of discretionary access control that LIO programs can use to deal with covert channels. Moreover, LIO provides programmers with mutable references and exceptions. The latter, exceptions, are used in LIO to encode and recover from monitor failures, all while preserving data confidentiality and integrity—this addresses a longstanding concern that dynamic IFC is inherently prone to information leakage due to monitor failure.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{StefanMMR17,
title = {Flexible dynamic information flow control in the presence of exceptions},
author = {DEIAN STEFAN and DAVID MAZIÈRES and JOHN C. MITCHELL and ALEJANDRO RUSSO},
journal = {Journal of Functional Programming},
volume = {27},
year = {2017},
doi = {10.1017/s0956796816000241}
}