lio-0.9.0.0: lio.cabal
Name: lio
Version: 0.9.0.0
Cabal-Version: >= 1.8
Build-type: Simple
License: GPL
License-File: LICENSE
Author: HAILS team
Maintainer: HAILS team <hails at scs dot stanford dot edu>
Synopsis: Labeled IO Information Flow Control Library
Category: Security
Description:
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.
Different from discretionary access control (think UNIX file
permissions), with IFC you can execute an untrusted computation on
your secret data and be sure that it does not leak it or overwrite
it.
.
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., accessing the
filesystem, modifying mutable references, throwing exceptions, etc.)
To track and control the flow of information, LIO associates a
security policy, usually 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 labeled as such. Different from
standard IO operations, the LIO counterparts usually take an
additional parameter for the label which they inspect before
actually performing the (underlying IO) side-effecting computation.
So, before writing to a file LIO asserts that the write will not
violate any security policies associated with the file or the data
to be written.
.
Most code should import module "LIO" and whichever label format the
application is using (e.g., "LIO.DCLabel"). All untrusted code
should have type 'LIO', which trusted code can safely execute with
'evalLIO'. See "LIO" for a description of the core library API.
.
The paper that describes the core of LIO, including motivation and
formal modeling/proofs, is available here:
<http://arxiv.org/abs/1207.1457>
Extra-source-files:
examples/dclabel.hs
examples/gate.hs
examples/waitAndCatch.hs
examples/fsExample.hs
Library
Build-Depends:
base >= 4.5 && < 5.0,
transformers >= 0.2.2 && < 1.0,
containers >= 0.4.2.1 && < 0.5,
bytestring >= 0.9.2.1 && < 1.0,
cereal >= 0.3.5.1 && < 0.4,
filepath >= 1.3.0.0 && < 1.4,
directory >= 1.1.0.2 && < 1.2,
xattr >= 0.6.1 && < 1.0,
zlib >= 0.5.3.1 && < 0.6,
SHA >= 1.5.0.0 && < 1.6,
time >= 1.2.0.5 && < 1.5
Ghc-options: -Wall -fno-warn-orphans
Exposed-modules:
-- * Top-level exporter
LIO
-- * Label definition
LIO.Label
-- * Core library
LIO.Core
LIO.TCB
-- * Labeled values
LIO.Labeled
LIO.Labeled.TCB
-- * Labeled IORefs
LIO.LIORef
LIO.LIORef.TCB
-- * Gates
LIO.Gate
-- * LIO privileges
LIO.Privs
LIO.Privs.TCB
-- * Concurrency
LIO.Concurrent
LIO.Concurrent.TCB
LIO.Concurrent.LMVar
LIO.Concurrent.LMVar.TCB
-- * Time library
LIO.Data.Time
-- * DCLabels
LIO.DCLabel
LIO.DCLabel.Core
LIO.DCLabel.Privs
LIO.DCLabel.Privs.TCB
LIO.DCLabel.Serialize
LIO.DCLabel.DSL
-- * File system
LIO.Handle
LIO.FS.TCB