【机密计算标准解读】GB/T 机密计算通用框架(上)

国家标准计划《信息安全技术 机密计算通用框架》由 TC260(全国信息安全标准化技术委员会)归口 ,主管部门为国家标准化管理委员会。

主要起草单位 华为技术有限公司 、中国电子技术标准化研究院 、中国移动通信集团有限公司 、蚂蚁科技集团股份有限公司 、北京冲量在线科技有限公司 、北京百度网迅科技有限公司 、北京数字认证股份有限公司 、深圳致星科技有限公司 、北京数牍科技有限公司 、上海富数科技有限公司 、北京八分量信息科技有限公司 、中国科学院软件研究所 、中国科学院信息工程研究所 。

标准目前处于征求意见稿阶段(2023.7)

备注:双水平线间内容为博主解读~

一、概述

1.1 机密计算

一种在受信任的硬件基础上,结合固件和软件构建加密、隔离、可验证的计算环境,保证环境内数据机密性、完整性,代码完整性以及运算过程机密性的计算模式。

运算过程是指程序运行过程,在该过程中会产生进程程序段、数据段、进程控制块以及进程通信涉及的所有数据。


受信任硬件、加密、隔离、可验证、机密性完整性这些概念都是可信计算的范畴,机密计算更加强调运算的机密性,进一步的保护使用中的数据以及数据的处理方法。

所以,我们可以这样理解:可信计算是保证计算的可预测性,机密计算是在可信计算的基础上重点对运算过程机密性做了加强。

我们看机密计算技术的描述时,首先就会提到机密计算的目标是保护使用中的数据,传统技术已经能够保护静态(存储)中的数据以及传输中的数据了,但是该标准中并未对此进行强调。


1.2 角色

在机密计算典型交互活动中,所涉及的主要角色包括

  • 计算程序提供方;
  • 机密计算服务提供方;
  • 机密计算平台提供方;
  • 数据提供方;
  • 结果需求方。

如图1所示,上述角色不限定为不同实体,即同一实体可以担任多种角色。

 主要参与角色描述如下:

a) 计算程序提供方:负责提供需要在机密计算环境中运行的计算程序,计算程序应和结果需求方的计算需求描述相符。

b) 机密计算服务提供方:负责为结果需求方提供机密计算服务的软件模块,服务提供方也提供服务的管理功能,如支持计算程序的录入与发布。

c) 机密计算平台提供方:负责提供机密计算环境所依赖的可信软硬件以及服务提供方所使用的接口,包括集成在机密计算平台内部的信任根、可信执行环境等,建立实现完整的度量存储报告机制,将信任链扩展到计算程序。

d) 数据提供方:负责提供计算任务所使用的计算数据,计算数据在计算过程中应保证机密性和完整性。

e) 结果需求方:负责提供具体的计算需求描述给机密计算服务或者直接使用机密计算平台执行计算需求,包括需要运行的程序、程序运行时需要计算的数据等,并获得相应的机密计算结果。

解读:既然是国标,就需要对业务以及业务方进行抽象、统一、归类,这里的 5 个相关方正式出于这样的目的的来的。计算程序提供方就是处理数据的应用,比如基因处理程序;计算服务提供方主要为上层机密应用提供基础的机密计算服务模块,比如密码模块、证明模块等;机密计算平台提供更底层的可信硬件、系统软件、可信执行环境以及管理服务;数据提供方和结果需求方就比较容易理解了。

这种分层抽象和普通计算架构大体上是一一对应的。

1.3 信任条件

各个角色在参与机密计算的计算任务时,可以通过以下操作建立信任关系

  1. 程序提供方验证机密计算服务的计算环境完整性和真实性,确保录入的计算程序被运行在可信执行环境内(计算程序方【需要】可信的计算环境,保证自身完整性)

  2. 数据提供方验证计算环境完整性和真实性且需要验证程序代码完整性,确保程序代码与计算需求描述相符。数据提供方可以将数据以密文形式输入给机密计算服务,确保只有对应的计算程序在可信执行环境中可以读取(数据提供方【需要】可信执行环境、正确的计算程序以及机密计算服务)

  3. 结果需求方验证计算环境完整性、真实性和程序代码完整性,确保计算的执行程序与计算需求描述一致(结果需要方不需要对输入数据进行保证)


各参与方需要将自己的资产放入到相关联的环境中,或者从指定的环境中获取结果,这个过程为了确保己方的利益,都需要对相关的环境进行验证;只有通过验证、认可,才可以参与到机密计算中,才能对自己的资产的安全性有信心。


二、框架组成

2.1 框架描述

本文件所定义的机密计算通用框架如图 2 所示,主要分为硬件层、系统软件层、服务层、应用层和管理层五个层次。

  • 硬件层基于硬件隔离实现受保护的资源不被开放系统访问,并提供基于硬件安全功能为机密计算提供受信任的硬件基础

  • 系统软件层为机密计算提供基于软件的隔离机制、必要的硬件资源和基础服务

  • 服务层为上层应用程序提供统一的编程接口及机密计算服务接口,以屏蔽底层硬件架构和软件的开发接口差异。提供的服务包括安全隔离、安全启动、远程证明、安全通道、密钥派生、安全存储、密码运算、数据封装。

  • 应用层是直接面向结果需求方的应用程序,结果需求方通过应用程序执行计算操作。

  • 管理层通过跨层交互为开展机密计算活动提供必要的管理模块。管理模块包括密钥管理、日志管理、资源管理、白名单管理。


机密计算平台 可以对应传统的服务器平台,比如鲲鹏计算平台;

机密计算提供服务方对应传统的系统服务提供方,比如 AI 服务;

机密计算程序对应传统的应用程序,基于 AI 的数据挖掘;

数据提供方和结果需求方相比传统更加多样。


2.2 硬件层

2.2.1 核心组件

机密计算框架硬件层核心组件主要包括:

  • 可信执行控制单元:在CPU上定义安全加强的指令控制逻辑,以实现指令隔离执行的目标,常见在缓存控制器、DMA控制器、中断控制器中加强,也有独立的控制单元;

  • 隔离内存空间:通过CPU可信执行控制单元隔离出的内存空间,独立于通用内存空间;

  • 可信固件:提供识别硬件设备初始化信息、支持系统软件的完整性校验、升级维护以及配置机密计算环境资源等功能;

  • 硬件密码引擎:硬件密码引擎使用设备唯一密钥以及真随机数生成器,为机密计算应用程序提供密钥派生能力;

  • 设备唯一密钥:在硬件中固化的一个唯一标识,设备制造阶段写入,设备唯一密钥由于具备唯一性,作为根密钥用于派生在机密计算环境中使用的加密密钥;

  • 随机数生成器:在密钥生成和密码运算过程,生成真随机数,可以抗重放攻击;

  • 信任根:用于支撑机密计算环境自下而上信任链的建立,并提供安全存储、完整性度量、身份认证等安全功能。


机密计算需要硬件层的实现以上部件。

可信执行控制单元主要包括两种:一种是类似 Arm Trustzone 技术这种在传统部件上做安全加强,通过对执行单元的 cache、GIC 等期间进行隔离,实现安全的执行的链路;另一种是以 Intel SGX、Arm Crypto-Island 技术为代表的独立控制单元;

内存隔离可以理解为是 Arm TZASC,Intel 的内存加密技术 SME 等,能够在内存中隔离出一个安全的内存空间,在 Arm 中还需要配合外设安全控制器 TZPC 来实现外设的安全访问;

可信固件可以认为是 BIOS、UEFI等固件;

硬件密码引擎从描述上来看就是一个根据设备唯一密钥进行密钥派生的部件,并没有我们通常理解的密码算法加速引擎;

设备唯一密钥这里讲得是设备制造阶段注入,目前手机、汽车等终端设备上的唯一密钥是由 OEM 在设备制造过程中注入的,可以认为 OEM 就是该密钥的背书方。但是在机密计算框架里,密钥的注入应该由可信第三方背书,在 Arm 的机密计算架构 CCA 中,是由 HES(硬件加强的安全模块)和可信方共同实现;

这里信任根主要是可信计算中的概念,包含可信度量根、可信存储根、可信报告根。


2.2.2 基础功能

机密计算框架硬件层具备的基础功能包括但不限于:

  • 提供内存隔离机制,普通计算环境无法访问机密计算环境的内存数据;

  • 提供基于物理可信根的安全启动机制,对机密计算环境中的关键固件和关键系统软件进行完整性校验,校验通过方可加载和运行;

  • 提供基于硬件的密钥派生机制,保护被派生密钥的机密性;

  • 提供对普通计算环境和机密计算环境的通信指令调度机制;

  • 可以灵活设置分配给机密计算环境的内存空间大小。

三、系统软件层

3.1 核心组件

机密计算框架系统软件层核心组件主要包括:

  • 机密计算操作系统:基于底层 CPU 的可信执行控制单元和指令集封装裁剪的操作系统,主要提供基于 TEE 资源的计算资源调度、隔离内存空间管理以及和普通计算环境的通信机制等功能(该组件可作为可选组件

  • 机密计算虚拟化软件:部署在机密计算环境中的虚拟化软件,为机密VM或容器的部署提供支撑。(该组件可作为可选组件) 


机密计算操作系统可以理解为 Trustzone 中运行在 Secure EL1 内的 TEE OS,目前的开源实现有 OP-TEE

机密计算虚拟化软件可以理解为 Trustzone 架构下运行在 Secure EL2 内的虚拟化软件,目前的开源实现有 Halfnium

这两个组件是可选的,即可信应用和服务可以运行在机密计算环境的裸机环境下。


3.2 基础功能

机密计算框架系统软件层具备的基础功能包括但不限于:

  • 保障系统软件的隔离性,普通计算环境不能越权访问机密计算操作系统;
  • 提供多线程、多进程的计算能力;
  • 对机密计算应用程序进行完整性和真实性校验,验证通过后方可运行;
  • 使用符合国家密码管理部门相关要求的密码算法
  • 具备适配主流编程语言的能力。

对于隔离性,TEE 都是能够满足的;

多线程、多进程实际应该还需要补充多核能力,只有用到了多核,多线程和多进程性能优势才能体现出来;

对于 Python、JAVA 的适配,技术上是可信的,只不过应该攻击面大或者可信计算机大的问题,通常是没有支持的;而在机密计算中计算程序的开发的易用性是备受关注的,所以也需要支持 Python、JAVA 等高级编程语言,支持是没有问题的。


四、服务层

4.1 核心组件

机密计算框架服务层核心组件主要包括:

  • 机密计算统一服务接口:通过提供统一的编程接口,为应用程序提供与具体硬件架构解耦的统 一机密计算安全服务,降低不同架构的开发与部署成本;
  • 隔离计算:区分普通计算环境和机密计算环境,提供统一的机密计算应用程序调用模式,支持 计算参数的传入、计算状态的跟踪以及计算结果的获取,该服务是机密计算业务运行的前提, 包含了机密计算环境的创建以及机密计算应用程序的部署;
  • 安全启动:保证机密计算环境的完整性和真实性;
  • 远程证明:对机密计算环境和机密计算应用程序进行完整性验证;
  • 安全信道:保证本地数据安全传输到机密计算环境中;
  • 密钥派生:保障在机密计算环境中所生成的密钥的安全性;
  • 存储保护:为用户提供敏感数据加密存储服务,这些敏感数据只能由机密计算服务授权的实体 访问或修改;
  • 密码运算:在机密计算环境中执行密码运算操作;
  • 数据封装:为数据需求方提供敏感数据封装/解封装服务。
  • 注:机密计算服务提供方可根据需求选择部署上述安全服务。

机密计算同一服务接口可以类比 Global Platform 为 TEE 定义的 GP TEE Internal API

其他安全服务在 GP TEE 以及 TCG 可信计算中都有定义。


4.2 基础功能

机密计算框架服务层具备的基础功能包括但不限于:

  • 提供应用程序集成开发接口和代码生成工具,提高开发机密计算应用程序的易用性
  • 为服务提供方或结果需求方提供机密计算必要的安全机制
  • 兼容不同的TEE硬件架构
  • 兼容多种密码算法并保证密码算法的可用性。

机密计算是直面业务的,所以易用性非常重要,相比 TEE 的软件开发套件 SDK,机密计算的 SDK 需要更加易用,甚至需要提供代码生成工具;

必要的安全机制就是只上面那些安全服务;

服务层最大的一个特性要求就是需要屏蔽 TEE 硬件架构,比如 Trustzone、SGX 等,这个还是有些难度的,不过有一些项目在尝试,比如 Occulm


五、应用层

5.1 核心组件

机密计算框架应用层核心组件主要包括:

机密计算应用程序:在机密计算操作系统之上运行的应用程序,涉及敏感数据的处理逻辑都需要在机密计算应用程序中完成。


这个就是机密业务相关的程序,手机 TEE 上有密钥管理应用 Keymaster、屏幕守护应用 Gatekeeper、人脸识别程序、数字版权保护 widewine等,在机密计算领域可能是基因处理程序、政务数据处理程序等。 


5.2 基础功能

机密计算框架应用层具备的基础功能包括但不限于:

  • 未经授权的应用程序不能查看正在机密计算环境中运行的代码和数据;
  • 未经授权的应用程序不能在机密计算环境内部添加、删除或更改运行的代码和数据;
  • 保障不同机密计算应用程序之间的隔离性

这里主要需要关注的是不同机密应用程序之间的隔离性,机密计算环境中可能存在多方的机密计算应用程序,所以要保证他们之间的互补影响(不偷窥、不篡改等等),这项技术在 TEE 通过进程隔离以及持久化数据绑定实现隔离。 


六、管理层

6.1 核心组件

机密计算框架管理层核心组件主要包括:

  • 密钥管理:对执行机密计算操作所涉及的密钥进行管理,包括密钥生成、保护、传输、销毁等;
  • 日志管理:对执行机密计算操作进行记录,提供日志回溯功能,并能保证日志的完整性;
  • 白名单管理:提供机密计算所涉及的固件版本、驱动程序、设备身份可信的清单;
  • 资源管理:对执行机密计算操作所需的CPU计算资源、内存资源等进行管理。

跨层管理由独立于上面介绍的 4 层的管理组件组成,密钥管理通常是比较麻烦的事情,可以作为管理模块实现;日志管理只要做审计、回溯用途;白名单用来控制系统可信的软件、固件、组件版本,类似于可信计算的平台凭证;


6.2 基础功能

机密计算框架管理层具备的基础功能包括但不限于:

  • 通过底层硬件保证密钥的机密性、不可篡改性和不可否认性
  • 用于执行机密计算任务的密钥在机密计算环境内生成
  • 确保机密计算环境内的加密密钥、签名密钥等密钥具有明确、单一的用途
  • 硬件资源状态、系统运行状态、接口适配情况、机密计算任务状态、网络状况等状态进行日志记录
  • 对 API 调用、机密计算任务操作等进行日志记录和存储
  • 保证只有被列入可信清单的实体才可以访问机密计算环境;
  • 保证机密计算应用程序仅根据分配的权限访问相应的资源,不能越权访问。

7、安全服务

7.1 隔离计算

7.1.1 普通计算应用程序与机密计算应用程序之间的隔离计算

普通计算应用程序与机密计算应用程序之间的隔离计算流程如图 4 所示

 普通计算应用程序与机密计算应用程序之间的隔离计算流程如下:

  • 普通计算应用程序在发起安全隔离请求前,预先创建机密计算环境;注:根据具体计算场景需求,机密计算环境也可在普通计算应用程序发起创建机密计算应用程序请求时,同步进行创建。
  • 普通计算应用程序调用机密计算统一服务平台提供的机密计算应用程序创建接口申请创建机密计算应用程序,机密计算统一服务平台对普通计算应用程序的请求进行处理,并根据硬件层架构创建机密计算应用程序,并将机密计算应用程序部署并运行在机密计算环境中;
  • 普通计算应用程序向机密计算应用程序发起计算请求;
  • 机密计算应用程序完成计算任务,并向普通计算应用程序传输机密数据或返回计算结果;
  • 完成所有计算任务后,普通计算应用程序发出销毁机密计算应用程序的请求,机密计算环境销毁机密计算应用程序,会话结束。 

​7.1.2 机密计算应用程序与机密计算应用程序之间的隔离计算

机密计算应用程序与机密计算应用程序之间的隔离计算如图 5 所示。​

 机密计算应用程序与机密计算应用程序之间的隔离计算流程如下:

  • 机密计算应用程序 A 与机密计算应用程序 B 之间,先建立安全会话
  • 机密计算应用程序 A 向机密计算应用程序 B 发起计算请求;
  • 机密计算应用程序 B 完成计算任务,并向机密计算应用程序 A 返回计算结果;
  • 完成所有计算任务后,机密计算应用程序 A 发出关闭会话的请求,会话结束。 

GP TEE 规定的 Client API 符合上述要求 


7.2 安全启动

安全启动是保证机密计算环境的完整性和真实性的一种安全机制。在计算系统启动后,机密计算环境在建立前,需要从物理信任根开始,建立自下而上的信任链,逐层验证机密计算环境中的关键组件。安全启动典型流程如图 6 所示。

​安全启动流程如下:

  • 机密计算信任根在启动后对机密计算关键固件或软件的数字签名进行验证,确保未被篡改后,加载关键固件或软件;
  • 关键固件和软件对机密计算应用程序的数字签名进行验证,确保未被篡改后,机密计算环境可以正常运行;
  • 在机密计算环境中,安全启动还可以扩展到每个应用程序的完整性验证,每次加载一个机密计算应用程序,机密计算关键固件或软件需要对机密计算应用程序进行验证,确保机密计算应用程序未被篡改后,加载可信的机密计算应用程序。 

机密计算应用程序的验证、加载在 TEE 中是必备的,通常是厂家自定义的;而关键固件或软件的验证、加载和具体平台相关。


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

下一篇 【机密计算标准】GB/T 机密计算通用框架(中)

  • 67
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 71
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 71
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书香度年华

创作不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值