• 78查看
  • 0回复

[Autosar] AUTOSAR MCAL分析(3):Crypto Driver

[复制链接]

该用户从未签到

发表于 17-4-2024 21:34:52 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


目录

1. Crypto Driver概述

2. 认识Crypto Driver Object

2.1 NXP对CDO的实现

2.2 Vector对CDO的实现

2.3 小结

3. Key的概念

4. Job的同\异处理方式

5. 总结


1. Crypto Driver概述

Crypto Driver处在加密栈中的最底层,负责抽象芯片硬件密码功能或者基于软件封装的密码功能等,层级结构如下图所示:
AUTOSAR MCAL分析(3):Crypto Driverw1.jpg
在分析该Driver之前,有几个术语是需要掌握的:

    Crypto Driver:指定密码硬件\软件的驱动程序;Crypto Driver Object:一个Driver包含一个或者多个Crypto Driver Object(CDO),CDO用于提供不同的Crypto Primitive(加密原语);Crypto Primitive:密码学中原语是一种抽象的说法来描述加密系统的基本功能和操作;在AUTOSAR中,是指在CDO中配置的具体密码算法,例如一个对称CDO中配置了一个MAC生成的原语,该原语对应具体算法为AES128,模式为CMAC;Job:对应CSM中的job,有兴趣可以看看之前的文章AUTOSAR CryptoStack--CSM Job夹带了哪些私货至于Key、KeyType、KeyElement放到后面举例说明,这里先不讲,免得大家迷糊了。
Crypto Driver具体有什么作用呢?从大功能上可以分为两类:密码服务(Cryptographic Primitives)和密钥管理(KeyManagement)。进一步,上述功能可以细分如下表所示:
AUTOSAR MCAL分析(3):Crypto Driverw2.jpg
那么这些服务具体是以什么方式实现的呢?我们进一步来看。2. 认识Crypto Driver Object

Crypto Driver Object(CDO)是Crypto模块中最重要的部件。
因为从CP AUTOSAR代码实现角度来看,一个工程一个Driver最好维护;如果有多个Crypto Driver实例,源码文件命名和API命名就得进行区分,遵循以下规则Crypto_<vi>_<ai>。事实上,大家看Vector或者NXP的相关驱动,通常只有Crypto_<vi>,如:Crypto_30_vHSM \ Crypto_43_HSE,意味着大家心照不宣地均使用了1个Driver,那要实现多个密码服务该怎么办呢?CDO此时站了出来。
1个CryptoDriver包含1个或者多个CDO,一个CDO可以支持多个加密原语,在设计中AUTOSAR提出1个CryptoDriver如果有n个CDO,那么就可以支持n个job的并行操作。因此,不同软件供应商对于CDO的软件实现方式上出现了差异。2.1 NXP对CDO的实现

NXP对于CDO的实现是根据密码算法分类,最大可提供2个CDO,分别是symmetric
cryptographic primitives和asymmetric primitives。如下图所示:
AUTOSAR MCAL分析(3):Crypto Driverw3.jpg
在每个CDO下面可以配置限定范围内的密码原语,如下图:
AUTOSAR MCAL分析(3):Crypto Driverw4.jpg
如果我不小心将非对原语关联到对称CDO里,EB也会提示错误,如下:
AUTOSAR MCAL分析(3):Crypto Driverw5.jpg
这种实现方式易于理解,并且配置容易上手。2.2 Vector对CDO的实现

V家的实现方式相对复杂,但是设计初衷是非常棒的,它从安全启动、硬件支持的密码功能、软件自研密码库、密钥管理和用户自定义算法几个维度出发,分别设计了对应的CDO。这种设计理念就能够较为全面覆盖密码算法场景,并且不完全依赖芯片本身,如下图所示:
AUTOSAR MCAL分析(3):Crypto Driverw6.jpg

这种代码框架里,Hal负责调用芯片本身支持的密码硬件加速功能;SwLib负责软件密码自研库,主要是弥补芯片不能cover的密码服务、密钥存储方面;SecureBoot是负责安全启动对Host代码校验;Custom则是用户等自研算法等。2.3 小结

虽然各家对CDO的实现不太一致,但是从理解上是大体相近的。CDO就是用于提供不同加密原语,所以在做工程配置时要搞清楚当前工程CDO的实际角色。3. Key的概念

在完成CDO配置后,其实还差一个最重要的东西,那就是Key;因为要做对称、非对称密码算法,密钥是必须的。在Crypto Driver这一层级,提出了Key、KeyType、Key Element的概念,具体解释如下:
AUTOSAR MCAL分析(3):Crypto Driverw7.jpg

这三者关联关系为Key->KeyType->Key Element;如下图:
AUTOSAR MCAL分析(3):Crypto Driverw8.jpg

在Driver这一层级,Key只是一个索引,它的使用场景有KeyType决定,如下:

AUTOSAR MCAL分析(3):Crypto Driverw9.jpg
KeyType包含了一系列的KeyElement:
AUTOSAR MCAL分析(3):Crypto Driverw10.jpg

因此在密钥管理体系KeyElement是最重要的,定义了Key的属性:
AUTOSAR MCAL分析(3):Crypto Driverw11.jpg

不过大家在看Vector代码时需要注意,关于密钥属性配置是在单独的vHSM工程里。4.Job的同\异处理方式

在CSM里面定义了Job的处理方式有同步(Synchronous)和异步(Asynchronous),简单理解就是

    同步需要主机等待HSM返回结果,异步是将job发给HSM后,去处理其他任务,HSM可以通过中断通知处理结果,Host也可以周期去轮询处理结果。
5.总结

上文我们简介了CryptoDriver的几个关键概念,该驱动主要实现了同步和异步加密原语的通用接口,支持密钥存储、密钥配置和密钥管理等功能。实际上,在加密栈的软件实现上,每家的想法都不一样,在产品交付上也分白盒和黑盒。白盒对于理解加密栈来说非常有帮助,但是一旦绑定了,就很难再适应其他家了;黑盒对用户来说用起来很简单,提需求,调用API即可。



往期回顾:

1.汽车标定精选
汽车标定技术--标定概念详解
汽车标定技术--Bypass的前世今生
万字长文:汽车标定技术--XCP概述

2.AUTOSAR精选
AUTOSAR CryptoStack--CSM Job夹带了哪些私货
AUTOSAR 诊断栈分析(一)
AUTOSAR OS概述(一)

3.汽车网络安全精选
汽车信息安全--MCU启动常用密码算法
汽车网络安全方案需求分析
汽车信息安全--常见车规MCU安全启动方案
车载信息安全场景概述

4.汽车功能安全精选

5.汽车虚拟化精选

    汽车ECU虚拟化技术初探(一)

    汽车ECU虚拟化技术(二)--U2A虚拟化功能

6.杂七杂八

    Flash模拟EEPROM原理浅析

    征途漫漫:汽车MCU的国产替代往事

    车规MCU应用场景及国产替代进展

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 30-4-2024 16:32 , Processed in 0.255093 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.