[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

汽车安全 1年前 (2023) admin
259 0 0

之前研究了下crypto stack以及初步了解了下配置,

[Classic AUTOSAR学习] 简单理解Crypto Stack的配置以及执行流程

[Classic AUTOSAR学习] 如何理解Crypto Stack中的Job/Key/Queue?


不过在crypto模块(这里以EB crypto software为例)里,AUTOSAR定义的Key/KeyType/KeyElement的关系以及Element是如何在加密过程中被使用的,没法一下子理解。今天抽空再次阅读了下AUTOSAR规范,理了下思路。

[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

规范中的解释

我们先来看下规范中对于这几个术语是如何解释的:

Key: 可以被Csm的job关联;在Crypto驱动模块中,Key会关联到一个Key Type。

Key Type: 包含Key Element的关联信息;一般由Crypto驱动提供商做好预配置。

Key Element: 用来存储数据,这个数据既可以是Key Material,也可以是AES加密的初始向量;Key Element也可以用来配置密钥管理功能的行为。

如何理解?

简单来说,就是Csm在请求加密处理时需要一个密钥,这个密钥对应于某一种类型的密钥,而这个类型的密钥分别包含了不同信息。

[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

它们的关系呢,我们可以这样来理解,每一种不同的Key Type,是不同的类型定义,这个类型包含了Key Element这些成员,而Key就是对某一个具体Key Type的实例。Key Type最少包含一个Key Element,一个Key Element可以被包含在不同的Key Type中。

[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

举个栗子

[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

我们以上图的随机数为例,它包含三个Element:Seed State/Seed Count/Algorithm。

同时,我们还有一个Job ID为2的CsmJob:

[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

上层应用可以通过Csm_RandomGenerate接口进行随机数生成的请求,

[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

在通过一系列参数等检查之后,请求最后会传递到Crypto_AL_RANDOMGENERATE_AES_CTRDRBG_SyncSingleCall()接口(注:函数名因提供商不同,可能会有变化)。

首先会获取Key状态,此状态值由CryptoKeyElement SEED_STATE决定。如果状态为Valid,则继续进行处理。

然后获取Seed Count,判断是否合法(比如,是否已到Seed Count类型的最大值)

然后,开始进行随机数算法,并将结果存入调用Csm_RandomGenerate时的resultPtr指向的空间。然后将Seed Count +1, 更新Seed Count对应的Key Element。


原文始发于微信公众号(车载嵌入式软件开发):[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement

版权声明:admin 发表于 2023年6月11日 下午1:21。
转载请注明:[Classic AUTOSAR学习] Crypto模块里的Key/KeyType/KeyElement | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...