Sign inSign up

enclaive/redis-sgx

By enclaive

•Updated over 3 years ago

SGX-ready Enclaive Docker Image for Redis

Image
1

2.3K

enclaive/redis-sgx repository overview


redis-sgx ⁠
Redis-SGX

⁠SGX-ready Redis in-memory encrypted Database

⁠packed by enclaive⁠

#intelsgx #confidentialcompute #data-sovereignty #zerotrust
Contribute⁠ · Report Bug⁠ · Request Feature⁠


Demo-Video: Dumping the Redis Memory while in Use (read more⁠)

⁠TL;DR

docker pull enclaive/redis-sgx
docker-compose up -d

Warning: This quick setup is only intended for development environments. You are encouraged to change the insecure default credentials and check out the available configuration options in the build⁠ section for a more secure deployment.

⁠What is Redis and SGX?

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, Streams, HyperLogLogs, Bitmaps.

Overview of Redis⁠

Intel Security Guard Extension (SGX) delivers advanced hardware and RAM security encryption features, so called enclaves, in order to isolate code and data that are specific to each application. When data and application code run in an enclave additional security, privacy and trust guarantees are given, making the container an ideal choice for (untrusted) cloud environments.

Overview of Intel SGX⁠

Application code executing within an Intel SGX enclave:

  • Remains protected even when the BIOS, VMM, OS, and drivers are compromised, implying that an attacker with full execution control over the platform can be kept at bay
  • Benefits from memory protections that thwart memory bus snooping, memory tampering and “cold boot” attacks on images retained in RAM
  • At no moment in time data, program code and protocol messages are leaked or de-anonymized
  • Reduces the trusted computing base of its parent application to the smallest possible footprint

⁠Why use Redis-SGX (instead of "vanilla" Redis) images?

Following benefits come for free with Redis-SGX :

  • Redis-SGX gives data the safest place a Redis DB can give
  • black box database: not only is the database (file) encrypted, but also queries to the database remain fully encrypted in the memory
  • untraceability: when combined with TLS, Redis-SGX keeps the user interacting with the database indistinguishable from any other user interaction even
  • hardened security against memory dumps, query and user de-anonymization including kernel-space exploits, malicious and accidental privilege insider⁠ attacks, UEFI firmware⁠ exploits and other "root" attacks using the corruption of the application to infiltrate your network and system
  • runs on any hosting environment irrespectivably of geo-location and complies with privacy export regulation, such as Schrem-II⁠
  • GDPR/CCPA compliant processing ("data in use") of user data in the cloud as data is anonymized thanks to the enclave

⁠How to deploy Redis-SGX in a zero-trust cloud?

The following cloud infrastractures are SGX-ready out of the box

Confidential compute is a fast growing space. Cloud providers continiously add confidential compute capabilities to their portfolio. Please contact⁠ us if the infrastracture provider of your preferred choice is missing.

⁠Getting started

⁠Platform requirements

Check for Intel Security Guard Extension (SGX) presence by running the following

grep sgx /proc/cpuinfo

Alternatively have a thorough look at Intel's processor list⁠. (We remark that macbooks with CPUs transitioned to Intel are unlikely supported. If you find a configuration, please contact⁠ us know.)

Note that in addition to SGX the hardware module must support FSGSBASE. FSGSBASE is an architecture extension that allows applications to directly write to the FS and GS segment registers. This allows fast switching to different threads in user applications, as well as providing an additional address register for application use. If your kernel version is 5.9 or higher, then the FSGSBASE feature is already supported and you can skip this step.

There are several options to proceed

  • If: No SGX-ready hardware
    Azure Confidential Compute⁠ cloud offers VMs with SGX support. Prices are fair and have been recently reduced to support the developer community⁠. First-time users get $200 USD free⁠ credit. Other cloud provider like OVH⁠ or Alibaba⁠ cloud have similar offerings.

  • Elif: Virtualization
    Ubuntu 21.04 (Kernel 5.11) provides the driver off-the-shelf. Read the release⁠. Go to download⁠ page.

  • Elif: Kernel 5.9 or higher
    Install the DCAP drivers from the Intel SGX repo⁠

    sudo apt update
    sudo apt -y install dkms
    wget https://download.01.org/intel-sgx/sgx-linux/2.13.3/linux/distro/ubuntu20.04-server/sgx_linux_x64_driver_1.41.bin -O sgx_linux_x64_driver.bin
    chmod +x sgx_linux_x64_driver.bin
    sudo ./sgx_linux_x64_driver.bin
    
    sudo apt -y install clang-10 libssl-dev gdb libsgx-enclave-common libsgx-quote-ex libprotobuf17 libsgx-dcap-ql libsgx-dcap-ql-dev az-dcap-client open-enclave
    
  • Else: Kernel older than version 5.9
    Upgrade to Kernel 5.11 or higher. Follow the instructions here⁠.

⁠Software requirements

Install the docker engine

 sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io
 sudo usermod -aG docker $USER    # manage docker as non-root user (obsolete as of docker 19.3) 

Use docker run hello-world to check if you can run docker (without sudo).

⁠Get this image

The recommended way to get the enclaive Redis-SGX Open Source Docker Image is to pull the prebuilt image from the Docker Hub Registry⁠.

docker pull enclaive/redis-sgx:latest

To use a specific version, you can pull a versioned tag. You can view the list of available versions⁠ in the Docker Hub Registry.

docker pull enclaive/redis-sgx:[TAG]

⁠Build the image

If you wish, you can also build the image yourself.

docker build -t enclaive/redis-sgx:latest 'https://github.com/enclaive/enclaive-docker-redis-sgx.git#master'

⁠Release Notes

The container currently does not store the database file outside the container.

Redis listens on 0.0.0.0 and is forwarded by docker, proper networking in docker-compose.yml or additional security measures are required.

The recommended settings from https://github.com/gramineproject/gramine/tree/master/CI-Examples/redis⁠ are not applied yet, since there was no error to be found while testing.

⁠Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

⁠Support

Don't forget to give the project a star! Spread the word on social media! Thanks again!

⁠License

Distributed under the Apache License 2.0 License. See LICENSE for more information.

⁠Contact

enclaive.io - @enclaive_io⁠ - [email protected]⁠ - https://enclaive.io⁠

⁠Acknowledgments

This project greatly celebrates all contributions from the gramine team. Special shout out to Dmitrii Kuvaiskii⁠ from Intel for his support.

⁠Trademarks

This software listing is packaged by enclaive.io. The respective trademarks mentioned in the offering are owned by the respective companies, and use of them does not imply any affiliation or endorsement.

Tag summary

Content type

Image

Digest

sha256:8a75cb800…

Size

92.5 MB

Last updated

about 4 years ago

docker pull enclaive/redis-sgx