作者:阳光碎了围脖_182 | 来源:互联网 | 2023-05-25 12:36
我Intel Software Guard Extensions (SGX)
最近正在研究设施编程.SGX的想法是创建一个安全敏感代码加载和执行的安全区.最重要的是,对该飞地的存储器访问(以及许多其他限制)由硬件强制执行.
在其手册中,我发现syscall
指令在飞地内是非法的(见表3-1),以及许多其他指令可能会改变权限级别.我想知道这意味着什么.由于内核服务一样open
,socket
在提高系统调用结束了,这是否意味着禁止syscall
指令实际上飞地内禁止代码的任何内核服务,如文件和插座?这对我来说听起来很难说,因为这样一个飞地可以做的事情会受到严重限制.所以我认为我误解了或者有一些解决方法.
1> Raghu..:
当你说你不能使用内核服务或任何系统调用时你是对的,因为在飞地内禁止使用Syscall指令.操作系统不是SGX中可信计算基础(TCB)的一部分.假设在安全区内启用了系统调用,并在汇编中编写指令以执行系统调用指令(假设打开系统调用sys_open的参数).当您进行系统调用时,您会在启动期间跳转到内核设置的预定义位置,以开始执行内核代码.这意味着你是从你编写的代码(可信的)跳转到你不编写的代码(操作系统,它是不可信的,不是你的TCB的一部分).如果你能够做到这一点,它将失去SGX提供的安全保障.由于内核/操作系统/您未编写的任何其他软件不受信任,
正如你所说的那样,这是非常有限的,因为你无法直接从你的飞地代码中使用套接字或任何东西.但是如果你想在飞地内部使用这些服务,你必须信任不是你编写的代码,这违反了SGX的安全模型.
我不认为SGX的用途就像你想的那样.这里有一些英特尔所示的预期用例,应该解释如何在不使用系统调用的情况下实现这些应用程序.
https://software.intel.com/en-us/articles/using-innovative-instructions-to-create-trustworthy-software-solutions