导语

在云计算飞速发展的当下,机密计算已成为保护云端数据运行时安全的核心技术。openEuler 推出的 secGear 作为统一机密计算开发框架,可屏蔽 Intel SGX、ARM TrustZone 等底层 TEE 硬件差异,让开发者快速构建可信应用。

但在实际开发中:secGear 官方仅提供最小化 Demo 样例,缺少标准化工程模板、项目脚手架、自动化测试流程,开发者从零搭建机密应用门槛高、手动构建签名流程繁琐、无统一验证基线。

为此我们开发了secgear-starterkit 机密应用开发脚手架,并向 openEuler 官方仓库提交开源 PR(#363 Add secGear starterkit example),补齐从官方样例到工程化落地的中间空档,本文将完整分享项目设计、技术实现、真机验证与开源贡献全过程。

一、开发痛点:secGear 原生开发的三大难题

secGear 架构分为基础层、中间件层、服务层,基础层提供 Enclave 开发、EDL 代码生成、应用签名等核心能力,是开发者使用最频繁的模块。但原生开发存在明显痛点:

  1. 工程无模板:官方仅有零散最小 Demo,无标准化可复用工程结构,新手需自行适配 CMake、EDL 交互、Host/Enclave 目录规范;

  2. 流程手工化:EDL 代码生成、工程构建、Enclave 签名、功能验证全靠手动操作,无脚本固化,易出错且无法复用;

  3. 缺乏测试体系:修改代码需手动复测,难以保障工程稳定性;

二、项目整体定位与核心目标

secgear-starterkit 是面向 openEuler secGear 的机密应用工程化脚手架,核心目标:

  • 降低 secGear 机密应用开发入门门槛;

  • 抽象标准化开发流程,提供可复用工程模板与真实业务样例;

  • 固化构建、签名、测试全流程脚本,实现一键初始化、一键自动化验证;

  • 打通 SGX 真机环境落地验证,沉淀可向 openEuler 社区贡献的模板与基线。

三、核心能力与项目架构设计

3.1 已落地五大核心能力

当前版本已完成全链路能力落地:

  1. 提供templates/basic 最小 secGear 标准化工程模板,规范目录、编译、签名配置;

  2. 新增examples/seal_data 独立机密数据密封样例,拓展业务场景参考;

  3. 实现scripts/init.sh 脚手架脚本,一键生成全新 secGear 项目

  4. 提供test_build.sh、test_seal_data_build.sh、test_init_generated_project.sh 三条自动化 smoke test,以及统一入口 tests/run_all.sh;

  5. 已在支持 SGX 的 openEuler 22.03 LTS 环境上完成 basic 样例真机运行验证,成功创建并执行 enclave。

3.2 项目目录架构

项目采用模块化分层设计,结构清晰易扩展:

./examples        # 业务样例仓库(basic基础样例、seal_data数据密封样例)
./templates       # 工程模板仓库(基础最小工程模板)
./scripts         # 工具脚本(项目初始化、真机运行脚本)
./tests           # 自动化测试用例与统一执行入口
./generated       # 脚手架自动生成的新项目目录

整套架构完全解耦模板、样例、脚本、测试,支持开发者直接复用、二次开发和自定义扩展。

四、工程化自动化测试体系

为解决手工测试低效、不可重复的问题,项目搭建了全链路自动化冒烟测试体系

  1. 三条核心测试链路

    1. 基础模板构建测试:验证最小工程模板的编译、签名合法性;

    2. seal_data 样例测试:验证机密数据密封 / 解密封业务逻辑;

    3. 脚手架生成项目测试:校验一键生成的新项目可正常构建、签名。

  2. 统一执行入口 通过 tests/run_all.sh 可一次性跑完所有测试链路,最终输出 All smoke tests passed.,全程无需人工干预。

  3. 测试覆盖范围 覆盖 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 核心样例真机运行结果

  1. basic 基础样例 成功创建并运行 Enclave 安全区,输出核心日志:

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

  3. seal_data 样例运行结果

  4. 项目结构与脚手架能力

    六、项目三大核心创新亮点

    创新点 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 生态建设。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐