Giter Site home page Giter Site logo

try_fabric's Introduction

Login System Example

This is an example of Fabric, basically modified from the original auction example. It is intended to model a simple login system. A trusted third party will do something like zero knowledge proof to illustrate whether the user's password is equal to the root's password.

The example utilizes feature of the persistent store in Fabric, where if the user / root is shutdown by accident, it will be easy to recover without losing persistent data.

This directory contains the following sub-directories:

  • src: source code for the login example
  • bin: a collection of scripts for running the example
  • etc: configuration files for the example's Fabric nodes

Usage

This example uses three stores ("userStore", "rootStore", "ttpStore").

  1. Cloning the repo from Github. Start in the login example directory and build the initialization code for setting up the principal hierarchy:

    $ git clone https://github.com/yzgysjr/try_fabric.git $FABRIC/examples/login/ $ cd $FABRIC/examples/login/ $ ant

  2. Start up instances of the trusted third party, root stores, and user stores. The 'start-all' script will start each store in a separate xterm window:

    $ bin/start-all

    You can also use an xterm replacement (e.g., gnome-terminal or konsole):

    $ XTERM=gnome-terminal bin/start-all

    Or, if you prefer, you can start each store individually in your favourite terminal emulator:

    $ bin/start-store ttpStore $ bin/start-store rootStore $ bin/start-store userStore

  3. If you are starting from fresh stores, you will need to initialize the application state. Otherwise, skip to step 3 below.

    Run the 'initialize' script to initialize the stores' state. This will initialize the principal hierarchy, publish the example's code to the stores, and initialize the application's state.

    $ bin/initialize

  4. The 'login' script will run the example.

    $ bin/login

  5. Exit the stores with the "exit" command in each console (you can also use CTRL-D).

    You can clean up the stores' persistent state by removing 'var' from the login example directory:

    $ rm -rf var

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 http://www.cs.cornell.edu/projects/fabric/.

[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 http://www.cs.cornell.edu/projects/fabric/.

[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 http://www.cs.cornell.edu/jif/sif/.

[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.

try_fabric's People

Contributors

yzgysjr avatar

Stargazers

Roman avatar Qingfu Wan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.