Intel Software Guard Extensions简介

文章目录

  • 前言
  • 一、新的基于硬件的控件实现数据安全
  • 二、机密计算的挑战
  • 三、用于机密计算的增强安全功能
  • 四、Enclave验证和数据密封
  • 五、数据中心认证
  • 参考资料

前言

最近开始研究Intel SGX硬件特性,记录下研究过程。
参考文档:product-brief-SGX

一、新的基于硬件的控件实现数据安全

Intel Software Guard Extensions(Intel SGX)为云计算和企业环境提供了基于硬件的数据安全控制。它通过硬件级别的内存加密,将特定的应用程序代码和数据隔离在内存中。

该功能的目标是像一个倒置的沙盒,不是保护系统免受恶意代码的影响,而是保护应用程序免受被入侵的内核、虚拟机监视器或其他应用程序的影响。

Intel SGX的基本能力是通过为程序代码、数据和关键知识产权提供更高级别的隔离和认证,从操作系统、应用程序和硬件平台上减少软件受攻击的风险。Intel SGX已被用于增强多个用例和应用程序的安全性。

Intel SGX的关键特性和优势包括:
高级隔离:Intel SGX利用硬件技术,将程序代码和数据存储在被称为enclave的受保护区域中。这些enclave在执行过程中与其他系统组件隔离,防止恶意软件或攻击者对其进行访问和干扰。这种高级隔离有助于保护敏感信息和关键知识产权。

内存加密:IntelSGX使用内存加密来保护敏感的应用程序代码和数据。它允许开发人员创建被称为enclaves的私有内存区域,这些区域被加密并与运行在更高特权级别上的其他进程隔离。

数据保护:通过将代码和数据隔离在enclaves中,IntelSGX提供了高级别的保护,防止未经授权的访问或篡改。enclaves可以安全地存储和处理敏感信息,如加密密钥或用户凭据,而不会暴露给系统的其他部分。

精细控制:Intel SGX提供了对数据安全的精细级别控制。开发人员可以选择需要保护的应用程序部分,并将其指定为enclaves。这样可以灵活而有针对性地保护关键的代码和数据。

用户级保护:与依赖于操作系统特权的传统安全机制不同,Intel SGX使用户级别的代码能够保护自己的数据。这意味着即使操作系统或虚拟化程序受到攻击,enclave内的数据仍然保持安全。

即OS和VMM(Hypervisor)也无法影响enclaves区域的代码和数据,enclave只信任自己和Intel CPU。

可信执行环境:Intel SGX创建了一个可信执行环境,在其中可以安全地执行敏感计算。这对处理敏感数据的应用程序,如金融交易、数字版权管理或机密计算等,非常有益。

如下图所示:
在这里插入图片描述
Intel SGX 的关键功能和优势:
(1)提升机密性和完整性:Intel SGX 可以在操作系统、BIOS、虚拟机监视器(VMM)或系统管理模式(SMM)等层面存在特权恶意软件的情况下保护敏感数据。它确保在受保护的隔离区域内的数据保持机密性和完整性。

(2)部署选择性:使用 Intel SGX,可以灵活选择部署应用程序的方式。可以使用带有 SGX 库操作系统的现有应用程序,也可以使用提供的软件开发工具包(SDK)开发定制的应用程序。这种选择性使您能够根据特定需求定制解决方案。

(3)远程认证和配置:Intel SGX 支持远程认证,允许依赖方验证应用程序隔离区域的身份和完整性。此功能增强了隔离区域内配置密钥、凭证和其他敏感数据的安全性,为远程方提供了保障。

(4)减少攻击面:通过绕过操作系统和虚拟机层,运行在 Intel SGX 隔离区域内的应用程序可以直接与 CPU 进行通信。这样可以减少攻击面,并减轻系统更高层面的漏洞所带来的风险。

Intel SGX 提供了一个可信的执行环境,保护敏感数据,并使其能够在保护的隔离区域内进行安全协作。它提供机密性、完整性、部署灵活性、远程认证和减少攻击面等功能,使其成为保护数据隐私的有价值的技术。

二、机密计算的挑战

目前安全性主要关注对存储中的静止数据或在网络上传输的数据进行加密,但却没有保护数据在使用过程中的安全。Intel SGX利用CPU平台的优势,并建立在安全基础之上,保护数据和应用程序在使用过程中的安全性。

传统的安全方法通常只关注数据的静态存储和传输,但在数据使用的过程中,例如在计算机的内存中进行处理,数据很容易受到恶意软件、攻击者或系统特权用户的威胁。在这种情况下,即使数据在存储或传输时受到加密保护,一旦数据在使用过程中解密,它就变得容易受到攻击。

Intel SGX通过利用CPU的硬件特性和安全功能,提供了一种解决方案来保护数据和应用程序在使用过程中的安全性。它通过创建受保护的执行环境(enclave),将敏感数据和应用程序隔离在一个受信任的环境中。这些受保护的区域在处理器内部创建,可以保护数据免受恶意软件、攻击和特权用户的访问。

在Intel SGX的保护下,数据和应用程序在使用过程中得到了保护,即使在主机系统被攻陷或存在恶意软件的情况下,也可以确保数据的安全性。这种新的安全方法填补了数据在使用过程中的保护空白,为敏感数据和应用程序提供了强大的安全性保障。

三、用于机密计算的增强安全功能

下图示例展示了一个包含两个部分的Intel SGX应用程序:一个不受信任的部分用于启动enclave,以及一个可信部分,其中的生产代码(需要保护的数据)在enclave中运行。开发人员可以创建多个enclave,以协同工作来支持分布式架构。
在这里插入图片描述
从上图可以看到英特尔 SGX 技术的应用设计要求将应用分成两个部分:
(1)可信部分。 它指的是安全区。 可信代码中的代码是访问应用机密的代码。 一款应用可以拥有一个以上可信部分/安全区。
(2)不可信部分。 它包括应用的剩余部分及其所有模块。 需要指出的是,从安全区的角度来看,操作系统和虚拟机都被看做不可信部分。

可信部分应尽量保持最小,仅限于需要最高等级保护的数据以及必须直接作用于其上的操作。 具有复杂界面的大型安全区不仅仅会消耗更多受保护内存:还会产生更大攻击面。

安全区还应使可信-不可信部分交互程度保持最低。 虽然安全区可离开受保护内存区域,在不可信部分(通过专用指令)调用函数,但对依赖性进行限制将会针对攻击对安全区进行加固。

许多解决方案受益于Intel SGX提供的额外保护。解决方案示例包括隐私保护的人工智能和机器学习处理、密钥管理、专有算法保护、生物特征保护等。

使用Intel SGX可以提供以下优势和保护:
(1)隐私保护:Intel SGX的隔离性和加密功能可确保敏感数据在enclave内部得到保护,防止未经授权的访问和信息泄露。
(2)安全计算:通过在enclave中执行计算任务,可以确保算法、数据和结果的完整性和机密性。
(3)密钥管理:关键密钥可以存储在enclave中,利用SGX提供的保护机制来保护密钥不受恶意软件和攻击的威胁。
(4)保护专有算法:通过在enclave中运行专有算法,可以防止算法被破解或复制,保护知识产权和商业机密。
(5)生物特征保护:对于需要处理生物特征数据的应用,如指纹识别或面部识别,SGX可以确保生物特征数据在enclave中得到安全处理,防止生物特征数据被滥用或泄露。

这些只是一些使用Intel SGX的解决方案示例,实际上,几乎任何需要保护敏感数据、确保计算任务的隐私性和完整性的应用都可以受益于Intel SGX提供的额外保护。Intel SGX为开发人员提供了一种可信执行环境,使得安全性成为应用程序设计和开发的一个关键考虑因素。

在这个示例中,在运行时(参见下图),Intel SGX指令会构建并在一个特殊的加密内存区域内执行enclave,并且开发人员定义了受限制的入口/出口位置。这有助于防止数据泄漏:只有在被SGX enclave隔离和保护时,数据才是明文。在从enclave退出时,数据将被加密。在内存总线或系统内存上进行窥视的人只能看到密文。
在这里插入图片描述
上图的工作流程:
(1)应用程序由可信部分(enclave)和不可信部分构建而成。可信部分负责处理敏感数据或执行关键操作,而不可信部分执行其他非敏感任务。

(2)当应用程序运行时,它创建了一个enclave,这是一个安全且隔离的执行环境。enclave被放置在受信任的内存中,该内存由Intel SGX进行保护。

(3)在应用程序执行的某个阶段,调用了一个可信函数。这个函数包含敏感操作或访问敏感数据。执行转移到enclave,并在安全enclave内执行可信函数。

(4)在enclave内部,可信函数可以以明文形式访问所有进程数据。Intel SGX提供的技术有助于阻止对enclave数据的外部访问。这意味着即使攻击者获取了整个系统的内存访问权限,他们也无法直接访问或篡改enclave内的敏感数据。

(5)在可信函数执行完毕后,它返回并保留了enclave数据在受信任的内存中。数据仍受Intel SGX的保护,对外部实体来说是不可访问的。

(6)应用程序继续正常执行,不可信部分执行其各自的任务。如果需要进行其他敏感操作,可以再次调用可信enclave。

这个工作流程确保了enclave内的敏感操作和数据不会被未经授权的访问或篡改,而应用程序的其他部分则以常规方式运行。

这种机制的工作方式如下:
(1)创建enclave:开发人员使用Intel SGX SDK和工具将应用程序的一部分(可信代码)打包成enclave。这个enclave是一个受保护的执行环境,其中的代码和数据受到SGX的保护。
(2)运行enclave:在运行时,enclave被加载到一个特殊的加密内存区域中,称为Enclave Page Cache(EPC)。EPC是受SGX保护的内存区域,只有enclave可以访问其中的数据。
(3)执行enclave:在EPC中执行enclave的代码。SGX指令集提供了特定的指令和保护机制,用于确保enclave中的代码和数据的机密性和完整性。这些指令和机制包括密钥管理、内存加密、数据签名等。
(4)数据保护:在enclave内部,数据在明文状态下进行处理,受到SGX提供的保护。只有受信任的代码可以访问enclave内的数据,而外部的不可信代码无法直接访问或修改数据。这确保了数据的保密性和完整性。
(5)退出enclave:当代码执行完毕或需要将数据传递给不受信任的环境时,enclave通过受限制的出口位置退出。退出时,数据被加密,变为密文。这样,即使有人通过窃听内存总线或访问系统内存,也只能看到加密的数据,而无法获取原始数据的明文。

通过使用特殊的加密内存区域和受限制的入口/出口位置,Intel SGX确保了enclave中的数据在运行时得到保护,防止了数据泄漏和未经授权的访问。这使得SGX成为处理敏感数据和保护关键代码的强大工具。

四、Enclave验证和数据密封

设备制造商和ISV通常在制造时或通过复杂的现场配置来提供应用软件和秘密,这些配置无法在密码学上证明应用程序的完整性。Intel SGX通过在同一平台上运行的enclaves之间进行本地证明,使其能够向依赖方证明其enclave正在以预期的硬件/软件配置中运行。依赖应用程序会收到确认,确保其正在与预期的enclave进行交互,并继续正常进行。

这个过程可以被描述为以下步骤:
(1)设备制造商或ISV在设备制造时或现场配置中预先将应用软件和秘密加载到enclave中。

(2)在同一平台上运行的多个enclaves之间,可以使用Intel SGX提供的本地证明机制进行认证。这个机制使用硬件和软件组合的特征,生成一个称为enclave measurement的唯一标识符。

(3)当一个enclave希望与另一个enclave进行通信时,它可以生成一个称为quote的数据结构,其中包含了enclave自身的measurement和其他相关证据。

(4)接收方的enclave(relying party)可以验证quote的真实性和完整性。它可以使用Intel SGX提供的本地证明函数来验证quote,并与预期值进行比较。

(5)如果quote验证成功,relying application就可以确认与其交互的enclave正在以预期的硬件/软件配置中运行。这提供了对enclave完整性的加密证明。

通过这种方式,enclave可以提供给依赖方一个可信的证据,证明其正在以预期的配置中运行。这有助于确保enclave与其他enclave和应用程序之间的安全通信,并提供对enclave完整性的加密验证。

应用程序的可信部分被加载到一个enclave中,其中的代码和数据被测量。一个enclave报告被一个认证密钥签名,并发送给依赖方,后者可以验证enclave报告是由一个真实的Intel处理器生成的(参见下图)。在验证enclave身份后,依赖方可以对enclave更有信任,并提供密钥、凭证或其他数据。
在这里插入图片描述
下面是这个过程的说明:
(1)可信部分的应用程序被加载到enclave中,这是一个安全的执行环境。在加载过程中,enclave会进行测量,以生成一个称为enclave measurement的唯一标识符。这个measurement是根据enclave中代码和数据的内容计算得出的。

(2)在enclave中生成一个enclave报告(enclave report),其中包含了enclave的measurement和其他相关信息。这个报告是由enclave自动生成的,并包含了enclave的身份和状态信息。

(3)enclave报告被使用一个特定的认证密钥(Attestation Key)进行签名。这个认证密钥是由Intel提供的,并且是由Intel的信任基础所认可的。签名过程确保了报告的完整性和真实性,以防止篡改和伪造。

(4)签名后的enclave报告被发送给依赖方,这是与enclave进行交互的应用程序或服务。依赖方可以使用Intel提供的工具和API来验证报告的真实性和完整性。

(5)依赖方验证enclave报告的真实性后,可以更加信任enclave的身份和状态。这意味着依赖方可以相信enclave是由一个经过认证的Intel处理器生成的,并且没有被篡改。

(6)依赖方可以根据对enclave的信任程度,为其提供密钥、凭证或其他敏感数据。依赖方可以将这些数据直接传递给enclave,因为它具有对enclave的信任,并相信enclave会以安全的方式处理和保护这些数据。

通过这种方式,enclave报告的签名和验证过程确保了enclave的真实性和完整性,使依赖方能够对enclave更有信任,并为其提供敏感数据和资源。这有助于确保enclave与依赖方之间的安全通信和数据交互。

Intel SGX包括一个指令,用于生成特定于CPU/平台和/或enclave的“Sealing Key”(密封密钥),该密钥可用于更安全地存储和检索可能需要存储到磁盘上或在enclave外部保护的敏感信息。

以下是Sealing Key的工作原理的说明:
(1)在enclave内部,可以使用Sealing Key指令生成基于CPU/平台和/或enclave特征的唯一密钥。该密钥是特定于enclave和其所在的平台的。

(2)生成的Sealing Key可用于在enclave内部对敏感数据进行加密,然后将其存储在外部,例如磁盘或数据库中。这确保了即使在安全enclave外部访问数据时,数据仍保持机密性和保护。

(3)当enclave需要检索密封的数据时,可以使用Sealing Key对数据进行解密,并在enclave的受保护内存中恢复为其原始形式。

(4)Sealing Key只能在enclave内部访问,外部实体无法直接访问或使用它。这确保了敏感数据的安全性,只能在受信任的enclave执行环境中解密。

通过使用Sealing Key指令,Intel SGX实现了在enclave外部安全存储和检索敏感信息的能力,同时保持其机密性和保护性。它为敏感数据提供了额外的安全层,使其可以在enclave和外部存储或处理单元之间安全传输。

五、数据中心认证

Intel® SGX Data Center Attestation Primitives (Intel® SGX DCAP)允许企业、数据中心和云服务提供商自行构建和提供认证服务,而不是使用第三方提供商的远程认证。这还消除了直接访问互联网的需求,使所有配额验证和提供过程保持在本地网络中。
如下图所示:
在这里插入图片描述

通过使用Intel SGX DCAP,企业、数据中心和云服务提供商可以构建自己的认证服务,而无需依赖外部的第三方认证服务提供商。这使它们能够完全控制认证过程,并保持所有认证相关的步骤在本地网络中进行。这种本地化的认证方式有以下优势:
(1)自主性:企业、数据中心和云服务提供商可以根据自身需求和策略自主构建和管理认证服务。它们可以根据自己的安全标准和要求来定义认证规则和流程。

(2)本地网络保留:使用Intel SGX DCAP可以确保所有认证相关的配额验证和提供过程都在本地网络中进行,而不需要直接连接到互联网。这提供了更高的安全性和控制性,减少了与外部服务的依赖。

(3)简化架构:通过内部构建认证服务,企业、数据中心和云服务提供商可以简化整体架构,减少对外部服务的依赖和复杂性。它们可以将认证服务与现有的本地基础架构和网络集成,提供更高效和可管理的解决方案。

参考资料

https://blog.csdn.net/clh14281055/article/details/109091363

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python实现自动刷平台学时

背景 前一阵子有个朋友让我帮给小忙,因为他每学期都要看视频刷学时,一门平均需要刷500分钟,一学期有3-4门需要刷的。 如果是手动刷的话,比较麻烦,能否帮他做成自动化的。搞成功的话请我吃饭。为了这顿饭,咱…

Redis的五大数据类型详细用法

我们说 Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。本篇博客我们就将介绍这些数据类型的详细使用…

Javaweb之Vue组件库Element之Dialog对话框的详细解析

4.3.3 Dialog对话框 4.3.3.1 组件演示 Dialog: 在保留当前页面状态的情况下,告知用户并承载相关操作。其企业开发应用场景示例如下图所示 首先我们需要在ElementUI官方找到Dialog组件,如下图所示: 然后复制如下代码到我们的组件文件的templ…

「江鸟中原」有关HarmonyOS-ArkTS的Http通信请求

一、Http简介 HTTP(Hypertext Transfer Protocol)是一种用于在Web应用程序之间进行通信的协议,通过运输层的TCP协议建立连接、传输数据。Http通信数据以报文的形式进行传输。Http的一次事务包括一个请求和一个响应。 Http通信是基于客户端-服…

Go 数字类型

一、数字类型 1、Golang 数据类型介绍 Go 语言中数据类型分为:基本数据类型和复合数据类型基本数据类型有: 整型、浮点型、布尔型、字符串复合数据类型有: 数组、切片、结构体、函数、map、通道(channel)、接口 2、…

Redux在React中的使用

Redux在React中的使用 1.构建方式 采用reduxjs/toolkitreact-redux的方式 安装方式 npm install reduxjs/toolkit react-redux2.使用 ①创建目录 创建store文件夹,然后创建index和对应的模块,如上图所示 ②编写counterStore.js 文章以counterStore…

C语言入门---位操作

目录 1. 两个数不同的二进制位个数 2.原码、反码、补码 3.不创建临时变量实现两个数的交换 4.求一个整数存储在内存中的二进制中1的个数 5. 特例-1 6.将指定的位置置1 7.将指定位置置1 8.a与a 9.||与&& 10.逗号表达式 11.srand与rand 12.sizeof 13.结构体初始…

时间序列预测实战(二十)自研注意力机制Attention-LSTM进行多元预测(结果可视化,自研结构)

一、本文介绍 本文给大家带来的是我利用我自研的结构进行Attention-LSTM进行时间序列预测,该结构是我专门为新手和刚入门的读者设计,包括结果可视化、支持单元预测、多元预测、模型拟合效果检测、预测未知数据、以及滚动长期预测,大家不仅可…

Vue框架学习笔记——侦听(监视)属性watch:天气案例+immediate+deep深度监听

文章目录 前文提要天气案例描述样例代码呈现效果:事件的响应中可以写一些简单的语句(不推荐) 侦听(监视)属性watch结合天气案例的第一种写法(New Vue)immediate: 侦听(监…

linux安装部署redis

1、下载redis包2、解压3、进入解压路径编译安装4、修改配置文件使redis后台运行5、启动 1、下载redis包 https://redis.io/download/ 2、解压 tar -zxvf redis-7.2.3.tar.gz3、进入解压路径编译安装 cd redis-7.2.3 make && make install默认安装路径: …

某医生用 ChatGPT 在 4 个月内狂写 16 篇论文,其中 5 篇已发表,揭密ChatGPT进行论文润色与改写的秘籍

如果写过学术论文,想必会有这样的感受: 绞尽脑汁、茶饭不思、夜不能寐、废寝忘食、夜以继日,赶出一篇论文,然后还被导师点评,“写得就是一坨!” 可是,却有人4个月产出了16篇论文,成功…

哈希的应用——位图

位图 题目思考 题干: 给40亿个不重复的无符号整数, 没排过序. 给一个无符号整数, 如何快速判断一个数是否在 这40亿个数中. 看到这个问题可能会想到这样的思路: 1. 遍历, 时间复杂度O(N) 2. 排序 二分查找 3. 利用哈希表或红黑树, 就是放到set或unordered_set里…

10个顶级Linux开源反向代理服务器 - 解析与导航

反向代理服务器是一种部署在客户端和后端/源服务器之间的代理服务器,例如 NGINX、Apache 等 HTTP 服务器或用 Nodejs、Python、Java、Ruby 编写的应用程序服务器、PHP 和许多其他编程语言。 它是一个网关或中间服务器,它接受客户端请求,将其传…

【MATLAB】LMD分解+FFT+HHT组合算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 LMDFFTHHT组合算法是一种基于局部均值分解(LMD)、快速傅里叶变换(FFT)和希尔伯特-黄变换(HHT)的组合算法。 LMD是…

Python实现WOA智能鲸鱼优化算法优化LightGBM分类模型(LGBMClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

Spatialite获取点线面集合的中心点

在这里插入代码片sql SELECT ST_AsText(ST_Centroid(ST_GeomFromText(GEOMETRYCOLLECTION(LINESTRING(105.400538 26.965642, 105.376419 26.938482, 105.350328 26.911685, 105.329089 26.879879, 105.313625 26.84789, 105.301742 26.813179, 105.292141 26.775107, 105.2858…

【技巧】Excel表格如何退出“只读方式”?

如果Excel表格被设置了“只读模式”,那每次打开Excel都会出现对话框提示是否以“只读方式”打开,并且以“只读方式”打开的Excel,如果进行更改是无法保存原文件的。那要如何退出“只读方式”呢? 首先,我们要看下Excel表…

策略算法与Actor-Critic网络

策略算法 教程链接 DataWhale强化学习课程JoyRL https://johnjim0816.com/joyrl-book/#/ch7/main 策略梯度 与前面的基于价值的算法不同,这类算法直接对策略本身进行近似优化。 在这种情况下,我们可以将策略描述成一个带有参数 θ θ θ的连续函数…

java小游戏之【王者荣耀】

首先创建一个新的Java项目命名为“王者荣耀”,并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 代码 package com.sxt;import javax.swing.*; import java.awt.*;public class Background extends GameObject {p…

Qt_一个由单例引发的崩溃

Qt_一个由单例引发的崩溃 文章目录 Qt_一个由单例引发的崩溃摘要关于 Q_GLOBAL_STATIC代码测试布局管理器源码分析Demo 验证关于布局管理器析构Qt 类声明周期探索更新代码获取父类分析Qt 单例宏源码 关键字: Qt、 Q_GLOBAL_STATIC、 单例、 UI、 崩溃 摘要 今…
最新文章