Code Monkey home page Code Monkey logo

keystone's Introduction

Keystone: An Open-Source Secure Enclave Framework for RISC-V Processors

Documentation Status Build Status

Visit Project Website for more information.

Introduction

Keystone is an open-source project that builds trusted execution environments (TEEs) for RISC-V systems. Its hardware-enforced and software-defined memory isolation enables trusted computing (a.k.a. confidential computing) with various threat models and functionalities. The implementation is platform-agnostic, making Keystone portable across different RISC-V platforms with minimal engineering efforts.

Goals

Keystone is a free and open framework for architecting and deploying TEEs on RISC-V hardware platforms. The project's goals are:

  • Enable TEE on (almost) all RISC-V processors: Keystone aims to support as many RISC-V processor cores that follow RISC-V standard ISA and sub-ISAs as possible. This will help hardware designers and manufacturers to enable TEE with minimal efforts.

  • Make TEE easy to customize depending on needs: while providing simple TEE features, Keystone also aims to allow various customization that depends on platform-specific features or non-standard sub-ISAs. We borrow the concept from software-defined network, where hardware platform provides primitives and the software leverages the primitives to implement specific functionalities or meet security requirements.

  • Reduce the cost of building TEE: Keystone aims to reduce the cost of building TEE or TEE-based systems. We achieve this by reusing the implementation across multiple different platforms, reducing hardware integration cost, reducing verification cost, and integrating with existing software tools. We hope that anyone can simply extend Keystone to build their own novel TEE design with very low cost.

Status

Keystone started as an academic project that helps researchers to build and test their ideas. Now, Keystone is an Incubation Stage open-source project of the Confidential Computing Consortium (CCC) under the Linux Foundation.

Keystone has helped many researchers focus on their creative ideas instead of building TEE by themselves from scratch. This resulted in many innovative research projects and publications, which have been pushing the technical advancement of TEEs.

We are currently trying to make Keystone production-ready. You can find the latest general roadmap of Keystone here

Here are some ongoing and/or planned efforts towards the goal:

  • Technical Improvements: Make Keystone more usable and on par with existing industry solutions, including memory isolation improvement, better application and hardware support, and additional features.

  • Parity with Industry Standards: Make Keystone follow the industry standard. This includes standard cryptography, measured boot, and remote attestation protocols.

  • Hardware Integration: Partner with RISC-V hardware designer/vendor to fully integrate with the hardware. This includes integration with hardware root-of-trust, memory encryption engine, and crypto accelerators.

Documentation

See docs for getting started.

Hardware Support

Keystone requires a standard RISC-V platform with a hardware root of trust --- including secure key storage and measured boot. Currently, no hardware root of trust has been designed or manufactured specifically for Keystone. If you have a open-source root-of-trust we'd love to integrate with it!

As this project focuses more on the software stack and the toolchain, you can still run the full Keystone software stack on top of a few RISC-V platforms without a real root-of-trust. See https://github.com/keystone-enclave/keystone/tree/master/sm/plat for the supported platforms. In general, generic should work with most of the standard RISC-V cores as long as they support:

  • RV64 with SV39 addressing mode (or RV32 with SV32)
  • M/S/U privilege modes
  • More than 4 PMP registers

For full security, platform architect needs to provide the followings

  • Entropy source (and ideally a platform specific random number generator)
  • Measured boot
  • Secure on-chip key storage

Keystone doesn’t provide high-performance hardware-based memory encryption, as it requires a proprietary memory controller. Instead, it provides an example software-based encryption, which uses scratchpad SRAM (if any) to encrypt physical pages.

Team

Contributors

  • Gregor Haas
  • Evgeny Pobachienko
  • Jakob Sorensen
  • David Kholbrenner
  • Alex Thomas
  • Cathy Lu
  • Gui Andrade
  • Kevin Chen
  • Stephan Kaminsky
  • Dayeol Lee (Maintainer)

Advisors

  • David Kohlbrenner @ UW
  • Shweta Shinde @ ETH Zurich
  • Krste Asanovic @ UCB
  • Dawn Song @ UCB

License

Keystone is under BSD-3.

Contributing

See CONTRIBUTING.md

Citation

If you want to cite the project, please use the following bibtex:

@inproceedings{lee2019keystone,
    title={Keystone: An Open Framework for Architecting Trusted Execution Environments},
    author={Dayeol Lee and David Kohlbrenner and Shweta Shinde and Krste Asanovic and Dawn Song},
    year={2020},
    booktitle = {Proceedings of the Fifteenth European Conference on Computer Systems},
    series = {EuroSys’20}
}

keystone's People

Contributors

dayeol avatar grg-haas avatar archshift avatar dkohlbre avatar thaumicmekanism avatar zchn avatar cathylu10 avatar red-robby avatar msingla403 avatar philippgie avatar andreaskuster avatar khoslaventures avatar mcd500 avatar kkrentz avatar a4lg avatar pcotret avatar msanft avatar jarkkojs avatar gubaer avatar evgenyp67 avatar eric-unc avatar eddyim avatar benlaurie avatar veeyceey avatar khanghua1505 avatar jfoley8 avatar anydayeol avatar nisiyama-suzune avatar 0xmichalis avatar puhtaytow 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.