SGX入门

article/2025/9/21 21:48:14

如何设计SGX程序:

SGX分为可信部分和不可信部分,可信部分由enclave组成(一个应用程序可以拥有一个或多个enclave),enclave存储在加密的内存中,受SGX保护,enclave一旦被建立就不能更改,所以通常认为是可信的,如果被恶意篡改那么enclave便不会加载。非可信部分指不受SGX保护的内存和应用程序。
设计一个SGX程序要求将代码分成不同部分,首先应判断哪些代码应该放到enclave,哪些不用,以及他们之间的交互。

1.确定机密信息。机密信息指不希望除处理它的程序外被看到的信息。
2.确定机密信息的提供者和使用者。
在这里插入图片描述
3.确立enclave边界(要尽可能多的包含机密数据,并减少与非信任代码的交互)
但是包含太多非机密数据也不行。。会造成很多资源浪费~
在这里插入图片描述
4.精简enclave中的代码(两个原则)
在这里插入图片描述
enclave的体积应该尽可能小,并且在机密信息不需要使用后需要及时销毁这部分enclave
在这里插入图片描述
尽量用更少的调用完成更多的工作

安全区定义语言——EDL(Enclave Defination Language)

SGX提供的最基本的保护措施:enclave中的机密信息能且仅能被enclave中的代码访问,而执行enclave中的代码的唯一方式就是通过开发人员创建的接口函数(这是由CPU保障的,即使特权用户也必须遵守)
每个enclave可以定义一个或多个E-CALL(Enclave call)和O-CALL。E-CALL是非可信应用程序进入enclave的入口。O-CALL使得安全区函数可以调用安全区外的应用程序(非可信),再返回到安全区中。E-CALL和O-CALL共同组成安全区的接口。但是这些接口函数并非直接由非可信应用程序执行(对enclave入口和出口的访问直接由CPU严格控制)。要完成转换,必须按顺序执行特定的CPU指令。

SGX SDK把这些底层细节做了抽象,Edger8r可以自动为开发者的E-CALL和O-CALL生成代理函数,开发者可以像调用C语言函数一样调用代理函数。
Edger8r从EDL文件中读取安全区接口的定义(以创建代理函数)
EDL文件和C语言的头文件风格类似,语法上也类似。
在这里插入图片描述
E-CALL定义在可信区,O-CALL定义在非可信区
所有能被非可信程序调用的E-CALL必须声明为public,每个安全区至少有一个public的E-CALL,不含public关键字的E-CALL只能被O-CALL执行。当E-CALL或O-CALL被调用时,函数参数在可信内存和非可信内存间封装传送,定义E-CALL或O-CALL时需要严格定义参数的传递方向和个数


http://chatgpt.dhexx.cn/article/CNVm0wKn.shtml

相关文章

SGX Enable

根据INTEl的官方建议, 目前的电脑主板在BIOS设置上只保留了Disabled和Software Controlled来开启和关闭SGX扩展 使用Software Controlled开关的原因官方文档有阐述,如下: 开启SGX扩展,首先需要满足以下要求: CPU具有…

Intel SGX技术详细解释(非常棒)

http://www.jos.org.cn/html/2018/9/5594.htm#b18 随着信息技术的迅速发展与广泛应用, 人类社会已经进入了一个崭新的互联网时代.一方面, 人们享受着互联网科技带来的便利; 另一方面, 由网络和信息系统构成的网络空间也面临着日益严峻的安全问题.信任是网络空间中安全交互的基…

SGX问答

0 前言 有些问题比较常见,在这里直接将问答内容贴出来,方便大家搜索。有空再重新组织文字。 (我会避免泄露私人信息) 1 内存地址翻译全部交给os,那中间经过cache也是全部交给os是嘛?这个cache这部分&…

小谈Intel SGX

目录 Intel SGX简介 背景 为什么要Intel SGX? Intel SGX尚处于学术讨论 Intel SGX和可信启动什么关系? 开发者眼中SGX长什么样子? SGX访问控制是什么? MEE与SGX EPC内存加密 CPU里面SGX长什么样子? 有Enclav…

SGX技术与SGX攻击

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

Intel SGX初步学习理解笔记(持续更新)

一些概念 SGX(Software Guard eXtensions)软件保护扩展:是一组CPU指令扩展,能够创造出一个可信执行环境来保护代码和数据,即使使用root 权限也无法访问。通过这个硬件设施,应用程序可以隔离代码和数据来达…

Intel 的 SGX 技术小知识

1.SGX 概述 Intel SGX (Software Guard Extensions) 是一种针对特定应用程序的安全增强技术。它允许应用程序在处理机上创建受保护的执行环境,这个执行环境被称为“enclave”。这个 enclave 是一个被硬件隔离的内存区域,只有在安全条件下才可以访问。这…

新手学编程必会的100个代码

前言 我记得刚开始接触编程的时候,觉得太难了。 也很好奇,写代码的那些人也太厉害了吧?全是英文的,他们的英文水平一定很好吧? 他们是怎么记住这么多代码格式的?而且错了一个标点符号,整个程…

适用于编程开发自学的学习网站

今天为大家分享几个编程开发自学的学习网站 1.C语言网 该网站有很多C语言相关的教程、资源、博客和练手习题,同时也有很多题库和比赛,比较实用。 网址:https://www.dotcpp.com/ 2.cppreference cppreference是一个免费网站,上面…

初学者必会的100个编程代码

这是本文的目录 前言1、for循环中的else条件2、数字求和3、随机数生成4、将列表中的所有元素作为参数传递给函数5、获取列表的所有中间元素6、使用一行代码赋值多个变量7、Python清空列表8、通过Enum枚举同一标签或一系列常量的集合9、重复字符串10、计算每个月天数11、输出指定…

程序员初学者应该如何自学编程

在你要进入学习殿堂之前,先问你自己100遍:“我能坚持多久?”不要认为这样做很无聊,你要是真的试了,你会有不同的一番感受的,不信你试试看。如果你越问越没信心的话,那说明你心理上还没有准备好&#xff1b…

编程在哪学,可以免费自学编程的10个网站

编程学习 很多人包括一些企业家,和市场营销人员都认为学习编程对一个人走向成功十分有帮助。在过去的一年里,我一直在学习编程。它有助我成为一个更好的创业者,我甚至可以提供一些帮助,当我的团队需要解决一些bug的时候。 现在&a…

编程入门: 自学编程从哪里开始? [初学参考]

自学编程,先学python、java还是C/C? ——大四学生对于初学者的一点建议 摘要: 自学编程,先学什么语言呢?实际上,编程能做的事太多了,首先明确自己想要用代码做什么,再明确自己的学…

想自学编程?这么多编程自学网站,总有一个适合你吧!

小伙伴们周末快乐。 今天分享一波适用于编程开发学习的自学网站,主要涉及编程学习和练手 、 提问交流 、 计算机公开课 、 在线刷题 、以及 问题搜索 等几个方面,希望能有帮助。 C语言网 该网站有很多C语言相关的教程、资源、博客和练手习题&#xff0c…

Proxyee-down – 百度网盘全平台满速下载神器,还带有IDM的全网嗅探功能!(替代PanDownload)

百度云网盘是目前最流行的在线文件分享途径,但它对免费用户的限速实在是严苛,即便是100M的宽带,常常也会遇到仅有几十KB/秒的速度,一个大文件要下载到天荒地老。 知道君曾分享过一些百度云网盘限速的解决办法,比如使用…

http proxy 代理

配合webpack 和 webpack-dev-server处理 安装 // 安装 cnpm html-webpack-plugin --save -D cnpm install webpack webpack-cli webpack-dev-server --save -D新建src文件夹 新建文件 index.html 和 index.js在index.js 发送一个请求 import axios from axiosaxios.get(htt…

Proxyee-down 3.x的下载与安装

本篇博客将持续更新 因为软件的作者MonkeyWei在3.x版本的软件更新中,并未发布3.x版本的exe文件只在github中发布了jar包(需要java环境)笔者本来是想将源代码生成exe文件,方便大家的下载与安装。奈何笔者水平有限,找了…

JS Proxy (代理)

Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。 语法: const p new Proxy(target, handler) 参数: target : 要使用 Proxy 包装的目标对象&…

Vue proxy代理

proxy代理是解决开发环境中的跨域问题,正式环境的跨域需要使用nginx反向代理或者是后端解决 在vue中实现proxy代理的步骤 在vue中使用proxy进行跨域的原理是:将域名发送给本地的服务器(启动vue项目的服务,比如loclahost:8080)&a…

Proxyee-down的下载与安装教程

Proxyee-down是monkeyWie在Github上的一个开源项目,向作者致敬。 最新版的Proxyee-down为3.12(2018.10更新),因为作者在3.x后的版本中并未发布exe版本,只发布了jar包 所以我们需要在计算机中安装Java环境才能使用Prox…