news 2026/4/18 21:15:16

从“能解密”到“能守住”:实战阶段 3 —— 设计真正服务业务的 EKB 安全体系

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从“能解密”到“能守住”:实战阶段 3 —— 设计真正服务业务的 EKB 安全体系

📺B站视频讲解(Bilibili):https://www.bilibili.com/video/BV1k1C9BYEAB/

📘《Yocto项目实战教程》京东购买链接:Yocto项目实战教程


从“能解密”到“能守住”:实战阶段 3 —— 设计真正服务业务的 EKB 安全体系

关键词:EKB、OP-TEE、PTA、CA、Key_tag、安全边界、业务安全、Jetson


一、为什么一定要有“实战阶段 3”?

在前两个阶段,我们已经完成了两件极其关键但仍然不够“落地”的事情

  • 阶段 1:确认 OP-TEE 确实在 Secure World 中运行(xtesttee-supplicant、随机数成功)。
  • 阶段 2:确认 EKS/EKB 能被 OP-TEE 正确读取、解密,并且 PTA 可以对外提供安全服务(nvhwkey-app -r成功)。

很多人会在这里停下,并误以为:

“既然 EKB 已经能解密,那安全问题就解决了。”

这是一个非常危险的误解

阶段 3 的存在,就是为了纠正这个误解。

阶段 3 要解决的核心问题只有一个:

如何设计 EKB 的“内容”和“使用方式”,让它真正服务于业务安全,而不是沦为一个“形式正确但安全无效”的组件?


二、先统一认知:EKB 不是“钥匙文件”,而是“安全能力清单”

在进入具体设计之前,必须先完成一次概念升级

1. 常见但错误的理解

很多初学者会天然地把 EKB 理解为:

“一个存着很多 key 的加密文件。”

于是设计思路会变成:

  • 我需要 AES key → 放进 EKB
  • 我需要 RSA key → 放进 EKB
  • 业务想用 → 从 EKB 里拿出来

这是完全错误的方向。

2. 正确的理解方式

在 Jetson 的安全架构中:

EKB ≠ Key Store
EKB = Secure World 的“能力配置输入”

换句话说:

  • EKB 的内容,本质上是PTA 在启动时读取的一份“安全策略 + 原始材料”
  • EKB 中的 key,不应该也不需要被 Linux 世界直接理解其语义
  • 真正的“安全语义”,发生在PTA 内部

这也是为什么在阶段 2 中,你会看到:

  • 随机数服务正常(不依赖 EKB 内容);
  • 加密失败,但错误是ITEM_NOT_FOUND(PTA 在做正确的事情)。

三、阶段 3 的真实目标:建立“不可越权的安全边界”

在阶段 3,我们不再关心:

  • EKB 能不能解密(已经确认);
  • PTA 能不能运行(已经确认)。

我们只关心三件事:

  1. 谁可以使用安全能力?
  2. 谁绝对不可能越权?
  3. 即便 Linux 被完全攻破,攻击者还能不能拿到核心资产?

这三件事,构成了阶段 3 的验收标准


四、威胁模型(Threat Model):你到底在防谁?

任何安全设计,如果没有明确的威胁模型,都是“自我感动”。

在 Jetson + OP-TEE + EKB 的体系中,一个现实且合理的威胁模型是:

  • 攻击者可以:

    • 获取 Linux root 权限;
    • 注入用户态恶意程序;
    • 读取文件系统;
    • 抓取进程内存;
  • 攻击者不能:

    • 破坏芯片物理安全;
    • 直接修改熔丝(Fuse);
    • 绕过 Secure World 的硬件隔离。

阶段 3 的设计目标就是:

在上述前提下,核心密钥、模型、身份、能力依然安全


五、EKB 内容设计的第一原则:Key_tag 才是“业务接口”

1. 什么是 Key_tag?

在 EKB 中,每一段内容都有一个Key_tag。但它的意义绝不仅仅是“区分不同 key”

正确的理解是:

Key_tag = 一类安全能力的唯一标识符

例如:

  • disk_enc_root
  • fw_decrypt_seed
  • model_protect_key
  • device_identity_seed

这些名字本身,就已经在描述:

  • 用途(干什么用)
  • 边界(谁能用)
  • 生命周期(是否可派生、是否可更新)

六、EKB 内容的“分层设计”方法

一个成熟的 EKB 设计,一定是分层的

1. 第一层:Root / Seed 类 Key

特点:

  • 永远不直接用于业务;
  • 永远不直接返回给 CA;
  • 只存在于 PTA 内部;

典型示例:

  • 设备身份 Seed
  • 业务派生 Root Key

2. 第二层:业务派生 Key

特点:

  • 由 PTA 使用 KDF 从 Seed 派生;
  • 可能与设备唯一信息绑定;
  • 可区分不同业务模块;

3. 第三层:能力接口(而不是 key 本身)

CA永远不应该

  • 拿到明文 key;
  • 看到 Root Key;

CA 只能:

  • 请求“用某个能力完成一次操作”;
  • 拿到结果,而不是秘密。

七、PTA 与 CA 的职责边界(阶段 3 的核心)

这是阶段 3 最重要的一条原则:

PTA = 安全决策者
CA = 业务请求者

1. PTA 应该做什么?

  • 解析 EKB 内容;
  • 管理 Key_tag 到内部 key 的映射;
  • 决定某个 CA 请求是否被允许;
  • 执行真正的加解密、派生、签名等操作。

2. CA 永远不应该做什么?

  • 自己保存 key;
  • 自己决定用哪个 key;
  • 绕过 PTA 的接口限制。

你在阶段 2 看到的:

TEEC_ERROR_ITEM_NOT_FOUND

正是一个“健康的 PTA 行为”。


八、典型业务场景拆解:EKB 如何真正“服务业务”

示例 1:固件解密

  • EKB 中:

    • fw_decrypt_seed
  • PTA:

    • 启动时派生临时解密 key
  • CA:

    • 只请求“解密固件块”

Linux 永远拿不到解密 key 本身。

示例 2:AI 模型保护

  • EKB 中:

    • model_protect_key
  • PTA:

    • 对模型文件进行解密或校验
  • CA:

    • 只能请求加载结果

攻击者即使 dump 文件系统,也只能得到加密模型。

示例 3:设备唯一身份

  • EKB 中:

    • device_identity_seed
  • PTA:

    • 结合 chip ID 派生唯一身份
  • CA:

    • 只能获取签名结果,而不是 identity 本身

九、阶段 3 的“流程级理解”(文字流程图)

Boot ↓ OP-TEE 启动 ↓ 解密 EKS / EKB ↓ PTA 初始化 Key_tag 表 ↓ Linux 启动 ↓ CA 发起安全请求 ↓ PTA 校验 Key_tag + 权限 ↓ PTA 执行安全操作 ↓ 返回“结果”,而不是“秘密”

这是你后续做任何安全业务时,必须始终保持不变的主线流程


十、阶段 3 的验收标准(你什么时候算“真的完成了”)

你可以用下面这份清单自检:

  • Linux 普通程序无法直接获取任何 key
  • 即便 root 权限,也只能调用受控 CA
  • PTA 内部才保存真正的安全语义
  • EKB 内容变化 ≠ Linux 行为变化
  • 安全能力通过“接口”而不是“数据”暴露

只要这些条件成立,你的 EKB 设计就是业务级安全设计,而不是“演示级安全”。


十一、总结:你已经不在“学 OP-TEE”,而是在“设计安全系统”

走到阶段 3,意味着一件非常重要的事情:

你关注的已经不是“技术能不能跑”,而是“系统能不能被信任”。

EKB 在这里不再是一个文件,OP-TEE 也不再是一个模块,
而是你整个安全架构中:

  • 信任根的延伸;
  • 业务安全的起点;
  • 攻击面被切断的地方。

这,才是阶段 3 的真正意义。


📺B站视频讲解(Bilibili):https://www.bilibili.com/video/BV1k1C9BYEAB/

📘《Yocto项目实战教程》京东购买链接:Yocto项目实战教程


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 21:46:21

重构 Flutter 状态管理:从 Provider 到 Riverpod 2.0 的无痛迁移与性能飞跃

欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net),一起共建开源鸿蒙跨平台生态。 在 Flutter 开发的迭代长河中,状态管理始终是绕不开的核心命题。Provider 曾凭借简洁的 API 和低学习成本成为主流选择,…

作者头像 李华
网站建设 2026/4/16 12:22:51

AI大模型之Agent,RAG,LangChain(三)

前面分享了项目的大致流程,这篇主要分享一下LangChain这个框架的个人简单理解.看懂这篇必须要看我之前发的二,这样便于更好的理解这个框架.一.简述1.什么是LangChain简单来说,LangChain是LLMs的开发框架,他为不同的LLMs提供统一的接口,并且把和LLMs相关的内部组件连接在一起.2.…

作者头像 李华
网站建设 2026/4/16 13:28:56

css3如何引入外部字体

如果需要外部字体,电脑上没有,这时候可以用css3上新引入的font-face属性它的语法格式是font-face {font-family:自定义字体名称src:url(字体路径);}比如需要使用叫字体家AI北京长城体.ttf的字体,代码如下font-face {/*定义字体的名称*/font-f…

作者头像 李华
网站建设 2026/4/16 14:04:43

OkDownload入门指南:如何在5分钟内搭建你的第一个高效下载引擎

OkDownload入门指南:如何在5分钟内搭建你的第一个高效下载引擎 【免费下载链接】okdownload A Reliable, Flexible, Fast and Powerful download engine. 项目地址: https://gitcode.com/gh_mirrors/ok/okdownload 想要构建一个可靠、灵活且高效的下载系统吗…

作者头像 李华
网站建设 2026/4/18 6:57:17

权威榜单发布:浙江亿企邦领衔外贸网站引流推广行业

随着外贸行业数字化转型的深入,企业对专业化、多渠道、智能化的海外营销服务的需求日益迫切。为帮助广大外贸企业甄选优质服务伙伴,基于企业综合服务能力、技术创新水平、行业口碑与市场表现等多维度评估,现正式发布2025年度外贸网站引流推广…

作者头像 李华
网站建设 2026/4/18 14:56:32

新能源电动汽车VCU、Hil、BMS及硬件在环仿真建模说明书

新能源电动汽车VCUhilBMShil硬件在环仿真 文件包含电动汽车整车建模说明书,模型包含驾驶员模块,仪表模块,BCU整车控制器模块,MCU电机模块,TCU变速箱模块,减速器模块,BMS电池管理模块&#xff0c…

作者头像 李华