检测服务器或者PC是否支持IntelSGX的原理和方式

原理和规则

英特尔® Software Guard 扩展平台支持包括三个方面

  1. BIOS是否支持
  2. CPU是否支持
  3. 是否安装了PSW,平台软件包。

不支持的情况分为以下三种

  • CPU 不支持英特尔 SGX
  1. BIOS 不支持英特尔 SGX
  2. BIOS 和 CPU 支持英特尔 SGX,但 BIOS 明确禁用英特尔 SGX

支持sgx cpu型号列表

Intel® Core i7-6700K SR2L0
Intel® Core i5-6400T SR2L1
Intel® Core i7-6700 SR2L2
Intel® Core i7-6700T SR2L3
Intel® Core i5-6600K SR2L4
Intel® Core i5-6600 SR2L5
Intel® Core i5-6500 SR2L6
Intel® Core i5-6400 SR2L7
Intel® Core i5-6500T SR2L8
Intel® Core i5-6600T SR2L9
Intel® Xeon® E3-1280 v5 SR2LC
Intel® Xeon® E3-1240 v5 SR2LD
Intel® Xeon® E3-1230 v5 SR2LE
Intel® Xeon® E3-1270 v5 SR2LF
Intel® Xeon® E3-1220 v5 SR2LG
Intel® Xeon® E3-1260L v5 SR2LH
Intel® Xeon® E3-1225 v5 SR2LJ
Intel® Xeon® E3-1275 v5 SR2LK
Intel® Xeon® E3-1245 v5 SR2LL
Intel® Xeon® E3-1235L v5 SR2LM
Intel® Xeon® E3-1240L v5 SR2LN

开启IntelSGX的方式

重启电脑,进入BIOS设置后,在高级选项的CPU设置里。寻找SGX相关选项:

共有三种 BIOS 设置。

  • Enabled(启用) 英特尔 SGX 已启用,可用于各应用程序。

  • Software Controlled(软件控制)英特尔 SGX 可通过软件应用启用,只有这样才能投入使用(称为“软件选择”)。 通过软件选择启用英特尔 SGX 要求系统重启。

  • Disabled(禁用)英特尔 SGX 已明确禁用,无法通过软件应用启用。 该设置只能在 BIOS 设置屏幕中更改。

第一和第三种很容易理解。下面主要解释Software Controlled的意义(我的电脑就是这种方式)

Software Controlled

如果英特尔 SGX 设置为 Software Controlled,英特尔 SGX 最初处于禁用状态,需通过软件应用在 SDK 中进行以下几次调用,才能将其设为启用状态:

sgx_enable_device()
sgx_cap_enable_device()
为什么会有software controller?
因为SGX启动后悔保留很大一块RAM空间,用于EPC安全页面缓存。系统选择采用软件激活的方式启动SGX,而不是一直激活的状态,避免SGX对于系统资源的消耗影响了其他程序和进程。

如何查询自己的CPU是否支持Intel SGX

CPU支持查询

CPU信息,intel cpu第六代开始支持sgx
在这里插入图片描述
在Intel官网找到对应型号,里面会标注是否支持
https://ark.intel.com/content/www/us/en/ark/products/88185/intel-core-i5-6400-processor-6m-cache-up-to-3-30-ghz.html
检测服务器或者PC是否支持IntelSGX的原理和方式_第1张图片
说明我的cpu是支持SGX的,但需要安装Intel ME软件配合使用。

BIOS支持查询

在进入bios寻找CPU相关选项,找到后Enable

我的是华硕ASUS主板,本来是没有这个选项。我在Tool里面联网升级后,出现了SGX的支持。说明主板的支持也分为硬件和软件两个方面。

如何检查环境已经配置好了呢?

  1. intel sgx sdk中有专门的方法来检查硬件环境,这里我不在展开。
  2. 这里找到了几款机遇sdk编译好的exe工具,点击可以直接运行,查看结果。

检测服务器或者PC是否支持IntelSGX的原理和方式_第2张图片
检测服务器或者PC是否支持IntelSGX的原理和方式_第3张图片
如果环境不支持就会报错,根据错误提示调整环境后,显示上面结果。如果环境没准备好,跑程序会出现很多其他问题

你可能感兴趣的:(SGX)