Coder Social home page Coder Social logo

ntk97 / graphene_try Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sourabh-natesh/graphene_try

0.0 0.0 0.0 375.84 MB

License: GNU Lesser General Public License v3.0

Shell 0.33% Python 6.05% Dockerfile 0.18% Emacs Lisp 0.01% Makefile 1.91% C 88.74% C++ 1.34% Assembly 1.26% GDB 0.13% Meson 0.05%

graphene_try's Introduction

Graphene Library OS with Intel SGX Support

Documentation Status

A Linux-compatible Library OS for Multi-Process Applications

What is Graphene?

Graphene is a lightweight guest OS, designed to run a single application with minimal host requirements. Graphene can run applications in an isolated environment with benefits comparable to running a complete OS in a virtual machine -- including guest customization, ease of porting to different OSes, and process migration.

Graphene supports native, unmodified Linux applications on any platform. Currently, Graphene runs on Linux and Intel SGX enclaves on Linux platforms.

With Intel SGX support, Graphene can secure a critical application in a hardware-encrypted memory region. Graphene can protect applications from a malicious system stack with minimal porting effort.

Our papers describe the motivation, design choices, and measured performance of Graphene:

Graphene is not a production-ready software (yet)

Graphene is at a point where it is functionally ready for testing and development, but there are some known security issues that require more attention. The effort to review and harden security of Graphene is ongoing. Our roadmap is to address the remaining production blockers roughly by the fall of 2021. Of course, with additional help from the community, we can meet these milestones sooner!

The most important problems (which include major security issues) are tracked in #1544 (Production blockers). You should read it before installing and using Graphene.

How to get Graphene?

The latest version of Graphene can be cloned from GitHub:

git clone https://github.com/oscarlab/graphene.git

At this time Graphene is available only as source code. Building instructions are available.

How to run an application in Graphene?

Graphene library OS uses the PAL (libpal.so) as a loader to bootstrap applications in the library OS. To start Graphene, PAL (libpal.so) will have to be run as an executable, with the name of the program, and a "manifest file" (per-app configuration) given from the command line. Graphene provides two options for specifying the programs and manifest files:

  • option 1 (automatic manifest):

    [PATH TO Runtime]/pal_loader [PROGRAM] [ARGUMENTS]...
    (Manifest file: "[PROGRAM].manifest" or "manifest")
  • option 2 (given manifest):

    [PATH TO Runtime]/pal_loader [MANIFEST] [ARGUMENTS]...

Running an application requires some minimal configuration in the application's manifest file. A sensible manifest file will include paths to the library OS and other libraries the application requires; environment variables, such as LD_LIBRARY_PATH; and file systems to be mounted.

Here is an example manifest file:

loader.preload = "file:LibOS/shim/src/libsysdb.so"
loader.env.LD_LIBRAY_PATH = "/lib"
fs.mount.libc.type = "chroot"
fs.mount.libc.path = "/lib"
fs.mount.libc.uri = "file:[relative path to Graphene root]/Runtime"

More examples can be found in the test directories (LibOS/shim/test). We have also tested several applications, such as GCC, Bash, and Apache. The manifest files for these applications are provided in the individual directories under Examples.

For the full documentation of the Graphene manifest syntax, see the Graphene documentation.

Automatically running applications via Graphene Shielded Containers (GSC)

Applications deployed as Docker images may be graphenized via the gsc tool.

Getting help

For the full documentation of the Graphene, see the Graphene documentation.

For any questions, please send an email to [email protected] (public archive).

For bug reports, post an issue on our GitHub repository: https://github.com/oscarlab/graphene/issues.

Deprecated Code

We have some branches with legacy code (use at your own risk).

Build with Kernel-Level Sandboxing

This feature is marked as EXPERIMENTAL and no longer exists in the master branch. See EXPERIMENTAL/linux-reference-monitor.

graphene_try's People

Contributors

yamahata avatar dimakuv avatar mkow avatar donporter avatar chiache avatar stefanberger avatar boryspoplawski avatar hw42 avatar woju avatar pwmarcz avatar omeg avatar jiazhang0 avatar vahldiek avatar zhangckid avatar bigdata-memory avatar adombeck avatar vijaydhanraj avatar mic92 avatar pangzi85480 avatar skris14 avatar smherwig avatar dayeol avatar rainfld avatar woonhak avatar woachk avatar blukat29 avatar neilbd avatar martinschmatz avatar lejunzhu avatar jurobystricky 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.