Intel 的 SGX 技术小知识

1.SGX 概述

Intel SGX (Software Guard Extensions) 是一种针对特定应用程序安全增强技术。它允许应用程序在处理机上创建受保护的执行环境,这个执行环境被称为“enclave”。这个 enclave 是一个被硬件隔离的内存区域,只有在安全条件下才可以访问。这个特性使得 SGX 成为一种强大的安全保护技术,它可以用于保护应用程序和数据不被恶意软件或攻击者所破坏或窃取

SGX 技术的核心是一个安全处理器,它被称为 Intel SGX 物理内存安全(Intel SGX Physical Memory Security)。这个处理器使用硬件扩展来创建安全的执行环境,并提供了一些硬件隔离的机制,以保护 enclave 中的代码和数据。其中最重要的是“内存加密(Memory Encryption)”和“内存隔离(Memory Isolation)”。

内存加密是指,当 enclave 中的代码和数据被写入内存时,它们会被加密。只有 enclave 内部的代码才能够解密和访问这些数据。这种加密可以有效地保护 enclave 内部的数据不被恶意软件或攻击者窃取。

内存隔离是指,在创建 enclave 时,操作系统和硬件会自动隔离 enclave 中的代码和数据,以保证它们只能被受信任的代码所访问。这种隔离可以有效地保护 enclave 内部的代码和数据不受到来自操作系统或其他应用程序的攻击。

Intel SGX 技术的实现需要特殊的硬件支持,如 Intel CPU 的第六代或更高版本。应用程序必须使用 Intel SGX SDK 进行开发,并在SGX硬件支持的计算机上运行。Intel SGX可以保护多种应用程序,包括数据库,浏览器,虚拟机等。

总之,SGX 技术为开发人员提供了一个可靠的安全平台,使得他们可以在未来开发更加安全和可靠的应用程序。

2. SGX 加密技术和隔离技术

SGX 内存加密技术是 SGX 技术中最重要的一项安全性保护措施之一。它可以将 Enclave 中的代码和数据加密,并在硬件级别上保证只有 Enclave 内部的代码可以访问和修改这些数据。

SGX 内存加密技术的原理如下:

  1. 加密密钥生成:SGX 技术中有一个特殊的硬件组件称为 Memory Encryption Engine(MEE),用于生成加密密钥。当 Enclave 启动时,MEE 会生成一个加密密钥,用于加密 Enclave 中的代码和数据。

  2. 加密内存:在加密密钥生成后,MEE 会将 Enclave 中的代码和数据加密,并将它们存储在 SGX 内存中。只有 Enclave 内部的代码可以访问和修改这些加密后的数据,对外部程序和操作系统来说,这些数据是不可读取的。

    扫描二维码关注公众号,回复: 14850970 查看本文章
  3. 解密内存:当 Enclave 内部的代码需要访问加密数据时,它会向 MEE 发送请求,请求 MEE 解密数据。MEE 会使用之前生成的加密密钥对数据进行解密,并将解密后的数据返回给 Enclave 内部的代码。解密过程也是在硬件级别上进行的,确保解密过程中不会发生数据泄露或篡改。

  4. 内存隔离:除了加密保护,SGX 技术还提供了内存隔离功能,确保 Enclave 中的代码和数据不会被其他程序访问或修改。当 Enclave 启动时,SGX 技术会为 Enclave 分配一块 SGX 内存,只有 Enclave 内部的代码才能访问和修改这块内存。对于外部程序和操作系统来说,Enclave 中的数据是不可见的,确保了 Enclave 中数据的机密性和完整性。

总之,SGX 内存加密技术通过硬件级别的加密和隔离,保护了 Enclave 中的代码和数据,防止其被未授权的程序访问或篡改。这是 SGX 技术的核心安全性保护措施之一,为应用程序提供了强大的安全性保护。

3. SGX 内存加密引擎 MEE

由于SGX内存加密引擎的实现细节较为复杂,这里提供一个简化的原理图来说明其基本原理:

+-----------------+                             +----------------+
|    User Space    |                             |     Enclave    |
+-----------------+                             +----------------+
|      Plain      |                             | Encrypted Data |
|      Data       |                             |     in Enclave |
+-----------------+                             +----------------+
         |                                                  |
         |                                                  |
         |                                                  |
+---------------------------------------------------------------+
         |                                                  |
         |                                                  |
         |                                                  |
+---------------------------------------------------------------+
         |                                                  |
         |                                                  |
         |                                                  |
+-----------------+                             +----------------+
|    SGX Driver    |                             |    SGX CPU     |
+-----------------+                             +----------------+
|   Memory Access  |                             |   Memory Access|
|     Control      |                             |    Control     |
+-----------------+                             +----------------+
         |                                                  |
         |                                                  |
         |                                                  |
+---------------------------------------------------------------+
         |                                                  |
         |                                                  |
         |                                                  |
+-----------------+                             +----------------+
|    Physical     |                             |    Physical    |
|     Memory      |                             |    Memory      |
+-----------------+                             +----------------+

如上所示,SGX内存加密引擎的基本原理是将用户空间中的明文数据加密,并存储在SGX安全区域中,只有经过授权的程序可以访问和解密这些数据。具体实现的步骤如下:

  1. 用户空间的程序使用SGX API调用请求将数据传递给SGX驱动程序。

  2. SGX驱动程序使用内存访问控制技术(如页表)限制用户空间程序的访问权限,并将数据传递给SGX CPU。

  3. SGX CPU使用硬件加密引擎对数据进行加密,并将加密后的数据存储在SGX安全区域中的物理内存中。

  4. 只有经过授权的程序(即运行在SGX安全区域中的可信代码)可以访问和解密SGX安全区域中的数据,从而保护了用户空间中的数据不被未经授权的程序访问和篡改。

4. 可信执行路径 TEP

SGX 还提供了可信执行路径(TEP)技术,可以验证应用程序代码的完整性和安全性,从而防止应用程序被恶意软件或攻击者篡改或替换。

5.安全容器

每个 Enclave 是一个独立的安全容器,可以包含自己的代码和数据,它们可以独立运行和管理,互相之间是隔离的。因此,SGX 技术可以为不同的应用程序提供安全保护,即使这些应用程序运行在同一台计算机上也不会相互干扰。

每个 Enclave 都有自己的 Enclave 签名密钥和 Enclave 签名证书,以确保 Enclave 的身份和完整性。同时,每个 Enclave 也有自己的安全内存区域,可以保护 Enclave 中的数据不被其他 Enclave 或不安全的执行环境访问或篡改。

当创建多个 Enclave 时,SGX 还提供了 Enclave-to-Enclave(E2E)通信机制,可以在 Enclave 之间进行安全通信,确保数据传输的机密性和完整性。这些功能使得 SGX 技术在云计算、物联网和其他需要保护数据隐私和安全的领域具有广泛的应用前景。

根据 Intel 的官方文档,当前支持的最大 Enclave 数量是 496 个。这个数字可能会因为硬件升级和软件更新而有所变化。

需要注意的是,创建多个 Enclave 会占用计算机系统的资源,包括内存和 CPU 等,因此需要根据实际需求和硬件能力进行合理规划。此外,对于需要在多个 Enclave 之间共享数据的应用程序,需要采用 Enclave-to-Enclave(E2E)通信机制,保证数据传输的安全和完整性。

6.enclave 格式

SGX Enclave 有其特定的格式和组织结构,以下是 SGX Enclave 的基本格式:

    +---------------------+
    |    Enclave Header   |
    +---------------------+
    |      Enclave Body    |
    +---------------------+

其中,Enclave Header 是一个固定大小的数据结构,包含了 Enclave 的基本信息,如 Enclave 的大小、版本、安全性等级、入口地址等。Enclave Body 则是一个可变长度的数据区域,包含了 Enclave 的代码、数据、堆栈等。

在 Enclave Body 中,不同的数据区域有不同的权限和访问限制,包括只读、可写、只执行等。这些访问限制可以通过 SGX 技术中的内存类型和权限控制机制来实现。

需要注意的是,SGX Enclave 的代码和数据必须经过编译、加密和签名才能被加载和执行。在加载 Enclave 时,SGX 驱动程序会验证 Enclave 的签名和完整性,以确保 Enclave 的安全性和可信度。同时,SGX 技术中还提供了 Enclave-to-Enclave(E2E)通信机制,以便不同的 Enclave 之间安全地进行通信和数据共享。

 

7.其他平台上可以利用相应的安全机制实现 SGX 效果吗?

本质上,SGX 依赖于:

  • 内存加密引擎:加密 enclave,并生成对应密钥信任根;
  • 内存隔离引擎:隔离 enclave,让 enclave 独立运行;
  • enclave 执行器:enclave 加载后,负责执行enclave代码执行。

那么,可以在 Arm +Trustzone + Crypto Island 上根据 SGX 的思路实现软件防护扩展

  • Crypto Island 实现enclave加密,生成对应的信任根密钥;
  • 内存隔离引擎:Trustzone + MPU,使用 Trustzone 对内存进行一级隔离,使用 MPU 对enclave间内存进行二级隔离;
  • enclave 执行器:enclave 运行在 S-EL1 模式,EL3 负责对enclave的管理。

可以在 LPC55S6 上根据 SGX 的思路实现软件防护扩展

  • 使用 BEE 实现enclave 加密,生成对应的信任根密钥;
  • 内存隔离引擎:Trustzone + MPU,使用 Trustzone 对内存进行一级隔离;
  • enclave 执行器:enclave 运行在 Privilege 模式,REE task 实现enclave上下文管理。

所以,SGX 只是一个技术思路~

皮格马利翁效应心理学指出,赞美、赞同能够产生奇迹,越具体,效果越好~
“收藏夹吃灰”是学“器”练“术”非常聪明的方法,帮助我们避免日常低效的勤奋~

猜你喜欢

转载自blog.csdn.net/BillyThe/article/details/129783095