test-sgx 输出结果怎么读?SGX-hardware 项目 3 种典型场景结果清单
【免费下载链接】SGX-hardwareThis is a list of hardware which supports Intel SGX - Software Guard Extensions.项目地址: https://gitcode.com/gh_mirrors/sg/SGX-hardware
SGX-hardware 项目维护了一份支持 Intel SGX(软件保护扩展)的硬件清单,并内置了一个命令行检测工具 test-sgx——它是快速判断你的 CPU 是否启用 SGX 的最简方法。运行后屏幕上刷出十几行英文输出,test-sgx 输出结果怎么读?本文把 3 种典型场景逐一拆解,每种都给出关键行和一句话结论,读完即可自行判断。🔍
快速对照:test-sgx 三种输出结果速查表
| 场景 | 关键输出行 | 一句话结论 |
|---|---|---|
| ① 支持但未启用 | Supports SGX且SGX1: 0、SGX2: 0 | CPU 支持,BIOS 没打开,需进 BIOS 开启 |
| ② 不支持 | Does not support SGX | CPU 不支持或厂商已停用 SGX |
| ③ 已完全启用 | Supports SGX且SGX1(或SGX2)为1 | 可以开始 SGX 开发 |
判定公式只有一条:同时满足Supports SGX与SGX[1|2] leaf instructions: 1,SGX 才真正可用。这也是官方 README 中给出的结论。
场景① CPU 支持 SGX,但 BIOS 未启用
这是最常见的"半吊子"状态,典型输出如下:
Supports SGX SGX Launch Configuration (SGX_LC): 1 SGX Attestation Services (SGX_KEYS): 0 SGX1 leaf instructions (SGX1): 0 SGX2 leaf instructions (SGX2): 0怎么读:
Supports SGX:CPU 本身带 SGX 硬件功能 ✅SGX_LC: 1:启动配置位已就绪- 但
SGX1和SGX2都是0:指令被 BIOS 全局关掉了 ❌
怎么办:重启进 BIOS,找到 SGX 相关选项(有的主板藏在 CPU 功能或安全设置里)开启它。部分旧主板需要先更新 BIOS 才出现该选项——SGX-hardware 的 README 中专门列了一张"主板 + 所需 BIOS 版本"清单,可对照自己的主板型号查看。
场景② CPU 不支持 SGX,或功能被厂商停用
Does not support SGX一行输出,直接下结论。常见于两类机器:
- 2015 年之前的老 CPU,本身没有 SGX 硬件;
- 云服务器/虚拟化实例:CPU 型号虽支持 SGX,但云厂商在 BIOS 层关闭了该功能(如部分公有云的通用实例)。
⚠️特别提醒:如果你买笔记本前想确认 SGX 可用性,注意 SGX-hardware 清单中有一类"CPU 支持 SGX 但主板/BIOS 不提供该设置"的设备(例如 MacBook Pro 各代、Surface Book 2、Razer Blade 2016),官方明确标注Do NOT buy for SGX development,选型时务必避开。
场景③ SGX1 可用且已启用:完整输出详解
当输出长达几十行且SGX1: 1时,说明 SGX 完全就绪。核心字段速读:
| 输出字段 | 含义 |
|---|---|
Supports SGX/SGX1 leaf instructions (SGX1): 1 | SGX 指令可用,这是最重要的两行 |
SGX2 leaf instructions (SGX2): 1 | 支持新一代 SGX2 接口(有则更好) |
The maximum supported enclave size ... is 2^36 | 最大飞地(Enclave)大小,有此输出也是 SGX 正常工作的旁证 |
EPC[0]: ... size: 0000000001c00000 | EPC(SGX 专用加密内存)容量,此处约 28MB |
IA32_FEATURE_CONTROL.SGX_GLOBAL_ENABLE[bit 18]: 1 | BIOS 全局使能位已打开 ✅ |
...ATTRIBUTES[MODE64BIT]: 1 | 飞地可运行 64 位代码 |
...ATTRIBUTES[PROVISIONKEY]: 1 | 支持密钥供应,可用于远程认证 |
结论:你已可以调用 CPU 的 SGX 指令。但要真正创建并运行飞地,还需要安装 Intel 官方 SGX 驱动及 Launch Enclave——test-sgx 只负责"体检",不负责"治疗"。💊
两个容易踩的坑 ⚠️
- 虚拟机结果可能失真:如果你在 VM 中运行 test-sgx,宿主机的 CPU 明明支持 SGX,但 hypervisor 不转发该能力时,工具会报"不支持"。它反映的是当前这台系统,而不是 CPU 型号的全部潜力。
- Linux 下 MSR 读取需要 root 权限:
rdmsr.c模块通过读取/dev/cpu/0/msr获取 SGX 寄存器信息,普通用户运行时这部分会静默跳过,不影响前三步的判断。
3 分钟编译运行 test-sgx
工具由test-sgx.c(主程序)、cpuid.c(CPUID 检测)、rdmsr.c(MSR 读取)三个源文件组成,Linux 下一行命令即可编译:
gcc -Wl,--no-as-needed -Wall -Wextra -Wpedantic -masm=intel -o test-sgx -lcap cpuid.c rdmsr.c test-sgx.c ./test-sgxWindows(VS 2022 x64 原生命令行)使用cl test-sgx.c cpuid.c rdmsr.c,macOS 用 Clang 编译,命令详见项目 README 的 "Compile test-sgx" 章节。若 Linux 下报sys/capability.h: No such file or directory,执行sudo apt-get install libcap-dev补上依赖即可。
总结:30 秒判断清单 ✅
- 有
Supports SGX吗?没有 → 走场景②,机器不适合 SGX 开发 SGX1或SGX2有1吗?没有 → 走场景①,去 BIOS 里找 SGX 开关- 两者都满足 → SGX 已启用,安装官方驱动后即可开始开发
按这三步读 test-sgx 输出,任何一行结果都能在 10 秒内定位问题所在。
【免费下载链接】SGX-hardwareThis is a list of hardware which supports Intel SGX - Software Guard Extensions.项目地址: https://gitcode.com/gh_mirrors/sg/SGX-hardware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考