Intel SGX 概述 --潦草笔记

文章目录

  • 前言
  • 一、SGX介绍
    • 1.1 指令介绍
    • 1.2 数据结构
  • 二、内存保护过程
    • 2.1 enclave页面缓存(EPC)
    • 2.2 Enclave页面缓存映射(EPCM)
  • 三、部署SGX
  • 参考资料

前言

SGX是Intel开发的新的处理器技术,可以在计算平台上提供一个可信的空间,保障用户关键代码和数据的机密性和完整性。SGX全称Intel Software Guard Extensions,顾名思义,其是对因特尔体系(IA)的一个扩展,用于增强软件的安全性。

一、SGX介绍

SGX是Intel开发的新的处理器技术,可以在计算平台上提供一个可信的空间,保障用户关键代码和数据的机密性和完整性。SGX全称Intel Software Guard Extensions,顾名思义,其是对因特尔体系(IA)的一个扩展,用于增强软件的安全性。

SGX是在2015年推出的第六代英特尔酷睿处理器,基于Skylake微架构。可以通过执行带有结构化扩展功能叶(Structured Extended Feature Leaf)标志的CPUID指令来检查SGX支持,并检查EBX寄存器的第二位是否已设置。为了能够使用SGX,它必须由BIOS启动,并且目前,只有少数BIOS支持该技术,这是它没有被广泛使用的原因之一。

SGX的保护方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave中,保护其不受恶意软件的攻击。而且执行SGX的权限非常高,特权或者非特权的软件都无法访问enclave,也就是说,一旦软件和数据位于enclave中,即便操作系统管理员和VMM(Hypervisor)也无法影响enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身。SGX创建的enclave也可以理解为一个可信执行环境TEE(Trusted Execution Environment)。不过其与ARM TrustZone(TZ)还是有一点小区别的,TZ中通过CPU划分为两个隔离环境(安全的环境和正常的环境),两者之间通过SMC指令通信;而SGX中一个CPU可以运行多个安全enclaves,并发执行亦可。当然,在TZ的安全的环境内部实现多个相互隔离的安全服务亦可达到同样的效果。另外,SGX是针对桌面和服务器平台的。

总结来说,Intel SGX的安全性能有以下3点:

  1. 把应用程序分为两部分:安全应用程序和非安全应用程序;
  2. 将合法软件的安全操作封装在一个enclave中;
  3. 当调用enclave函数时,只有enclave内部的代码才能查看其数据,并始终拒绝外部访问;当调用结束时,enclave的数据会留在受保护的内存中。
    在这里插入图片描述

安全执行环境是主机进程的一部分,这意味着:

  1. 应用程序包含自己的代码,数据和enclave;
  2. enclave也包含自己的代码和自己的数据;
  3. SGX保护enclave代码和数据的机密性和完整性;
  4. Enclave接入点是在编译期间预先定义的;
  5. 支持多线程(但不能轻易实现);
  6. enclave可以访问其应用程序的内存,但应用程序的内存则无法访问enclave。
    在这里插入图片描述

1.1 指令介绍

Intel SGX定义了18条新指令,其中13条由管理者使用,5条由用户使用。所有这些指令都以微代码实现,以便可以修改指令的具体行为。以下是18条新指令的完整说明:

  • EADD:添加页面;
  • EENTER:进入enclave;
  • EBLOCK:阻止EPC页面;
  • EEXIT:退出enclave;
  • ECREATE:创建安全区;
  • EGETKEY:创建加密密钥;
  • EDBGRD:通过调试器读取数据;
  • EREPORT:创建加密报告;
  • EBDGWR:通过调试器写入数据;
  • ERESUME:重新进入安全区;
  • EINIT:初始化enclave;
  • ELDB:加载EPC页面为已阻止;
  • ELDU:加载EPC页面为未阻止;
  • EPA:添加版本数组(version array);
  • EREMOVE:从EPC中删除页面;
  • ETRACE:激活EBLOCK检查;
  • EWB:回写或是让EPC页面无效;

其中EENTER, EEXIT, EGETKEY, EREPORT,ERESUME为用户使用的指令。

1.2 数据结构

另外,Intel SGX还定义了13种新的数据结构,其中8种用于enclave管理,3种用于内存页面管理,2种用于资源管理。以下是13种新的数据结构的完整说明:

  • SGX Enclave控制结构(SECS);
  • 线程控制结构(TCS);
  • 存储状态区(SSA);
  • 页面信息(PAGEINFO);
  • 安全信息(SECINFO);
  • 分页加密元数据(PCMD);
  • 版本数组(VA);
  • Enclave页面缓存映射(EPCM);
  • Enclave签名结构(SIGSTRUCT);
  • EINIT令牌结构(EINITTOKEN);
  • 报告(REPORT);
  • 报告目标信息(TARGETINFO)
  • 密钥请求(KEYREQUEST)

我会在以下详细介绍相关的这写指令和数据结构,然后对它们如何实现哪种安全功能进行详细解释。

二、内存保护过程

2.1 enclave页面缓存(EPC)

Enclave代码和数据放置在被称为Enclave Page Cache(EPC)的特殊内存区域中,该内存区域使用内存加密引擎(MEE)进行加密,该内存区域只存在于一种专用的芯片上。内存总线上的外部读取只能观察到加密数据。而页面只会在处理器内核中才能被解密,这个密钥只会在enclave页面缓存启动时生成并存储在CPU中。

此时传统页面检查已被扩展,以防止外部访问EPC页面。
在这里插入图片描述

2.2 Enclave页面缓存映射(EPCM)

Enclave页面缓存映射(EPCM)结构用于存储页面状态,它位于受保护的内存中,其大小限制了EPC的大小(由BIOS设置,最大128MB)。EPCM包含了每个页面的配置、权限和类型。

三、部署SGX

  • Ubuntu安装SGX
  • Linux ubuntu20.04 安装使用 Intel sgx
  • Linux 编写SGX Hello_World

参考资料

  1. SGX技术的分析和研究 --SGX的综述论文
  2. SGX的内部组件概述(一)
  3. SGX的内部组件概述(二)
  4. SGX可能遇到的攻击
  5. Intel 的 SGX 技术小知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/498586.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker本地部署GPT聊天机器人并实现公网远程访问

文章目录 前言1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址9. 结语 前言 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛&…

本地数据库Room——study_1

目录 1.概念 2.组成 3.导入依赖 4.具体实现 4.1 数据表的设置 4.2 方法接口 4.3 数据库类 -》 基石,使用模板 4.4 实现真正的实例Room库 1.概念 Room 持久性库在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时&#xff0c…

12v-36V转5v1A车载空气净化器芯片供电方案-AH8332G

12V-36V转5V 1A车载空气净化器芯片供电方案 随着车载空气净化器的普及,如何为其提供稳定、高效的电源已成为一个重要问题。本文将介绍一种适用于车载空气净化器的供电方案,该方案可将输入电压范围为12V-36V的电源转换为输出为5V,峰值电流为1…

网站数据加密之Hook通用方案

文章目录 1. 写在前面2. 请求分析3. 编写Hook4. 其他案例 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋…

dolphinscheduler伪集群部署教程

文章目录 前言一、配置免密登录1. 配置root用户免密登录2. 创建用户2.1 创建dolphinscheduler用户2.2 配置dolphinscheduler用户免密登录2.3 退出dolphinscheduler用户 二、安装准备1. 安装条件2. 安装jdk3. 安装MySQL4. 安装zookeeper4.1 zookeeper单机部署4.1.1 zookeeper3.1…

echarts鼠标向右/向左绘制实现放大/还原

echarts toolbox 的datazoom提供了绘制放大的功能,但通过鼠标绘制只能进行放大 应需求放大与还原都通过鼠标行为实现,增加从右往左绘制时还原放大结果 demo 结果 重写datazoom的原型方法实现绘制事件的拦截 const comp myChart._model.getComponent(to…

智慧公厕:打造智慧城市环境卫生新标杆

随着科技的不断发展和城市化进程的加速推进,智慧城市建设已经成为各地政府和企业关注的焦点。而作为智慧城市环境卫生管理的基础设施,智慧公厕的建设和发展也备受重视,被誉为智慧城市的新标杆。本文以智慧公厕源头厂家广州中期科技有限公司&a…

python 中常用的热门库介绍

阅读本文之前请参阅-----如何系统的自学python Python 是一种非常流行的编程语言,它的一个主要优势是拥有一个庞大的生态系统,其中包括许多强大的库。这些库为各种任务提供了解决方案,从数据分析到机器学习,从网络爬虫到图像处理。…

Linux安装Nginx详细步骤

1、创建两台虚拟机,分别为主机和从机,区别两台虚拟机的IP地址 2、将Nginx素材内容上传到/usr/local目录(pcre,zlib,openssl,nginx) 附件 3、安装pcre库   3.1 cd到/usr/local目录 3.2 tar -zxvf pcre-8.36.tar.gz 解压 3.3 cd…

vue使用gitshot生成gif

vue使用gitshot生成gif 问题背景 本文将介绍vue中使用gitshot生成gif。 问题分析 解决思路: 使用input组件上传一个视频,获取视频文件后用一个video组件进行播放,播放过程进行截图生成图片数组。 demo演示上传一个视频,然后生…

【JavaEE进阶】 Spring AOP快速上手

文章目录 🍃什么是AOP🌳什么是Spring AOP🌴上手Spring AOP🚩引入依赖🚩编写AOP程序 ⭕总结 🍃什么是AOP AOP是Aspect Oriented Programming的简称(又称为面向切⾯编程) 什么是面向…

SHARE 100M PRO:航测新高度,精准捕捉每一帧

SHARE 100M PRO:单镜头航测相机的革新,巡检效率与精度的新标杆 在航测和巡检领域,精确的数据采集对于确保项目成功至关重要。SHARE 100M PRO,作为一款单镜头航测相机,以其卓越的性能和创新技术,正在重新定…