Giter Club home page Giter Club logo

ego's Introduction

EGo

EGo logo

GitHub Actions Status GitHub license Go Report Card PkgGoDev Discord Chat

EGo is a framework for building confidential apps in Go. Confidential apps run in always-encrypted and verifiable enclaves on Intel SGX-enabled hardware. EGo simplifies enclave development by providing two user-friendly tools:

  • ego-go, an adapted Go compiler that builds enclave-compatible executables from a given Go project - while providing the same CLI as the original Go compiler.
  • ego, a CLI tool that handles all enclave-related tasks such as signing and enclave creation.

Building and running a confidential Go app is as easy as:

ego-go build hello.go
ego sign hello
ego run hello

Install

Install the snap

The easiest way to install EGo is via the snap:

sudo snap install ego-dev --classic

You also need gcc and libcrypto. On Ubuntu install them with:

sudo apt install build-essential libssl-dev

Install the DEB package

If you're on Ubuntu 18.04 or above, you can install the DEB package:

wget -qO- https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add
sudo add-apt-repository "deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu `lsb_release -cs` main"
wget https://github.com/edgelesssys/ego/releases/download/v1.0.0/ego_1.0.0_amd64.deb
sudo apt install ./ego_1.0.0_amd64.deb build-essential libssl-dev

Build from source

Prerequisite: Edgeless RT is installed and sourced.

mkdir build
cd build
cmake ..
make
make install

Build via Docker

You can reproducibly build the latest release:

cd dockerfiles
DOCKER_BUILDKIT=1 docker build -o. - < Dockerfile.build

Or build the latest master:

cd dockerfiles
DOCKER_BUILDKIT=1 docker build --build-arg egotag=master --build-arg erttag=master -o. - < Dockerfile.build

This outputs the DEB package.

Optionally build the ego-dev and ego-deploy images:

docker build --target dev -t ghcr.io/edgelesssys/ego-dev -f Dockerfile.release .
docker build --target deploy -t ghcr.io/edgelesssys/ego-deploy -f Dockerfile.release .

Getting started

Now you're ready to build applications with EGo! To start, check out the following samples:

  • helloworld is a minimal example of an enclave application.
  • remote_attestation shows how to use the basic remote attestation API of EGo.
  • attested_tls is similar to the above, but uses a higher level API to establish an attested TLS connection.
  • vault demonstrates how to port a Go application exemplified by Hashicorp Vault.
  • wasmer shows how to run WebAssembly inside EGo using Wasmer.
  • embedded_file shows how to embed files into an EGo enclave.
  • reproducible_build builds the helloworld sample reproducibly, resulting in the same UniqueID.
  • cgo demonstrates the experimental cgo support.
  • azure_attestation shows how to use Microsoft Azure Attestation for remote attestation.

Documentation

  • The EGo documentation covers building, signing, running, and debugging confidential apps.
  • The EGo API provides access to remote attestation and sealing to your confidential app at runtime.

Community & help

  • Got a question? Please get in touch via Discord or file an issue.
  • If you see an error message or run into an issue, please make sure to create a bug report.
  • Get the latest news and announcements on Twitter, LinkedIn or sign up for our monthly newsletter.
  • Visit our blog for technical deep-dives and tutorials.

Contribute

ego's People

Contributors

3u13r avatar alexrudolf avatar danibentrup avatar daniel-weisse avatar flxflx avatar hansven avatar jonathimer avatar katexochen avatar leongross avatar m1ghtym0 avatar nirusu avatar simon-roe avatar thomasten avatar vidalbalt 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.