Intel Software Guard Extensions简介

news2024/11/25 16:38:10

文章目录

  • 前言
  • 一、新的基于硬件的控件实现数据安全
  • 二、机密计算的挑战
  • 三、用于机密计算的增强安全功能
  • 四、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.coloradmin.cn/o/1260326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何与死锁斗争!!!

其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、死锁场景现场 二、死锁是如何产生的 三、死锁排查思路 四、sql模拟死锁复现 五、死锁的解决方案 前言 为避免影响业务,应尽可能避…

springboot实现数据脱敏

springboot实现数据脱敏 怎么说呢,写着写着发觉 ”这写的什么玩意“ 。 总的来说就是,这篇文章并不能解决数据脱敏问题,但以下链接可以。 SpringBoot中利用自定义注解优雅地实现隐私数据脱敏 然后回到本文,本来是想基于AOP代理&am…

MySQL优化技巧

在使用一些常规的 SQL 时&#xff0c;如果我们通过一些方法和技巧来优化这些 SQL 的实现&#xff0c;在性能上就会比使用常规通用的实现方式更 优化分页查询 通常我们是使用 <LIMIT M,N> 合适的 order by 来实现分页查询&#xff0c;这种实现方式在没有任何索引条件支…

【Java】IDEA 基本操作

0.IDEA 0.1 IDEA中的层级结构 0.1.1 结构分类 project&#xff08;项目、工程&#xff09;module&#xff08;模块&#xff09;package&#xff08;包&#xff09;class&#xff08;类&#xff09; 0.1.2 结构介绍 project&#xff08;项目、工程&#xff09; ​ 淘宝、京…

物联网AI 无线连接学习之WiFi基础篇 802.11协议发展

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 前言 随着物联网行业不断发展&#xff0c;WiFi技术的发展在其中起着非常关键的作用&#xff0c;也是我们日常生活中使用非常广泛的无线网络技术之一&#xff0c;现在我们随便买一个家用电子产品&#xff0c…

java springboot测试类Transactional解决 测试过程中在数据库留下测试数据问题

好 目前 我们已经完成了表现层对应的测试了 但这里有个坑 如果我们在执行某个声明周期时 包含了测试的过程 它会在数据库中留下一条数据 但真实企业开发 绝对不允许 过一遍留一组数据的 那么 我们的期望就是 执行测试过程 但不要留下任何数据 这是我们的数据库表 然后 这里…

华为电视盒子 EC6108V9C 刷机成linux系统

场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 家里装宽带的时候会自带电视盒子&#xff0c;但是由于某些原因电视盒子没有用&#xff0c;于是就只能摆在那里吃土&#xff0c;闲来无事&#xff0c;搞一下 问题描述 提示&#xff1a;这里描述项目中遇到…

zi定义指令

hello&#xff0c;我是小索奇&#xff0c;精心制作的Vue系列持续发放&#xff0c;涵盖大量的经验和示例&#xff0c;如果对您有用&#xff0c;可以点赞收藏哈~ 自定义指令 自定义指令就是自己定义的指令&#xff0c;是对 DOM 元素进行底层操作封装 ,程序化地控制 DOM&#xff…

医院电子病历编辑器源码(支持云端SaaS服务)

电子病历系统基于云端SaaS服务的方式&#xff0c;采用B/S&#xff08;Browser/Server&#xff09;架构提供&#xff0c;采用前后端分离模式开发和部署。使用用户通过浏览器即能访问&#xff0c;无需关注系统的部署、维护、升级等问题&#xff0c;系统充分考虑了模板化、 配置化…

Linux操作系统使用及C高级编程-D17D18编译与调试

编译 当有线程创建时编译&#xff1a;gcc test.c -o test -lpthread 分文件编写时主要是分为&#xff1a;.c&#xff08;函数声明的具体实现&#xff09;、.h&#xff08;说明性文件&#xff1a;#define 结构体共用体 声明&#xff09;、.c(main) 条件编译 一般情况下&#x…

【Linux】初识重定向(输入输出)

一切皆文件 这是Linux的设计理念&#xff0c;因为这个理念的存在我们可以使用统一的方法对待不同的东西&#xff0c;&#xff0c;这也是为什么嵌入式之类的会需要Linux&#xff0c;因为用LInux来操纵硬件真的很方便 另外我们下文也会都基于这个理念来命名&#xff0c; 比如&am…

用做Excel的思维去做BI报表,大材小用了!

最近看到一个姐妹吐槽说公司上了BI后&#xff0c;反而没有以前Excel用得顺手了。这不可能&#xff0c;这不科学&#xff01;怀着求知心点进去一看&#xff0c;这位姐妹居然是在用做Excel的思维去做BI报表&#xff0c;这就很难评了&#xff01; Excel和BI报表&#xff0c;那是两…

MSTP实验

目录 一、实验拓扑 二、实验要求 三、实验步骤 1、创建vlan 2、创建端口组&#xff0c;放通vlan 3、配置MSTP 4、配置主备奋根 一、实验拓扑 二、实验要求 1、所有交换机上创建vlan10&#xff0c;vlan20&#xff0c;vlan30和vlan40 2、所有交换机之间的端口配置为Trunk…

【斗破年番】萧炎斩杀蝎山,活捉魂殿铁护法,救小医仙身中魔斑毒

Hello,小伙伴们&#xff0c;我是拾荒君。 《斗破苍穹年番》第72集的国漫已经更新了。这一集中&#xff0c;蝎毕岩靠着秘术的加成暂时压制住了小医仙。在激烈的交战中&#xff0c;小医仙不得不解开自身的厄难毒体&#xff0c;而每解开一次&#xff0c;她就离死亡更近一步。 萧炎…

java--子类构造器的特点

1.子类构造器的特点 子类的全部构造器&#xff0c;都会先调用父类的构造器&#xff0c;再执行自己。 2.子类构造器是如何实现调用父类构造器的 ①默认情况下&#xff0c;子类全部构造器的第一行代码都是super()(写不写都有)&#xff0c;它会调用父类的无参数构造器。 ②如果…

EfficientViT:具有级联群体注意力的内存高效Transformer

EfficientViT: Memory Efficient Vision Transformer with Cascaded Group Attention 1、介绍2、使用 Vision Transformer 加快速度2.1 内存效率2.2 计算效率2.3 参数效率 3、Efficient Vision Transformer3.1 EfficientViT 构建模块3.3 EfficientViT 网络架构 4、实验5、结论 …

什么是可重入锁

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

给国外客户价格报低了怎么办

前一段时间有一个单子的货发出去了&#xff0c;被朋友提醒才发现自己报错了价格&#xff0c;造成了亏损&#xff0c;而报错价格的原因并不是自己看错了或者是抄错了价格&#xff0c;而是自己的脑子里记错了产品的价格列表。 如果不是朋友善意的提醒&#xff0c;大概我会一直错…

Current request is not a multipart request问题排查

概述 在应用工程里看到如下被标记为deprecated的代码&#xff0c;这对有代码洁癖的我而言是无法忍受的&#xff1a; row.getCell(10).setCellType(Cell.CELL_TYPE_STRING); String hospital row.getCell(0).getStringCellValue();对应的poi版本号&#xff1f;是的&#xff…

基本数据结构二叉树(2)

目录 3.二叉树的顺序结构及实现 3.1 二叉树的顺序结构 3.2 堆的概念及结构 3.3 堆的实现 3.2.1 堆向下调整算法 3.2.2堆的创建 3.2.3 建堆时间复杂度 3.2.4 堆的插入 3.2.5 堆的删除 3.2.6 堆的代码实现 3.4 堆的应用 3.4.1 堆排序 3.4.2 TOP-K问题 3.二叉树的顺序…