赞
踩
阅读
https://github.com/dingelish/SGXfail/blob/master/01.md
摘要:
关键字:可信 + 保密
intel sgx程序分成untrusted和trusted两部分, trusted 包括了用户自己写的SGX enclave。 用户自己的untrusted app需要和Intel提供的untrusted runtime等运行时库配合使用。
支持Intel SGX程序执行,需要
- untrusted部分的守护进程aesmd,提供application enclave service manager.
- 官方Enclave:
- Launch Enclave(le)
- Quoting Enclave(qe)
- Platform Service Enclave(pse)
- Provisioning Enclave (pve)
- Provisioning Certification Enclave(pce)
- Reference Launch Enclave
- 和一些配套的untrusted AE接口
图中可以知道:
untrusted 和 trust 都是rust编写的
app 目录下的untrusted 部分
app/build.rs
enclave {
from "sgx_tstd.edl" import *;
from "sgx_stdio.edl" import *;
from "sgx_backtrace.edl" import *;
from "sgx_tstdc.edl" import *;
trusted {
/* define ECALLs here. */
public sgx_status_t say_something([in, size=len] const uint8_t* some_string, size_t len);
};
};
let result = unsafe {
say_something(enclave.geteid(),
&mut retval,
input_string.as_ptr() as * const u8,
input_string.len())
};
- Cargo.toml:staticlib
- 会被编译成一个.a文件,和intel其他库文件连接一起成为enclave.so,
- sgx_sign工具配合Enclave.config.xml配置文件、签名私钥一起做签名和属性刻画,生成enclave.signed.so,成为Enclave
- dependency包含sgx_types,sgx_tstd,后者是标准库,
- lib.rs是Enclave源代码,
// Ocall to normal world for output
println!("{}", &hello_string);
enclave {
from "sgx_tstd.edl" import *;
from "sgx_stdio.edl" import *;
from "sgx_backtrace.edl" import *;
from "sgx_tstdc.edl" import *;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。