文章目录
- 一.概述
- 二.安装流程
-
- 2.1 检查服务器是否支持SGX
- 2.2 sgx硬件/软件开启方法
- 2.3 sgx dirver驱动安装;
- 2.4 sgx sdk安装
- 2.5 psw安装
-
- 2.5.1 使用默认配置构建SGX PSW:
- 2.5.2 在相应文件夹中使用make命令构建每个Architecture Enclave
- 2.5.3 调用安装程序(执行sgx_linux_x64_psw_2.23.100.2.bin)
- 2.5.4 命令行运行以下命令添加下载Intel sgx psw的下载路径(将以下库添加到源中):
- 2.5.5 进入如下网址下载密钥intel-sgx-deb.key(获取 Debian 存储库公钥并将其添加到 apt 用于验证软件包的受信任密钥列表中):
- 2.5.6 进入下载目录,通过如下命令添加进仓库:
- 2.5.7 更新一下apt-get的列表:
- 2.5.8 分别安装SGX PSW 提供的3个服务:
- 2.5.9 demo测试psw是否安装成功
- 三.启动或停止 aesmd 服务
- 四.SampleCode分析
- 五.参考文档
- 六. 感谢支持
一.概述
Intel Software Guard Extensions (Intel SGX) 是一项由英特尔提供的技术,旨在保护应用程序开发人员选择的代码和数据免受泄露或修改。
1.1 SGX三大组件
Linux Intel SGX 软件栈由 IntelSGX 驱动程序、Intel SGX SDK 和 Intel SGX 平台软件 (PSW) 组成。
-
Intel® SGX Software Development Kit (SDK)
: 这个SDK帮助软件开发人员创建使用Intel SGX技术的应用程序。它提供了一组工具、库和文档,使开发人员能够在应用程序中利用SGX的安全功能,包括创建和管理SGX enclaves(安全容器)、进行加密操作和进行远程验证等。 -
Intel® SGX Platform Software (PSW) for Linux* OS
: 这个软件提供了在Linux操作系统上运行Intel SGX应用程序所需的软件模块。它包括驱动程序、库和运行时组件,为SGX应用程序提供了必要的运行环境和安全保护机制。PSW负责管理SGX enclaves的创建、加载和执行,并提供与硬件的接口交互,以实现SGX的安全功能。 -
Intel® SGX Data Center Attestation Primitives (DCAP) for Linux* OS
: 这个软件提供了在数据中心环境中进行SGXIntel应用程序验证的软件模块。DCAP为应用程序提供了进行数据中心内的验证和信任建立所需的功能。它包括用于生成、验证和传输证明数据的API和工具,确保SGX enclaves的真实性和完整性,并帮助应用程序与远程系统进行安全交互。
这些软件组件共同构成了Intel SGX技术的开发和运行环境。SDK提供了开发
SGX应用程序所需的工具和资源,PSW为应用程序提供了在Linux操作系统上运行的基础设施
,而DCAP为数据中心内的SGX应用程序提供了验证和信任建立的支持
。这些组件协同工作,使开发人员能够利用Intel SGX的安全功能来保护和保障应用程序的安全性。
1.2 SGXDataCenterAttestationPrimitives
SGXDataCenterAttestationPrimitives驱动程序专门针对支持Flexible Launch Control (FLC
)和Intel AES New Instructions (AES-NI
)的平台。FLC是一种安全特性,有助于保护SGX enclave启动过程的完整性,而AES-NI为加密操作提供了硬件加速。
该驱动程序为数据中心环境中的Intel SGX enclave提供了证明能力。它支持两种类型的证明:
-
基于椭圆曲线数字签名算法(
ECDSA
)的证明:ECDSA是一种广泛使用的公钥密码算法。它允许生成和验证数字签名,用于证明SGX enclave的真实性和完整性。 -
基于增强隐私识别(
EPID
)的证明:EPID是一种保护隐私的证明方案,允许远程方验证SGX enclave的完整性,同时不泄露被验证平台的身份。EPID-based的证明旨在提供强大的安全保证同时保持隐私。
SGXDataCenterAttestationPrimitives项目提供了在Linux SGX软件栈中支持这些证明机制所需的组件和功能。它使在支持SGX的平台上运行的应用程序能够建立信任,并与远程系统或服务进行安全交互。
二.安装流程
尽管官方文档给了较为详细的安装教程,但是由于官方文档是英文的,并且有太多琐碎的细节,对于新手小白并不友好。因此将本人亲自安装使用的全流程进行总结,并将持续进行源码分析,与大家共享;下面将按照以下顺序详细介绍Intel SGX SDK的安装、测试、使用的全流程,助力每一个小白能够轻松上手Intel SGX的使用开发,本文以ubuntu22.04系统为例。
- 检查服务器是否支持SGX;
- sgx硬件/软件开启;
- sgx dirver驱动安装;
- sgx sdk安装;
- sgx psw安装;
- demo测试;
- Sample源码分析;
2.1 检查服务器是否支持SGX
由于SGX的使用需要Intel CPU的硬件支持,因此在安装SDK和测试使用之前,需要先检测当前CPU是否支持SGX功能,若支持则需要先开启CPU的SGX。
方法1:使用cpuid命令查看是否支持SGX:
cpuid --one-cpu | grep -i sgx
- 如果输出为空,则表示不支持,可以使用simulation mode,但该模式不能用于发布版环境。
- 如果输出中包含SGX_LC: SGX launch config supported = true,则支持DCAP(数据中心标记基元,即远程认证服务)功能。FLC 即 Flexible Launch Control。
- 上述输出中SGX1 supported = true表示SGX已经开启。
方法2:使用代码test-sgx.c测试是否支持SGX:
- 下载源码:
git clone https://github.com/ethernity-cloud/mvp-pox-node.git
- 进入目录:
cd mvp-pox-node
- 执行程序:
./utils/linux/test-sgx
如果输出下面类似的结果表示已经开启成功:
如果sgx 1 supported不为1,至少MaxEnclaveSize_64是大于0的。
2.2 sgx硬件/软件开启方法
首先检查BIOS是以UEFI模式启动的,不能以legacy模式启动,因为:
- 在 Legacy 模式下启动的系统无法执行软件启用,因为该过程取决于 EFI 变量。
- 可以通过在 UEFI 模式下启动 Linux Live CD,然后执行软件启用来启用 Legacy 模式系统。 英特尔 SGX 启用发生在平台级别,而不是操作系统级别。
- EFI 文件系统,如果您的 Linux 系统以 UEFI 模式启动,则默认情况下应安装该文件系统。
方法1:BIOS 启动SGX:
不同的BIOS操作不同,示例如下:
- BIOS下enable SGX:【System Configuration】 → BIOS/Platform Configuration (RBSU) → System Options → Processor Options → Intel Software Guard Extensions (SGX)】→ 启动。
- 如果在BIOS中没有设置SGX的地方,且芯片是支持SGX的,可以升级BIOS版本或者找服务器售后了解情况。
方法2:软启动 SGX:
如果SGX在BIOS中提示“软件控制”,则可以使用下面的软起动方法启动SGX。具体说明可以参考:无法在 BIOS 或通过软件应用程序启用英特尔® Software Guard Extensions(英特尔® SGX)
这里通过一段C程序软启动系统SGX,非常简单!
- 软启动代码参考: http