news 2026/4/3 6:41:43

Autosar KeyM模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Autosar KeyM模块

目录

7功能描述

https://mp.weixin.qq.com/s/E6Q5g-trHn_KkRuvXNbZgQ

7.1 Crypto keysubmodule

7.2 Certificate Submodule

7.2.1 通用行为

7.2.2初始化

7.2.3 Certificate 配置

7.2.4操作模式

7.3自定义处理

7.3.1处理自定义服务请求

7.4 Security Events

参考 Autosar CP-R24-11

7功能描述

密钥管理模块大致可以分为两个部分:加密密钥子模块和证书子模块。加密密钥子模块主要用于与密钥分发实体(密钥主控)交互,该实体负责生成密钥或直接提供密钥材料。这些密钥会分配给CSM的加密密钥,并存储在专用的NVM块中,或者可以存储为各自加密驱动的密钥。证书子模块允许配置证书链,提供存储和验证证书的接口。证书中包含的公钥还可以分配给CSM密钥,以便在加密任务中使用。

[SWS_KeyM_00001]

如果将 Key MCryptoKeyManagerEnabled 设置为 FALSE,则密钥管理器的加密密钥子模块应完全禁用。在这种情况下,不得提供任何功能,也不得分配其他操作不需要的资源。

[SWS_KeyM_00002] 上游需求:SRS_CryptoStack_00013, SRS_CryptoStack_00007

如果 KeyMCertificateManagerEnabled 设置为 FALSE,则密钥管理器中的证书子模块支持将被完全禁用。在这种情况下,与证书操作相关的功能将不可用,并且不会分配任何资源。

7.1 Crypto keysubmodule

加密密钥子模块用于初始化、更新和维护ECU的加密密钥材料。一个使用案例是为安全的车载通信提供密钥,这些密钥需要分发给相关的ECU。这些密钥应提供给CSM密钥,而CSM密钥分配给用于Secured I-PDU认证的加密任务。因此,从建模的角度来看,将key master 提供的密钥分配给用于相应Secured-I PDU的CSM密钥和任务是至关重要的。这是车辆中的一项整体任务,并以相同方式影响多个ECU。加密密钥子模块的一个目的就是支持这一操作。

key master 可以直接位于车辆内,以便内部协调密钥生成,例如作为某个特定的ECU。也可以使用云端的后端系统生成密钥材料,并以安全的方式将必要数据提供给ECU。通常,诊断命令用于密钥主控与加密密钥子模块之间的直接或间接通信。

[SWS_KeyM_00003] 上游需求:SRS_CryptoStack_00028, SRS_CryptoStack_00103

加密密钥子模块可以配置为以会话方式执行加密密钥操作。通过这种方式,诸如 KeyM_Prepare() 或 KeyM_Update() 的密钥操作仅在会话开启期间被接受。

[SWS_KeyM_00004] 上游要求:SRS_CryptoStack_00028

会话由调用 KeyM_Start() 启动。随后可以执行密钥操作,直到通过调用 KeyM_Finalize() 关闭会话。

[SWS_KeyM_00005] 上游要求:SRS_CryptoStack_00028 默认情况下,KeyM_Start() 函数不会考虑任何输入数据或长度信息,也不会提供任何输出数据,输出数据长度也不会被更改。

[SWS_KeyM_00006] 上游要求:SRS_CryptoStack_00115

如果配置选项 KeyMCryptoKeyHandlerStartFinalizeEnabled 设置为 TRUE,则可以选择调用密钥处理程序。KeyM_Start() 函数将依次调用 KeyM_KH_Start() 函数,并传入与 KeyM_Start() 相同的参数。KeyM_KH_Start() 的返回值将作为 KeyM_Start() 的返回值。

原理:KeyM_KH_Start() 函数可以执行 OEM 特定的检查,例如对任何输入数据进行签名验证,以证明密钥管理操作的真实性。注意:KeyMCryptoKeyHandlerStartFinalizeEnabled 的定义仅在 KeyMCryptoKeyStartFinalizeFunctionEnabled 设置为 TRUE 时才有效。

[SWS_KeyM_00007] 上游需求:SRS_CryptoStack_00013

如果配置选项 KeyMCryptoKeyStartFinalizeFunctionEnabled 设置为 FALSE,则密钥管理模块不会提供 KeyM_Start() 和 KeyM_Finalize() 函数。此时可以随时执行密钥更新操作。

[SWS_KeyM_00008] 上游需求:SRS_CryptoStack_00118

会话通过调用 KeyM_Finalize() 关闭。在调用过程中,任何在会话中更新过的密钥都将通过调用 Csm_KeySetValid() 设置为有效。在该函数完成其操作后,不再接受进一步的密钥更新操作。

[SWS_KeyM_00009] 上游需求:SRS_CryptoStack_00119, SRS_CryptoStack_00096

函数 KeyM_Finalize() 应验证所有已更新的密钥,即使其中一个密钥验证失败,也不应中止操作。

[SWS_KeyM_00010] 上游需求:SRS_CryptoStack_00013

如果配置选项 KeyMCryptoKeyPrepareFunctionEnabled 设置为 TRUE,则提供函数 KeyM_Prepare()。该函数目前没有任何功能性行为。如果配置选项设置为 FALSE,则不会提供功能接口。

[SWS_KeyM_00011] 上游需求:SRS_CryptoStack_00108、SRS_CryptoStack_00115、toStack_00118、SRS_CryptoStack_00110

如果配置选项 KeyMCryptoKeyHandlerPrepareEnabled 设置为 TRUE,则对 KeyM_Prepare() 的调用将依次传递给 KeyM_KH_Prepare(),并且参数和返回值将相应传递

其目的是在密钥更新会话启动后,在开始时调用一次 KeyM_Prepare()。调用的诊断服务可以向密钥处理程序提供执行后续密钥更新操作所需的特定数据。例如,它可用于提取密钥管理器所需的特定加密驱动程序信息,这些信息从(SHE)硬件中提取并再次在输出缓冲区中提供。或者,它可以启动一个 OEM 特定的密钥协商过程,其结果在之后的密钥更新过程中是必要的。另一种可能性是,在准备过程中密钥管理器提供一个(加密的)公共密钥。特定的密钥处理程序能够将密钥(解密后)存储到 CSM 中。这会生成一个分配给 CSM 密钥的公共密钥,并且可以进一步用于从中派生其他密钥。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 6:11:50

Python CAD自动化处理终极指南:工程图纸处理的完整教程

Python CAD自动化处理终极指南:工程图纸处理的完整教程 【免费下载链接】ezdxf Python interface to DXF 项目地址: https://gitcode.com/gh_mirrors/ez/ezdxf 在当今数字化工程环境中,CAD自动化处理已成为提升设计效率、保证质量一致性的关键技术…

作者头像 李华
网站建设 2026/3/31 3:38:06

Degrees of Lewdity中文汉化终极指南:快速上手完整教程

Degrees of Lewdity中文汉化终极指南:快速上手完整教程 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Localization …

作者头像 李华
网站建设 2026/3/31 23:46:39

LosslessCut视频无损剪辑完全指南:告别画质损失的终极解决方案

还在为视频剪辑后画质明显下降而头疼不已吗?LosslessCut这款革命性的无损视频编辑神器,让你在保持原始画质的前提下完成专业级视频处理。作为音视频编辑领域的多功能工具,它通过先进的无损转封装技术,完美保留视频的每一个像素细节…

作者头像 李华
网站建设 2026/4/2 0:53:07

突破Fiji启动瓶颈:Windows系统首启延迟8大解决方案全解析

突破Fiji启动瓶颈:Windows系统首启延迟8大解决方案全解析 【免费下载链接】fiji A "batteries-included" distribution of ImageJ :battery: 项目地址: https://gitcode.com/gh_mirrors/fi/fiji Fiji作为ImageJ的"全功能发行版"&#xf…

作者头像 李华