gpt4 book ai didi

kernel - 在英特尔SGX中禁用syscall意味着什么

转载 作者:行者123 更新时间:2023-12-04 07:21:29 26 4
gpt4 key购买 nike

我最近正在考虑使用Intel Software Guard Extensions (SGX)工具进行编程。 SGX的想法是创建一个安全区,在该安全区中加载并执行对安全敏感的代码。最重要的是,对该区域的内存访问(以及许多其他限制)是由硬件强制执行的。

在其manual中,我发现一块区域内syscall指令是非法的(请参见表3-1),以及许多其他指令可能会更改特权级别。我想知道这意味着什么。由于像opensocket这样的内核服务最终会引发系统调用,这是否意味着禁止syscall指令实际上禁止了来自某些内核服务(例如文件和套接字)的安全区域内的代码?对于我来说,这听起来很令人难以置信,因为那样一来,飞地所能做的将受到严重限制。因此,我想我要么误会了,要么有一些解决方法。

最佳答案

说正确的话是正确的,因为在安全区域内禁止使用Syscall指令,因此无法使用内核服务或任何系统调用。
该操作系统不是SGX中可信计算库(TCB)的一部分。
让我们假设在安全区域内启用了syscall,然后在汇编中编写指令以执行syscall指令(比如说带有开放系统调用sys_open的参数)。进行系统调用时,您会在引导过程中跳至内核的预定义位置设置,以开始执行内核代码。这意味着您正在从您自己(受信任的)编写的代码跳转到您自己未编写的(OS,这是不受信任的并且不是您的TCB的一部分)代码。如果您能够做到这一点,它将破坏新交所提供的安全保证。由于不信任您编写的内核/操作系统/其他任何软件,因此您可能拥有一个恶意内核,其开放系统调用会读取区域内的数据并窃取您的 secret 。

正如您所说,这是严格的限制,因为您将无法直接从安全区代码内部使用套接字或其他任何东西。但是,如果要在安全区域内使用这些服务,则必须信任不是您编写的代码,这会破坏SGX的安全模型。

我认为SGX并非用于您可能正在考虑的用途。这是intel所示的一些预期用例,并应解释如何在不使用系统调用的情况下实现这些应用程序。

https://software.intel.com/en-us/articles/using-innovative-instructions-to-create-trustworthy-software-solutions

关于kernel - 在英特尔SGX中禁用syscall意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28114746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com