Fabric
======
Fabric is a language and runtime system that supports secure federated
distributed computing. This is a quick-start manual to get you started
running some Fabric examples. A more detailed manual can be found in
the doc/manual directory of this distribution, or on the web at
.
More information about Fabric, including the latest release, can be
found at the Fabric website
.
User support and feedback
-------------------------
If you use Fabric, we'd appreciate your letting us know. We welcome
comments, bug reports, and discussion about Fabric on the Fabric users
mailing list .
This is a low-traffic mailing list, to which we will also post
notifications of new releases of Fabric and other related announcements.
Setting up Fabric
=================
Requirements
------------
This Fabric distribution builds on Linux and OS X. Fabric 0.3.0
builds against Jif 3.5.0 and Polyglot 2.7.1. Both
are included in the distribution. JDK 7 or later is required; we have
tested with the Oracle and the OpenJDK implementations. OpenSSL is used
to sign certificates. Fabric is compiled with the Apache Ant build tool.
The following command will install the requisite tools on an Ubuntu
12.04 or 14.04 system:
$ sudo apt-get install openjdk-7-jdk openssl ant
Once the tools are installed, unpack the distribution in a location of
your choice and change into the distribution directory:
$ tar zxf fabric-0.3.0.tar.gz
$ cd fabric-0.3.0
Configuring
-----------
Before using Fabric, you must configure the scripts in the `bin`
directory. From the top-level directory, run:
$ ant bin
If the configurator is unable to find the JDK, Polyglot, or Jif, it
will prompt you to set the appropriate properties in
`config.properties`.
Building
--------
_This step is optional._ Fabric comes pre-compiled as Jar files in the
`lib` directory. However, if you wish to rebuild Fabric, run `ant` from
the top-level directory:
$ ant
For other useful build targets, run `ant -p` from the top-level
directory.
Example programs
================
The `examples` directory in the distribution contains several example
Fabric programs. Each example includes a separate README describing how
to build and run the example. The Fabric nodes required to run each
example come pre-configured. We briefly list the examples here.
- `examples/hello`: Every programmer's favorite program, ported to
Fabric. This example creates a persistent object containing the
message "hello world" and then outputs that message on the console.
- `examples/sif-hello`: A demonstration of the Fabric port of the
Servlets with Information Flow (SIF) library [3]. This example
shows how web services can be built on top of Fabric.
- `examples/travel`: A more complete demonstration of Fabric's
features. This application involves coordination between an
airline, bank, and customer to negotiate the purchase of a ticket.
Each principal (airline, bank, and customer) also has a web-based
user interface written using the SIF library.
- `examples/auction`: A mobile bidding-agent program. This
application demonstrates the mobile-code support of Fabric [1]. It
models an auction in which participants submit confidential
strategies for bidding and selling.
- `examples/friendmap`: Another mobile-code demonstration. This
program models a mash-up of social network and a mapping service to
map a friend's confidential location.
- `examples/OO7`: This is an implementation of the OO7 Object
Oriented Database Benchmark [4]. It is written using FabIL, the
intermediate language for Fabric, and thus does not benefit from
the static information-flow checking that the full Fabric language
provides.
- `examples/blog`: This is a simple web application implemented in
FabIL. It is similar in structure to the Course Management System
that we used for evaluating performance of Fabric [2].
References
==========
[1] Owen Arden, Michael D. George, Jed Liu, K. Vikram, Aslan Askarov,
and Andrew C. Myers. Sharing mobile code securely with information
flow control. In Proc. IEEE 2012 Symposium on Security and Privacy,
pages 191–205, San Francisco, CA, USA, May 2012. Software release
at .
[2] Jed Liu, Michael D. George, K. Vikram, Xin Qi, Lucas Waye, and
Andrew C. Myers. Fabric: A platform for secure distributed
computation and storage. In Proc. 22nd ACM Symposium on Operating
Systems Principles (SOSP), pages 321–334, Big Sky, MT, USA, October
2009. Software release at
.
[3] Stephen Chong, K. Vikram, and Andrew C. Myers. SIF: Enforcing
confidentiality and integrity in web applications. In Proc. 16th
USENIX Security Symposium, pages 1–16, Boston, MA, USA, August
2007. See .
[4] Michael J. Carey, David J. DeWitt, and Jeffrey F. Naughton. The OO7
Benchmark. In Proc. ACM SIGMOD 1993 International Conference on
Management of Data, pages 12-21, Washington, DC, USA, May 1993.