SGX-Step 项目教程
1. 项目的目录结构及介绍
SGX-Step 项目的目录结构如下:
├── app
│ └── ...
├── doc
│ └── ...
├── kernel
│ └── ...
├── libsgxstep
│ └── ...
└── sdk
└── ...
目录介绍
- app: 包含使用 SGX-Step 进行攻击的不同受害者场景的示例客户端应用程序。
- doc: 包含论文和参考资料。
- kernel: 包含一个最小的动态加载 Linux 内核驱动程序,用于将物理内存导出到用户空间并引导
libsgxstep
。 - libsgxstep: 包含一个小的用户空间操作系统库,实现了 SGX-Step 功能,包括 x86 页表和 APIC 定时器操作。
- sdk: 包含与不同 SGX SDK 和 libOS 一起使用 SGX-Step 的绑定。
2. 项目的启动文件介绍
SGX-Step 项目的启动文件主要集中在 app
目录下。以下是一些关键的启动文件及其功能:
- app/memcmp: 包含一个小的演示应用程序,展示了 SGX-Step 攻击的威力,通过单步执行包含细微的非恒定时间
memcmp
密码比较逻辑的示例 enclave。
启动文件示例
cd app/memcmp
make
./memcmp_demo
3. 项目的配置文件介绍
SGX-Step 项目的配置文件主要集中在 libsgxstep
目录下。以下是一些关键的配置文件及其功能:
- libsgxstep/config.h: 包含 SGX-Step 的配置选项,例如是否启用 x2APIC 模式、是否禁用某些内核功能等。
配置文件示例
// libsgxstep/config.h
#define X2APIC 0
#define NO_TIMER_CHECK 1
#define NMI_WATCHDOG 0
通过修改这些配置文件,用户可以根据自己的需求调整 SGX-Step 的行为。
以上是 SGX-Step 项目的教程,涵盖了项目的目录结构、启动文件和配置文件的介绍。希望这些内容能帮助你更好地理解和使用 SGX-Step 项目。