文章目录
-
-
- 一、先明确核心组件的角色
- 二、AES-128-CTR加解密的完整工作原理(硬件加速版)
-
- [1. 前置条件:OpenSSL绑定HSE硬件引擎](#1. 前置条件:OpenSSL绑定HSE硬件引擎)
- [2. AES-128-CTR加解密核心流程(硬件加速)](#2. AES-128-CTR加解密核心流程(硬件加速))
- [3. 软件vs硬件的核心区别](#3. 软件vs硬件的核心区别)
- 三、车载SoC中密钥的存储工作原理(核心安全点)
-
- [1. 密钥的生成:硬件级随机生成](#1. 密钥的生成:硬件级随机生成)
- [2. 密钥的安全存储:分级存储策略](#2. 密钥的安全存储:分级存储策略)
- [3. 密钥的使用:硬件隔离+权限控制](#3. 密钥的使用:硬件隔离+权限控制)
- 四、车载场景的特殊要求
- 总结
-
目前车载SoC芯片一般都具备HSE(硬件安全引擎),支持信息安全。同时系统运行Linux系统的环境,使用OpenSSL库来进行信息加密的支持。 本文通过以通信中常用的AES-128-CTR加解密的 工作原理 ,以及 密钥存储原理 ------核心逻辑是:OpenSSL会优先调用SoC的HSE硬件加速AES-128-CTR运算,密钥则通过HSE的安全存储区域(如OTP/安全RAM/加密分区)保护,避免明文暴露在系统内存中。
一、先明确核心组件的角色
在车载场景中,各组件的分工:
| 组件 | 核心作用 |
|---|---|
| 车载SoC的HSE | 硬件级实现AES-128算法、密钥安全存储、防篡改/防侧信道攻击,是安全核心; |
| Linux系统 | 提供OpenSSL运行环境、设备驱动(对接HSE)、文件系统(加密分区); |
| OpenSSL库 | 封装AES-128-CTR算法接口,适配HSE硬件加速(通过引擎/驱动),向上层应用提供统一API; |
二、AES-128-CTR加解密的完整工作原理(硬件加速版)
车载场景下,OpenSSL不会用纯软件实现AES-128-CTR,而是通过HSE硬件加速,整体流程分为初始化-流生成-加解密-收尾四步,完全契合CTR模式"流密码"的特性:
1. 前置条件:OpenSSL绑定HSE硬件引擎
Linux下OpenSSL通过"引擎(engine)"机制对接HSE,车载厂商会提供适配SoC的HSE引擎驱动(如 libcrypto.so 中的 hw_aes.so),初始化时执行:
c
// 1. 加载HSE硬件引擎
ENGINE* engine = ENGINE_by_id("hse_aes"); // 厂商自定义的HSE引擎ID
ENGINE_init(engine);
// 2. 将引擎设置为AES算法的默认实现
ENGINE_set_default(engine, ENGINE_METHOD_CIPHERS);
2. AES-128-CTR加解密核心流程(硬件加速)
CTR模式加解密逻辑完全一致,核心是"生成伪随机流 → 与明文/密文XOR",HSE会硬件实现AES核心运算:

分步拆解(以解密为例) :
① 应用层传入参数:EVP_DecryptInit_ex(ctx, EVP_aes_128_ctr(), engine, NULL, iv)
- 这里的"密钥"不是明文,而是HSE中密钥的ID(如0x01),避免密钥出现在系统内存;
iv(初始向量)是CTR模式的计数器初始值(车载场景中通常是唯一的,防止重放攻击)。
② OpenSSL引擎层将参数封装为HSE硬件指令,通过Linux驱动下发到HSE:
- HSE收到"密钥ID+IV+待解密字节"后,先从安全存储区读取密钥(全程在HSE内部,不暴露到SoC主内存);
- HSE硬件执行AES-128加密(CTR模式的核心是用AES生成伪随机流):以IV为初始计数器,生成16字节的AES加密块(AES块大小固定16字节)。
③ 硬件级XOR运算:
- 待解密的1个字节(或多字节)与AES伪随机流的对应字节做XOR,结果直接由HSE返回给应用层;
- 关键:XOR运算也在HSE内部完成,伪随机流不会暴露到主内存,防止侧信道攻击(如功耗分析)。
④ 计数器自增:
- 每处理16字节(1个AES块),HSE硬件自动将计数器+1,继续生成下一个伪随机块(单字节场景无需自增)。
3. 软件vs硬件的核心区别
| 维度 | 纯软件实现 | HSE硬件加速实现 |
|---|---|---|
| AES运算位置 | SoC的CPU核心 | HSE专用硬件单元 |
| 密钥暴露风险 | 密钥明文存在系统内存 | 密钥仅在HSE内部流转 |
| 性能 | 慢(CPU占用高) | 快(车载要求低延迟) |
| 安全性 | 易受侧信道/内存dump攻击 | 防侧信道、防篡改 |
三、车载SoC中密钥的存储工作原理(核心安全点)
车载场景对密钥安全要求极高(防止盗刷、数据篡改),密钥绝不会以明文形式存储在普通内存/文件系统,而是通过HSE的安全存储体系保护,整体分为"密钥生成-安全存储-使用"三个阶段:
1. 密钥的生成:硬件级随机生成
AES-128密钥的生成不在软件层完成,而是由HSE的真随机数发生器(TRNG) 生成:
- HSE的TRNG基于物理噪声(如电路热噪声)生成真随机数,符合车载安全标准(如ISO 26262);
- 生成的密钥直接存入HSE内部的安全RAM,全程不经过SoC主内存。
2. 密钥的安全存储:分级存储策略
车载SoC的HSE提供多层安全存储区域,按"持久性+安全性"分级:
| 存储区域 | 特性 | 用途 |
|---|---|---|
| HSE内部安全RAM | 易失性(掉电丢失)、最快访问、硬件隔离 | 临时存储正在使用的密钥; |
| OTP(一次性可编程) | 非易失性、写入后不可修改、物理防篡改 | 存储根密钥(Root Key)、厂商预置密钥; |
| eFuse | 非易失性、熔断式存储、防物理拆解 | 存储设备唯一标识(UID)、密钥加密密钥(KEK); |
| 加密分区(eMMC/Flash) | 非易失性、由HSE加密后存储 | 存储应用级密钥(如AES-128会话密钥); |
核心逻辑:密钥分层保护
- 根密钥(Root Key):烧录在OTP/eFuse中,不可读取、不可修改,仅能由HSE内部调用;
- 应用密钥(AES-128密钥):由根密钥加密后,存储在eMMC的加密分区;
- 使用时:HSE先读取根密钥(内部操作),解密应用密钥,存入安全RAM供运算使用,全程无明文暴露。
3. 密钥的使用:硬件隔离+权限控制
- 权限管控:Linux系统中,只有具备特定权限的进程(如车载安全服务)能通过HSE驱动调用密钥,普通进程无法访问;
- 防提取:HSE禁止"读取密钥明文"的操作,应用层只能传入"密钥ID",由HSE内部映射到实际密钥;
- 防篡改:HSE会对密钥使用过程做日志记录,若检测到异常访问(如暴力破解),会锁定密钥/硬件。
四、车载场景的特殊要求
- 合规性:需满足ISO 26262(功能安全)、ISO/SAE 21434(网络安全),HSE的密钥存储和AES运算必须通过这些认证;
- 防侧信道攻击:HSE硬件会做"恒定时间运算""功耗平坦化"设计,避免通过功耗、电磁辐射等泄露密钥;
- 实时性:车载控制类场景要求低延迟,HSE硬件加速能保证AES-128-CTR运算在微秒级完成。
总结
- AES-128-CTR加解密:OpenSSL通过引擎对接HSE,由HSE硬件完成AES伪随机流生成和XOR运算,软件层仅传递参数和接收结果,加解密逻辑一致且无块填充(适配任意长度输入);
- 密钥存储:采用"分层保护+硬件隔离"策略,根密钥存OTP/eFuse,应用密钥由根密钥加密后存加密分区,使用时全程在HSE内部流转,无明文暴露;
- 核心安全点:HSE是整个流程的安全核心,既加速运算,又保障密钥的生成、存储、使用全生命周期安全,符合车载场景的高安全要求。