文章目录
- 前言
- 一、新的基于硬件的控件实现数据安全
- 二、机密计算的挑战
- 三、用于机密计算的增强安全功能
- 四、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