【车载信息安全系列1】车载Linux系统常用的OpenSSL, HSE加密工作原理

文章目录

目前车载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会对密钥使用过程做日志记录,若检测到异常访问(如暴力破解),会锁定密钥/硬件。

四、车载场景的特殊要求

  1. 合规性:需满足ISO 26262(功能安全)、ISO/SAE 21434(网络安全),HSE的密钥存储和AES运算必须通过这些认证;
  2. 防侧信道攻击:HSE硬件会做"恒定时间运算""功耗平坦化"设计,避免通过功耗、电磁辐射等泄露密钥;
  3. 实时性:车载控制类场景要求低延迟,HSE硬件加速能保证AES-128-CTR运算在微秒级完成。

总结

  1. AES-128-CTR加解密:OpenSSL通过引擎对接HSE,由HSE硬件完成AES伪随机流生成和XOR运算,软件层仅传递参数和接收结果,加解密逻辑一致且无块填充(适配任意长度输入);
  2. 密钥存储:采用"分层保护+硬件隔离"策略,根密钥存OTP/eFuse,应用密钥由根密钥加密后存加密分区,使用时全程在HSE内部流转,无明文暴露;
  3. 核心安全点:HSE是整个流程的安全核心,既加速运算,又保障密钥的生成、存储、使用全生命周期安全,符合车载场景的高安全要求。
相关推荐
2035去旅行9 小时前
bootcmd 详细讲解
linux·嵌入式·arm·soc
陈希12310 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
女神下凡10 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
且从容.14 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道14 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.17 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落19 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨19 小时前
WSL2的安装与使用
linux·wsl
微小的鱼19 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng19 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器