标书制作收费/兰州seo整站优化服务商
目录
1. 安全启动流程回顾
1.1 TC3xx的安全启动
1.2 RH850的安全启动
1.3 NXP S32K3的安全启动
1.4 小结
2.信任链的问题
3.国产HSM IP的拓展
今天接着 汽车信息安全 -- 存到HSM中的密钥还需包裹吗?-CSDN博客这篇文章深究另一个重要功能-- 安全启动。
该文章的前提是假设有工具能够Dump出所有Flash数据(包含HSM),意味着逆向整个Code就不再那么困难(虽然个人对这个假设还是存疑:毕竟理论上HSM在防篡改上至少可以提供篡改抵抗和篡改留凭这两项基础功能的一个)。
而以目前我们常见的安全启动方式,大都将HSM作为信任锚,由HSM来保证Host侧所有运行软件授信,探测在运行时Host侧软件是否被篡改。
因此,我们首先回顾一下目前市面上常见的HSM固件的安全启动流程。
1. 安全启动流程回顾
不管是ETAS还是VECTOR,在安全启动上均提供了顺序安全启动、并行认证启动、混合启动方式(注意,上述启动流程两家实现基本一致,只是命名不同,这里统一成上述表达)。
- 顺序启动:又称Secure Boot,它是指上电后HSM成功校验所有Host App后再释放Host内核,很明显这种方式会造成启动变慢;
- 并行启动:又称Paraller Authenticated Boot,它是指上电后硬件同时释放Host和HSM内核,当HSM在校验Host App时,Host App也在并行运行,当校验失败时,由HSM来决定是否复位整个系统。这种方式虽然提高了系统启动性能,但存在一定的信息安全风险。
- 混合启动:HSM固件对Host APP不同模块使用顺序\并行启动,这兼顾了启动时间和信息安全。
有趣的是,虽然说HSM在什么时候释放Host基本是由软件策略来决定,但是我们仍然可以从国外MCU大厂对安全启动方式的理解和设计。
1.1 TC3xx的安全启动
TC3xx上电后首先释放TriCore 0,执行它自己的Startup Software(SSW)。
SSW根据HSMBOOTEN是否置位来使能HSM内核,根据SSWWAIT是否置位来决定是否等待HSM Firmware的通知,具体流程如下图所示:
进一步讲,当SSWWAIT这一位使能后,芯片硬件认为安全启动相应地开启,需要等待HSM固件对Host软件校验结果。
由于SSW本身在ROM里,基本不会被篡改,因此这部分代码逻辑默认可信;HSM Firmware可以在任意时刻通知SSW,假设HSM Firmware开始运行就通知,这就是典型的并行启动;如果HSM Firmware将Host所有软件校验完成再通知SSW,这就是严格的顺序安全启动;如果HSM在校验部分Host App模块后通知SSW,这就是混合启动。
因此理论上讲,TC3xx从硬件层面就支持所谓的顺序、并行、混合启动。
1.2 RH850的安全启动
RH850 MCU型号太多了,因此咱们主要以ICU-M(即HSM)来看安全启动。
瑞萨的ICU全称Intelligent Cryptographic Unit,-M代表满足EVITA Medium等级,如下所示:
由于其设计雏形源于HIS SHE,因此安全启动逻辑也基本相似。在ICU-M内部有一个Secure Boot Key 用于校验Host Application。
上电后,ICUP率先复位释放,完成一系列初始化后,进入到ICU Firmware,由该Firmware的安全启动程序对Host Application进行校验,校验完成后有ICUP释放Host Core,逻辑如下图:
值得一提的是,在瑞萨提供的示例中,Program B是由Program A请求ICU-M进行校验。信任链从这个意义上也串了起来。
1.3 NXP S32K3的安全启动
在S32K3的启动流程,硬件复位后同样只有HSE(也就是HSM)子系统可以运行,首先运行sBAF()代码,完成基本环境配置,然后根据IVT(Image Vector table)中BOOT_SEQ来决定是否执行安全启动,如下图:
- 当BOOT_SEQ = 0时,SBAF忽略掉HSE是否完成校验,直接运行Host App;
- 当BOOT_SEQ = 1时,SBAF只运行HSE_Firmware,由HSE FW来选择什么时候释放Host Application
基本流程如下图所示:
1.4 小结
可以看到,上述MCU均在自己的信息安全解决方案里考虑了安全启动,可以通过不同配置来选择是否启用安全启动,但是决定权还是在于HSM Firmware在什么时候复位Host软件。
因此,这也给了HSM固件供应商更大的舞台来设计安全启动流程。
例如,我们可以将用户Host Application按用途分成不同类别,比如说Group BootManager、Group AppA、Group AppB;然后在类别里根据启动时序要求拆分成不同的块,对这些块设置不同的启动模式,如下图:
这样就能够兼顾信息安全和OEM启动时间要求。
2.信任链的问题
我们仔细分析上述MCU的启动流程,会发现一个现象:除了S32K3在SBAF里有对HSE_FW进行验证,其余方案均默认HSM FW可信。
但我遇到很多人问过这样一个问题:那你这个启动流程的信任链就是断裂的,从芯片厂商 -> Tier 1 -> OEM这个信任过程没有建立起来。
有朋友以Inter Arria 10 SoC Secure Boot过程为例:
它总共历经3个步骤:
- BootRom作为信任根,用于解密、验证BootLoader。验签公钥、对称加密密钥预先存在设备中,完成解密和验证后加载Bootloader运行;
- Bootloader主要用于OS运行前的环境配置,包括访问文件系统、外设初始化、配置I\O等等,验签OS作为可选项;
- OS运行或者是Bare Metal运行后,特别是需要从Flash copy至ram运行的应用程序,是必须进行验签。
该SoC的安全启动信任链就以上述方式完成。
最初我还是认为这个很有道理,但是仔细分析下来,这个过程通篇没有提到安全隔离,也没有提到任何关于HSM的信息;
再仔细思考,一般这种SoC是不带eFlash(Embedded Flash),大部分程序都是需要从不同存储介质加载到RAM中运行,因此这些程序是必须要保证完整可信;
但我们现在讨论的车规MCU,都带有内置HSM,天然地从架构上就将MCU划分为安全域和非安全域,
HSM内部包含自己Code、Data Flash,可以存储HSW_FW、密钥、车辆\车主敏感信息。
因此理论上,把HSM和ECU主密钥组合共同作为系统信任根是可行的。
3.国产HSM IP的拓展
正是基于这点,目前有很多国产HSM IP进行完善。
例如芯来科技的HSM IP提供了完整的安全启动流程,它们的安全启动中包含两级验证和加载启动,分别为芯片级和系统级两个层级,对应芯片厂商和系统厂商。并且每一级厂商都可以拥有自己的密钥对。
芯片厂商提供BootROM和一级Loader(NSBS固件),处于HSM系统中。
芯片厂商的公钥用于验签一级Loader(NSBS固件),系统厂商的公钥用于验签HOST系统的固件程序。整体安全启动流程如下图所示:
BootRom验签NSBS,NSBS验签Host App1、2等,这样看起来很美好,芯片原厂提供整套信息安全解决方案,但是不知道HSM固件供应商如何看待这一块,毕竟“NSBS”才是它们的核心价值所在。
纽创、安谋科技 HSM IP对于安全启动的思路和芯来类似,个人感觉理念大都源于以前IoT的安全启动概念:
做法没有对错,归根结底还是在于整车系统网络安全架构要实现的网络\信息安全目标,通过合理的TARA分析来选择系统的信任根。
相关文章:

汽车信息安全 -- 再谈车规MCU的安全启动
目录 1. 安全启动流程回顾 1.1 TC3xx的安全启动 1.2 RH850的安全启动 1.3 NXP S32K3的安全启动 1.4 小结 2.信任链的问题 3.国产HSM IP的拓展 今天接着 汽车信息安全 -- 存到HSM中的密钥还需包裹吗?-CSDN博客这篇文章深究另一个重要功能-- 安全启动。 该文章…...

[Linux]从零开始的Linux的远程方法介绍与配置教程
一、为什么需要远程Linux 相信大家在学习Linux时,要么是使用Linux的虚拟机或者在物理机上直接安装Linux。这样确实非常方便,我们也能直接看到Linux的桌面或者终端。既然我们都能直接看到终端或者Linux的桌面了,那我们为什么还要远程Linux呢&a…...

手机改IP地址怎么弄?全面解析与操作指南
在当今数字化时代,IP地址作为设备在网络中的唯一标识,其重要性不言而喻。有时候,出于隐私保护、网络访问需求或其他特定原因,我们可能需要更改手机的IP地址。然而,对于大多数普通用户来说,如何操作可能还是…...

【React】useState 和 useRef:项目开发中该如何选择
如果你正踏入用 React 进行网页开发的世界,那你可能已经遇到了像 useState 和 useRef 这样的术语。这两个 Hook 在构建交互性和动态组件时起着至关重要的作用。 下面,我们将探讨它们是什么,它们的功能,它们的区别,并通…...

python装饰器用法
为什么用装饰器? 第一个原因是,使用装饰器可以提升代码复用,避免重复冗余代码。如果我有多个函数需要测量执行时间,我可以直接将装饰器应用在这些函数上,而不是给多个函数加上一样的代码。这样的代码既元余也不方便后…...

AI 写作太死板?原因竟然是这个!
有些同学跟我埋怨说AI生成的文章太死板,一堆的“首先、其次、然后、再次、接着、总而言之……”,说话太官方,内容还很水。 想要让它模仿谁的语气,或者谁的文章,一点儿都不像。 名人都不模仿不了,更别说模…...

ansible实用模块
简介 ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。…...

【JavaScript】JIT
JIT实际上指,JS的编译过程、运行时。 Just in Time 在传统的编译语言里,比如JAVA、Go等,是提前编译的,它们的执行是先在本地编译出一个"东西",然后在放到服务器上运行。 提前编译的三大过程: …...

Matlab实现麻雀优化算法优化回声状态网络模型 (SSA-ESN)(附源码)
目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新兴的群体智能优化算法,灵感来源于麻雀的觅食行为及其在面临危险时的预警机制。SSA通过模拟麻雀的这些自然行为来寻找问题…...

从 TCP Reno 经 BIC 到 CUBIC
重读 TCP拥塞控制算法-从BIC到CUBIC 以及 cubic 的 tcp friendliness 与拐点控制 这两篇文章,感觉还是啰嗦了,今日重新一气呵成这个话题。 reno 线性逼近管道容量 Wmax,相当于一次查询(capacity-seeking),但长肥管道从 0.5*Wmax …...

工厂模式与建造者模式的区别
在软件设计中,工厂模式和建造者模式是两种常见的设计模式,它们都是用于创建对象,但是各自有不同的应用场景和目的。本文将通过餐馆点餐的例子,深入探讨这两种模式的区别。 工厂模式 工厂模式的核心思想是通过一个抽象工厂类来创…...

电脑usb接口封禁如何实现?5种禁用USB接口的方法分享!(第一种你GET了吗?)
“防患于未然,安全始于细节。”在信息技术飞速发展的今天,企业的信息安全问题日益凸显。 USB接口作为数据传输的重要通道,在带来便利的同时,也成为了数据泄露和安全风险的高发地。 因此,对电脑USB接口进行封闭管理&a…...

有效的括号
有效的括号 思路:我们先创建一个栈,让左括号入栈,与右括号判断 Stack stacknew Stack<>(); 将字符串中的符号转化为字符 char ch s.charAt(i); 完整代码如下: class Solution {public boolean isValid(String s) {if (s …...

Vue3.0面试题汇总
Composition API 可以说是Vue3的最大特点,那么为什么要推出Composition Api,解决了什么问题? 通常使用Vue2开发的项目,普遍会存在以下问题: 代码的可读性随着组件变大而变差每一种代码复用的方式,都存在缺…...

TCP编程:从入门到实践
目录 一、引言 二、TCP协议原理 1.面向连接 2.可靠传输 三、TCP编程实践 1.TCP服务器 2.TCP客户端 四、总结 本文将带你了解TCP编程的基本原理,并通过实战案例,教你如何在网络编程中运用TCP协议。掌握TCP编程,为构建稳定、高效的网络通信…...

Python NumPy 数据分析:处理复杂数据的高效方法
Python NumPy 数据分析:处理复杂数据的高效方法 文章目录 Python NumPy 数据分析:处理复杂数据的高效方法一 数据来源二 获取指定日期数据三 获取指定行列数据四 求和计算五 比例计算六 平均值和标准差七 完整代码示例八 源码地址 本文详细介绍了如何使用…...

【Preference Learning】Reasoning with Language Model is Planning with World Model
arxiv: https://arxiv.org/abs/2305.14992 问题背景:当前LLM推理受到几个关键因素的限制: (1)LLM缺乏世界模型(一种人类就有的对环境的心理表征,可以模拟行动以及活动对外部世界状态的影响)去…...

OJ在线评测系统 后端基础部分开发 完善CRUD相关接口
完善相关接口 判斷编程语言是否合法 先从用户的请求拿到Language package com.dduo.dduoj.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dduo.dduoj…...

计算机网络--TCP、UDP抓包分析实验
计算机网络实验 目录 实验目的 实验环境 实验原理 1、UDP协议 2、TCP协议 实验具体步骤 实验目的 1、掌握使用wireshark工具对UDP协议进行抓包分析的方法,掌握UDP协议的报文格式,掌握UDP协议校验和的计算方法,理解UDP协议的优缺点&am…...

FreeRTOS的中断管理
前言 FreeRTOS的任务有优先级,MCU的硬件中断有中断优先级,这是两个不同的概念,FreeRTOS的任务管理要用到硬件中断,使用FreeRTOS时候也可以使用硬件中断,但是硬件中断ISR的设计要注意一些设计原则,在本节中我…...

JS加密=JS混淆?(JS加密、JS混淆,是一回事吗?)
JS加密、JS混淆,是一回事吗? 是的!在国内,JS加密,其实就是指JS混淆。 1、当人们提起JS加密时,通常是指对JS代码进行混淆加密处理,而不是指JS加密算法(如xor加密算法、md5加密算法、…...

hive-拉链表
目录 拉链表概述缓慢变化维拉链表定义 拉链表的实现常规拉链表历史数据每日新增数据历史数据与新增数据的合并 分区拉链表 拉链表概述 缓慢变化维 通常我们用一张维度表来维护维度信息,比如用户手机号码信息。然而随着时间的变化,某些用户信息会发生改…...

高并发内存池(六):补充内容
目录 有关大于256KB内存的申请和释放处理方法 处理大于256KB的内存申请 补充内容1 补充内容2 补充内容3 处理大于256KB的内存释放 新增内容1 新增内容2 测试函数 使用定长内存池替代new 释放对象时不传对象大小 补充内容1 补充内容2 补充内容3 补充内容4 测试…...

高性能存储 SIG 月度动态:优化 fuse 提升 AI 存储接入能力,erofs 工具发布新版本
本次月报综合了 SIG 在 7、8 两个月的工作进展,包含多项新特性、优化、Bugfix 等。 SIG 整体进展 fuse 支持 failover,并优化 background 读写公平性,提升 AI 存储接入场景的能力。 erofs page cache 共享特性已发到上游社区,re…...

2024 年最新 Protobuf 结构化数据序列化和反序列化详细教程
Protobuf 序列化概述 Protobuf(Protocol Buffers)是由Google开发的一种语言中立、平台中立、可扩展的序列化结构数据的方法。它用于在不同系统之间高效地交换数据。Protobuf使用定义文件(.proto)来描述数据结构,并通过…...

【小程序】微信小程序课程 -4 项目实战
目录 1、 效果图 2、创建项目 2.1 创建小程序端 2.1.1 先创建纯净项目 2.1.2 删除components 2.1.4 删除app.json红色部分 2.1.5 删除index.json红色部分 2.1.6 删除index.wxss全部内容 2.1.7 删除index.wxml全部内容 2.1.8 app.json创建4个页面 2.1.9 app.json添加…...

【期刊】论文索引库-SCI\SSCI\IE\南大核心\北大核心\CSCD等
外文期刊检索 SCI SCI即《科学引文索引》(Science Citation Index),是由美国科学信息研究所(Institute for Scientific Information)创建于1961年,收录文献的作者、题目、源期刊、摘要、关键词,不仅可以从文献引证的角度评估文章的学术价值,还可以迅速方便地组建研究课…...

开源链动 2+1 模式 S2B2C 商城小程序:社交电商团队为王的新引擎
摘要:本文深入探讨在社交电商领域中,团队的重要性以及如何借助开源链动 21 模式 S2B2C 商城小程序,打造具有强大竞争力的团队,实现个人价值与影响力的放大,创造被动收入,迈向财富自由之路,同时为…...

使用Fiddler Classic抓包工具批量下载音频资料
1. 通过F12开发者工具,下载音频文件 浏览器打开音频列表->F12快捷键->网络->媒体,播放一个音频文件,右边媒体下生成一个音频文件,右击“在新标签页中打开”,可以下载这个音频文件。 2.通过Fiddler Classic抓…...

QT开发:基于Qt实现的交通信号灯模拟器:实现一个带有倒计时功能的图形界面应用
介绍 本文将介绍如何使用Qt框架实现一个简单的交通信号灯控制程序。本程序包括一个图形界面,显示红、黄、绿三色信号灯,并通过定时器控制信号灯的切换。同时,我们还将实现一个带有按钮的界面,用于展示信号灯的状态。 1. 安装Qt开…...