杨浦做网站/新网站快速排名软件

杨浦做网站,新网站快速排名软件,纪检监察网站建设情况汇报,wordpress怎么获取在线ip一、 综述 在车辆ECU中总是有一些密钥或重要数据需进行机密性保护,但因产品选型、成本等考虑,导致一些ECU的芯片不支持硬件安全模块(例如HSM、TEE等)。此时,为保障数据的机密性,可考虑通过软件实现数据的安…

一、 综述

在车辆ECU中总是有一些密钥或重要数据需进行机密性保护,但因产品选型、成本等考虑,导致一些ECU的芯片不支持硬件安全模块(例如HSM、TEE等)。此时,为保障数据的机密性,可考虑通过软件实现数据的安全存储:将需保护的数据加密后存储到Flash中。

二、方案

2.1 方案概述

对业务密钥使用AES-256算法(AES-256算法使用的密钥称为保护密钥)进行加密,随后将加密后的业务密钥密文存储在Flash中。此时将对业务密钥的保护转换对保护密钥的保护,后续只需保障保护密钥不被泄露和被篡改,即可保障业务密钥的安全性。方案通过特定的密钥派生算法,基于种子,生成保护密钥。

将种子拆分成多份的主要目的是提升攻击者通过逆向方法获取保护密钥的难度。在攻击者对编译后的Image进行静态分析时,可有效提升分析难度,避免通过扫描String字符串方式直接获取到保护密钥。

  • 密钥派生算法:本项目使用PBDKF2。
  • 种子:可使用多种形式的种子或互相结合形成种子
    1.保存在DFlash中的随机数
    2.硬编码在代码中的固定值
    3.读取芯片特征值,例如芯片ID

本文档后续以“硬编码在代码中的固定值”作为种子进行举例。若使用其他种子,只需对应扩展即可
在这里插入图片描述

2.2 保护密钥生成

将业务密钥进行加密存储后,即可使用把对业务密钥的保护转换为对保护密钥的保护。为提升保护密钥的安全性,需仅在需要保护密钥时,基于特定种子进行生成,避免保护密钥长期直接存在于ECU中。保护密钥生成流程如下:

  1. 通过硬编码在源代码中的第一处种子,使用密钥派生算法PBKDF2-HMAC-SHA256生成32字节的派生密码;
  2. 以步骤1中生成的派生密码和硬编码在第二处的种子为基础,使用密钥派生算法PBKDF2-HMAC-SHA256进行运算,得到32字节的派生密码;
  3. 以步骤2中生成的派生密码和硬编码在第三处的种子为基础,使用密钥派生算法PBKDF2-HMAC-SHA256进行运算,得到32字节的派生密码,即为最终的保护密钥;

保护密钥生成过程应封装为一个函数,便于后续初始化和运行阶段直接调用。通过调用保护密钥生成函数,可直接获得保护密钥。

在这里插入图片描述

2.3 初始化

实际项目中可能存在业务密钥分默认密钥和生产密钥的情况:

  • 默认密钥:在供应商产线即注入,通常为一个特定值,例如全0xFF或全0x00。
  • 生产密钥:在OEM产线注入,例如通过UDS 2E服务的某个DID。

2.3.1 初始化准备

定义一个结构体,应包含两个值:

  • 业务密钥:用于存储业务密钥明文或密文,长度应为16的整数倍(AES算法填充导致)。
  • 标志位:用于表明当前业务密钥是明文还是密文存储。
    示例结构体如下:
struct bussiness_info {unsigned int flag;//0:明文存储,1:密文存储unsigned char bu_key[32];//具体长度需结合实际业务密钥确定,请注意AES加密需填充,故加密后的值必然为16的整数倍
}

2.3.2 默认密钥初始化

默认密钥在FLASH中进行明文存储。故在供应商产线只需将bu_key置为规范中的特定值,flag置为0。
在产品进入OEM产线前,业务密钥均明文存储和使用。

2.3.3 生产密钥初始化

生产密钥通常通过UDS 2E服务的DID在OEM产线进行写入。当通过DID进行写入时,需在写入处理程序中添加加密初始化过程,加密初始化流程如下:

  1. 接收OEM产线传入的明文业务生产密钥;
  2. 调用2.2中的保护密钥生成函数,获得保护密钥;
  3. 将步骤1中接收到的业务生产密钥明文,通过AES-256-CBC加密算法使用保护密钥,得到业务生产密钥密文;
  4. 构建结构体,其中flag为1,bu_key为步骤3得到的业务密钥密文。并将此结构体覆盖写入默认密钥结构体所在位置(确保覆盖默认密钥所在结构体)。

在这里插入图片描述

2.4 运行阶段

当需要使用业务密钥进行业务处理时,应进行如下流程:

  1. 从FLASH上读取初始化阶段保存的结构体struct bussiness_info,判断flag值,若为0,则表明当前使用默认密钥,故直接读取结构体中bu_key的值作为业务密钥使用(需注意默认密钥长度);
  2. flag值为1,则当前使用的为正式密钥,读取结构体中bu_key的值为密文,需进行解密;
  3. 调用2.2中保护密钥生成函数,获取保护密钥;
  4. 以读取的bu_key密文为输入,通过AES-256-CBC算法使用保护密钥,获得业务生产密钥明文;
  5. 销毁保护密钥;
  6. 生成的业务生产密钥保存在内存中,并在业务中使用。

在这里插入图片描述

2.5 完整过程

结合初始化阶段和运行阶段,形成完整的密钥保护工作流程,如下图:

在这里插入图片描述

三、优化

具体项目中需结合实际使用场景,确定业务密钥明文是常驻内存还是每次使用时解密。若对使用频繁或对性能有要求(例如SecOC密钥等),则业务密钥明文可常驻内存。否则,建议选择更安全的每次使用时解密。

四、算法

4.1 AES算法

本方案对业务密钥进行加解密的算法为AES-256,使用CBC模式。CBC的IV可预定义好,并在代码中硬编码。

4.2 PBKDF2算法

本方案选择密钥派生算法PBKDF2。PBKDF2算法为一种密钥派生算法,PBKDF2算法主要用在防止暴力破解场景,通过增加单次迭代的时间,使暴力破解时间成倍增长,从而提升暴力破解成本。但本方案并不使用此特性,本方案主要目的在通过一组种子作为输入,生成一个关联的派生密钥,作为保护密钥。当种子固定时,通过PBKDF2算法生成的保护密钥必定固定。
在这里插入图片描述

PBKDF2算法涉及参数如下:

  • 盐值:32字节长度,预定义好并硬编码到代码中
  • 迭代次数:2次。因本项目不使用防止暴力破解特性,故次数并不影响安全性,结合效率考虑。需集合实际项目性能,调整次数。
  • 伪随机函数:HMAC-SHA-256算法
  • 输出密钥长度:32字节

五、扩展

在前面章节的示例中,采用的是硬编码种子的方式。实际项目中种子的选择具有多样性,可采取多种方式选择种子。例如:
1.种子1是硬编码的固定值,种子2为随机数。种子2存储在DFLASH中,当进行2.3.3章节的初始化过程时,由随机数生成器生成并存储在DFLASH中,后续使用时直接读取即可。
2.种子1和种子2都是硬编码的固定值,种子3来自芯片ID。大多数芯片都有一个唯一且固定的序列号,可以读取此序列号作为种子使用。
实际使用时,应考虑具体需求,再确定种子。若需要一机一密,则有种子是随机数或者芯片序列号。若对稳定性要求高,则尽量选择硬编码种子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十进制数到十六进制数的转换

十进制数x,若能表示为,n为大于等于0的整数。ni4j。i取值为0、1、2和3。综合i和j,若i为0,则该16进制数为1后面加j个0;若i为1,则该16进制数为2后面加j个0;若i为2,则该16进制数为4后面加…

基于YoloV11+PaddleOCR的车牌检测系统

文章目录 一、CCPD数据集进行处理1.1 从文件夹构建txt格式数据集1.2 运行脚本按照8:2划分训练集,测试集 二 、YOLOV11训练模型2.1 编写car_plate.yaml文件2.2 编写train脚本:2.3 训练过程 三、PaddleOCR识别车牌号3.1 安装paddleocr&#xff…

2月12日鸿蒙生态日日新PLOG,多款应用上架

2月12日鸿蒙生态日日新PLOG :北京医院挂号通、有度、远光商旅等多款应用上架;钉钉、得到、航班管家等多款重点应用功能更新。 ​​​

Python----PyQt开发(PyQt高级:手搓一个简单的记事本)

一、效果展示 二、设计PyQt界面 2.1、设置图标 self.setWindowIcon(QIcon(./images/icon/1.png)) # 窗口图标 2.2、设置标题 self.file_name 无标题-新建文本文档 # 默认文件名 self.setWindowTitle(self.file_name) # 窗口标题 2.3、添加菜单栏、工具栏、状态栏 # 创…

Java 大视界 -- 大数据伦理与法律:Java 技术在合规中的作用与挑战(87)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

从Sora到有言:3D视频生成技术的突破与应用

近年来,AIGC领域飞速发展,这个词也越来越高频地出现在了大家的生活中。AIGC 能完成的任务也越来越多,大模型的能力飞速增长 —— 从Deepseek生成文字,到StableDiffusion生成图像,再到Sora可以生成视频。 而现在&#x…

Apollo 9.0 控制算法 -- lon based pid controller

文章目录 1. 纵向控制算法1.1 算法结构1.1.1 外环:位置环1.1.2 内环:速度环 1.2 参数整定 2. 代码解析2.1 控制器初始化 LonController::Init()2.1.1 PID控制参数和标定表参数加载2.1.2 PID控制器初始化2.1.3 超前/滞后控制器初始化2.1.4 俯仰角滤波器初…

Qt信号槽调用出错:Qt: Dead lock detected while activating a BlockingQueuedConnection

目录 1.现象和原因分析 2. 总结 1.现象和原因分析 就在最近的开发过程中,程序一运行在控制台就打印: Qt: Dead lock detected while activating a BlockingQueuedConnection: 咋一看,怎么出现死锁了呢?仔细看下…

Jenkins项目CICD流程

Jenkins项目流程:1.配置git环境 git config --...2.把前后端的目录初始化位本地工作目录 #git init3.提交到本地git #git add ./ git commit -m "" git tag v14.然后提交到远程git(通过,用户,群组,项目,管理项目)git remote add origin http://...git push -…

Springboot_实战

项目开发 lombok使用 自动为实体类提供get、set、toString方法 引入依赖 实体类上添加注解 统一响应结果 注意要写get、set方法;下面是错误的,因此要加上Data注解 一个注册的接口的示例 Controller层 Service层 Mapper层 参数校验 但是同样存在一…

Spring框架中都用到了哪些设计模式?

大家好,我是锋哥。今天分享关于【Spring框架中都用到了哪些设计模式?】面试题。希望对大家有帮助; Spring框架中都用到了哪些设计模式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring框架中使用了大量的设计模…

Day1 25/2/14 FRI

【一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵)】https://www.bilibili.com/video/BV13g41157hK?p3&v…

软考高级《系统架构设计师》知识点(一)

计算机硬件 校验码 码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,…

基于vue3实现的课堂点名程序

设计思路 采用vue3实现的课堂点名程序&#xff0c;模拟课堂座位布局&#xff0c;点击开始点名按钮后&#xff0c;一朵鲜花在座位间传递&#xff0c;直到点击结束点名按钮&#xff0c;鲜花停留的座位被点名。 课堂点名 座位组件 seat.vue <script setup>//组合式APIimpo…

数论补充 之 前后缀分解问题

文章目录 [0,i-1] 和 [i1,n-1] 共同作用3334,数组的最大因子得分238.除自身以外数组的乘积 对于前缀分解问题&#xff0c;我愿把它分为几个大问题&#xff1a;[0,i] 或 [i,n-1] 或 [l,r],或 [0,i-1] 和 [i1,n-1] 共同作用的问题 一般都是求解区间的和&#xff0c;乘积&#xff…

Winform禁止高分辨下缩放布局成功方法

Windows自动缩放布局会导致窗体上的按钮和文本挤在一起根本看不清楚。 那么该如何解决呢&#xff1f; 具体操作步骤如下&#xff1a; 1、在项目属性上切换到【安全性】菜单&#xff0c;勾选【启用ClickOnce安全设置】&#xff0c;然后立刻取消勾选&#xff1b; 为了生成app.…

分享 UniApp 中超好看的卡片阴影样式

在 UniApp 开发中&#xff0c;页面的视觉效果对于提升用户体验至关重要。一个设计精美的卡片样式往往能让页面更加美观和吸引人&#xff0c;而阴影效果则是为卡片增添立体感和层次感的关键元素。今天&#xff0c;我就来和大家分享一个在 UniApp 中实现的卡片阴影样式&#xff0…

教程 | 从零部署到业务融合:DeepSeek R1 私有化部署实战指南

文章目录 1. 什么是 DeepSeek R1&#xff1f;a. 主要介绍a. 版本区别 2. 部署资源要求a. 硬件资源要求 3. 本地安装DeepSeek-R1a. 为什么选择本地部署&#xff1f;b. 部署工具对比c. 演示环境配置d. Ollama安装流程 4. 可视化工具a. 工具对比b. Open-WebUI部署 5. AI API应用a.…

数据结构——队列、哈希存储(2025.2.11)

目录 一、队列 1.定义 2.应用 3.分类 &#xff08;1&#xff09;逻辑结构 &#xff08;2&#xff09;物理结构 顺序队列 链式队列 二、哈希存储 1.定义 2.哈希冲突 &#xff08;1&#xff09;开放定址法 &#xff08;2&#xff09;再哈希法 &#xff08;3&#xf…

【做一个微信小程序】校园地图页面实现

前言 上一个教程我们实现了小程序的一些的功能&#xff0c;有背景渐变色&#xff0c;发布功能有的呢&#xff0c;已支持图片上传功能&#xff0c;表情和投票功能开发中&#xff08;请期待&#xff09;。下面是一个更高级的微信小程序实现&#xff0c;包含以下功能&#xff1a;…