SGX技术的分析与研究 学习笔记

  • SGX技术的分析与研究 学习笔记
    • 1 SGX架构概述
    • 2 SGX关键技术
      • 2.1 Enclave安全容器
      • 2.2 Enclave保护机制
        • 2.2.1 内存访问语义
        • 2.2.2 地址映射保护
        • 2.2.3 Enclave机密性和完整性保护
      • 2.3 SGX认证

SGX技术的分析与研究 学习笔记

本文参考自论文:
王鹃, 樊成阳, 程越强, 赵波, 韦韬, 严飞, 张焕国, 马婧. SGX技术的分析和研究. 软件学报, 2018, 29(9): 2778-2798.http://www.jos.org.cn/1000-9825/5594.htm

SGX(software guard extensions)
2013年,Intel公司提出了新的处理器安全技术SGX,能够在计算平台上提供一个可信的隔离空间,保障用户关键代码和数据的机密性和完整性.
Intel推出SGX(software guard extensions)指令集扩展, 旨在以硬件安全为强制性保障, 不依赖于固件和软件的安全状态, 提供用户空间的可信执行环境, 通过一组新的指令集扩展与访问控制机制, 实现不同程序间的隔离运行, 保障用户关键代码和数据的机密性与完整性不受恶意软件的破坏.

安全性保障

  • 不同于其他安全技术, SGX的可信计算基(trusted computing base, 简称TCB)仅包括硬件,
  • 避免了基于软件的TCB自身存在软件安全漏洞与威胁的缺陷, 极大地提升了系统安全保障; 此外, SGX可保障运行时的可信执行环境,
  • 恶意代码无法访问与篡改其他程序运行时的保护内容, 进一步增强了系统的安全性; 基于指令集的扩展与独立的认证方式,使得应用程序可以灵活调用这一安全功能并进行验证。

1 SGX架构概述

Intel SGX[1, 2]是Intel架构新的扩展, 在原有架构上增加了一组新的指令集和内存访问机制[3].这些扩展允许应用程序实现一个被称为enclave的容器, 在应用程序的地址空间中划分出一块被保护的区域, 为容器内的代码和数据提供机密性和完整性的保护, 免受拥有特殊权限的恶意软件的破坏.


SGX的实现需要处理器、内存管理部件、BIOS、驱动程序、运行时环境等软硬件协同完成.除了提供内存隔离与保护安全属性, SGX架构还支持远程认证和密封的功能, 可用于安全软件应用和交互协议的设计.

2 SGX关键技术

2.1 Enclave安全容器

Enclave是一个被保护的内容容器, 用于存放应用程序敏感数据和代码[7].SGX允许应用程序指定需要保护的代码和数据部分, 在创建enclave之前, 不必对这些代码和数据进行检查或分析, 但加载到enclave中去的代码和数据必须被度量.当应用程序需要保护的部分加载到enclave后, SGX保护它们不被外部软件所访问.Enclave可以向远程认证者证明自己的身份, 并提供必需的功能结构用于安全地提供密钥.用户也可以请求独有的密钥, 这个密钥通过结合enclave身份和平台的身份做到独一无二, 可以用来保护存储在enclave之外的密钥或数据.

所有的enclave都驻留在EPC(enclave page cache)中, 这是系统内一块被保护的物理内存区域, 用来存放enclave和SGX数据结构[8].EPC布局由平台具体实现决定, 如果CPU支持SGX架构并在加密保护的DRAM (dynamic random access memory)中实现EPC, 那么它也支持BIOS保留一段叫PRM(processor reserved memory)的内存范围.BIOS通过配置一组范围寄存器分配PRM.具体的PRM和EPC布局和平台有关, 并取决于BIOS设置, 下图 2是一个PRM和EPC布局的例子.


Enclave的结构如图 3所示, 其中, TCS(thread control structure)保存着进入或退出enclave时恢复enclave线程的特殊信息.每一个enclave中的执行线程都和一个TCS相关联, 它需要4K字节对齐, 由多个部分组成, 例如保留位(RESERVED)、标志位(FLAGS)、状态保存区偏移量(state save area offset, 简称OSSA)等.

2.2 Enclave保护机制

针对enclave的保护机制主要包括两个部分:一是enclave内存访问语义的变化, 二是应用程序地址映射关系的保护, 这两项功能共同完成对enclave的机密性和完整性的保护.

2.2.1 内存访问语义

在系统内分配一块被保护的物理内存区域EPC, 用来存放enclave和SGX数据结构[9].必须保证内存保护机制在物理上锁住EPC内存区域, 将外部的访问请求视为引用了不存在的内存, 使得外部的实体(直接存储器访问、图像引擎等)无法访问.对于使用MOV等指令访问enclave内部的页面的情况, 硬件将执行下列的检查.

(1) 处理器当前运行在enclave mode中;

(2) 访问地址在enclave地址空间;

(3) 物理地址在EPC内存中;

(4) EPCM(enclave page cache map)检查, 请求访问的页属于正在运行的enclave(只有enclave内的代码才能访问该enclave的内容).

系统在SGX调用前, 必须处于保护模式, 且需要支持分页.SGX所提供的内存保护机制, 在保护模式所提供的段保护、页保护机制基础上进行进一步的内存保护, 访问地址由虚拟地址转换为物理地址进行访问.对内存的访问可分为如下5种类型, 如图 4所示


(1) 运行于非enclave模式的处理器访问PRM之外的内存, 按照保护模式下的机制进行访问;

(2) 运行于非enclave模式的处理器访问PRM内部内存, 将被视为引用了不存在的内存;

(3) 处理器运行于enclave模式, 访问的页面不在enclave的虚拟地址空间, 但是处于EPC的区域范围内, 则CPU将这次访问视为引用了不存在的内存;

(4) 处理器运行于enclave模式, 硬件允许enclave代码访问处理器保留内存(PRM)外部的地址;

(5) 如果页面在enclave的虚拟地址空间外, 且指向PRM页面, 硬件将阻止访问并且发出异常.

简而言之, enclave外部的应用程序不能访问enclave内存; enclave内部的代码在EPC范围内只能访问属于自己的内存区域, 不能访问别的enclave内存; **对于PRM以外的内存, 则按照系统中其他的保护机制进行访问.**这样的内存保护机制, 防止了enclave内部运行的程序被其他恶意软件盗取隐私信息和篡改.

2.2.2 地址映射保护

EPC内存以页为单位进行管理, 页的控制信息保存在硬件结构EPCM里, 一个页面对应一个EPCM表项, 类似于操作系统内的页表, 管理着EPC页面的基本信息, 包括页面是否已被使用、该页的拥有者、页面类型、地址映射和权限属性等[10].EPCM结构在CPU地址映射过程中用于执行enclave页面的访问控制, 逻辑上而言, 它在保护模式的段保护和页保护机制的基础上增加了一层安全的访问控制.EPCM结构由PMH(page miss handler)硬件模块访问, 这个模块通过查询页表(系统软件维护的)、范围寄存器、EPCM来进行内存访问.EPCM逻辑结构图如图 5所示.

2.2.3 Enclave机密性和完整性保护

应用程序在申请创建一个enclave时, 需要进行页面分配、复制程序代码与数据和度量操作, 创建过程的最后一步需要对enclave的完整性进行验证, 判断特权软件在创建过程中是否篡改了程序数据, 如分配了多余的页、将恶意代码复制进来, 或是篡改了复制的数据等.通过对每个添加的页面内容进行度量, 最终得到一个创建序列的度量结果, 保存在enclave的控制结构中.然后, SGX通过一条初始化指令将这个结果与enclave所有者签名的证书中的完整性值进行比较:如果匹配, 则将证书中的所有者公钥进行哈希, 作为密封身份保存在enclave控制结构中; 如果不匹配, 则说明创建过程存在问题, 指令返回失败结果.

成功进行了初始化指令之后, 才能进入enclave执行程序, 此后SGX提供的内存保护和地址映射保护使得外界无法访问enclave内存, 从而保证了enclave的机密性和完整性, 远程的认证者可以通过enclave的完整性度量值和其密封身份, 确保其正确地创建.图 6对这个过程进行了描述, 其中, 较粗箭头表示请求的操作, 细箭头表示具体步骤.

2.3 SGX认证

SGX提出了两种类型的身份认证方式:一种是平台内部enclave间的认证, 用来认证进行报告的enclave和自己是否运行在同一个平台上; 另一种是平台间的远程认证, 用于远程的认证者认证enclave的身份信息.

当enclave向平台上其他enclave报告身份时, 先获取当前的enclave的身份信息和属性、平台硬件TCB信息, 附加上用户希望交互的数据, 生成报告结构; 然后获取目标enclave的报告密钥, 对报告结构生成一个MAC标签, 形成最终的报告结构, 传递给目标enclave, 由目标enclave验证请求报告身份的enclave跟自己是否运行于同一平台.

为了实现远程认证, 需要引入一个特殊的引用(quoting)enclave.同一平台enclave之间的验证使用的是对称密钥, 不适用于远程认证, 因此, 平台间的认证采用非对称密钥机制.由引用enclave创建平台认证的签名密钥EPID(enhanced privacy identification), 这个密钥不仅代表平台, 还代表着底层硬件的可信度, 并且绑定处理器固件的版本, 当enclave系统运行时, 只有引用enclave才能访问到EPID密钥.

远程认证的过程中, 假设远程认证方B要认证enclaveA, A先执行EREPORT指令, 将A的身份和附加信息组合生成REPORT结构, 利用引用enclave(称其为Q)的报告密钥生成一个MAC, 连同报告结构一起发给Q, Q通过该结构验证A是否运行于同一平台, 然后将它封装为一个引用结构体QUOTE, 并使用EPID进行签名, 将QUOTE和签名一同发给远程认证者.报告结构还需提供额外的用户数据域, 可用来传递用户自定义的信息, 以支持更复杂的交互方式.

SGX技术的分析与研究 学习笔记相关推荐

  1. > 《物联网技术与应用》课程学习笔记

    <物联网技术与应用>课程学习笔记 文章目录 前言 第一次课 1.什么是物联网 2.物联网的特征 3.解释NB-IOT(窄带宽中束物联网)的含义 4.解释RFID有源.无源的含义 ~~5.物 ...

  2. 庄懂的技术美术入门课系列——学习笔记

    关AO的知识之前涉及到就# 庄懂的技术美术入门课系列--学习笔记 本系列旨记录看视频学习时的一些看个人的理解和思考 1.三色混合的环境光 基本思路: 物体的环境光可以想象成是在物体四周全方位向物体射出 ...

  3. setup.s 分析—— Linux-0.11 学习笔记(二)

    更新记录 版本 时间 修订内容 1.0 2018-4-14 增加了"获取显示模式"这一节,AL取值的表格 标题: setup.s 分析-- Linux-0.11 学习笔记(二) 老 ...

  4. 嵌入式之uboot源码分析-启动第二阶段学习笔记(下篇)

    接上部分---->嵌入式之uboot源码分析-启动第二阶段学习笔记(上篇) 注:如下内容来自朱老师物联网大讲堂uboot课件 3.2.14 CFG_NO_FLASH (1)虽然NandFlash ...

  5. 基于迁移学习的旋转机械故障诊断方法研究学习笔记

    基于迁移学习的旋转机械故障诊断方法研究学习笔记 现在大一点的神经网络模型也要求数据量的足够大,但是对于小样本的数据,有一些神经网络模型也能够处理的很好 2. 这是现在神经网络也要求的数据最好能够独立同 ...

  6. 日志分析工具 LogParser 学习笔记

    1.LogParser是什么? 官方文档解释:log Parser是一款功能强大的多功能工具,可提供对基于文本的数据(例如日志文件,XML文件和CSV文件)以及Windows®操作系统上的关键数据源( ...

  7. jQuery源码分析研究学习笔记-jQuery.clean()(七)

    jQuery.clean( elems, context, fragment, scripts ) 参数elems:数组,包含了待转换的HTML是代码 参数context:文档对象,该参数在方法jQu ...

  8. 知识图谱构建技术综述-2.3知识推理-学习笔记

    文章信息:文章末尾,只是一个自我学习过程的积累,红色为可探索思考的地方. 目录 2.3 节 知识推理 2.3.1 基于规则的推理 2.3.2 基于分布式特征表示推理 (1)基于翻译模型的知识推理 (2 ...

  9. 装备保障性验证知识图谱构建方法研究-学习笔记

    装备保障性验证知识图谱构建方法研究 领域知识图谱构建 在逻辑层面,知识图谱通常可以划分为数据层和模式层两个层次.数据层主要是将领域中的多源异构数据转换为三元组的形式,通过一系列三元组表达领域知识或者常 ...

最新文章

  1. mysql 如何将一个库的一个表的数据复制到另一个库中的一个表
  2. 案例:用户信息列表展示||1. 需求 2. 设计 3. 开发4. 测试 5. 部署运维
  3. python 切片 单冒号的作用[:](批量赋值最小数组单元)
  4. 【USACO】电子游戏 有条件的背包
  5. 当HTTP状态代码不足时:处理Web API错误报告
  6. android modbus 串口,android modbus RTU jssc连接
  7. MySQL建表语句解析表名
  8. labeltool标注工具使用说明
  9. ERP系统如何完成工厂车间流程
  10. Excel实用教程-IF函数怎么用
  11. 远程分支已经不存在的解决办法
  12. P14 Optimistic Concurrency Control 课程观看笔记
  13. 异构群体机器人协作任务分配(群体智能论文学习)
  14. PPT演示文稿放映时会议记录的技巧
  15. 第一个python自动化脚本
  16. java写入word文件_使用JAVA写入word文件
  17. 计算机技术对身体有益,对眼睛有益的7种食物,常看电脑和手机的你一定要多吃!...
  18. 2021-10-13 CAN DM1排放和故障代码
  19. 对redis的keys方法替换
  20. 【教学类-12-02】20221105《连连看12*4-分栏4-不重复24个)(小班主题《白天与黑夜》)

热门文章

  1. 选用pdf转cad最好的软件转换操作
  2. mate20 全网通 激活设备 卡刷包 修复过程
  3. 关于Visual studio 2010运行时闪退问题的解决
  4. GREoverIPsec的本质华为
  5. win7 virtualbox VBoxDD.DLL 0x80004005 uxtheme.dll 错误
  6. 【Android 布局】AbsoluteLayout(绝对布局)
  7. 如何配置SonicWALL DNS代理
  8. kettle安装与配置
  9. 搜狗做AI:围绕语言,力出一孔
  10. samp自建服务器教程,网管实战:十分钟建立SAMP开发环境