在 linux 内核模块中创建飞地

Create an enclave in an linux kernel module

是否可以编写一个 linux 内核模块并在模块中创建一个 enclave。 以及如何做到这一点。

我没试过这个,但我看不出内核模块无法加载 enclave 的原因。加载和初始化 enclave 的所有 "actual work" 无论如何都是由系统软件完成的。您甚至应该能够调用英特尔提供的 PSW 来为您完成工作,就像用户应用程序一样。

然而,加载到飞地中的代码,必须在用户模式下。

不,所有 enclave 操作(由 enclave 执行的操作,而不是由创建 enclave 的内核执行的操作)必须在用户模式下执行。如果在内核模式下执行,它们将失败。

但是,有一个 scientific paper 他们使用内核模块通过 Netlink 连接与用户 space SGX enclave 通信。