美文网首页
SGX本地认证

SGX本地认证

作者: 小小怪吃吃吃 | 来源:发表于2021-12-13 16:40 被阅读0次

一、定义

  • 同一个平台上的两个不同enclave之间认证。
  • 本地认证有两种形式:
    · 其一,两个enclave同属于一个app,消息流程通过api调用即可完成;
    · 另一种,两个enclave分别属于各自的app,但在同一平台上,消息可通过socket等方式同步。

二、流程

  1. 应用程序A承载enclaveA,应用程序B承载enclaveB。Encalve A是Claimer,Enclave B是验证方。当不受信任的应用程序A和B在两个飞地之间建立了通信路径后,Enclave B将其MRENCLAVE标识发送给Enclave A

通信路径:

  • 进程内:Intel SGX SDK中sample code中LocalAttestation,三个 enclave 位于同一个应用进程内,即进程内。所需的数据结构通过使用目标飞地 EnclaveID调用到目标飞地中来传递。
  • 进程间:如果两个 enclave 位于不同的应用程序进程中,则它们将无法访问彼此的证明处理 API(attestation-handling APIs)。因此,不受信任的通信路径需要额外的间接层,可以是 IPC(共享内存)、TLS 等。需要向不受信任的应用程序添加额外的数据传输逻辑,以便为 ECDH 和证明过程传递必要的数据结构。在进程间本地证明结束时,我们应该达到与进程内本地证明相同的点,即从 SGX 密钥生成的共享 EDCH secret,用于确保两个 enclave 之间未来的安全通信,以及彼此的相互身份验证。
  1. Enclave A要求硬件使用从Enclave B接收到的MRENCLAVE值生成一个EREPORT结构,Enclave A通过Untrusted code将其报告发送给Enclave B。
  2. 安全区B调用EGETKEY检索其报告密钥并验证EREPORT结构的MAC,如果有效,则该Enclave应为预期的并在合法平台上运行。然后Enclave B使用这个ERPORT中的MRENCLAVE值为Enclave A生成一个自己的EREPORT结构并将这个report传送给Enclave A。EnclaveA同样验证这个report来确认Enclave B和它在同一个平台上。
本地认证图

三、源码分析

3.1 目录结构分析

目录依赖关系图
  • Untrusted_LocalAttestation/:DH安全信道的建立的OCALL函数
  • LocalAttestationCode/:DH安全信道的建立
  • App/:应用程序的入口点

3.2 流程分析

Sample
  1. Initiator enclave 调用Intel ECDH密钥交换库以发起具有发起者角色的会话。
  2. 发起者通过OCALL进入不受信任的代码,请求Diffie-Hellman的Msg1和session id。
  3. Untrusted Code调用ECALL进入到响应者Enclave。
    3.1 响应者enclave转而调用ECDH密钥交换库来启动具有响应者角色的会话。
    3.2 响应者enclave调用密钥交换库来生成DH
    Message 1 ga || TARGETINFO。
  4. DH Msg1从响应者enclave发回给发送者enclave。
    7.发起者enclave使用密钥交换库API处理Msg1,并生成DH Message 2 gb||[Report Enclave 1(h(ga || gb))]SMK.。
  5. DH Msg2通过OCALL发送给不被信任的一端。
  6. Untrusted Code通过ECALL将DH Msg2给了响应者enclave并请求DH Msg3。
    9.1 响应者enclave使用密钥交换库API来处理DH Msg2,并生成DH Message 3 [ReportEnclave2(h(gb|| ga)) || Optional Payload]SMK.。
  7. DH Msg3从响应者enclave发回给发送者enclave。
  8. 发起者enclave使用密钥交换库来处理DH Msg3并建立会话。
    受AEK保护的通信信道建立。
    Intel Doc

相关文章

  • SGX本地认证

    一、定义 同一个平台上的两个不同enclave之间认证。 本地认证有两种形式:· 其一,两个enclave同属于一...

  • SGX远程认证

    一、定义 Enclave和不在平台上的第三方之间的证明过程。 一般而言,远程认证的目标是让硬件实体或硬件和软件的组...

  • A list of system papers using/ab

    来自:https://github.com/vschiavoni/sgx-papers sgx-papers (t...

  • SGX 下载地址

    https://download.01.org/intel-sgx/sgx-linux/2.14/distro/u...

  • Intel SGX技术和SGX攻击

    区块链技术从2009年到现在已经经历了将近10年,但是其对数据隐私的保护和对复杂应用的支持一直是一个问题。最近几年...

  • Kerberos认证管理

    一、Windows中的认证 1.1 单机认证 NTLM Hash是支持Net NTML认证协议及本地认证过程中的一...

  • git gpg

    本地新建仓库 关闭gpg签名认证

  • 星珏社区早间新闻播报

    英特尔芯片SGX篡改漏洞 币安设立Binance LCX 1.英特尔芯片SGX部分发现篡改漏洞,部分数字货币项目将...

  • Windows认证机制小结

    本文仅作为学习记录,如有侵权,请联系删除! Windows认证机制: win认证机制主要有三个:本地主机认证,网络...

  • sgx初步学习

    最近在接触sgx应用,这里也记录学习过程中整理的一些内容,也希望能和更多sgx相关的研究人员多多交流~ 一 了解S...

网友评论

      本文标题:SGX本地认证

      本文链接:https://www.haomeiwen.com/subject/nfdlfrtx.html