From ae03fed1a14267e6157e92f744884c236f85a330 Mon Sep 17 00:00:00 2001 From: huyubiao Date: Tue, 10 Jun 2025 16:17:03 +0800 Subject: [PATCH] =?UTF-8?q?secDetector=20=E5=92=8C=20secGear=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=B8=8B=E6=B2=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/server/security/secdetector/_toc.yaml | 11 +- .../security/secdetector/api_reference.md | 83 ----- .../secdetector/install_secdetector.md | 104 ------ .../introduction_to_secdetector.md | 97 ----- .../public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes .../security/secdetector/secdetector.md | 5 - .../security/secdetector/using_secdetector.md | 46 --- docs/zh/server/security/secgear/_toc.yaml | 18 +- .../server/security/secgear/api_reference.md | 331 ------------------ .../security/secgear/application_scenarios.md | 96 ----- .../security/secgear/developer_guide.md | 93 ----- .../secgear/figures/BJCA_Crypto_Module.png | Bin 29952 -> 0 bytes .../security/secgear/figures/Mindspore.png | Bin 50951 -> 0 bytes .../secgear/figures/Mindspore_original.png | Bin 25013 -> 0 bytes .../security/secgear/figures/develop_step.png | Bin 71724 -> 0 bytes .../security/secgear/figures/openLooKeng.png | Bin 39559 -> 0 bytes .../security/secgear/figures/secGear_arch.png | Bin 41294 -> 0 bytes .../secgear/figures/secret_gaussdb.png | Bin 39411 -> 0 bytes .../secgear/introduction_to_secgear.md | 159 --------- .../public_sys-resources/icon-note.gif | Bin 394 -> 0 bytes docs/zh/server/security/secgear/secgear.md | 5 - .../security/secgear/secgear_installation.md | 111 ------ .../security/secgear/using_secgear_tools.md | 149 -------- 23 files changed, 7 insertions(+), 1301 deletions(-) delete mode 100644 docs/zh/server/security/secdetector/api_reference.md delete mode 100644 docs/zh/server/security/secdetector/install_secdetector.md delete mode 100644 docs/zh/server/security/secdetector/introduction_to_secdetector.md delete mode 100644 docs/zh/server/security/secdetector/public_sys-resources/icon-note.gif delete mode 100644 docs/zh/server/security/secdetector/secdetector.md delete mode 100644 docs/zh/server/security/secdetector/using_secdetector.md delete mode 100644 docs/zh/server/security/secgear/api_reference.md delete mode 100644 docs/zh/server/security/secgear/application_scenarios.md delete mode 100644 docs/zh/server/security/secgear/developer_guide.md delete mode 100644 docs/zh/server/security/secgear/figures/BJCA_Crypto_Module.png delete mode 100644 docs/zh/server/security/secgear/figures/Mindspore.png delete mode 100644 docs/zh/server/security/secgear/figures/Mindspore_original.png delete mode 100644 docs/zh/server/security/secgear/figures/develop_step.png delete mode 100644 docs/zh/server/security/secgear/figures/openLooKeng.png delete mode 100644 docs/zh/server/security/secgear/figures/secGear_arch.png delete mode 100644 docs/zh/server/security/secgear/figures/secret_gaussdb.png delete mode 100644 docs/zh/server/security/secgear/introduction_to_secgear.md delete mode 100644 docs/zh/server/security/secgear/public_sys-resources/icon-note.gif delete mode 100644 docs/zh/server/security/secgear/secgear.md delete mode 100644 docs/zh/server/security/secgear/secgear_installation.md delete mode 100644 docs/zh/server/security/secgear/using_secgear_tools.md diff --git a/docs/zh/server/security/secdetector/_toc.yaml b/docs/zh/server/security/secdetector/_toc.yaml index 4a75638040..64e43c1295 100644 --- a/docs/zh/server/security/secdetector/_toc.yaml +++ b/docs/zh/server/security/secdetector/_toc.yaml @@ -2,11 +2,6 @@ label: secDetector使用指南 isManual: true description: secDetector是OS内构入侵检测系统,为关键信息基础设施提供入侵检测及响应能力 sections: - - label: 认识secDetector - href: ./introduction_to_secdetector.md - - label: 安装与部署 - href: ./install_secdetector.md - - label: 接口参考 - href: ./api_reference.md - - label: 使用secDetector - href: ./using_secdetector.md \ No newline at end of file + - href: + upstream: https://gitee.com/openeuler/secDetector/blob/master/docs/zh/2403_LTS_SP2/_toc.yaml + path: ./secdetector diff --git a/docs/zh/server/security/secdetector/api_reference.md b/docs/zh/server/security/secdetector/api_reference.md deleted file mode 100644 index 1235f7bf15..0000000000 --- a/docs/zh/server/security/secdetector/api_reference.md +++ /dev/null @@ -1,83 +0,0 @@ -# 接口说明 - -secDetector操作系统内构入侵检测系统对外提供SDK,这里给出用户开发应用程序所需的接口。SDK的接口设计非常简单,一共只有三个接口,两个头文件。 - -头文件: - -- secDetector/secDetector_sdk.h:包含接口定义 - -- secDetector/secDetector_topic.h:包含一些调用接口所需使用的预定义宏,如可选择性订阅的功能主题编号 - - -## secSub - -订阅 topic 接口 - -**功能**: - -订阅接口,应用程序通过输入不同 topic id,可以选择订阅不同的功能主题,比如文件打开类异常探针。secDetector 提供的诸功能主题对应的 topic id 的定义在 secDetector_topic.h 中可以查看。本订阅接口支持一次订阅多个主题,多个探针的 topic id 可以以位图的形式进行组合。 - ->![](./public_sys-resources/icon-note.gif) **说明:** ->由于一次订阅产生一个reader即信息读取器,所以应用程序应当在一次订阅接口调用中订阅所需的所有主题。这样就可以使用一个reader进行信息的采集。如果需要调整订阅的内容,可以退订之后再重新订阅。 - -**函数声明:** - -```c -void *secSub(const int topic); -``` - -**参数:** - -- topic:入参,需要订阅的主题集合 - -**返回值:** - -- NULL:订阅失败 -- NOT NULL:读取订阅主题相关信息的GRPC reader读取器 - -## secUnsub - -退订 topic 接口 - -**功能**: - -退订接口,应用程序通过输入订阅成功后获得的reader,完成主题的退订。退订后应用程序便不会收到相应主题的信息。系统中某主题如果没有任何应用程序订阅,则不会被执行。 - -**函数声明:** - -```c -void secUnsub(void *reader); -``` - -**参数:** - -- reader:入参,需要退订的信息读取器 - -**返回值:** - -- 无 - - -## secReadFrom - -已订阅主题的消息读取接口 - -**功能**: - -使用订阅接口对某些主题的订阅成功后,执行退订操作之前,可使用本接口接受 secDetector 发送的已订阅主题的消息。本接口是阻塞式的。应用程序建议使用独立的线程循环调用。当已订阅主题有消息时候,本函数才会被恢复执行。 - -**函数声明:** - -```c -void secReadFrom(void *reader, char *data, int data_len); -``` - -**参数:** - -- reader:入参,主题订阅成功后得到的消息读取器 -- data:出参,消息缓冲区,由应用程序提供的一段内存 -- data_len:入参,消息缓冲区的尺寸 - -**返回值:** - -- 无 diff --git a/docs/zh/server/security/secdetector/install_secdetector.md b/docs/zh/server/security/secdetector/install_secdetector.md deleted file mode 100644 index 2fce02d5d5..0000000000 --- a/docs/zh/server/security/secdetector/install_secdetector.md +++ /dev/null @@ -1,104 +0,0 @@ -# 安装 secDetector - -## 软硬件要求 - -### 硬件要求 - -* 当前仅支持 x86_64、aarch64 架构处理器。 -* secDetector磁盘使用需求:配额1GB及以上。 -* secDetector内存使用需求:配额100MB及以上。 - -### 环境准备 - -安装 openEuler 系统,安装方法参考《[安装指南](../../../server/installation_upgrade/installation/installation_on_servers.md)》。 - -## 安装secDetector - -1. 配置openEuler yum源:openEuler 发布版本上已默认配置完成yum源,无需额外操作。特殊情况下请参考openEuler官方文档配置在线yum源或通过ISO挂载配置本地yum源。 - -2. 安装secDetector。 - - ```shell - #安装secDetector - sudo yum install secDetector - ``` - -> ![](./public_sys-resources/icon-note.gif)说明: -> -> 安装secDetector后在指定目录下可获得部署secDetector所需的相关文件: - -```shell -#secDetector的kerneldriver的核心框架 -/lib/modules/%{kernel_version}/extra/secDetector/secDetector_core.ko - -#secDetector的kerneldriver的功能组件 -/lib/modules/%{kernel_version}/extra/secDetector/secDetector_xxx.ko - -#secDetector的守护者进程文件 -/usr/bin/secDetectord - -#secDetector的SDK库文件 -/usr/lib64/secDetector/libsecDetectorsdk.so -/usr/include/secDetector/secDetector_sdk.h -/usr/include/secDetector/secDetector_topic.h -``` - -## 部署 secDetector - -secDetector的主体secDetectord是以系统服务的形式部署在系统中的,前台业务系统可以通过集成SDK来与之通信。由于secDetector的部分能力必须构建在内核之中,因此secDetectord的功能全集还依赖于其后台驱动的部署。 - -### 部署 kernel driver - -1. 插入 kernel driver 的基础框架:secDetector_core.ko 是 kernel driver 的基础框架,要优先于其他内核模块进行部署。找到安装后的 secDetector_core.ko 目录,将其插入内核。参考命令如下: - - ```shell - sudo insmod secDetector_core.ko - ``` - - secDetector_core 支持一个命令行参数ringbuf_size。用户可以通过指定该参数的值来控制 kernel driver 与 用户态secDetectord之间数据通道的缓存空间尺寸。该参数可以被指定为4~1024中的一个整数,单位是MB。默认值是4,必须为2的幂。参考命令如下: - - ``` - sudo insmod secDetector_core.ko ringbuf_size=128 - ``` - - -2. 插入 kernel driver 的功能模块:secDetector的 kernel driver 采用模块化部署方式。用户可以选择基于框架部署满足需要的功能模块,也可以选择部署全部模块。参考命令如下: - - ```shell - sudo insmod secDetector_kmodule_baseline.ko - - sudo insmod secDetector_memory_corruption.ko - - sudo insmod secDetector_program_action.ko - - sudo insmod secDetector_xxx.ko - ``` - - - secDetector_kmodule_baseline.ko 提供了内核模块列表检测的能力,属于内存修改类探针; - - secDetector_memory_corruption.ko 提供了内存修改检测的能力,属于内存修改类探针; - - secDetector_program_action.ko 提供了程序行为检测的能力,属于程序行为类探针。 - -### 部署 usr driver 和 observer_agent - -当前用户态驱动 usr driver 和服务 observer_agent 已经都被集成到secDetectord中,参考命令如下: - -```shell -sudo ./secDetectord & -``` - -usr driver当前包含了文件操作类探针和进程管理类探针的能力。 - -secDetectord支持如下一些配置选项: - -``` -用法:secDetectord [选项] -secDetectord 默认会在后台运行,从探针中取得数据并转发给订阅者。 -选项: - -d 进入调试模式,进入前台运行,并且在控制台打印探针数据。 - -s 配置eBPF缓冲区大小,单位为Mb,默认为4; size可选范围为4~1024,且必须为2的幂次方。当前拥有2个独立的缓冲区。 - -t 支持配置订阅的事件,默认为所有事件。topic 是位图格式。例如 -t 0x60 同时订阅进程创建和进程退出事件。详细请查阅 include/secDetector_topic.h。 -``` - -### 部署SDK - -SDK的库文件默认已经被部署到系统库目录中,用户需要在自己的程序中引用SDK的头文件即可使用。 diff --git a/docs/zh/server/security/secdetector/introduction_to_secdetector.md b/docs/zh/server/security/secdetector/introduction_to_secdetector.md deleted file mode 100644 index 92707be0cb..0000000000 --- a/docs/zh/server/security/secdetector/introduction_to_secdetector.md +++ /dev/null @@ -1,97 +0,0 @@ -# 认识secDetector - -## 简介 - -secDetector 是专为OS设计的内构入侵检测系统,旨在为关键信息基础设施提供入侵检测及响应能力,为第三方安全工具减少开发成本同时增强检测和响应能力。secDetector 基于ATT&CK攻击模式库建模提供更为丰富的安全事件原语,并且可以提供实时阻断和灵活调整的响应能力。 - -secDetector 作为一套灵活的OS内构入侵检测系统,有三种使用模式: - -1. 直接被系统用户开启用作一些基础异常事件的告警和处置。 -2. 被安全态势感知服务集成,补齐系统信息采集缺陷,用于APT等复杂的安全威胁分析和重点事件布控实时阻断。 -3. 由安全从业人员或安全感知服务提供商二次开发,基于可拓展框架构建精确、高效、及时的入侵检测与响应能力。 - -## 软件架构 - -``` -||==APP===================================================================|| -|| || -|| ---------------------------- || -|| | SDK | || -|| ---------------------------- || -|| /^\ || -||==================================|=====================================|| - | - | - | -||==OBSERVER========================|=====================================|| -|| | || -|| ---------------------------- || -|| | service | || -|| ---------------------------- || -|| /^\ || -||==================================|=====================================|| - | -||==DRIVER================================================================|| -|| || -|| ---------------------------- || -|| | 8 types of cases | || -|| ---------------------------- || -|| || -||------------------------------------------------------------------------|| -|| core || -|| ------------- ---------------- ---------------- ----------------- || -|| | hook unit | | collect unit | | analyze unit | | response unit | || -|| ------------- ---------------- ---------------- ----------------- || -|| || -||========================================================================|| -``` - -secDetector在架构上分为四个部分:SDK、service、检测特性集合cases、检测框架core。 - -- SDK - - SDK是以一个用户态动态链接库lib的形态承载,被部署到需要使用secDetector入侵检测系统的安全感知业务中。SDK用于和secDetector入侵检测系统的service通讯,完成所需的工作(例如订阅,去订阅,读取现有消息等功能)。secDetector提供的异常信息被定义成不同的case,安全感知业务可以根据自身需求订阅。 - -- service - - service是以一个用户态服务应用的形态承载,向上管理、维护安全感知业务的case订阅信息,向下维护case的运行情况。框架core和检测特性集合case采集到的信息由service统一收集,按需转发给不同的安全感知业务。安全感知业务对于底层检测特性集合case和框架core的配置、管理的需求也由service进行统一的管理和转发。不同的安全感知业务可能会需求同样的case,service会统计出所有安全感知业务需求case的并集,向下层注册。 - -- 特性集合cases - - 检测特性集合cases是一系列异常检测探针,根据异常信息的不同会有不同的形态,比如内核异常信息检测的每个探针会以内核模块ko的形态承载。一个case代表一个探针,一个探针往往是一类异常信息或者一类异常事件的信息。比如进程类探针会关注所有进程的创建、退出、属性修改等事件信息,内存修改类探针会收集内核模块列表和安全开关等信息。因此一个探针可能会包含对多个事件的监控,而这些对不同事件的监控逻辑可能无法部署在同一个执行流当中。我们使用工作流(workflow)的概念表示一个探针在同一个执行流中的工作,一个探针可以包含一个或者多个工作流。比如对于进程探针而言,进程创建检测和进程属性修改检测就是不同的工作流。 - -- 框架core - - 检测框架core是每一个case依赖的基础框架,提供case的管理和workflow所需的通用的基础功能单元。内核异常信息检测框架会以内核模块ko的形态承载。一个检测特性case可以将自己注册到框架中,或者从框架中去注册。框架还可以提供特定的交互接口以满足外部的动态请求。一个workflow被定义为有四类功能单元组成:事件发生器、信息采集器、事件分析器、响应单元。 - -特性集合cases和框架core合起来被称为driver。driver驱动提供了secDetector功能的最底层的系统级实现。 - -driver分为两类,kerneldriver 和 usrdriver。顾名思义,kerneldriver是部署在内核态中的,以内核模块的形式承载。usrdriver是部署在用户态中的,直接被部署为service中的一个模块。从逻辑上usrdriver是在service之下的,但是在运行中,为了降低通信成本,usrdriver被直接集成在service程序中。 - -## 能力特性 - -### 检测能力 - -| 特性 | 状态 | 发布版本 | -| ------------------------------ | ------ | ------------------------------------------------------------ | -| 检测框架 | 已实现 | 统一灵活可拓展高效的检测框架,支持不同类型的触发、收集、分析、响应单元 | -| 进程管理类探针 | 已实现 | 监控进程创建、退出、元数据修改等事件 | -| 文件操作类探针 | 已实现 | 监控文件创建、删除、读写、属性修改等事件 | -| 程序行为类探针(API调用) | 已实现 | 监控匿名管道创建、命令执行、ptrace系统调用等关键程序行为 | -| 内存修改类探针(内核关键数据) | 已实现 | 监控内核模块列表,硬件安全功能开关等内核关键数据 | - -### 响应能力 - -| 特性 | 状态 | 说明 | -| -------- | ------ | -------------------------------------------------- | -| 响应框架 | 已实现 | 统一的灵活可拓展的响应框架,支持不同类型的响应单元 | -| 告警上报 | 已实现 | 提供异常信息上报能力的响应单元 | - -### 服务能力 - -| 特性 | 状态 | 说明 | -| -------- | ------ | ------------------------------------------------------------ | -| 通信框架 | 已实现 | 应用程序使用gRPC和service进行通信。功能被封装在SDK的动态库中。 | -| 订阅管理 | 已实现 | 应用程序可以一次订阅,长期使用secDetector获取信息。secDetector会对订阅的应用程序进行管理,分发对应的被订阅主题的信息。 | -| 配置下发 | 已实现 | 服务可以通过参数对于特定的检测、阻断特性进行配置,从而实现过滤、调整等功能。目前未对应用程序开放。 | -| 即时检测 | 已实现 | secDetector提供的信息是实时的,准确的,一手的。 | diff --git a/docs/zh/server/security/secdetector/public_sys-resources/icon-note.gif b/docs/zh/server/security/secdetector/public_sys-resources/icon-note.gif deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> diff --git a/docs/zh/server/security/secdetector/secdetector.md b/docs/zh/server/security/secdetector/secdetector.md deleted file mode 100644 index e20d3fc09e..0000000000 --- a/docs/zh/server/security/secdetector/secdetector.md +++ /dev/null @@ -1,5 +0,0 @@ -# secDetector 使用指南 - -本文档介绍 openEuler 操作系统内构入侵检测系统 secDetector 的架构、特性、安装、开发指导、落地应用场景等,帮助用户快速了解并使用 secDetector。 - -本文档适用于使用 openEuler 系统并希望了解和使用 secDetector 的社区开发者、开源爱好者以及相关合作伙伴。使用人员需要具备基本的Linux操作系统知识。 diff --git a/docs/zh/server/security/secdetector/using_secdetector.md b/docs/zh/server/security/secdetector/using_secdetector.md deleted file mode 100644 index ba8ff6c503..0000000000 --- a/docs/zh/server/security/secdetector/using_secdetector.md +++ /dev/null @@ -1,46 +0,0 @@ -# 使用 secDetector - -secDetector 提供了SDK,一个so库,用户可以在自己的应用程序中集成该动态链接库从而通过简单的接口使用secDetector。本章介绍其使用方法。 - -## 基本用法 - -用户按照指南《[安装secDetector](./install_secdetector.md)》安装完secDetector之后,libsecDetectorsdk.so、secDetector_sdk.h、secDetector_topic.h就已经被部署到系统用户库默认路径中。 - -1. 使用 C 或 C++ 开发的应用程序确保include路径包含后,可以首先在程序中引用这两个头文件。 - - ``` - #include - #include - ``` - -2. 参考指南《[接口参考](./api_reference.md)》调用SDK提供的接口访问secDetector。 - - 1. 首先调用订阅接口secSub,订阅所需的主题。 - 2. 然后在独立线程中调用消息读取接口secReadFrom阻塞式的读取被订阅主题产生的信息。 - 3. 最后当不需要使用secDetector时,调用退订接口secUnsub。退订时请严格使用订阅时的返回值。 - -## 代码示例 - -可以参考secDetector代码仓上的示例代码,由python语言编写。 - -1. 可以在如下链接中查看示例代码 - - [examples/python · openEuler/secDetector (gitee.com)](https://gitee.com/openeuler/secDetector/tree/master/examples/python) - -2. 也可以下载后参考 - -```shell -git clone https://gitee.com/openeuler/secDetector.git -``` - -## 规格与约束 - -1. 部分功能(如内存修改探针-安全开关)依赖硬件体系结构,因此在不同指令集架构上的表现并不相同。 -2. 从内核到用户态传输数据缓存空间为探针共享,缓冲区满会丢弃新采集的事件信息。缓存空间可配置范围为4~1024 MB, 必须为2的幂。 -3. 服务进程secDetectord支持root用户运行,不支持多实例,非第一个运行的程序会退出。 -4. 用户订阅连接数限制为5个。 -5. 用户订阅后,读取消息时需要为消息读取接口提供一块缓冲区,超过缓冲区长度的消息将被截断。建议缓冲区长度不低于4096。 -6. 对于文件名、节点名之类的描述字符串都有一定的长度限制,过长可能会被截断。 -7. 应用程序单进程内不支持并行多连接 secDetectord 接收消息。只能一次订阅,单连接接受消息。去订阅后才能重新订阅。 -8. secDetectord 进程应当等待所有应用程序的连接中断即完全退订所有主题后,才可以关闭退出。 -9. 部分功能(如内存修改探针-安全开关)基于当前CPU状态。因此检测的基本功能是可以检测到当前CPU上的状态变化,其他CPU上的状态变化如果未能及时同步到当前CPU,则不会被检测到。 diff --git a/docs/zh/server/security/secgear/_toc.yaml b/docs/zh/server/security/secgear/_toc.yaml index 09697744f9..e0781a30dc 100644 --- a/docs/zh/server/security/secgear/_toc.yaml +++ b/docs/zh/server/security/secgear/_toc.yaml @@ -2,17 +2,7 @@ label: secGear开发指南 isManual: true description: 使用 secGear 统一机密计算编程框架开发应用程序,保障云端数据运行时的安全性 sections: - - label: secGear开发指南 - href: ./secgear.md - - label: 认识secGear - href: ./introduction_to_secgear.md - - label: 安装与部署 - href: ./secgear_installation.md - - label: 接口说明 - href: ./api_reference.md - - label: 开发secGear应用程序 - href: ./developer_guide.md - - label: 使用secGear工具 - href: ./using_secgear_tools.md - - label: 应用场景 - href: ./application_scenarios.md + - href: + upstream: https://gitee.com/openeuler/secGear/blob/master/docs/zh/2403_LTS_SP2/_toc.yaml + path: ./secgear + diff --git a/docs/zh/server/security/secgear/api_reference.md b/docs/zh/server/security/secgear/api_reference.md deleted file mode 100644 index 033431c373..0000000000 --- a/docs/zh/server/security/secgear/api_reference.md +++ /dev/null @@ -1,331 +0,0 @@ -# 接口说明 - -secGear 机密计算统一编程框架分为安全侧和非安全侧,这里给出用户开发应用程序所需的接口。除这些接口外,安全侧还继承了 ARM TrustZone 和 Intel SGX 的开源 POSIC 接口。 - -## cc_enclave_create - -创建 enclave 接口 - -**功能**: - -初始化接口,函数根据不同 type,调用不同的 TEE 创建函数,完成不同 TEE 方案关于 enclave 上下文初始化,由非安全侧调用 - ->![](./public_sys-resources/icon-note.gif) **说明:** ->由于 Intel SGX 限制,多线程并发调用 cc_enclave_create 时存在内存映射的竞争关系,会导致创建 enclave 概率性失败。所以编码时要避免线程并发调用 cc_enclave_create。 - -**函数声明:** - -cc_enclave_result_t cc_enclave_create(const char* path, enclave_type_t type, uint32_t version,uint32_t flags,const enclave_features_t* features,uint32_t features_count, - cc_enclave_t ** enclave); - -**参数:** - -- Path:入参,要加载的 enclave 路径 -- Type:入参,用来指定 TEE 解决方案, 如 SGX_ENCLAVE_TYPE、GP_ENCLAVE_TYPE、AUTO_ENCLAVE_TYPE -- version:入参,指定的 enclave engine 的版本,目前只有一个版本,取值为 0。 -- Flags:入参,标志位,说明这个 enclave 运行状态,例如调试状态 SECGEAR_DEBUG_FLAG、模拟状态 SECGEAR_SIMULATE_FLAG(目前不支持) -- features:入参,用于设置一些关于 enclave 支持的特性,例如 SGX 的 PCL、 switchless 等。目前不支持,请设置为 NULL -- features_count:入参,入参 features 特性结构体的数量。目前不支持,请设置为 0 -- enclave:出参,创建的 enclave 上下文 - -**返回值:** - -- CE_SUCCESS:认证信息验证成功 -- CE_ERROR_INVALID_PARAMETER:输入参数有误 -- CE_ERROR_OUT_OF_MEMORY:无可用内存 -- CC_FAIL:通用错误 -- CC_ERROR_UNEXPECTED:不可预期错误 -- CC_ERROR_ENCLAVE_MAXIMUM:单个 app 创建的 enclave 数量达到最 -- CC_ERROR_INVALID_PATH:安全二进制路径无效 -- CC_ERROR_NO_FIND_REGFUNC:enclave 引擎搜索失败 - -## cc_enclave_destroy - -销毁 enclave 接口 - -**功能**: - -调用不同 TEE 的退出函数,释放已经创建的 enclave 实体,由非安全侧调用 - -**函数声明:** - -cc_enclave_result_t cc_enclave_destroy (cc_enclave_t ** enclave); - -**参数:** - -- enclave:入参,已经创建 enclave 的上下文 - -**返回值:** - -- CE_SUCCESS:认证信息验证成功 -- CE_ERROR_INVALID_PARAMETER:输入参数有误 -- CE_ERROR_OUT_OF_MEMORY:无可用内存 -- CC_ERROR_NO_FIND_UNREGFUNC:enclave引擎搜索失败 -- CC_FAIL:通用错误 -- CC_ERROR_UNEXPECTED:不可预期错误 - -## cc_malloc_shared_memory - -创建共享内存 - -**功能**: - -开启switchless特性后,创建安全环境与非安全环境可同时访问的共享内存,由非安全侧调用 - -**函数声明:** - -void *cc_malloc_shared_memory(cc_enclave_t *enclave, size_t size); - -**参数:** - -- enclave:入参,安全环境上下文句柄。因不同平台共享内存模型不同,同时为了保持接口跨平台一致性,该参数仅在ARM平台被使用,SGX平台该入参会被忽略 -- size:入参,共享内存大小 - -**返回值:** - -- NULL:共享内存申请失败 -- 其他:为创建的共享内存的首地址 - -## cc_free_shared_memory - -释放共享内存 - -**功能**: - -开启switchless特性后,释放共享内存,由非安全侧调用 - -**函数声明:** - -cc_enclave_result_t cc_free_shared_memory(cc_enclave_t *enclave, void *ptr); - -**参数:** - -- enclave:入参,安全环境上下文句柄。因不同平台共享内存模型不同,同时为了保持接口跨平台一致性,该参数仅在ARM平台被使用(该参数必须与调用cc_malloc_shared_memory接口时传入的enclave保持一致),SGX平台该入参会被忽略 -- ptr:入参,cc_malloc_shared_memory接口返回的共享内存地址 - -**返回值:** - -- CC_ERROR_BAD_PARAMETERS:入参非法 -- CC_ERROR_INVALID_HANDLE:无效enclave或者传入的enclave与ptr所对应的enclave不匹配(仅在ARM平台生效,SGX平台会忽略enclave,故不会对enclave进行检查) -- CC_ERROR_NOT_IMPLEMENTED:该接口未实现 -- CC_ERROR_SHARED_MEMORY_START_ADDR_INVALID:ptr不是cc_malloc_shared_memory接口返回的共享内存地址(仅在ARM平台生效) -- CC_ERROR_OUT_OF_MEMORY:内存不足(仅在ARM平台生效) -- CC_FAIL:一般性错误 -- CC_SUCCESS:成功 - -## cc_enclave_generate_random - -随机数生成 - -**功能**: - -用于在安全侧生成密码安全的随机数 - -**函数声明:** - -cc_enclave_result_t cc_enclave_generate_random(void *buffer, size_t size); - -**参数:** - -- *buffer:入参,生成随机数的缓冲区 -- size:入参,缓冲区的长度 - -**返回值:** - -- CE_OK:认证信息验证成功 -- CE_ERROR_INVALID_PARAMETER:输入参数有误 -- CE_ERROR_OUT_OF_MEMORY:无可用内存 - -## cc_enclave_seal_data - -数据持久化 - -**功能**: - -用于加密 enclave 内部数据,使数据可以在 enclave 外部持久化存储,由安全侧调用 - -**函数声明:** - -cc_enclave_result_t cc_enclave_seal_data(uint8_t *seal_data, uint32_t seal_data_len, - -​ cc_enclave_sealed_data_t *sealed_data, uint32_t sealed_data_len, - -​ uint8_t *additional_text, uint32_t additional_text_len); - -**参数:** - -- seal_data:入参,需要加密的数据 -- seal_data_len:入参,需要加密数据的长度 -- sealed_data:出参,加密后的数据处理句柄 -- sealed_data_len:出参,加密后的密文长度 -- additional_text:入参,加密所需的附加消息 -- additional_text_len:入参,附加消息长度 - -**返回值:** - -- CE_SUCCESS:数据加密成功 -- CE_ERROR_INVALID_PARAMETER:输入参数有误 -- CE_ERROR_OUT_OF_MEMORY:无可用内存 -- CC_ERROR_SHORT_BUFFER:传入的buffer过小 -- CC_ERROR_GENERIC:底层硬件通用错误 - -## cc_enclave_unseal_data - -数据解密 - -**功能**: - -用于解密 enclave 密封过的数据,用于将外部持久化数据重新导回 enclave 环境中,由安全侧调用 - -**函数声明:** - -cc_enclave_result_t cc_enclave_unseal_data(cc_enclave_sealed_data_t *sealed_data, - - uint8_t *decrypted_data, uint32_t *decrypted_data_len, - - uint8_t *additional_text, uint32_t *additional_text_len); - -**参数:** - -- sealed_data:入参,已加密数据的句柄 -- decrypted_data:出参,解密之后的密文数据buffer -- decrypted_data_len:出参,解密后密文长度 -- additional_text:出参,解密后附加消息 -- additional_text_len:出参,解密后附加消息长度 - -**返回值:** - -- CE_SUCCESS:数据解密成功 -- CE_ERROR_INVALID_PARAMETER:输入参数有误 -- CE_ERROR_OUT_OF_MEMORY:无可用内存 -- CC_ERROR_SHORT_BUFFER:传入的buffer过小 -- CC_ERROR_GENERIC:底层硬件通用错误 - -## cc_enclave_get_sealed_data_size - -获取加密数据的大小 - -**功能**: - -用于 sealed_data 数据的大小,主要用于分配解密后的数据空间,由安全侧与非安全侧皆可调用 - -**函数声明:** - -uint32_t cc_enclave_get_sealed_data_size(const uint32_t add_len, const uint32_t seal_data_len); - -**参数:** - -- add_len:入参,附加消息长度 -- sealed_data_len:入参,加密信息的长度 - -**返回值:** - -- UINT32_MAX:参数错误或函数执行错误 -- others:函数执行成功,返回值为当前 sealed_data 结构的大小 - -## cc_enclave_get_encrypted_text_size - -获取加密消息的长度 - -**功能**: - -获取加密数数据中加密消息的长度,由安全侧调用 - -**函数声明:** - -uint32_t cc_enclave_get_encrypted_text_size(const cc_enclave_sealed_data_t *sealed_data); - -**参数:** - -- sealed_data:入参,加密数据的句柄 - -**返回值:** - -- UINT32_MAX:参数错误或函数执行错误 -- others:函数执行成功,返回值为当前 sealed_data 中加密消息的长度 - -## cc_enclave_get_add_text_size - -获取附加消息的长度 - -**功能**: - -获取加密数数据中附加消息的长度,由安全侧调用 - -**函数声明:** - -uint32_t cc_enclave_get_add_text_size(const cc_enclave_sealed_data_t *sealed_data); - -**参数:** - -- sealed_data:入参,加密数据的句柄 - -**返回值:** - -- UINT32_MAX:参数错误或函数执行错误 -- others:函数执行成功,返回值为当前sealed_data中附加消息的长度 - -## cc_enclave_memory_in_enclave - -安全内存检查 - -**功能**: - -用于校验指定长度的内存地址是否都属于安全侧内存,由安全侧调用 - -**函数声明:** - -bool cc_enclave_memory_in_enclave(const void *addr, size_t size); - -**参数:** - -- *addr:入参,指定需要校验的内存地址 -- size:入参,自内存地址起需要校验的长度 - -**返回值:** - -- true:指定区域内存都在安全区范围内 -- false:指定区域的内存有部分或者全部不在安全范围内 - -## cc_enclave_memory_out_enclave - -安全内存检查 - -**功能**: - -用于校验指定长度的内存地址是否都属于非安全侧内存,由安全侧调用 - -**函数声明:** - -bool cc_enclave_memory_out_enclave(const void *addr, size_t size); - -**参数:** - -- *addr:入参,指定需要校验的内存地址 -- size:入参,自内存地址起需要校验的长度 - -**返回值:** - -- true:指定区域内存都在非安全区 -- false:指定区域的内存有部分或者全部在安全区 - -## PrintInfo - -消息打印 - -**功能**: - -用于安全侧日志的打印,本接口输出安全侧用户想打印的信息,输入日志保存在非安全侧/var/log/secgear/secgear.log中 - -**函数声明:** - -void PrintInfo(int level, const char *fmt, ...); - -**参数:** - -- level:入参,日志打印等级,可选项为PRINT_ERROR, PRINT_WARNING, PRINT_STRACE, PRINT_DEBUG -- fmt: 入参,需要输出的字符串 - -**返回值:** - -- 无 diff --git a/docs/zh/server/security/secgear/application_scenarios.md b/docs/zh/server/security/secgear/application_scenarios.md deleted file mode 100644 index bb5cd15caf..0000000000 --- a/docs/zh/server/security/secgear/application_scenarios.md +++ /dev/null @@ -1,96 +0,0 @@ -# 应用场景 - -本文通过举例介绍典型场景机密计算解决方案,帮助读者理解secGear的使用场景,进而结合自己的业务构建对应的机密计算解决方案。 - -## BJCA基于TEE的密码模块 - -在政策和业务的双驱动下,密码应用保障基础设施一直在向虚拟化演进,随着业务上云,密码服务支撑也需要构建全新的密码交付模式,实现密码、云服务与业务应用的融合,因此数字认证(BJCA)推出基于TEE的密码模块。数字认证既可以利用鲲鹏TEE环境构建合规的密码计算模块,支撑密码云服务平台,同时也可以基于鲲鹏主机构建“机密计算平台”,为云计算、隐私计算、边缘计算等各类场景提供“高速泛在、弹性部署、灵活调度”的密码服务支撑。基于鲲鹏处理器的内生式密码模块已经成为密码行业变革型的创新方案,并作为内生可信密码计算新起点。 - -### 现状 - -传统密码模块中算法协议以及处理的数据是隐私数据,密码模块上云存在安全风险。 - -### 解决方案 - -![](./figures/BJCA_Crypto_Module.png) - -基于TEE的密码模块方案如图所示,其中密码模块基于secGear机密计算开发框架拆分成两部分:管理服务、算法协议。 - -- 管理服务:运行在REE侧,负责对外提供密码服务,转发请求到TEE中处理。 -- 算法协议:运行在TEE侧,负责用户数据加/解密等处理。 - -由于密码服务可能存在高并发、大数据请求,此时REE与TEE存在频繁交互以及大数据拷贝,会导致性能直线下降,针对类似场景可使用secGear零切换特性优化,减少调用切换及数据拷贝次数,实现性能倍增。 - -## GaussDB基于TEE的全密态数据库 - -云数据库俨然已成为数据库业务未来重要的增长点,绝大多数的传统数据库服务厂商正在加速提供更优质的云数据库服务。然而云数据库所面临的风险相较于传统数据库更复杂多样,无论是应用程序漏洞、系统配置错误,还是恶意管理员都可能对数据安全与隐私保护造成巨大风险。 - -### 现状 - -云数据库的部署网络由“私有环境”向“开放环境”转变,系统运维管理角色被拆分为业务管理员和运维管理员。业务管理员拥有业务管理的权限,属于企业业务方,而运维管理员属于云服务提供商。数据库运维管理员虽然被定义成系统运维管理,其实际依旧享有对数据的完全使用权限,通过运维管理权限或提权来访问数据甚至篡改数据;再者,由于开放式的环境和网络边界的模糊化,用户数据在整个业务流程中被更充分的暴露给攻击者,无论是传输、存储、运维还是运行态,都有可能遭受来自攻击者的攻击。因此对于云数据库场景,如何解决第三方可信问题,如何更加可靠的保护数据安全相比传统数据库面临着更大挑战,其中数据安全、隐私不泄露是整个云数据库面临的首要安全挑战。 - -### 解决方案 - -面对上述挑战,基于TEE的GaussDB(openGauss)全密态数据库的设计思路是:用户自己持有数据加解密密钥,数据以密文形态存在于数据库服务侧的整个生命周期过程中,并在数据库服务端TEE内完成查询运算。 - -![](./figures/secret_gaussdb.png) - -基于TEE的全密态数据库解决方案如图所示,全密态数据库的特点如下: - -1. 数据文件以密文形式存储,不存储密钥明文信息。 -2. DB数据密钥保存在客户端。 -3. 客户端发起查询请求时,在服务端REE侧执行密态SQL语法得到相关密文记录,送入TEE中。 -4. 客户端通过secGear安全通道将DB数据密钥加密传输到服务端TEE中,在TEE中解密得到DB数据密钥,用DB数据密钥将密文记录解密得到明文记录,执行SQL语句,得到查询结果,再将DB数据密钥加密后的查询结果发送给客户端。 - -其中步骤3在数据库高并发请求场景下,会频繁触发REE-TEE之间调用以及大量的数据传输,导致性能直线下降,通过secGear零切换特性优化,减少调用切换及数据拷贝次数,实现性能倍增。 - -## openLooKeng基于TEE的联邦SQL - -openLooKeng联邦SQL是跨数据中心查询的一种,典型场景如下,有三个数据中心:中心数据中心A,边缘数据中心B和边缘数据中心C。openLooKeng集群部署在三个数据中心中,当数据中心A收到一次跨域查询请求时,会下发执行计划到各数据中心,在边缘数据中心B和C的openLookeng集群完成计算后,通过网络将结果传递给数据中心A中的openLookeng集群完成聚合计算。 - -### 现状 - -在以上方案中,计算结果在不同数据中心的openLookeng集群之间传递,避免了网络带宽不足,一定程度上解决了跨域查询问题。但是计算结果是从原始数据计算得到的,可能带有敏感信息,导致数据出域存在一定安全和合规风险。怎么保护聚合计算过程中边缘数据中心的计算结果,在中心数据中心实现 “可用而不可见”呢? - -### 解决方案 - -其基本思路是:数据中心A中,openLookeng集群将聚合计算逻辑及算子拆分出独立的模块,部署到鲲鹏TEE环境上中;其他边缘数据中心的计算结果通过安全通道传输到数据中心A的TEE中;所有数据最终在TEE中完成聚合计算,从而保护聚合计算过程中边缘数据中心的计算结果不会被数据中心A上REE侧特权程序或恶意程序获取、篡改。 - -![](./figures/openLooKeng.png) - -基于TEE的联邦SQL解决方案如图所示,具体查询流程如下: - -1. 用户在数据中心A下发跨域查询请求,openLooKeng的Coordinator根据查询SQL及数据源分布,拆解下发执行计划到本地工作节点以及边缘数据中心的coordinator,边缘数据中心的coordinator再下发到本地工作节点。 -2. 各工作节点执行计划,得到本地计算结果。 -3. 边缘数据中心通过secGear安全通道将本地计算结果加密后经网络传到数据中心A的REE侧,并中转到TEE中,在TEE中解密计算结果。 -4. 数据中心A在TEE中对数据中心A、B、C的计算结果执行聚合计算,得到最终执行结果,并返回给用户。 - -其中步骤4,在存在大量查询请求时,会频繁触发REE-TEE调用,并且有大量数据的拷贝,导致性能直线下降。通过secGear零切换特性优化,减少调用切换及数据拷贝次数,实现性能倍增。 - -## MindSpore基于TEE的纵向联邦特征保护 - -纵向联邦学习是联邦学习的一个重要分支,当不同的参与方拥有来自相同一批用户但属性不同的数据时,可以利用纵向联邦学习进行协同训练。 - -![](./figures/Mindspore_original.png) - -### 现状 - -传统方案如图所示,具体数据处理流程如下。 - -1. 拥有属性的参与方(Follower方)都会持有一个底层网络,参与方属性输入底层网络得到中间结果,再将中间结果发送给拥有标签的参与方(Leader方)。 -2. Leader方使用各参与方的中间结果和标签来训练顶层网络,再将计算得到的梯度回传给各参与方来训练底层网络。 - -此方案避免了Follower方直接上传自己的原始数据,保护原始数据不出域,一定程度上保护了隐私安全。然而,攻击者还是有可能从上传的中间结果反推出用户信息,导致存在隐私泄露风险。因此我们需要对训练时出域的中间结果和梯度提供更强的隐私保护方案,来满足安全合规要求。 - -### 解决方案 - -借鉴之前三个场景的安全风险及解决方案可以发现,想要达到中间结果出域后的“可用不可见”,正是机密计算的“拿手好戏”。 - -![](./figures/Mindspore.png) - -基于TEE的纵向联邦特征保护方案如图所示,具体数据处理流程如下。 - -1. Follower方的中间结果通过secGear的安全通道加密后传输到Leader方,Leader方非安全世界接收到加密的中间结果后中转到安全世界,在安全世界通过安全通道接口解密。 -2. 在安全世界中将中间结果输入到联邦拆分层计算模块,完成结果计算。 - -以上过程中Follower方的中间结果明文只存在于安全世界内存中,对Leader方来说就是黑盒子,无法访问。 diff --git a/docs/zh/server/security/secgear/developer_guide.md b/docs/zh/server/security/secgear/developer_guide.md deleted file mode 100644 index 1945abc7bb..0000000000 --- a/docs/zh/server/security/secgear/developer_guide.md +++ /dev/null @@ -1,93 +0,0 @@ -# secGear 开发指南 - -这里给出使用 secGear 开发一个 C 语言程序 helloworld 的例子,方便用户理解使用 secGear 开发应用程序。 - -## 下载样例 - -```shell -git clone https://gitee.com/openeuler/secGear.git -``` - -## 目录结构说明 - -```shell -cd examples/helloworld - -#目录结构如下 -├── helloworld -│ ├── CMakeLists.txt -│ ├── enclave -│ │ ├── CMakeLists.txt -│ │ ├── Enclave.config.xml -│ │ ├── Enclave.lds -│ │ ├── hello.c -│ │ ├── manifest.txt -│ │ └── config_cloud.ini -│ ├── helloworld.edl -│ └── host -│ ├── CMakeLists.txt -│ └── main.c -``` - -代码主体分为三块: - -- 非安全侧程序(main.c) -- 非安全侧与安全侧调用接口头文件(helloworld.edl) -- 安全侧程序(hello.c) - -## 准备工作 - -除以上三部分主体代码外,还有编译工程文件(CMakeLists.txt)、开发者证书(SGX的Enclave.config.xml/Enclave.lds,鲲鹏的manifest.txt/config_cloud.ini)。 - -> ![](./public_sys-resources/icon-note.gif)说明: -> -> - 鲲鹏开发者证书需要向华为业务负责人[申请开发者证书](https://gitee.com/link?target=https%3A%2F%2Fwww.hikunpeng.com%2Fdocument%2Fdetail%2Fzh%2Fkunpengcctrustzone%2Ffg-tz%2Fkunpengtrustzone_04_0009.html)。 -> - SGX以Debug模式调试,暂时不用申请。如需正式商用并且用intel的远程证明服务,需要向Intel[申请License](https://gitee.com/link?target=https%3A%2F%2Fwww.intel.com%2Fcontent%2Fwww%2Fus%2Fen%2Fdeveloper%2Ftools%2Fsoftware-guard-extensions%2Frequest-license.html)。 - -申请成功后会得到开发者证书相关文件,需要放置到代码目录相应位置。 - -## 开发步骤 - -基于secGear做机密计算应用拆分改造,类似于独立功能模块提取,识别敏感数据处理逻辑,提取成独立的lib库,部署在可信执行环境中,对非安全侧提供的接口定义在EDL文件中。 - -开发步骤如下图所示: - -1. 开发非安全侧main函数及接口,管理enclave并调用安全侧函数。 -2. 开发EDL文件(类似C语言头文件定义非安全侧与安全侧交互接口)。 -3. 开发安全侧接口实现。 -4. 调用代码生成工具,根据EDL自动生成非安全侧与安全侧交互源码,并分别编译到非安全侧与安全侧二进制文件中,非安全侧逻辑直接调用安全侧对应的接口即可,无需关心自动的生成的交互代码,降低开发成本。 -5. 调用签名工具对安全侧二进制签名,实现安全侧程序可信启动。 - -![](./figures/develop_step.png) - -## 编译运行 - -### ARM环境 - -```shell -// clone secGear repository -git clone https://gitee.com/openeuler/secGear.git - -// build secGear and examples -cd secGear -source environment -mkdir debug && cd debug && cmake -DENCLAVE=GP .. && make && sudo make install - -// run helloworld -/vendor/bin/secgear_helloworld -``` - -### x86环境 - -```shell -// clone secGear repository -git clone https://gitee.com/openeuler/secGear.git - -// build secGear and examples -cd secGear -source /opt/intel/sgxsdk/environment && source environment -mkdir debug && cd debug && cmake .. && make && sudo make install - -// run helloworld -./examples/helloworld/host/secgear_helloworld -``` diff --git a/docs/zh/server/security/secgear/figures/BJCA_Crypto_Module.png b/docs/zh/server/security/secgear/figures/BJCA_Crypto_Module.png deleted file mode 100644 index 68850639553841299d65c3a666a0b57cfa5500dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29952 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 DKWKiT diff --git a/docs/zh/server/security/secgear/figures/Mindspore.png b/docs/zh/server/security/secgear/figures/Mindspore.png deleted file mode 100644 index b4e415062b7474fb4a5a1d4d02af2f16796da8b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50951 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 diff --git a/docs/zh/server/security/secgear/figures/Mindspore_original.png b/docs/zh/server/security/secgear/figures/Mindspore_original.png deleted file mode 100644 index 7812fd1803ceccb4b7a0e9b4debe6833f1a77280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25013 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 k9sJ}Bl97>JS9twO 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 diff --git a/docs/zh/server/security/secgear/figures/openLooKeng.png b/docs/zh/server/security/secgear/figures/openLooKeng.png deleted file mode 100644 index 2f810818c55f7913a95abfa0a7a4a7136b0d7a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39559 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 G-Tx18z8wGn diff --git a/docs/zh/server/security/secgear/figures/secGear_arch.png b/docs/zh/server/security/secgear/figures/secGear_arch.png deleted file mode 100644 index d7639d138ddbcd154860fce45460e4d256b376a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41294 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 diff --git a/docs/zh/server/security/secgear/introduction_to_secgear.md b/docs/zh/server/security/secgear/introduction_to_secgear.md deleted file mode 100644 index dd788264cf..0000000000 --- a/docs/zh/server/security/secgear/introduction_to_secgear.md +++ /dev/null @@ -1,159 +0,0 @@ -# 认识secGear - -## 概述 - -随着云计算的快速发展,越来越多的企业把计算业务部署到云上,面对第三方云基础设施,云上用户数据安全面临着巨大的挑战。机密计算是一种基于硬件可信执行环境的隐私保护技术,旨在依赖最底层硬件,构建最小信任依赖,将操作系统、Hypervisor、基础设施、系统管理员、服务提供商等都从信任实体列表中删除,视为未经授权的实体,从而减少潜在的风险,保护可信执行环境中数据的机密性、完整性。然而随着机密计算技术的兴起,业界机密计算技术种类繁多(如主流的Intel SGX、ARM Trustzone、RISC-V keystone等),各技术SDK也千差万别,给开发者带来较大的开发维护成本,长远考虑,还造成了机密计算应用生态隔离。为方便开发者快速构建保护云上数据安全的机密计算解决方案,openEuler推出机密计算统一开发框架secGear。 - -## 架构介绍 - -![](./figures/secGear_arch.png) - -secGear机密计算统一开发框架技术架构如图所示,主要包括三层,共同组成openEuler机密计算软件生态底座。 - -- Base Layer:机密计算SDK统一层,屏蔽TEE及SDK差异,实现不同架构共源码。 -- Middleware Layer:通用组件层,机密计算软件货架,无需从头造轮子,帮助用户快速构建机密计算解决方案。 -- Server Layer:机密计算服务层,提供典型场景机密计算解决方案。 - -## 关键特性 - -### 零切换 - -#### 客户痛点 - -传统应用做机密计算拆分改造后,REE侧逻辑存在频繁调用TEE侧逻辑时或REE与TEE存在频繁大块数据交互时。由于REE与TEE之间的每次调用,都需要经过REE用户态 、REE内核态、驱动、TEE内核态、TEE用户态之间的上下文切换,调用传递的大块数据也要经过多次拷贝,并且驱动底层数据块大小限制等因素,频繁的REE与TEE交互性能直线下降,严重影响机密计算应用的落地。 - -#### 解决方案 - -[零切换](https://gitee.com/openeuler/secGear#switchless%E7%89%B9%E6%80%A7)是一种通过共享内存减少REE与TEE上下文切换及数据拷贝次数,优化REE与TEE交互性能的技术。 - -#### 使用方法 - -1. 创建enclave时启用零切换 - - 零切换配置项及说明如下。 - - ```c - typedef struct { - uint32_t num_uworkers; - uint32_t num_tworkers; - uint32_t switchless_calls_pool_size; - uint32_t retries_before_fallback; - uint32_t retries_before_sleep; - uint32_t parameter_num; - uint32_t workers_policy; - uint32_t rollback_to_common; - cpu_set_t num_cores; - } cc_sl_config_t; - ``` - - | 配置项 | 说明 | - | -------------------------- | ------------------------------------------------------------ | - | num_uworkers | 非安全侧代理工作线程数,用于执行switchless OCALL,当前该字段仅在SGX平台生效,ARM平台可以配置,但是因ARM平台暂不支持OCALL,所以配置后不会生效。
规格:
ARM:最大值:512;最小值:1;缺省值:8(配置为0时)
SGX:最大值:4294967295;最小值:1 | - | num_tworkers | 安全侧代理工作线程数,用于执行switchless ECALL。
规格:
ARM:最大值:512;最小值:1;缺省值:8(配置为0时)
SGX:最大值:4294967295;最小值:1 | - | switchless_calls_pool_size | switchless调用任务池的大小,实际可容纳switchless_calls_pool_size * 64个switchless调用任务(例:switchless_calls_pool_size=1,可容纳64个switchless调用任务)。
规格:
ARM:最大值:8;最小值:1;缺省值:1(配置为0时)
SGX:最大值:8;最小值:1;缺省值:1(配置为0时) | - | retries_before_fallback | 执行retries_before_fallback次汇编pause指令后,若switchless调用仍没有被另一侧的代理工作线程执行,就回退到switch调用模式,该字段仅在SGX平台生效。
规格:SGX:最大值:4294967295;最小值:1;缺省值:20000(配置为0时) | - | retries_before_sleep | 执行retries_before_sleep次汇编pause指令后,若代理工作线程一直没有等到有任务来,则进入休眠状态,该字段仅在SGX平台生效。
规格: SGX:最大值:4294967295;最小值:1;缺省值:20000(配置为0时) | - | parameter_num | switchless函数支持的最大参数个数,该字段仅在ARM平台生效。
规格: ARM:最大值:16;最小值:0 | - | workers_policy | switchless代理线程运行模式,该字段仅在ARM平台生效。
规格: ARM: WORKERS_POLICY_BUSY:代理线程一直占用CPU资源,无论是否有任务需要处理,适用于对性能要求极高且系统软硬件资源丰富的场景; WORKERS_POLICY_WAKEUP:代理线程仅在有任务时被唤醒,处理完任务后进入休眠,等待再次被新任务唤醒 | - | rollback_to_common | 异步switchless调用失败时是否回退到普通调用,该字段仅在ARM平台生效。
规格: ARM:0:否,失败时仅返回相应错误码;其他:是,失败时回退到普通调用,此时返回普通调用的返回值 | - | num_cores | 用于设置安全侧线程绑核
规格: 最大值为当前环境CPU核数 | - -2. 定义EDL文件中接口时添加零切换标识transition_using_threads - - ```ocaml - enclave { - include "secgear_urts.h" - from "secgear_tstdc.edl" import *; - from "secgear_tswitchless.edl" import *; - trusted { - public int get_string([out, size=32]char *buf); - public int get_string_switchless([out, size=32]char *buf) transition_using_threads; - }; - }; - ``` - -### 安全通道 -#### 客户痛点 -数据拥有者在请求云上机密计算服务时,需要把待处理数据上传到云上TEE环境中处理,由于TEE没有网络,用户数据需要经过网络先传输到REE,REE接收到数据的明文后,再传入TEE中。用户数据的明文暴露在REE内存中,存在安全风险。 - -#### 解决方案 -安全通道是一种结合机密计算远程证明,实现数据拥有者与云上TEE之间安全的密钥协商技术,协商出仅数据拥有者与云上TEE拥有的sessionkey,再通过sessionkey加密用户数据,网络传输的是sessionkey加密后的数据,REE接收到密文数据,再传入TEE中解密,处理。 - -#### 使用方法 -安全通道以lib库方式提供,分为客户端、服务端host、服务端enclave三部分,分别由业务程序的客户端、服务端CA、服务端TA调用。 -| 模块 | 头文件 | 库文件 | 依赖 | -|------------|--------------------------|-----------------------|---------| -| 客户端 | secure_channel_client.h | libcsecure_channel.so | openssl | -| 服务端host | secure_channel_host.h | libusecure_channel.so | openssl | -| 服务端enclave | secure_channel_enclave.h | libtsecure_channel.so | TEE及TEE软件栈 | - -##### 接口列表 -| 接口名 | 所属头文件、库 | 功能 | 备注 | -|----------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|--------------|----| -| cc_sec_chl_client_init | secure_channel_client.h libcsecure_channel.so | 安全通道客户端初始化 | 调用前需初始化参数ctx中网络连接和消息发送钩子函数 | -| cc_sec_chl_client_fini | secure_channel_client.h libcsecure_channel.so | 安全通道客户端销毁 | 通知服务端销毁本客户端的信息,销毁本地安全通道信息 | -| cc_sec_chl_client_callback | secure_channel_client.h libcsecure_channel.so | 安全通道协商消息处理函数 | 处理安全通道协商过程中,服务端发送给客户端的消息。在客户端消息接收处调用 | -| cc_sec_chl_client_encrypt | secure_channel_client.h libcsecure_channel.so | 安全通道客户端的加密接口 | 无 | -| cc_sec_chl_client_decrypt | secure_channel_client.h libcsecure_channel.so | 安全通道客户端的解密接口 | 无 | -| int (*cc_conn_opt_funcptr_t)(void *conn, void *buf, size_t count); | secure_channel.h | 消息发送钩子函数原型 | 由用户客户端和服务端实现,实现中指定安全通道协商消息类型,负责发送安全通道协商消息到对端 | -| cc_sec_chl_svr_init | secure_channel_host.h libusecure_channel.so | 安全通道服务端初始化 | 调用前需初始化ctx中enclave_ctx | -| cc_sec_chl_svr_fini | secure_channel_host.h libusecure_channel.so | 安全通道服务端销毁 | 销毁安全通道服务端以及所有客户端信息 | -| cc_sec_chl_svr_callback | secure_channel_host.h libusecure_channel.so | 安全通道协商消息处理函数 | 处理安全通道协商过程中,客户端发送给服务端的消息。在服务端消息接收处调用,调用前需初始化与客户端的网络连接和发送消息函数,详见[样例](https://gitee.com/openeuler/secGear/blob/master/examples/secure_channel/host/server.c#:~:text=conn_ctx.conn_kit.send)。 | -| cc_sec_chl_enclave_encrypt | secure_channel_enclave.h libtsecure_channel.so | 安全通道enclave中的加密接口 | 无 | -| cc_sec_chl_enclave_decrypt | secure_channel_enclave.h libtsecure_channel.so | 安全通道enclave中的解密接口 | 无 | -##### 注意事项 -安全通道仅封装密钥协商过程、加解密接口,不建立网络连接,协商过程复用业务的网络连接。其中客户端和服务端的网络连接由业务建立和维护,在安全通道客户端和服务端初始化时传入消息发送钩子函数和网络连接指针。 -详见[安全通道样例](https://gitee.com/openeuler/secGear/tree/master/examples/secure_channel)。 - -### 远程证明 - -#### 客户痛点 -随着机密计算技术的发展,逐渐形成几大主流技术(如Arm Trustzone/CCA、Intel SGX/TDX、擎天Enclave、海光CSV等),产品解决方案中可能存在多种机密计算硬件,甚至不同TEE之间的协同,其中远程证明是任何一种机密计算技术信任链的重要一环,每种技术的远程证明报告格式及验证流程各有差异,用户对接不同的TEE,需要集成不同TEE证明报告的验证流程,增加了用户的集成负担,并且不利于扩展新的TEE类型。 - -#### 解决方案 -secGear远程证明统一框架是机密计算远程证明相关的关键组件,屏蔽不同TEE远程证明差异,提供Attestation Agent和Attestation Service两个组件,Agent供用户集成获取证明报告,对接证明服务;Service可独立部署,支持iTrustee、virtCCA远程证明报告的验证。 - -#### 功能描述 -远程证明统一框架聚焦机密计算相关功能,部署服务时需要的服务运维等相关能力由服务部署第三方提供。远程证明统一框架的关键技术如下: - -- 报告校验插件框架:支持运行时兼容iTrustee、vritCCA、CCA等不同TEE平台证明报告检验,支持扩展新的TEE报告检验插件。 -- 证书基线管理:支持对不同TEE类型的TCB/TA基线值管理及公钥证书管理,集中部署到服务端,对用户透明。 -- 策略管理:提供默认策略(易用)、用户定制策略(灵活)。 -- 身份令牌:支持对不同TEE签发身份令牌,由第三方信任背书,实现不同TEE类型相互认证。 -- 证明代理:支持对接证明服务/点对点互证,兼容TEE报告获取,身份令牌验证等,易集成,使用户聚焦业务。 - -根据使用场景,支持点对点验证和证明服务验证两种模式。 - -证明服务验证流程如下: - -1.用户(普通节点或TEE)对TEE平台发起挑战。 - -2.TEE平台通过证明代理获取TEE证明报告,并返回给用户。 - -3.用户端证明代理将报告转发到远程证明服务。 - -4.远程证明服务完成报告校验,返回由第三方信任背书的统一格式身份令牌。 - -5.证明代理验证身份令牌,并解析得到证明报告校验结果。 - -6.得到通过的校验结果后,建立安全连接。 - -点对点验证流程(无证明服务)如下: - -1.用户向TEE平台发起挑战,TEE平台返回证明报告给用户。 - -2.用户使用本地点对点TEE校验插件完成报告验证。 - -> ![](./public_sys-resources/icon-note.gif) **说明:** -> -> 点对点验证和远程证明服务验证时的证明代理不同,在编译时可通过编译选项,决定编译有证明服务和点对点模式的证明代理。 -#### 应用场景 -在金融、AI等场景下,基于机密计算保护运行中的隐私数据安全时,远程证明是校验机密计算环境及应用合法性的技术手段,远程证明统一框架提供了易集成、易部署的组件,帮助用户快速使能机密计算远程证明能力。 - -## 缩略语 - -| 缩略语 | 英文全名 | 中文解释 | -| ------ | ----------------------------- | ---------------- | -| REE | Rich Execution Environment | 富执行环境 | -| TEE | Trusted Execution Environment | 可信执行环境 | -| EDL | Enclave Description Language | 安全应用描述语言 | diff --git a/docs/zh/server/security/secgear/public_sys-resources/icon-note.gif b/docs/zh/server/security/secgear/public_sys-resources/icon-note.gif deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> diff --git a/docs/zh/server/security/secgear/secgear.md b/docs/zh/server/security/secgear/secgear.md deleted file mode 100644 index 2717afebe5..0000000000 --- a/docs/zh/server/security/secgear/secgear.md +++ /dev/null @@ -1,5 +0,0 @@ -# secGear 开发指南 - -本文档介绍openEuler机密计算统一开发框架secGear的架构、特性、安装、开发指导、落地应用场景等,帮助用户快速了解并使用secGear。 - -本文档适用于使用openEuler系统并希望了解和使用secGear的社区开发者、开源爱好者以及相关合作伙伴。使用人员需要具备基本的Linux操作系统知识。 \ No newline at end of file diff --git a/docs/zh/server/security/secgear/secgear_installation.md b/docs/zh/server/security/secgear/secgear_installation.md deleted file mode 100644 index 2bc1842be9..0000000000 --- a/docs/zh/server/security/secgear/secgear_installation.md +++ /dev/null @@ -1,111 +0,0 @@ -# 安装 secGear - -## ARM环境 - -### 环境要求 - -#### 硬件环境 - -| 项目 | 版本 | -| ------ | --------------------------------------------------- | -| 服务器 | TaiShan 200服务器(型号2280) | -| 主板 | 鲲鹏主板 | -| BMC | 1711单板(型号BC82SMMAB),固件版本不低于3.01.12.49 | -| CPU | 鲲鹏920处理器(型号7260、5250、5220) | -| 机箱 | 不限,建议8盘或12盘 | - -> ![img](./public_sys-resources/icon-note.gif)说明 -> -> - 要求服务器已经预置TrustZone特性套件,即预装TEE OS、TEE OS启动密钥、BMC、BIOS和License许可证。 -> - 普通服务器无法仅通过升级BMC、BIOS、TEE OS固件实现TrustZone特性使能。 -> - 带TrustZone特性的服务器出厂默认特性关闭,请参考BIOS设置使能服务器TrustZone特性。 - -### 环境准备 - - 参考鲲鹏官网[环境要求](https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/fg-tz/kunpengtrustzone_20_0018.html)和[搭建步骤](https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/fg-tz/kunpengtrustzone_20_0019.html)。 - -### 安装操作 - -1. 配置openEuler yum源,在线yum源或通过ISO挂载配置本地yum源,配置在线源如下。 - - ```shell - vi /etc/yum.repo/openEuler.repo - [osrepo] - name=osrepo - baseurl=http://repo.openeuler.org/openEuler-{version}/everything/aarch64/ - enabled=1 - gpgcheck=1 - gpgkey=http://repo.openeuler.org/openEuler-{version}/everything/aarch64/RPM-GPG-KEY-openEuler - ``` - -2. 安装secGear - - ```shell - #安装编译工具 - yum install cmake ocaml-dune - - #安装secGear - yum install secGear-devel - - #检查是否安装成功。命令和回显如下表示安装成功。 - rpm -qa | grep -E 'secGear|itrustee|ocaml-dune' - itrustee_sdk-xxx - itrustee_sdk-devel-xxx - secGear-xxx - secGear-devel-xxx - ocaml-dune-xxx - ``` - -## X86环境 - -### 环境要求 - -#### 硬件环境 - -支持Intel SGX(Intel Software Guard Extensions) 特性的处理器。 - -### 环境准备 - -购买支持Intel SGX特性设备,参考对应设备BIOS配置手册,开启SGX特性。 - -### 安装操作 - -1. 配置openEuler yum源,在线yum源或通过ISO挂载配置本地yum源,配置在线源如下。 - - ```shell - vi openEuler.repo - [osrepo] - name=osrepo - baseurl=http://repo.openeuler.org/openEuler{version}/everything/x86_64/ - enabled=1 - gpgcheck=1 - gpgkey=http://repo.openeuler.org/openEuler-{version}/everything/x86_64/RPM-GPG-KEY-openEuler - ``` - -2. 安装secGear - - ```shell - #安装编译工具 - yum install cmake ocaml-dune - - #安装secGear - yum install secGear-devel - - #检查是否安装成功。命令和回显如下表示安装成功。 - rpm -qa | grep -E 'secGear|ocaml-dune|sgx' - secGear-xxx - secGear-devel-xxx - ocaml-dune-xxx - libsgx-epid-xxx - libsgx-enclave-common-xxx - libsgx-quote-ex-xxx - libsgx-aesm-launch-plugin-xxx - libsgx-uae-service-xxx - libsgx-ae-le-xxx - libsgx-urts-xxx - sgxsdk-xxx - sgx-aesm-service-xxx - linux-sgx-driver-xxx - libsgx-launch-xxx - ``` - \ No newline at end of file diff --git a/docs/zh/server/security/secgear/using_secgear_tools.md b/docs/zh/server/security/secgear/using_secgear_tools.md deleted file mode 100644 index 0d09003064..0000000000 --- a/docs/zh/server/security/secgear/using_secgear_tools.md +++ /dev/null @@ -1,149 +0,0 @@ -# 使用 secGear 工具 - -secGear 提供了一套工具集,方便用户开发应用程序。本章介绍相关工具及其使用方法。 - -## 代码生成工具 codegener - -### 简介 - -secGear codegener 是基于 intel SGX SDK edger8r 开发的工具,用于解析 EDL 文件生成中间 C 代码,即辅助生成安全测与非安全侧文件互相调用的代码。 - -secGear codegener 定义的 EDL 文件格式与 intel SGX SDK edger8r 相同,但是不支持 Intel 的完整语法定义: - -- 只能在方法中使用 public,不加 public 的函数声明默认为 private -- 不支持从非安全侧到安全侧,以及安全侧到非安全侧的 Switchless Calls -- OCALL(Outside call) 不支持部分调用模式(如 cdecl,stdcall,fastcall) - -EDL 文件语法为类 C 语言语法,这里主要描述与 C 语言的差异部分: - -| 成员 | 含义 | -| ----------------------- | ------------------------------------------------------------ | -| include "my_type.h" | 使用外部包含文件中定义的类型 | -| trusted | 声明 TA(Trusted Application)侧可用安全函数 | -| untrusted | 声明 TA 侧可用不安全函数 | -| return_type | 定义返回值类型 | -| parameter_type | 定义参数类型 | -| [in , size = len] | 对ecall而言,表示该参数需要将数据从非安全侧传入安全侧,ocall反之(指针类型需要使用此参数,其中 size 表示实际使用的 buffer) | -| [out, size = len] | 对ecall而言,表示该参数需要将数据从安全侧传出到非安全侧,ocall反之(指针类型需要使用此参数,其中 size 表示实际使用的 buffer) | - -### 使用说明 - -#### **命令格式** - -codegen 的命令格式如下: - -- x86_64 架构: - -**codegen_x86_64** \< --trustzone | --sgx > [--trusted-dir \ | **--untrusted-dir** \| --trusted | --untrusted ] edlfile - -ARM 架构: - -**codegen_arm64** \< --trustzone | --sgx > [--trusted-dir \ | **--untrusted-dir** \| --trusted | --untrusted ] edlfile - -#### **参数说明** - -各参数含义如下: - -| **参数** | 是否可选 | 参数含义 | -| ---------------------- | -------- | ------------------------------------------------------------ | -| --trustzone \| --sgx | 必选 | 只在当前运行命令目录下生成机密计算架构对应接口函数,不加参数默认生成 SGX 接口函数 | -| --search-path \ | 可选 | 用于指定被转译的edl文件所依赖文件的搜索路径 | -| --use-prefix | 可选 | 用于给代理函数名称加上前缀,前缀名为edl的文件名 | -| --header-only | 可选 | 指定代码生成工具只生成头文件 | -| --trusted-dir \ | 可选 | 指定生成安全侧辅助代码所在目录,不指定该参数默认为当前路径 | -| --untrusted-dir \ | 可选 | 指定生成非安全侧函数辅助代码所在目录 | -| --trusted | 可选 | 生成安全侧辅助代码 | -| --untrusted | 可选 | 生成非安全侧辅助代码 | -| edlfile | 必选 | 需要转译的 EDL 文件,例如 hello.edl | - -#### 示例 - -- 转译 *helloworld.edl* ,在 *enclave-directory* 下生成安全侧辅助代码,*host-directory* 下生成非安全辅助代码的命令示例如下: - -```shell -$ codegen_x86_64 --sgx --trusted-dir enclave-directory --untrusted-dir host-directory helloworld.edl -``` - -- 转译 *helloworld.edl* ,在当前目录生成安全侧辅助代码,不生成非安全辅助代码的命令示例如下: - -```shell -$ codegen_x86_64 --sgx --trusted helloworld.edl -``` - -- 转译 *helloworld.edl* ,在当前目录生成非安全侧辅助代码,不生成安全辅助代码的命令示例如下: - -```shell -$ codegen_x86_64 --sgx --untrusted helloworld.edl -``` - -- 转译 *helloworld.edl* ,在当前目录生成安全侧和非安全侧辅助代码的命令示例如下: - -```shell -$ codegen_x86_64 --sgx helloworld.edl -``` - -## 签名工具 sign_tool - -### 简介 - -secGear sign_tool 是一款命令行工具,包含编译工具链和签名工具,用于 enclave 签名。sign_tool 有两种签名形式: - -- 单步签名:仅适用于 debug 调试模式 -- 两步签名:商用场景。需要从第三方平台或者独立的安全设备获取签名私钥,对 envlave 进行签名 - -### 使用指导 - -#### **命令格式** - -sign_tool 包含 sign 指令(对 enclave 进行签名)和 digest 指令(生成摘要值)。命令格式为: - -**sign_tool.sh -d** [sign | digest] **-x** \ **-i** \ **-p** \ **-s** \ [OPTIONS] **–o** \ - -#### **参数说明** - -| sign 指令参数 | 参数含义 | 是否必选 | -| -------------- | -------------------------------------------------------------| -------------------------------------------- | -| -a \ | api_level,标识 iTrustee TA 的 GP API version,默认为 1 | 可选 | -| -c \ | 配置文件 | 可选 | -| -d \ | 指定签名工具要进行的操作( sign 或者 digest ) | 单步仅执行sign,两步需要先执行digest,再执行sign | -| -e \ | 设备的公钥证书,用于保护加密 rawdata 的 AES key (iTrustee必需) | 仅 iTrustee 类型必选 | -| -f \ | OTRP_FLAG,是否支持 OTRP 标准协议,默认为 0 | 可选 | -| -i \ | 待签名的库文件 | 必选 | -| -k \ | 单步签名所需私钥(pem文件) | 仅 SGX 类型必选 | -| -m \ | 安全配置文件 ,由用户自行配置 | 仅 iTrustee 类型必选 | -| -o \ | 输出文件 | 必选 | -| -p \ | 两步签名所需的签名服务器公钥证书(pem文件) | 必选 | -| -s \ | 两步签名所需的已签名摘要值 | 必选 | -| -t \ | TA_TYPA,标识 iTrustee 的 TA 二进制格式,默认为 1 | 可选 | -| -x \ | encalve type(sgx 或 trustzone) | 必选 | -| -h | 打印帮助信息 | 可选 | - -#### **单步签名** - -enclave 类型为 SGX,给 test.enclave 签名,输出签名文件 signed.enclave 的示例如下: - -```shell -$ sign_tool.sh –d sign –x sgx –i test.enclave -k private_test.pem –o signed.enclave -``` - -#### **两步签名** - -以 SGX 为例,两步签名的操作步骤如下: - -1. 生成摘要值 - - 使用 sign_tool 签名,生成摘要值 digest.data 和临时中间文件 signdata(该文件在生成签名文件时使用,并在签名后自动删除)。参考命令如下: - - ```shell - $ sign_tool.sh –d digest –x sgx –i input –o digest.data - ``` - -2. 将 digest.data 发送至签名机构或平台,并获取对应签名。 - -3. 使用获取的签名生成签名后的动态库 signed.enclave。 - - ```shell - $ sign_tool.sh –d sign –x sgx–i input –p pub.pem –s signature –o signed.enclave - ``` - -说明:为发布 Intel SGX 支持的正式版本应用,需要申请 Intel 白名单。流程请参考 Intel 文档: -- Gitee