lio: Labeled IO Information Flow Control Library
The Labeled IO (LIO) library is an information flow control (IFC) library. IFC is a mechanism that enforces security policies by tracking and controlling the flow of information within a system. Unlike discretionary access control (such as UNIX file permissions), IFC permits scenarios in which untrusted computation may have the ability to manipulate secret data without having the ability to further disclose that data.
LIO is an IFC library that can be used to implement such untrusted
computations. LIO provides combinators similar to those of IO
for
performing side-effecting computations (e.g., modifying mutable
references, forking threads, throwing and catching exceptions, etc.)
To track and control the flow of information, LIO associates a
security policy, called a label, with every piece of data. A
label may, for example, impose a restriction on who can observe,
propagate, or modify the data to which it applies. Unlike standard
IO operations, the LIO counterparts check the vailidity of labels
before performing the (underlying IO) side-effecting computation.
For example, before writing to a labeled variable, LIO asserts that
the write will not violate any security policies associated with the
data to be written.
Most code should import module LIO and whichever label format the
application is using (e.g., LIO.DCLabel to use the format that
ships with the library). Side-effecting code should be specified as
actions in the LIO
monad. See LIO.Core for a description of the
core library API, LIO.Label for a discussion of labels, and
LIO.Run for functions allowing one to run an LIO
computation
from the IO
monad.
WARNING: For security, untrusted code must always be compiled with
the -XSafe
and -fpackage-trust
SafeHaskell flags. See
http://www.haskell.org/ghc/docs/latest/html/users_guide/safe-haskell.html
for more details on the guarantees provided by SafeHaskell.
Modules
- LIO
- LIO.Concurrent
- LIO.Concurrent.LChan
- LIO.Concurrent.LChan.Trans
- LIO.Concurrent.LMVar
- LIO.Concurrent.LMVar.Trans
- LIO.Concurrent.LChan
- LIO.Core
- LIO.Core.Trans
- LIO.DCLabel
- LIO.Delegate
- LIO.Error
- LIO.Error.Trans
- LIO.Exception
- LIO.LIORef
- LIO.LIORef.Trans
- LIO.Label
- LIO.Labeled
- LIO.Labeled.Trans
- LIO.Monad
- LIO.Run
- LIO.TCB
- LIO.TCB.LObj
- LIO.TCB.MLObj
- LIO.Concurrent
Downloads
- lio-0.11.7.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 0.0.1, 0.0.2, 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.9.0.0, 0.9.0.1, 0.9.1.0, 0.9.1.1, 0.9.1.2, 0.9.2.0, 0.9.2.2, 0.10.0.0, 0.11.0.0, 0.11.0.1, 0.11.2.0, 0.11.3.0, 0.11.4.0, 0.11.4.1, 0.11.4.2, 0.11.5.0, 0.11.6.0, 0.11.7.0, 0.11.7.1 |
---|---|
Dependencies | base (>=4.7 && <6.0), bytestring, containers, hashable [details] |
License | MIT |
Author | Hails team |
Maintainer | Deian Stefan <deian at cs dot ucsd dot edu> |
Category | Security |
Home page | https://github.com/plsyssec/lio |
Bug tracker | https://github.com/plsyssec/lio/issues |
Source repo | head: git clone https://github.com/PLSysSec/lio.git |
Uploaded | by DeianStefan at 2020-09-23T20:20:07Z |
Distributions | NixOS:0.11.7.1 |
Reverse Dependencies | 4 direct, 0 indirect [details] |
Downloads | 18255 total (63 in the last 30 days) |
Rating | 2.0 (votes: 1) [estimated by Bayesian average] |
Your Rating | |
Status | Docs not available [build log] All reported builds failed as of 2020-09-23 [all 3 reports] |