Intel SGX Developer Reference 学习笔记(一)

编程入门 行业动态 更新时间:2024-10-11 23:22:44

Intel SGX Developer Reference <a href=https://www.elefans.com/category/jswz/34/1770117.html style=学习笔记(一)"/>

Intel SGX Developer Reference 学习笔记(一)

 在这之前,一直想学习关于SGX实操性的、应用相关的内容,我浏览了相关资料,总觉得跟不上那些作者的脚步,学到的都是些零零碎碎的知识,收获都不是很大,一边阅读还在一边质疑资料的可读性,所以我决定返朴归真,静下心来好好看一看官网的手册,并作一些笔记方便自己的日后学习,如果能帮助到别人,那就更好了。
手册下载地址: Intel® Software Guard Extensions (Intel® SGX) SDK for Linux* OS

后续sgx笔记: Intel® SGX 手册.

Intruduction

 Intel为想要加强应用程序安全性的软件开发者提供了Intel Software Guard Extensions(Intel SGX)SDK的开发人员参考。

 Intel SGX SDK是一个API、样例源代码、库以及工具的集合,使软件开发者能够使用C/C++语言去写与调试SGX应用程序。
 Intel SGX技术仅适用于第6代Intel®Core™处理器或更新版本。

Overview

 Intel SGX是一种Intel技术,他的目标是实现高级机密保护。它通过分配数据和代码所在的硬件保护内存来执行。受保护的内存区域称为enclave,enclave内存中的数据只能由也驻留在enclave内存空间的代码访问,Enclave代码可以通过特殊的指令调用。在Linux操作系统上,enclave可以作为共享对象被创建和加载。
 Intel SGX技术在受保护的内存大小上有硬性限制,通常为64MB或128MB;因此,内存中active enclave的数量也被有所限制。依据每个enclave的内存占用,用例建立可以有5-20个enclave同时驻留在内存中;然而,Linux可以通过分页来增加受保护的内存大小。

Properties

 SGX提供保护,以防软件攻击:

  • 无论当前权限级别和CPU模式如何,enclave内存都不能被外部的enclave读写。在这种情况下,返回终止页;
  • 使用debug属性创建的enclave允许调试器查看其内容,没有debug属性的enclave不能被软件和硬件调试器调试;
  • enclave环境不能通过经典的函数调用、跳转、寄存器操作或栈操作进入。调用enclave函数的唯一方法是通过执行多个保护检查的新指令。enclave代码向enclave内的函数发起经典调用是被允许的;
  • 执行enclave代码时,CPU模式只能为32或64位,不支持其他CPU模式,否则会发生异常。

 SGX提供保护,以防已知的硬件攻击:

  • enclave内存使用具有 重放 保护的行业标准加密算法进行加密;
  • 如果打开内存 或将DRAM模块 连接到其他系统,也只能访问加密的数据;
    原因:Enclave 中的代码、数据和 TCS 等在运行过程中始终被加密存储在内存中.处理器缓存(cache)中的数据在写到内存之前,处理器中的内存加密单元(memory encryption engine,简称 MEE)会对其进行加密,因此操作系统无法直接获取 EPC 中的内容。
  • 内存加密密钥在每次重新启动随机改变(例如,boot开机/sleep休眠/hibernate休眠)。密钥存储在CPU中,无法访问。
  • SGX不是为处理测信道攻击 ? 反向工程 ? 而设计的,SGX开发者自行构建enclave,以抵抗这些类型的攻击。

 Intel SGX使用了强大的工业标准算法签名enclave,一个enclave的签名表征了enclave在创建时的内容和布局,如果根据签名,enclave的内容和布局不正确,则enclave无法初始化、进而无法执行。如果一个enclave可以被初始化,那么enclave应该与初始时enclave相同,且在运行时不会被修改。

Application Design Considerations

 Intel SGX应用程序设计与非Intel SGX应用程序不同,因为它需要将应用程序划分为两个逻辑组件:

  • 可信组件。访问secret的代码位于此处,这个组件叫做enclave,一个应用程序可以存放多个enclave;
  • 不可信组件。应用程序的其余部分,包括其所有模块;

 为了减少的安全漏洞的产生,应使可信部分尽量小,建议enclave的功能只是对秘密数据进行操作。
 enclave代码可以离开受保护的内存区域和在不可信任的区域调用函数(通过特别的命令),减少enclave对不可信区域的依赖性可以加强对抵御可能攻击的保护。 ?
采用上述设计考虑,将提高防护效果,因为我们将攻击面最小化。
 作为一个开发者,治理Intel SGX项目的第一步就必须重新设计和重构应用程序以符合这些准则。通过隔离访问私密数据的数据模块,紧接着移动这些模块到一个单独的包/库。教程部分详细介绍了如何创建这样的enclave。

Terminology and Acronyms 术语和缩写词
keyinterpretation1interpretation2
AEArchitectural enclaves ?
AttestationProve authenticity证明真实性。在平台认证情况下,需要证明平台的身份。
CACertificate Authority证书颁发机构
ECALLEnclave call一个进入enclave的函数调用
ECFEnclave Configuration FileEnclave配置文件
EDLEnclave Definition LanguageEnclave定义语言
ISVIndependent Software Vendor独立软件供应商
OCALLOutside call从enclave中调用不可信函数的函数调用
TCBTrusted computing base被认为是安全且不受损害的部分硬件和软件
Intel® SGX SSLIntel® SGX SSL cryptographic library based on the OpenSSL基于OpenSSL的Intel SGX SSL加密库,为SGX扩展包应用程序提供加密服务
此处举出最常见的一些术语,以后遇到其他的可以去手册上查找。

更多推荐

Intel SGX Developer Reference 学习笔记(一)

本文发布于:2024-03-23 01:55:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1739080.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:学习笔记   SGX   Intel   Reference   Developer

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!