基于 openEuler secGear 的机密应用 StarterKit 实践
完成全链路校验,覆盖基础模板、seal_data 样例、脚手架生成项目三条链路,全部测试用例执行通过,证明 StarterKit 在工程模板、样例工程与新项目生成三个维度上,都具备稳定可靠的构建与签名能力。但在实际开发中:secGear 官方仅提供最小化 Demo 样例,缺少标准化工程模板、项目脚手架、自动化测试流程,开发者从零搭建机密应用门槛高、手动构建签名流程繁琐、无统一验证基线。:EDL 代
导语
在云计算飞速发展的当下,机密计算已成为保护云端数据运行时安全的核心技术。openEuler 推出的 secGear 作为统一机密计算开发框架,可屏蔽 Intel SGX、ARM TrustZone 等底层 TEE 硬件差异,让开发者快速构建可信应用。
但在实际开发中:secGear 官方仅提供最小化 Demo 样例,缺少标准化工程模板、项目脚手架、自动化测试流程,开发者从零搭建机密应用门槛高、手动构建签名流程繁琐、无统一验证基线。
为此我们开发了secgear-starterkit 机密应用开发脚手架,并向 openEuler 官方仓库提交开源 PR(#363 Add secGear starterkit example),补齐从官方样例到工程化落地的中间空档,本文将完整分享项目设计、技术实现、真机验证与开源贡献全过程。
一、开发痛点:secGear 原生开发的三大难题
secGear 架构分为基础层、中间件层、服务层,基础层提供 Enclave 开发、EDL 代码生成、应用签名等核心能力,是开发者使用最频繁的模块。但原生开发存在明显痛点:
-
工程无模板:官方仅有零散最小 Demo,无标准化可复用工程结构,新手需自行适配 CMake、EDL 交互、Host/Enclave 目录规范;
-
流程手工化:EDL 代码生成、工程构建、Enclave 签名、功能验证全靠手动操作,无脚本固化,易出错且无法复用;
-
缺乏测试体系:修改代码需手动复测,难以保障工程稳定性;
二、项目整体定位与核心目标
secgear-starterkit 是面向 openEuler secGear 的机密应用工程化脚手架,核心目标:
-
降低 secGear 机密应用开发入门门槛;
-
抽象标准化开发流程,提供可复用工程模板与真实业务样例;
-
固化构建、签名、测试全流程脚本,实现一键初始化、一键自动化验证;
-
打通 SGX 真机环境落地验证,沉淀可向 openEuler 社区贡献的模板与基线。
三、核心能力与项目架构设计
3.1 已落地五大核心能力
当前版本已完成全链路能力落地:
-
提供
templates/basic最小 secGear 标准化工程模板,规范目录、编译、签名配置; -
新增
examples/seal_data独立机密数据密封样例,拓展业务场景参考; -
实现
scripts/init.sh脚手架脚本,一键生成全新 secGear 项目; -
提供test_build.sh、test_seal_data_build.sh、test_init_generated_project.sh 三条自动化 smoke test,以及统一入口 tests/run_all.sh;
-
已在支持 SGX 的 openEuler 22.03 LTS 环境上完成
basic样例真机运行验证,成功创建并执行 enclave。
3.2 项目目录架构
项目采用模块化分层设计,结构清晰易扩展:
./examples # 业务样例仓库(basic基础样例、seal_data数据密封样例)
./templates # 工程模板仓库(基础最小工程模板)
./scripts # 工具脚本(项目初始化、真机运行脚本)
./tests # 自动化测试用例与统一执行入口
./generated # 脚手架自动生成的新项目目录
整套架构完全解耦模板、样例、脚本、测试,支持开发者直接复用、二次开发和自定义扩展。
四、工程化自动化测试体系
为解决手工测试低效、不可重复的问题,项目搭建了全链路自动化冒烟测试体系:
-
三条核心测试链路
-
基础模板构建测试:验证最小工程模板的编译、签名合法性;
-
seal_data 样例测试:验证机密数据密封 / 解密封业务逻辑;
-
脚手架生成项目测试:校验一键生成的新项目可正常构建、签名。
-
-
统一执行入口 通过
tests/run_all.sh可一次性跑完所有测试链路,最终输出All smoke tests passed.,全程无需人工干预。 -
测试覆盖范围 覆盖 EDL 代理代码生成、Host/Enclave 编译构建、Enclave 签名、输出结果校验全流程,保障模板和脚手架生成项目的稳定性。
五、SGX 真机环境落地验证
5.1 验证基础环境
验证服务器配置:
-
系统:openEuler 22.03 LTS
-
硬件:CPU 原生支持
sgx / sgx_lc特性 -
设备节点:系统存在
/dev/sgx_enclave、/dev/sgx_provision标准 SGX 设备,满足机密计算运行基础环境要求。
Sgx环境有效性

5.2 自动化验证结果
项目通过统一测试入口 tests/run_all.sh 完成全链路校验,覆盖基础模板、seal_data 样例、脚手架生成项目三条链路,全部测试用例执行通过,证明 StarterKit 在工程模板、样例工程与新项目生成三个维度上,都具备稳定可靠的构建与签名能力。
自动化测试全通过
5.3 核心样例真机运行结果
-
basic 基础样例 成功创建并运行 Enclave 安全区,输出核心日志:

-
seal_data 数据密封样例 实现机密数据密封与解密封核心逻辑,运行输出:

-
seal_data 样例运行结果

-
项目结构与脚手架能力

六、项目三大核心创新亮点
创新点 1:从零散 Demo 升级为可复用工程脚手架
摒弃官方单纯代码样例的模式,将 secGear 标准开发流程抽象为模板 + 项目生成器,开发者无需关注底层工程配置,一键即可初始化合规机密应用项目。
创新点 2:开发验证全流程工程化固化
将 EDL 代码生成、编译构建、Enclave 签名、功能校验等手工操作,全部封装为 Shell 脚本,实现脚本化、自动化、可重复,适配企业级工程开发规范。
创新点 3:兼顾新手学习与社区上游价值
一方面标准化工程结构、提供完整可运行样例,降低新手学习成本;另一方面整套模板、脚本、测试基线符合 openEuler 社区规范,具备直接向上游社区沉淀、贡献生态的价值。
七、开源社区 PR 贡献实践
基于项目完整能力,我们向 openEuler secGear 官方仓库提交 PR#363:Add secGear starterkit example。 PR 地址:https://gitcode.com/openeuler/secGear/pull/363/diffs
-
PR 核心贡献 在 secGear 仓库
examples目录新增secgear_starterkit示例工程,补充社区官方样例生态; -
适配国内开发环境 新增 Rust 镜像源配置,替换为国内 rsproxy 镜像,配置 git 拉取重试、命令行拉取策略,解决国内开发者依赖拉取慢、超时问题;
-
社区价值 PR 合并后,将作为 secGear 官方官方示例之一,为全球 openEuler 开发者提供标准化机密应用开发模板,完善 secGear 生态建设。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)