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.mzph.cn/news/177338.shtml

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

相关文章

ELK---filebeat日志收集工具

filebeat日志收集工具 filebeat日志收集工具和logstash相同 filebeat的优点: filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小的多 filebeat可以运行在非Java环境。它可以代替logstash在非Java环境上收集…

初刷leetcode题目(8)——数据结构与算法

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

VM安装Centos

文章目录 第2章 VM与Linux的安装2.1 VMWare安装2.2 CentOS安装 第3章 Linux文件与目录结构3.1 Linux文件3.2 Linux目录结构 第4章 VI/VIM编辑器4.1 是什么4.2 测试数据准备4.3 一般模式4.4 编辑模式4.5 命令模式4.6 模式间转换 第5章 网络配置和系统管理操作5.1 查看网络IP和网…

Java根据指定端口关闭进程(端口占用 Web server failed to start. Port 6061 was already in use.)

查询指定端口的pid netstat -ano | findstr 6063杀掉进程 taskkill /f /pid 36804

40.0/jdbc/Java数据连接/jar包运用增删改

目录 40.1. 回顾 40.2. 正文 40.1 为什么需要jdbc 40.2 如何连接mysql数据库 40 .3 jdbc容易出现的错误 40.4 完成删除 40.5 完成修改 40.1. 回顾 1. 自联查询: 自己连接自己的表。注意:一定要为表起别名。 2. 嵌套查询: 把一个查询的结果作为另一个查询的条件值。 3. 组…

mysql处理40w数据脚本执行慢问题

需求背景: 2张表 SS_ZYXX 1w数据,WD_GZPZ 50w数据 SS_ZYXX.id WD_GZPZ.zyxx_id 找到SS_ZYXX表有数据,关联表WD_GZPZ没有数据的SS_ZYXX表的id 处理方案 方案一: 联合查询: 下面sql,在mysql执行时间3…

[带余除法寻找公共节点]二叉树

二叉树 题目描述 如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结点(编号是1的结点)都有一条唯一的路径,比如从10到根结点的路径是(10, 5, 2, 1),从4到根结点的路径是(4, 2, 1)&#x…

DBeaver连接MySQL提示“Public Key Retrieval is not allowed“问题解决方式

更新时间:2023年10月31日 11:37:53 作者:产品人小柒 dbeaver数据库连接工具,可以支持几乎所有的主流数据库.mysql,oracle.sqlserver,db2 等等,这篇文章主要给大家介绍了关于DBeaver连接MySQL提示"Public Key Retrieval is not allowed"问…

yolov5检测(前向)输入视频输出(不在图上画标签形式的原)图片的方法,及设置每隔几帧保存的方式(不每帧保存减少重复)

这些天我忽然有个需求,要更新迭代一个场景的检测模型,甲方爸爸提供的新数据集是监控视频形式的(因为拍视频确实更加的方便),而我训练模型确实要标注好的图片形式。 根据这些条件的话,思路应该是要这样的:首先使用现有的…

大数据平台/大数据技术与原理-实验报告--实战HDFS

实验名称 实战HDFS 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.10.23-2023.10.27 实验仪器设备以及实验软硬件要求 专业实验室(配有centos7.5系统的linu…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑碳排放分摊的综合能源服务商交易策略》

这篇文章的标题表明它将讨论一个关于综合能源服务商交易策略的主题,而在这个策略中,特别考虑了碳排放分摊的因素。以下是对标题中各关键词的解读: 综合能源服务商: 这指的是在能源领域提供多种服务的企业或组织,可能涵…

蓝桥杯day01——负二进制数相加

题目描述 给出基数为 -2 的两个数 arr1 和 arr2,返回两数相加的结果。 数字以 数组形式 给出:数组由若干 0 和 1 组成,按最高有效位到最低有效位的顺序排列。例如,arr [1,1,0,1] 表示数字 (-2)^3 (-2)^2 (-2)^0 -3。数组形式…

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

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

C++之哈希

unordered系列容器的效率之所以比较高(尤其是查找),是因为它底层使用了哈希结构,即哈希表. 哈希概念 前言: 顺序结构以及平衡树中, 元素关键码与其存储位置之间没有对应的关系, 因此在查找一个元素 时, 必须要经过关键码的多次比较. 顺序查找时间复杂度为O(N), 平衡树中为树的…

ESP32-Web-Server编程- JS 基础 4

ESP32-Web-Server编程- JS 基础 4 概述 HTML 内联事件处理器,你永远不应该使用 HTML 事件处理器属性——因为那些已经过时了,使用它们是不好的做法。 在前端编程中,除了将期望发生的事件写为 JS 文件外,还可以使用一些组件自带…

java编程:⼀个⽂件中存储了本站点下各路径被访问的次数,请编程找出被访问次数最多的10个路径

题目 编程题:⼀个⽂件(url_path_statistics.txt)中存储了本站点下各路径被访问的次数 请编程找出被访问次数最多的10个路径时间复杂是多少,是否可以优化(假设路径数量为n)如果路径访问次数⽂件很⼤&#x…

Unity中Shader的BRDF解析(二)

文章目录 前言一、回顾一下上一篇的结尾在这里插入图片描述 二、我们来解析一下 UNITY_PBS_USE_BRDF1(高配)1、迪士尼BRDF原则2、迪士尼的漫反射函数3、参数:perceptualRoughness(感性的粗糙度)4、参数:hal…

Docker-简介、基本操作

目录 Docker理解 1、Docker本质 2、Docker与虚拟机的区别 3、Docker和JVM虚拟化的区别 4、容器、镜像的理解 5、Docker架构 Docker客户端 Docker服务器 Docker镜像 Docker容器 镜像仓库 Docker基本操作 1、Docker镜像仓库 镜像仓库分类 镜像仓库命令 docker lo…

完整版本会声会影2024新功能介绍

会声会影视频编辑软件,是视频制作初学者的法宝。其友好的操作界面,让视频制作小白也能轻松上手,丰富的媒体库资源,只需一拖一放就能快速导入编辑轨道。多轨道式的编辑功能,让各种素材的搭配使用更加得心应手。 会声会影…

管网/黑臭水/污水水质监测系统

随着城市化进程的加快,城市水务管理面临着越来越多的挑战。其中,管网、黑臭水、污水等水质监测问题尤为突出。为了解决这些问题,越来越多的城市开始应用先进的水质监测系统。 一、系统概述 管网/黑臭水/污水水质监测系统是一款集成了在线监测…