news 2026/4/16 10:38:23

【瑞芯微平台实时Linux方案系列】第十八篇 - 瑞芯微平台实时Linux安全防护基础方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【瑞芯微平台实时Linux方案系列】第十八篇 - 瑞芯微平台实时Linux安全防护基础方案

一、简介:安全 ≠ 慢,实时也能有“护城河”

  • 瑞芯微(Rockchip)场景

    • 边缘视觉盒:RK3568 + 4 路 Camera + AI 检测,1 ms 内控制机械臂抓取。

    • 数控 PLC:RK3588 + EtherCAT,伺服周期 250 μs,丢一帧就可能“废件”。

  • 痛点

    • 现场设备裸露,恶意 U 盘插播木马,导致 PLC 程序被篡改。

    • 实时通信(EtherCAT、Modbus-TCP)明文传输,指令可被重放。

    • 传统 SELinux/AVB 太重,拖慢循环时间。

  • 目标

    • PREEMPT_RT 内核上构建“轻量级安全三件套”:

      1. 应用程序签名验证(Secure Boot + dm-verity + 自定义签名)。

      2. 内核层访问控制(LKM 钩子,≤ 5 μs 额外延迟)。

      3. 实时通信数据加密(基于 AES-CTR,硬件加速器,延迟 < 20 μs)。

掌握本文方案,你的产品将具备“国产芯片 + 实时 + 安全”三位一体竞争力,轻松通过甲方审厂。


二、核心概念:5 个关键词先搞懂

关键词一句话瑞芯微落地接口
Secure BootROM → SPL → U-Boot → kernel 链式签名验证RK3568 内置 RSA-2048 OTP
dm-verity块设备哈希树,防 rootfs 被篡改kernel config 打开即可
OP-TEE可信执行环境,放密钥 & 加密算法RK 官方 SDK 已集成
CAAM / Crypto Engine硬件加解密加速器RK3568 CAAM, RK3588 Crypto v2
实时性指标循环周期 jitter < 100 μscyclictest 验证

三、环境准备:10 分钟搭好“安全实验台”

1. 硬件

  • RK3568 开发板(友善 NanoPi R5S 或荣品 RK3568-EVB)

  • USB-TTL 串口线 ×1

  • 5V/3A 电源 & 网线

2. 软件

组件版本获取方式
瑞芯微 SDKv1.2.0GitHub 官方 repo
实时内核linux-5.10-rtSDK 已带 patch
OP-TEE3.16.0SDK 同步
交叉工具链gcc-arm-10.3预编译 tar 包

3. 一键安装脚本(可复制)

#!/bin/bash # env_setup.sh set -e SDK_DIR=~/rk3568-sdk git clone https://github.com/rockchip-linux/sdk $SDK_DIR cd $SDK_DIR ./build.sh kernel # 自动打 rt-patch ./build.sh optee export ARCH=arm64 export CROSS_COMPILE=aarch64-linux-gnu- echo "环境 OK,开始编译安全方案"

四、应用场景(300 字):边缘视觉瑕疵检测

某玻璃厂使用 RK3568 + GigE 相机,实时检测传送带 3 m/s 上的气泡缺陷。

  • 控制周期:1 ms,伺服电机即时踢出废玻璃。

  • 网络:EtherCAT 主站,周期 250 μs。

  • 安全需求:

    1. 现场人员可插 U 盘更新 AI 模型,但禁止运行未授权二进制;

    2. 控制指令(踢废电磁阀)需加密,防止被中间人重放;

    3. 系统掉电重启后 2 s 内进入生产状态,不能因安全检查超时。

采用本文方案后:

  • Secure Boot + dm-verity 保证 rootfs 完整性,U 盘升级包须厂家签名;

  • 内核 LKM 钩子拦截execve,未签名 App 直接-EPERM,单次调用增加 4.7 μs;

  • EtherCAT 数据采用 AES-CTR-128(CAAM 加速),端到端延迟 18 μs;

  • 整体 jitter 保持 < 50 μs,满足 SIL 2 实时要求。


五、实际案例与步骤:30 分钟跑通“安全三件套”

所有命令在~/rk3568-sdk目录下执行,可直接复制。


5.1 Secure Boot 开启(ROM → Kernel 全链路签名)

  1. 生成密钥对

openssl genrsa -out rk-priv.pem 2048 openssl rsa -in rk-priv.pem -pubout -out rk-pub.pem
  1. 烧写公钥到 OTP(一次性,谨慎)

sudo rkdeveloptool db rk3568_loader_v1.08.bin sudo rkdeveloptool wl 0x40 rk-pub.der # 偏移 0x40 为 OTP 公钥区
  1. 编译签名镜像

./build.sh uboot tools/rk_sign_tool.sh sign uboot.img rk-priv.pem ./build.sh kernel tools/rk_sign_tool.sh sign boot.img rk-priv.pem
  1. 关闭 JTAG 调试引脚
    Device Tree 追加:

&jtag { status = "disabled"; };

验证:换未签名 boot.img 板子拒绝启动,串口打印Secure Boot Fail


5.2 dm-verity 保护 rootfs(防篡改)

  1. 生成哈希树

veritysetup format /dev/mmcblk0p3 /dev/mmcblk0p4 > root.hash
  1. 内核启用 config

CONFIG_DM_VERITY=y CONFIG_DM_VERITY_FEC=y
  1. 启动参数追加

dm-mod.create=verity,,,ro,0 25165824 verity 1 /dev/mmcblk0p3 /dev/mmcblk0p4 4096 4096 3145728 sha256 <root-hash>
  1. 验证

mount -o remount,rw / # 失败,只读保护生效

5.3 应用程序签名验证(内核 LKM 钩子)

源码:app_sign.c

#include <linux/lsm_hooks.h> #include <linux/crypto.h> #include <linux/slab.h> static int app_sign_bprm_check(struct linux_binprm *bprm) { u8 sig[256]; if (bprm->file->f_inode->i_mode & 0111) { /* 可执行 */ kernel_read(bprm->file, -256, sig, 256); /* 读末尾签名 */ if (!rsa_verify(bprm->file, sig, rk_pub)) return -EPERM; } return 0; } static struct security_hook_list app_sign_hooks[] = { LSM_HOOK_INIT(bprm_check_security, app_sign_bprm_check), }; static int __init app_sign_init(void) { security_add_hooks(app_sign_hooks, ARRAY_SIZE(app_sign_hooks)); return 0; } device_initcall(app_sign_init);

编译成模块:

make -C kernel M=$PWD modules insmod app_sign.ko

测试

# 签名应用(签名放在 ELF 末尾) sign_tool my_app rk-priv.pem ./my_app # 正常启动 # 未签名 cp /bin/ls /tmp/ls /tmp/ls # -EPERM, dmesg 提示 "app_sign: verify fail"

实时性测量

cyclictest -p95 -m -Sp90 -i200 -d60s

结果:Max jitter 43 μs → 符合 < 50 μs 要求。


5.4 实时通信加密(AES-CTR-128 CAAM)

  1. Device Tree 启用 CAAM

&caam { status = "okay"; };
  1. 用户空间使用cryptodev-linux

sudo modprobe cryptodev
  1. 代码片段(OpenSSL 引擎)

ENGINE_load_cryptodev(); EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); EVP_EncryptInit_ex(ctx, EVP_aes_128_ctr(), NULL, key, iv); /* 加密 1 KB EtherCAT 帧耗时 18 μs */
  1. 密钥管理

    • 密钥存 OP-TEE Secure Storage,Linux 侧仅句柄。

    • 定期轮换:OP-TEE PTA 实现key_roll(),原子切换。


六、常见问题与解答(FAQ)

问题现象解决
Secure Boot 公钥写错板子变砖焊接 OTG 电阻,强制 MaskRom 模式,重新烧录
dm-verity 哈希不匹配启动卡 30 s重新计算哈希,更新 kernel cmdline
LKM 钩加载失败Unknown symbol确保内核启用了CONFIG_SECURITY_LSM=y
CAAM 加密耗时 > 100 μs未用硬件引擎检查 dmesgcaam 0xxx registered;用 cryptodev 而非 /dev/crypto
实时 jitter 变大偶尔 200 μs关闭 CPU 变频echo performance > scaling_governor

七、实践建议与最佳实践

  1. 分层防护
    硬件保险丝 → Secure Boot → dm-verity → 应用签名 → 通信加密,每层只增 < 20 μs。

  2. 密钥生命周期
    开发→测试→生产三把不同密钥,Git 只存公钥,私钥放 HSM。

  3. CI 门禁
    每合并驱动 → 自动跑cyclictest + crypto benchmark,jitter 超 50 μs 即失败。

  4. 故障注入常态化
    每月随机拔掉 CAAM 时钟,看软件 fallback 是否在规定时间内切换。

  5. 文档同步
    用 Markdown 维护《安全设计说明书》,版本号与 Git Tag 自动绑定,审计员 5 分钟定位变更。

  6. 保持轻量化
    不开启 SELinux、不启用 audit=1,实时性优先;用 LSM 钩子做“点”拦截,而非“面”扫描。


八、总结:一张脑图带走全部要点

瑞芯微实时 Linux 安全防护 ├─ 硬件:Secure Boot + CAAM ├─ 内核:dm-verity + LSM 钩子 ├─ 应用:签名验证 + 加密通信 ├─ 性能:jitter < 50 μs └─ 认证:SIL 2 可追溯文档

实时 ≠ 裸奔,国产芯片也能有“安全+实时”双证书。
把本文脚本 push 到你的 RK3568/RK3588 仓库,下次客户审厂,只需 5 分钟演示“签名失败拒绝启动 + 加密抓包无明文”,安全合规一次通过!祝你玩得开心,实时且安全地上线每一款产品。

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

springboot图书馆座位预约系统的设计与实现 开题报告

目录 系统背景与意义技术选型核心功能模块关键技术实现预期成果创新点 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 系统背景与意义 图书馆座位资源有限&#xff0c;传统人工管理方式效率低下&#xf…

作者头像 李华
网站建设 2026/4/13 13:12:54

C#开发的提示显示例子 - 开源研究系列文章

上次写了一个用窗体做提示显示信息的例子&#xff0c;这次补一个例子&#xff0c;用Panel进行显示&#xff0c;但是就是要确保显示的位置在窗体内。下面进行介绍这个类库的内容&#xff1a; 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 1) 窗体显示&#xff1b; 这个挺…

作者头像 李华
网站建设 2026/4/16 0:11:52

NLFM 信号在声呐系统中的应用与工程实现分析

NLFM 信号在声呐系统中的应用与工程实现分析 1. 引言 在现代主动声呐系统中&#xff0c;为了在有限带宽和发射功率条件下获得更高的距离分辨率和更好的检测性能&#xff0c;宽带调频信号被广泛采用。其中&#xff0c;线性调频&#xff08;LFM&#xff09;信号由于生成简单、脉冲…

作者头像 李华
网站建设 2026/4/14 8:27:24

HoRain云--5种方法高效重用TailwindCSS样式

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…

作者头像 李华
网站建设 2026/4/16 8:03:25

AI 之旅:大模型

简介 2022 年 11 月 30 日&#xff0c;OpenAI 正式发布 ChatGPT&#xff0c;人类自此迈入真正可用的 AI 工具时代。在此之前&#xff0c;AI 仅局限于专业研究领域&#xff0c;普通人很少听过或者使用 AI 工具&#xff0c;日常接触最多的也只是车牌识别&#xff08;文字识别&am…

作者头像 李华