AutosarCyberSecurity之HSM和CSM,CryIf,CryptoDriver之间的关系牛喀网

CSM,CryIf,CrptoDriver每层都做了什么

CryptoDriver(CryDrv)配置:

1)CryptoPrimitives配置用到的算法

2)配置CryptoDriverObjects

3)配置CryptoGeneral

4)配置CryptoKeyElements

5)配置CryptoKeyTypes

6)配置CryptoKeys

CryptoInterface(CryIf)配置

1)配置CryIfChannels:

2)配置CryIfCryptoModules

3)CryIfKeys配置

4)CryIfGeneral配置

CryptoServiceManager(CSM)配置

1)CsmJobs配置

2)CsmPrimitives配置

3)CsmKeys配置

4)CsmQueues配置

5)CsmGeneral配置

6)CsmCallbacks配置

CSMAPI的调用:

1)同步作业模式

2)异步作业模式

CSMJob的调用

随着汽车网联化和智能化,汽车不再孤立,越来越多地融入到互联网中。同时,汽车也慢慢成为潜在的网络攻击目标。这边不做过多赘述,只是强调一下网络安全和功能安全的区别,经常会有人疑惑这两者之间的关系,这边引用一张vector的图,非常清晰的展示了两者之间的区别:

1)功能安全是保护人为目的的,车如果发生故障的话,目的是让车能尽可能的可控,不会失控去对人做出伤害。

2)网络安全是反过来保护车辆系统的,防止黑客的入侵,控制或者窃取车辆信息,使车辆不可控,或者干一些违法的事情。

这边我们做出如下总结:

1)像T-BOX,TCU,网关等节点或功能,必须考虑网络安全,因为它们有直接的对外连接

2)具有高功能安全等级,比如ASILC/D的节点,也要实施网络安全

4)有无线连接的节点,比如蓝牙,NFC,WIFI等有关的组件也要涉及网络安全,因为他们是最容易被攻击的组件

5)对外连接的节点,比如对外连接的总线,OBD

那么在AUTOSAR架构中是怎么实现网络安全功能的呢?

这个话题涉及的内容就比较多,今天我们只讲CryptoStack的实现。

如下图,是AUTOSARCP信息安全架构图:

可以看到CryptoStack分为三部分:

为什么会存在CSM,CryIf,CrptoDriver?

是为了将硬件HSM的接口做一个封装,以便上层服务可以标准化调用,而不受HSM的不同的影响。

而且HSM通常还拥有单独的存储区,包括RAM和NVM,HSM的存储区在正常运行状态下应只允许HSM核读写,主核不能读写。这样就可以把算法秘钥等重要数据存储在HSM存储区,与主核进行隔离,进一步加强安全性。此外HSM模块还会带有真随机数生成器等加密算法常用外设。

HSM两个主要功能:

第一个是存储管理密钥。第二个是加速加解密算法

以TC397为例,HSM作为外设之一,挂载在单片机的SPB系统外设总线上。

HSM展开后的架构图,HSM有一个基于ARMCortex-M3的CPU,有随机数生成器TRNG,AES算法等硬件加速器,以及中断、Timer等组成部分。

其中存储软件程序和数据的PFlash和DFlash实际上与芯片的其他部件共用一块Flash,但是能通过TriCore的访问控制设置,来保护HSM所对应的Flash区域不被非法访问或篡改。安全密钥的存储就是在其中的DFlash里。

举个栗子,HSM有两个加密驱动对象CryptoDriverObject:HW-AES和HW-RSA

它们每个都有自己的通道。每个通道连接到一个CSM队列和一个CryptoDriverObject队列。

两个CryptoDriverObject都在分别处理一个加密作业:AES-high和RSA

其中一个CryptoDriverObject的队列包含另一个作业(AES-low)。如果HSM的HW-AES已经完成了AES-high的任务,则将AES-low的任务作为下一个任务处理。

假设应用程序的新作业调用RSA:

1)如果RSA的CryptoDriverObject不繁忙,则立即处理该任务。

2)如果RSA的CryptoDriverObject很忙,但是CryptoDriverObject的队列未满,则该作业将按优先级顺序列在该队列中。一旦CryptoDriverObject空闲,将执行CryptoDriverObject队列中具有最高优先级的作业。

3)如果RSA的CryptoDriverObject很忙,并且CryptoDriverObject的队列已满,则该作业将按照优先级顺序存储在CSM队列中。·

4)如果RSA的CryptoDriverObject忙,且CryptoDriverObject队列和CSM队列都已满,CSM会拒绝请求。

5)如果RSA的CryptoDriverObject是活动的,则作业已经在加密驱动程序中启动,正在等待更多的数据来处理或完成命令。

CryptoDriver(CryDrv)配置

主核的Crypto层主要负责与HSM的交互,将任务转发给HSM,并获取响应Crypto模块需要如下container,如果不存在就需要右键Crypto添加这些Container.

这边举一个CAMCVerify的例子.

添加一个Object:HSM_Crypto

CryIf将CSM层的请求转发到对应的CryptoDriver。它涉及到的主要配置就是CryIfChannel。它将Csm层的job和实际处理cryptoDriverObject对应起来。CryIf模块需要如下container:CryIfChannels,CryIfCryptoModules,CryIfKeys,CryIfGeneral.

DriverObjectsRef就是Crypto模块配置中配置好的

SWC或者BSW调用接口时除了data之外只传了jobid,而没有类似使用什么key,什么算法之类的东西,CSMjob封装了所有这些信息,可以被视为在CryptoDriverObject中实现的加密算法的实例。所以通过CSMJob为入口分析CSM的配置

CSMjob会引用到Csm层的CsmPrimitive

异步执行作业时需要有callback函数。根据需要配置,这边只是举个例子

CSMAPI的调用

CSM的API大致可以分为两类:直接API(主要用于密钥管理)和基于作业的API(主要用于加解密操作)

直接API(DirectAPI):

直接对应于CryIf和加密驱动程序中的函数。这些函数只能同步调用。CSM会将参数从应用程序直接传递给函数调用。

基于作业的API(Job-basedAPI):

使用作业结构Crypto_JobType,它包含静态和动态参数以及对结构的引用。此数据为加密驱动程序提供执行该作业所需的所有信息。每个使用作业的服务都将使用此结构。服务的所有必要参数将由CSM打包到结构的元素中,然后将调用CryIf,而这又将调用配置的加密驱动程序。

直接API是直接调用,只能同步调用,比较简单,这里不做过多描述

我这边想要讲一下基于job的API的调用的同步模式,和异步模式

SynchronousModeSynchronousmode:CSM服务Job在调用方的上下文中立即执行,函数返回结果直接可用因为对于同步作业处理来说,队列排队可能用途不大。所以如果选择了同步作业处理,则建议把队列大小设定为0。但是,如果通道同时支持同步和异步作业,则队列排队机制还是有使用的必要。在Csm_MainFunction()中,可以将排队的作业传递给给CRYIF模块。

AsynchronousModeAsynchronousmode:异步作业稍后由专用CRYPTO在预先安排的主函数上下文中或硬件中处理。如果特定的CRYPTO驱动程序对象因为繁忙而拒绝该作业,CSM将服务请求放在相应的CSM作业队列中。CRYPTO使用CRYIF的回调函数通知CRYIF异步作业的完成。CRYIF通过CSM的回调函数转发结果。

最后来总结一下CSMjob调用的流程:

CSMJob可能有多个队列,每个队列映射到一个单独的加密驱动对象CryptoDriverObject(CDO),从而可以访问CDO的加密原语cryptoprimitives,CRYPTO因为繁忙拒绝了CSM的服务请求后,特定的Job会根据其优先级放入相应的CSM队列中,在Csm_MainFunction()循环调用期间,排队的Job被传递给CRYIF。CRYIF将把Job转发给特定的CRYPTO。为了优化CDO的硬件使用CDO也可以有选择的有JobQueuing。每个Job的优先级根据其配置决定其优先级,优先级值越高,优先级越高,Job将根据其优先级执行。

THE END
1.单芯片舱驾&舱控跨域融合技术方案智能汽车已经进入了跨域融合的全新竞争时代。在汽车智能化转型的过程中,主机厂对于智能化产品的集成和整合要求不断提升。多模态的交互体验,已经成为了智能汽车产业全新的竞争核心。同时在降本的大背景之下,舱驾融合不仅是汽车电子电气架构升级的必然趋势,也是主机厂实现智能化普及和降本的主要路径。本课程旨在帮助学员拥有https://news.yiche.com/hao/wenzhang/96696998/
2.中国第一汽车股份有限公司申请主从网络管理专利,保证ECU基本功能金融界2024年12月5日消息,国家知识产权局信息显示,中国第一汽车股份有限公司申请一项名为“主从网络管理方法、装置、电子设备及存储介质”的专利,公开号CN 119071092 A,申请日期为2024年8月。 专利摘要显示,一种主从网络管理方法、装置、电子设备及存储介质,涉及语音车控技术领域,它包括:在被唤醒后,进入网络模式,在https://www.dongchedi.com/article/7444855862864249398
3.智能驾驶网关控制器通用汽车GMW3097电磁兼容EMC检测怎么做汽车EMC测试是汽车整车或零部件开发过程中常常涉及到的测试内容,EMC测试作为电子零部件性能测试的重要指标之一,对汽车产品品质至关重要,EMC测试的主要目的是确保车辆或零部件在其工作的电磁环境中能够不受影响正常工作,同时也不对其他部件或系统造成电磁干扰。 随着汽车电子产业快速发展,汽车电子的复杂电磁环境也越来越受到https://www.51sole.com/b2b/pd_425331220.htm
4.华为攻入汽车行业:“除了不造车,我们什么都做”智能网联:新增以太网关(中央及分布式) 考虑到华为的背景,新增以太网关并不意外。 从硬件的角度,网关是整车电子电气架构的核心组件;从数据的角度,网关是打通各条总线,实现整车各域数据交互、网络管理和故障诊断的神经中枢。在智能汽车时代,网关的重要性越来越凸显。 https://www.36kr.com/p/1724566077441.html
5.汽车网关(GW)技术分析汽车网关行业知识在现代汽车电子系统中,汽车网关(Gateway,简称 GW)扮演着至关重要的角色。随着汽车电子技术的不断发展,汽车内部的电子控制单元(Electronic Control Unit,简称 ECU)数量不断增加,各种电子设备之间的通信需求也日益复杂。汽车网关作为汽车内部网络的核心枢纽,负责不同网络之间的数据通信和协议转换,确保各个电子系统之间能够高https://blog.csdn.net/sheenboy/article/details/142790170
6.汽车网关(gateway)系统的作用原理及部分车型网关位置结语:项目可以不做,搞坏车可不行那我们了解了网关及各个车载通讯系统中存在不同的速率交互信息,这里在了解与操作的同时,也要特别提醒下各位车联网远程智能终端,特别是带汽车控制类的,复杂CAN数据交互类的、汽车整车控制策略类的、CAN报文转译类的项目,搞不定不要强行搞,别把好车搞了一堆故障码,先咨询下速锐得。https://m.yoojia.com/article/9586386662781761134.html
7.汽车全车网关控制与信息娱乐系统陕西交通职业技术学院近年来,汽车上电控器件的应用空前广泛,车载电子设备间的数据通信变得越来越重要。随着嵌入式系统、局域网控制和数据总线技术的不断成熟,智能网联汽车被列入国家加快发展的战略性新兴产业,网络化、智能化已成为汽车发展的大方向。汽车网关控制器则是整车电子电气架构中的核心部件,是整车网络的数据交互枢纽,以其高速率、多https://www.xuetangx.com/course/scct5607nril/16909707
8.汽车网关汽车网关 概述 文件 硬件评估工具 网关是一个中央路由器, 可以安全可靠地在车辆内的多个不同网络内互连和传输数据。 它通过物理隔离和协议转换, 在共享数据的功能域(动力总成、 底盘和安全性、 车身控制、 信息娱乐、 远程信息处理、 ADAS)之间进行信息交互。…阅读更多https://www.st.com/zh/applications/body-and-convenience/automotive-gateway.html
9.汽车网关的作用是什么?汽车网关的作用是什么? 汽修技师|汽车维修技师 国家认证的汽车维修技师,15年德美日等各系车辆维修,擅长:疑难故障诊断维修,远程维修技术指导 咨询技师 网关是汽车网络系统的核心控制装置,主要负责协调不同结构和特征的数据网络之间的数据交换、故障诊断等工作。以下是相关的具体介绍:https://auto.china.com/mip/738899.html