英特尔 SGX HeapMaxSize 和 EPC 页面交换

Intel SGX HeapMaxSize and EPC page swapping

.edl 文件包含一个 HeapMaxSize 条目。 SDK 用户指南指出这是因为

Enclave memory is a limited resource. Maximum heap size is set at enclave creation.

但是 SGX 规范不允许 EPC 页面交换(EPA、EBLOCK、ETRACK、EWB)吗?

或者在更实际的意义上:设置 HeapMaxSize=2^64 字节有缺点吗?

可能SDK还不支持EPC页面交换,或者可信enclave代码需要手动触发这种交换?

编辑 正如 ab. 指出的那样,对于 SGXv1,所有 EPC 页面都必须在飞地执行之前 EADDed。此时的 SDK 是否仅支持 SGXv1 指令?

我不熟悉 SGX SDK,但请注意 SGXv1 分页说明(EWB/ELDU 和朋友)仍然要求您首先对所有页面进行 EADD,并保持其加密某处的内容,以防它们被使用。即使 SDK 确实支持这一点,启动 enclave 的时间也会更长,并且它会在某处消耗大量存储空间 space,同时 运行 用于所有 paged-out 页面。

SGXv2 用 EAUG/EACCEPT 解决了这个问题。