AUTOSAR_SWS_KeyManager 中文翻译

文档编号:907 | 状态:Final(正式发布) | 发布于:AUTOSAR CP Release 4.4.0(2018-10-31)
所属标准:AUTOSAR Classic Platform 标准 | 文档责任方:AUTOSAR | 保密等级:AUTOSAR CONFIDENTIAL

本翻译覆盖原文档 1-113 页正文,约 1.78 MB / 113 页。
原文为软件规范(SWS, Software Specification),定义密钥管理器(Key Manager, KeyM)模块的功能、API 与配置——含 Crypto Key 子模块(密钥管理)与 Certificate 子模块(证书管理),共 31 个 API 与丰富的配置容器(13+ ECUC)。
本翻译为"忠实精翻+结构化索引"型——保留全部章节、约 80 条 SWS_KeyM_NNNNN 规范项 ID、错误分类、配置参数。


1 引言与功能概述(Introduction and functional overview)

AUTOSAR 密钥管理(Key Manager, KeyM)模块由两个子模块组成:密钥子模块(Crypto Key Submodule)与证书子模块(Certificate Submodule)。

密钥子模块提供 API 与配置项,用于引入或更新预定义的密码密钥材料。它充当密钥客户端(Key Client)以解读来自密钥服务器(Key Server)的数据,并创建相应的密钥材料。这些密钥被提供给密码服务管理器(Crypto Service Manager, CSM)。在密钥材料成功安装后,应用能够使用密码操作。这允许 OEM 在生产或维护阶段将密钥材料引入到 ECU,与应用分离。

证书子模块提供 API 与配置,以操作证书。它允许定义证书槽(Certificate Slot)并将其按层级关联(如 PKI 中使用)。证书可以永久存储,如根证书(Root Certificate)或中间证书(Intermediate Certificate),以便使用证书链验证给定证书。此外,证书子模块允许访问证书元素或验证其内容。

1.1 重要说明(Important note)

本规范为车辆密钥与证书管理系统提供 API 骨架。并非所有功能均已完全规范。这可能允许一些解释与实现的自由。尽管接口以通用与灵活的方式设计,仍可能在未来的 AUTOSAR 版本中变更。

2 缩略语与缩写(Acronyms and abbreviations)

缩略语描述
KeyMKey Manager(密钥管理器)
PKIPublic Key Infrastructure(公钥基础设施)
CSRCertificate Signing Request(证书签名请求)
CSMCrypto Service Manager(密码服务管理器)
CRLCertificate Revocation List(证书撤销列表)
CACertificate Authority(证书授权机构)
OIDObject Identifier(对象标识符)。用于标识证书元素或组或证书元素列表的字节数组。
NVMNon-Volatile Memory(非易失性存储)
STBMSynchronized Time-Base Manager(同步时间基准管理器)
DETDefault Error Tracer(默认错误追踪器)

3 相关文档(Related documentation)

3.1 输入文档(Input documents)

  1. AUTOSAR_EXP_LayeredSoftwareArchitecture — 分层软件架构
  2. AUTOSAR_SRS_BSWGeneral — 基础软件通用需求
  3. AUTOSAR_SWS_BSWGeneral — 基础软件通用规范
  4. AUTOSAR_SWS_CryptoServiceManager — 密码服务管理器规范
  5. AUTOSAR_SRS_CryptoStack — 密码栈需求

3.2 相关标准与规范(Related standards and norms)

  1. IEC 7498-1 The Basic Model, IEC Norm, 1994
  2. IETF 5280 Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
  3. SHE – Secure Hardware Extension, Functional Specification, V1.1

3.3 相关规范(Related specification)

AUTOSAR 提供基础软件通用规范(SWS BSW General)[3],对密钥管理模块同样有效。因此 SWS BSW General [3] 应被视为密钥与证书管理模块的附加必备规范。

4 约束与假设(Constraints and assumptions)

4.1 限制(Limitations)

密钥管理模块应(shall)与密码服务管理器及其底层模块一起使用。

目前每个 CsmKey 仅支持单个 KeyElement(ID = 1)。

4.2 适用性(Applicability to car domains)

本规范对特定汽车域无限制。

5 与其他模块的依赖(Dependencies to other modules)

本章列出 AUTOSAR KeyM 模块使用到的与其他模块的关系。

5.1 与密码服务管理器的依赖(Dependencies to Crypto Service Manager)

KeyM 模块依赖于密码服务管理器(CSM)模块提供的密码算法与函数。KeyM 模块需要 API 函数以检索与设置密钥元素并验证证书签名,包括:

5.2 与非易失性存储的依赖(Dependencies to Non Volatile Memory)

KeyM 可配置为在非易失性存储(NVM)中存储密钥材料。这需要 NVM 的接口。

5.3 与同步时间基准的依赖(Dependencies to Synchronized Time Base)

证书验证周期的时间由同步时间基准管理器(STBM, Synchronized Time-Base Manager)提供。

6 需求可追溯性(Requirements traceability)

KeyM 满足的 RS_BRF_NNNNN 需求(如 RS_BRF_01000、RS_BRF_01056、RS_BRF_01456、RS_BRF_02031、RS_BRF_02032),KeyM 自身的 SWS_KeyM_NNNNN 规范项 ID 约 80+ 条(详细列表见原文第 6/7/8/10 章;编号范围 00001-00302)。

7 功能规范(Functional specification)

7.1 密钥子模块(Crypto key submodule)

7.1.1 通用行为(General behavior)

KeyM 的 Crypto Key 子模块提供基于"会话"(Session)的 API 模式:

  1. 会话启动:通过 KeyM_Start() 启动会话;
  2. 会话准备(可选):通过 KeyM_Prepare() 准备会话;
  3. 密钥更新:通过 KeyM_Update() 触发密钥更新(典型由诊断事件触发);
  4. 会话关闭:通过 KeyM_Finalize() 关闭会话;
  5. 验证(可选):通过 KeyM_Verify() 验证密钥。

主要规范项([SWS_KeyM_NNNNN]):

ID功能描述
SWS_KeyM_00001KeyM 的 Crypto Key 子模块应(shall)提供配置项以执行密钥操作
SWS_KeyM_00002对 KeyM 中证书子模块的支持应(shall)是可配置的
SWS_KeyM_00003Crypto Key 子模块可(can)配置为执行密钥操作(密钥更新/获取)
SWS_KeyM_00004会话通过 KeyM_Start() 调用启动;之后可使用密钥更新函数
SWS_KeyM_00005默认情况下,KeyM_Start() 函数不考虑任何输入数据
SWS_KeyM_00006可选地,如果配置启用了密钥处理器(Key Handler),则可调用密钥处理器
SWS_KeyM_00007如果配置选项启用了 KeyMCryptoKeyStartFinalizeFunctionEnabled,则在会话开始时调用密钥回调
SWS_KeyM_00008会话通过 KeyM_Finalize() 调用关闭;调用期间会进行最终化操作
SWS_KeyM_00009KeyM_Finalize() 在所有密钥已成功更新时返回 E_OK
SWS_KeyM_00010如果配置启用了 KeyMCryptoKeyVerifyFunctionEnabled,则执行验证
SWS_KeyM_00011如果配置启用了 KeyMCryptoKeyStartFinalizeFunctionEnabled,则执行开始/结束函数
SWS_KeyM_00012通过 KeyM_Update() 调用触发密钥更新(典型由诊断事件)
SWS_KeyM_00013如果 KeyM_Update() 被调用且没有匹配密钥 ID,则 KeyM_Update() 立即返回 E_OK
SWS_KeyM_00014如果 KeyM_Update() 被调用且 KeyMCryptoKeyGenerate 被设置,则 KeyM 触发密钥生成
SWS_KeyM_00015KeyM_Update() 被调用且识别出 KeyMCryptoKeyId 时,执行更新
SWS_KeyM_00016如果识别出密钥 ID 且 KeyMCryptoKeyGenerationTypeCUSTOM,则调用密钥处理器
SWS_KeyM_00017如果识别出密钥 ID 且 KeyMCryptoKeyGenerationTypeDEFINED,则使用预定义密钥
SWS_KeyM_00018如果 KeyMCryptoKeyStartFinalizeFunctionEnabled 被设置为 true,则调用开始/结束回调
SWS_KeyM_00019如果配置项 KeyMCryptoKeyUpdateFunctionEnabled 启用,则调用更新函数
SWS_KeyM_00020如果 KeyMCryptoKeyVerifyFunctionEnabled 启用,则调用验证函数

7.2 证书子模块(Certificate Submodule)

7.2.1 通用行为(General behavior)

证书子模块提供证书管理功能:

7.2.2 初始化(Initialization)

KeyM 初始化时(KeyM_Init()),证书子模块会从 NVM 检索永久存储的证书。

7.2.3 证书配置(Certificate configuration)

证书通过 KeyMCertificate 容器配置:

7.2.4 操作模式(Operation mode)

证书操作模式:

主要规范项:

ID功能描述
SWS_KeyM_00021如果 KeyMCertServiceCertificateFunctionEnabled 配置为 true,则启用 KeyM_ServiceCertificate()(由密钥主控触发)
SWS_KeyM_00022初始化时,证书子模块从 NVM 检索永久存储的证书
SWS_KeyM_00023如果解析操作成功,则证书状态为 PARTIAL,等待进一步验证
SWS_KeyM_00024应(shall)至少有一个证书被定义为 PKI 的根证书
SWS_KeyM_00025通过 KeyM_ServiceCertificate() 调用存储证书以供验证
SWS_KeyM_00026证书解析过程在 KeyM_ServiceCertificate() 之后立即启动
SWS_KeyM_00027解析过程识别证书是否以 DER/PEM 格式提供
SWS_KeyM_00028通过 KeyM_VerifyCertificate()KeyM_VerifyCertificates()KeyM_VerifyCertificateChain() 按需验证证书
SWS_KeyM_00029至少以下验证步骤应(shall)成功:签名验证、有效期检查、撤销检查
SWS_KeyM_00030验证函数应(shall)返回 E_OK 当所有证书均有效
SWS_KeyM_00031验证函数应(shall)返回 E_NOT_OK 当至少一个证书无效
SWS_KeyM_00032验证函数应(shall)返回 KEYM_CERTIFICATE_INVALID 当证书格式错误
SWS_KeyM_00033验证函数应(shall)返回 KEYM_CERTIFICATE_EXPIRED 当证书过期
SWS_KeyM_00034验证函数应(shall)返回 KEYM_CERTIFICATE_REVOKED 当证书被撤销
SWS_KeyM_00035验证函数应(shall)返回 KEYM_CERTIFICATE_CHAIN_INCOMPLETE 当链不完整

7.3 错误分类(Error classification)

7.3.1 开发错误(Development Errors)

错误码含义
KEYM_E_UNINIT0x00KeyM 未初始化
KEYM_E_INIT_FAILED0x01初始化失败
KEYM_E_PARAM_POINTER0x02无效的指针
KEYM_E_PARAM_HANDLE0x03无效的句柄
KEYM_E_PARAM_VALUE0x04无效的参数值
KEYM_E_ALREADY_INITIALIZED0x05已初始化
KEYM_E_UNCONFIGURED0x06未配置

7.3.2 运行时错误(Runtime Errors)

错误码含义
KEYM_E_NVM_READ_FAILEDNVM 读取失败
KEYM_E_NVM_WRITE_FAILEDNVM 写入失败
KEYM_E_CERTIFICATE_INVALID证书无效

7.3.3 瞬态故障(Transient Faults)

无。

7.3.4 生产错误(Production Errors)

无(KeyM 不直接产生生产错误;由 Dem 报告)。

7.3.5 扩展生产错误(Extended Production Errors)

无。

8 API 规范(API specification)

8.1 导入类型(Imported types)

8.2 类型定义(Type Definitions)

类型描述
KeyM_ConfigTypeKeyM 抽象配置类型(SWS_KeyM_00041)
KeyM_KH_UpdateOperationTypeKey Handler 更新操作类型枚举(START/UPDATE/FINISH/SAVE)
KeyM_CertElementIteratorType证书元素迭代器类型(用于 KeyM_CertElementGetFirst/Next()
KeyM_CryptoKeyIdType密钥 ID 类型(SWS_KeyM_00302)
KeyM_CertDataType证书数据类型

8.3 函数定义(Function definitions)

8.3.1 通用(General)

API签名功能
KeyM_Initvoid KeyM_Init(const KeyM_ConfigType* ConfigPtr)初始化 KeyM(SWS_KeyM_00043/00044/00045/00046)
KeyM_Deinitvoid KeyM_Deinit(void)反初始化 KeyM(SWS_KeyM_00047/00048)
KeyM_GetVersionInfovoid KeyM_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr)获取版本信息(SWS_KeyM_00049)

8.3.2 密钥操作(Crypto key operation)

API签名功能
KeyM_StartStd_ReturnType KeyM_Start(void)启动密钥管理会话(SWS_KeyM_00050-...)
KeyM_PrepareStd_ReturnType KeyM_Prepare(void)准备密钥管理会话
KeyM_UpdateStd_ReturnType KeyM_Update(void)更新密钥(诊断事件触发)
KeyM_FinalizeStd_ReturnType KeyM_Finalize(void)关闭密钥管理会话
KeyM_VerifyStd_ReturnType KeyM_Verify(void)验证密钥

8.3.3 证书处理(Certificate handling)

API签名功能
KeyM_ServiceCertificateStd_ReturnType KeyM_ServiceCertificate(KeyM_ServiceCertificateType Service, const uint8* Data, uint32 Length)服务证书(添加/更新/删除)
KeyM_SetCertificate...设置证书(用于静态证书)
KeyM_GetCertificate...获取证书数据
KeyM_VerifyCertificatesStd_ReturnType KeyM_VerifyCertificates(void)验证所有证书
KeyM_VerifyCertificateStd_ReturnType KeyM_VerifyCertificate(uint16 CertId)验证指定证书
KeyM_VerifyCertificateChain...验证证书链
KeyM_CertElementGet...获取证书元素(按 OID)
KeyM_CertElementGetFirst...获取第一个证书元素
KeyM_CertElementGetNext...获取下一个证书元素(迭代)
KeyM_CertGetStatus...获取证书状态

共 9 个证书处理 API 函数。

8.4 回调定义(Call-out definitions)

API签名功能
KeyM_KH_Start...Key Handler 开始回调(由应用实现)
KeyM_KH_Prepare...Key Handler 准备回调
KeyM_KH_Update...Key Handler 更新回调
KeyM_KH_Finalize...Key Handler 完成回调
KeyM_KH_Verify...Key Handler 验证回调
KeyM_KH_ServiceCertificate...Key Handler 服务证书回调
KeyM_CryptoKeyUpdateCallbackNotificationvoid KeyM_CryptoKeyUpdateCallbackNotification(...)密钥更新完成回调
KeyM_CryptoKeyFinalizeCallbackNotification...密钥最终化完成回调
KeyM_CryptoKeyVerifyCallbackNotification...密钥验证完成回调
KeyM_ServiceCertificateCallbackNotification...证书服务完成回调
KeyM_CertificateVerifyCallbackNotification...证书验证完成回调

共 11 个回调函数(5 个 Key Handler + 5 个 Callback Notification + 1 个 ServiceCertificate)。

8.5 调度函数(Scheduled functions)

API功能
KeyM_MainFunction主函数(前/后台处理)
KeyM_MainBackgroundFunction后台函数(异步证书处理)

8.6 预期接口(Expected Interfaces)

8.6.1 强制接口(Mandatory Interfaces)

8.6.2 可选接口(Optional Interfaces)

8.6.3 可配置接口(Configurable interfaces)

KeyM 包含以下可配置接口:

8.7 服务接口(Service Interfaces)

8.7.1 本章范围(Scope of this Chapter)

本章定义 KeyM 提供的服务接口(含 RTE Port Interface)。

8.7.2 数据类型(Data Types)

类型描述
KeyM_ResultTypeKeyM 操作结果类型枚举
KeyM_ServiceCertificateType服务证书操作类型枚举(ADD/UPDATE/REMOVE)
KeyM_CertificateStatusType证书状态类型枚举(NOT_PARSED/PARTIAL/VALID/INVALID/EXPIRED/REVOKED)
KeyM_CertElementType证书元素类型(OID 引用 + 值)
KeyM_CertElementIdType证书元素 ID 类型

8.7.3 客户端-服务器接口(Client-Server-Interfaces)

KeyM 提供以下客户端-服务器接口:

8.7.4 端口(Ports)

KeyM 模块提供以下端口:

9 序列图(Sequence diagrams)

9.1 存储单个密钥(Store single key)

  1. 应用通过 KeyM_Start() 启动会话;
  2. 应用通过 KeyM_Update() 触发密钥更新;
  3. KeyM 通过 CSM 更新密钥元素;
  4. KeyM 调用 KeyM_Finalize() 关闭会话;
  5. KeyM 通过 NVM 存储密钥(如配置)。

9.2 存储多个密钥(Store multiple keys)

与 9.1 类似,但 KeyM 依次更新多个密钥(按配置顺序)。

9.3 派生密钥(Derive key)

  1. 应用调用 KeyM_Start()
  2. 应用调用 KeyM_Prepare() 准备派生参数;
  3. 应用调用 KeyM_Update() 触发派生;
  4. KeyM 调用 Csm_KeyDerive() 派生密钥;
  5. KeyM 调用 KeyM_Finalize() 关闭会话。

9.4 添加工作证书(Add working certificate)

  1. 应用调用 KeyM_ServiceCertificate(KEYM_SERVICE_ADD, data, len)
  2. KeyM 解析证书(DER/PEM);
  3. KeyM 调用 KeyM_VerifyCertificate() 验证证书;
  4. 验证完成后 KeyM 将证书存储到工作槽(不存储到 NVM)。

9.5 添加根/中间证书(Add root or intermediate certificate)

  1. 应用调用 KeyM_ServiceCertificate(KEYM_SERVICE_ADD, data, len)
  2. KeyM 解析证书;
  3. KeyM 调用 KeyM_VerifyCertificate() 验证证书;
  4. 验证完成后 KeyM 将证书存储到 NVM(永久存储);
  5. KeyM 触发 KeyM_ServiceCertificateCallbackNotification()

10 配置规范(Configuration specification)

10.1 容器与配置参数(Containers and configuration parameters)

10.1.1 KeyM(根容器)

参数描述
KeyMDevErrorDetect开发错误检测开关
KeyMVersionInfoApiKeyM_GetVersionInfo() API 开关
KeyMMainFunctionPeriodKeyM_MainFunction() 调度周期(秒)
KeyMNvmJobProcessingNVM 作业处理周期(秒)
KeyMServiceCertificateFunctionEnabledKeyM_ServiceCertificate() 开关

10.1.2 KeyMGeneral(通用配置)

包含 Crypto Key 子模块与 Certificate 子模块的通用配置。

10.1.3 KeyMCertificate(证书槽)

参数描述
KeyMCertificateId证书槽 ID
KeyMCertificateType证书类型(ROOT/INTERMEDIATE/WORKING/LOWERPR)
KeyMCertificateStorage存储位置(NV/STATIC)
KeyMCertificateLowerRef下级证书引用
KeyMCertificateElementList证书元素列表

10.1.4 KeyMCertificateElement(证书元素)

参数描述
KeyMCertificateElementId元素 ID(OID 引用)
KeyMCertificateElementVerification验证配置引用

10.1.5 KeyMCertificateElementVerification(证书元素验证)

参数描述
KeyMCertificateElementVerificationEnable验证开关
KeyMCertificateElementRule验证规则引用列表

10.1.6 KeyMCertificateElementRule(验证规则)

参数描述
KeyMCertificateElementRuleId规则 ID
KeyMCertificateElementCondition条件引用
KeyMCertificateElementConditionType条件类型(ALWAYS/EQUAL/LOWER/HIGHER)

10.1.7 KeyMCertificateElementCondition(证书元素条件)

条件类型为 VALUEARRAYSENDERRECEIVER 三种之一。

10.1.8 KeyMCertificateElementConditionPrimitive(条件原语)

参数描述
KeyMCertificateElementConditionPrimitiveType原语类型(EQUAL/LOWER/HIGHER)
KeyMCertificateElementConditionValue条件值

10.1.9 KeyMCertificateElementConditionArray(条件数组)

包含 KeyMCertificateElementConditionArrayElement 子容器列表。

10.1.10 KeyMCertificateElementConditionArrayElement(条件数组元素)

参数描述
KeyMCertificateElementConditionArrayElementIndex数组元素索引

10.1.11 KeyMCertificateElementConditionValue(条件值)

参数描述
KeyMCertificateElementConditionValueData条件值数据

10.1.12 KeyMCertificateElementConditionSenderReceiver(条件发送接收)

参数描述
KeyMCertificateElementConditionSenderReceiverHandleId发送接收句柄 ID

10.1.13 KeyMCryptoKey(密钥配置)

参数描述
KeyMCryptoKeyId密钥 ID
KeyMCryptoKeyGenerationType生成类型(DEFINED/CUSTOM)
KeyMCryptoKeyStartFinalizeFunctionEnabled开始/完成回调开关
KeyMCryptoKeyUpdateFunctionEnabled更新回调开关
KeyMCryptoKeyVerifyFunctionEnabled验证回调开关
KeyMCryptoKeyNvmStorageNVM 存储开关

10.1.14 KeyMNvmBlock(NVM 块)

参数描述
KeyMNvmBlockIdNVM 块 ID
KeyMNvmBlockLengthNVM 块长度
KeyMNvmRefNvMBlockDescriptor 引用

10.2 发布信息(Published Information)

发布信息包括 KeyM 模块版本、配置变体、证书数量、密钥数量等。

11 不适用需求(Not applicable requirements)

本节列出 AUTOSAR 4.4 中对 KeyM 不适用的需求(无具体条目;保留章节以保持与 SWS 模板一致)。


📋 校对记录

校对轮次:L1 自动校对(2026-06-13)