EGo 开源项目使用教程
1. 项目介绍
EGo 是一个开源的 SDK,旨在帮助开发者使用 Go 编程语言开发自己的机密应用程序。这些机密应用程序运行在支持 Intel SGX 的硬件上的始终加密和可验证的 enclave 中。EGo 通过提供两个用户友好的工具简化了 enclave 开发:
- ego-go:一个适配的 Go 编译器,用于构建与 enclave 兼容的可执行文件,同时提供与原始 Go 编译器相同的 CLI 接口。
- ego:一个 CLI 工具,用于处理所有与 enclave 相关的任务,如签名和 enclave 创建。
2. 项目快速启动
安装 EGo
通过 Snap 安装
sudo snap install ego-dev --classic
sudo apt install build-essential libssl-dev
通过 DEB 包安装
sudo mkdir -p /etc/apt/keyrings
wget -qO- https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo tee /etc/apt/keyrings/intel-sgx-keyring.asc > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/intel-sgx-keyring.asc arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/intel-sgx.list
sudo apt update
EGO_DEB=ego_1.5.3_amd64_ubuntu-$(lsb_release -rs).deb
wget https://github.com/edgelesssys/ego/releases/download/v1.5.3/$EGO_DEB
sudo apt install ./$EGO_DEB build-essential libssl-dev
构建和运行一个机密 Go 应用
ego-go build hello.go
ego sign hello
ego run hello
3. 应用案例和最佳实践
示例应用
EGo 提供了多个示例应用,帮助开发者快速上手:
- helloworld:一个最小的 enclave 应用程序示例。
- remote_attestation:展示了如何使用 EGo 的基本远程认证 API。
- attested_tls:类似于上述示例,但使用更高级别的 API 建立认证的 TLS 连接。
- vault:展示了如何移植一个 Go 应用程序,例如 Hashicorp Vault。
- estore:展示了如何使用 EStore 安全地持久化数据。
最佳实践
- 使用 ego-go 编译器:确保使用
ego-go
编译器来构建与 enclave 兼容的可执行文件。 - 签名和运行:在运行应用程序之前,使用
ego sign
进行签名,然后使用ego run
运行。
4. 典型生态项目
MarbleRun
MarbleRun 用于创建分布式 EGo 应用程序,并将其运行在 Kubernetes 上。
EStore
EStore 用于安全地持久化应用程序的数据。
Contrast
Contrast 用于在 Kubernetes 上运行机密容器。
通过这些生态项目,EGo 不仅限于 Go 语言,还可以与其他技术栈结合,构建更复杂的机密应用程序。