AUTOSAR_SWS_CryptoDriver 中文翻译

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

本翻译覆盖原文档 1-81 页正文,约 1.27 MB / 81 页。
原文为软件规范(SWS, Software Specification),定义密码驱动(Crypto Driver, CRYPTO)模块的功能、API 与配置——含 Job Processing、Job Cancellation、Key Management 三类 API 与丰富配置。
本翻译为"忠实精翻+结构化索引"型——保留全部章节、~150 条 SWS_Crypto_NNNNN 规范项 ID、错误分类、配置参数。


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

本规约规约 AUTOSAR 基础软件模块密码驱动(Crypto Driver, CRYPTO)的功能、API 与配置。

密码驱动位于微控制器抽象层(Microcontroller Abstraction Layer, MCAL),位于密码硬件抽象层(Crypto Interface, CRYIF)与上层服务层(Crypto Service Manager, CSM)之下。CRYPTO 是针对特定设备的驱动,仅抽象硬件支持的特性。

密码驱动允许定义不同的密码驱动对象(CDO)(如 AES 加速器、SW 组件等),用于在不同缓冲区的并发请求。每个硬件对象应支持基于优先级的作业处理。密码软件解决方案(即基于软件的 CDD)可定义与密码驱动相同的接口,以与上层交互,为应用提供接口。

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

缩略语描述
CDDComplex Device Driver(复杂设备驱动)
CSMCrypto Service Manager(密码服务管理器)
CRYIFCrypto Interface(密码接口)
CRYPTOCrypto Driver(密码驱动)
DETDefault Error Tracer(默认错误追踪器)
HSMHardware Security Module(硬件安全模块)
HWHardware(硬件)
SHESecurity Hardware Extension(安全硬件扩展)
SWSoftware(软件)

2.1 术语表(Glossary of Terms)

术语描述
密码驱动对象(Crypto Driver Object, CDO)密码驱动实现一个或多个密码驱动对象。密码驱动对象可在硬件或软件中提供不同的密码原语。一个密码驱动的密码驱动对象彼此独立。每个密码驱动对象仅有一个工作区(即同时只能执行一个密码原语)。
密钥(Key)密钥可被 CSM 中的作业引用。在密码驱动中,密钥引用特定密钥类型。
密钥类型(Key Type)密钥类型由对密钥元素的引用组成。密钥类型通常由密码驱动的厂商预配置。
密钥元素(Key Element)密钥元素用于存储数据。这些数据可以是密钥材料或 AES 加密所需的 IV。它也可用于配置密钥管理函数的行为。
通道(Channel)通道是从密码服务管理器队列经密码接口到特定密码驱动对象的路径。
作业(Job)作业是作业已配置的密码原语的实例。
密码原语(Crypto Primitive)密码原语是已配置密码算法在密码驱动对象中实现的实例。
操作(Operation)密码原语的操作声明应执行密码原语的哪一部分。有三种不同的操作模式:START(指示密码原语的新请求,且应取消同一作业和原语的所有先前请求)、UPDATE(指示密码原语期望输入数据)、FINISH(指示此后所有数据完全馈送,密码原语可完成计算)。也可通过连接 operation_mode 参数的对应位一次执行多于一个操作。
优先级(Priority)作业的优先级定义其重要性。优先级越高(值越大),作业将被越即时地执行。密码作业的优先级是配置的一部分。

3 相关文档(Related documentation)

3.1 输入文档

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

3.2 相关标准与规范

无。

3.3 相关规范

无其他。

4 约束与假设(Constraints and assumptions)

4.1 限制(Limitations)

本 SWS 仅适用于 CRYPTO 模块,不涵盖 CRYIF、CSM 与 KeyM 的完整规范。

4.2 适用性(Applicability to car domains)

CRYPTO 适用于所有汽车域。

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

5.1 文件结构(File structure)

5.1.1 代码文件结构(Code File Structure)

Crypto.c                    # 主源文件
Crypto_Lcfg.c               # Link-time 配置
Crypto_PBcfg.c              # PostBuild 配置

头文件结构遵循 MCAL 通用结构。

6 需求可追溯性(Requirements traceability)

CRYPTO 满足的 RS_BRF_NNNNN 需求:

需求描述
RS_BRF_01000AUTOSAR 架构应将 BSW 组织为硬件独立与硬件依赖两层
RS_BRF_01056AUTOSAR BSW 模块应提供标准化接口
RS_BRF_01456AUTOSAR 服务应提供系统范围的密码功能
RS_BRF_02031AUTOSAR 应提供对软件或硬件实现的密码方案的统一访问
RS_BRF_02032AUTOSAR 安全应允许密码原语集成到密码服务管理器

CRYPTO 自身的 SWS_Crypto_NNNNN 规范项 ID 约 150+ 条(详细列表见原文第 6/7/8/10 章)。

7 功能规范(Functional specification)

7.1 预配置(Pre-Configuration)

7.1.1 密码能力(Cryptographic capabilities)

CRYPTO 应在预配置中声明:

7.1.2 可用密钥(Available Keys)

CRYPTO 应在预配置中声明可用密钥集合:

7.2 通用行为(General Behavior)

7.2.1 正常运行(Normal Operation)

CRYPTO 的正常操作流程:

  1. CRYIF 通过虚拟通道将作业路由到特定 CDO;
  2. CRYPTO 在 CDO 上启动作业(START 操作);
  3. CRYPTO 处理输入数据(UPDATE 操作,多次);
  4. CRYPTO 完成计算(FINISH 操作);
  5. CRYPTO 同步/异步返回结果;
  6. 异步情况下 CRYPTO 通过 Crypto_<vi>_<ai>_CallbackNotification() 通知完成。

7.2.2 功能需求(Functional Requirements)

CRYPTO 应支持的功能:

7.2.3 设计笔记(Design Notes)

7.2.4 密钥管理(Key Management)

CRYPTO 应提供:

7.2.5 密钥格式(Key Formats)

CRYPTO 支持的密钥格式:

7.3 错误分类(Error classification)

7.3.1 开发错误(Development Errors)

错误码含义
CRYPTO_E_UNINIT0x00CRYPTO 未初始化
CRYPTO_E_INIT_FAILED0x01初始化失败
CRYPTO_E_PARAM_POINTER0x02无效的指针
CRYPTO_E_PARAM_HANDLE0x03无效的句柄
CRYPTO_E_PARAM_VALUE0x04无效的参数值
CRYPTO_E_KEY_SIZE_MISMATCH0x05密钥大小不匹配
CRYPTO_E_KEY_EMPTY0x06密钥为空
CRYPTO_E_KEY_READ_FAILED0x07密钥读取失败
CRYPTO_E_KEY_WRITE_FAILED0x08密钥写入失败
CRYPTO_E_KEY_NOT_AVAILABLE0x09密钥不可用
CRYPTO_E_JOB_CANCELLED0x0A作业被取消
CRYPTO_E_QUEUE_FULL0x0B队列已满
CRYPTO_E_NO_KEY_ELEMENT0x0C无密钥元素
CRYPTO_E_SMALL_BUFFER0x0D缓冲区过小

7.3.2 运行时错误(Runtime Errors)

错误码含义
CRYPTO_E_ENTROPY_EXHAUSTED0x01熵耗尽

7.3.3 瞬态故障(Transient Faults)

无。

7.3.4 生产错误(Production Errors)

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

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

无。

8 API 规范(API specification)

8.1 导入类型(Imported types)

8.2 类型定义(Type Definitions)

typedef uint16 Crypto_ConfigType;  // 抽象配置类型
typedef uint16 Crypto_AlgorithmFamilyType;

8.3 函数定义(Function definitions)

8.3.1 通用 API(General API)

API签名功能
Crypto_<vi>_<ai>_Initvoid Crypto_<vi>_<ai>_Init(const Crypto_ConfigType* ConfigPtr)初始化 CRYPTO
Crypto_<vi>_<ai>_GetVersionInfovoid Crypto_<vi>_<ai>_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr)获取版本信息

8.3.2 作业处理接口(Job Processing Interface)

API签名功能
Crypto_<vi>_<ai>_ProcessJobStd_ReturnType Crypto_<vi>_<ai>_ProcessJob(Crypto_JobType* job)处理作业(同步)
Crypto_<vi>_<ai>_Update...更新作业输入
Crypto_<vi>_<ai>_Finish...完成作业
Crypto_<vi>_<ai>_Start...开始新作业
Crypto_<vi>_<ai>_CallbackNotificationvoid Crypto_<vi>_<ai>_CallbackNotification(Crypto_JobType* job, Crypto_ResultType result)异步完成回调
Crypto_<vi>_<ai>_GetJobType...获取作业类型

8.3.3 作业取消接口(Job Cancellation Interface)

API签名功能
Crypto_<vi>_<ai>_CancelJobStd_ReturnType Crypto_<vi>_<ai>_CancelJob(Crypto_JobType* job)取消单个作业
Crypto_<vi>_<ai>_CancelJobs...取消队列中的所有作业

8.3.4 密钥管理接口(Key Management Interface)

API签名功能
Crypto_<vi>_<ai>_KeyElementSetStd_ReturnType KeyElementSet(uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyElement, uint32 keyElementLength)设置密钥元素
Crypto_<vi>_<ai>_KeyElementGet...获取密钥元素
Crypto_<vi>_<ai>_KeyElementCopy...复制密钥元素
Crypto_<vi>_<ai>_KeyCopy...复制密钥
Crypto_<vi>_<ai>_KeyGenerate...生成密钥
Crypto_<vi>_<ai>_KeyDerive...派生密钥
Crypto_<vi>_<ai>_KeyExchange...交换密钥
Crypto_<vi>_<ai>_KeyWrap...包装密钥
Crypto_<vi>_<ai>_KeyUnwrap...解包密钥
Crypto_<vi>_<ai>_CertificateParse...解析证书
Crypto_<vi>_<ai>_CertificateVerify...验证证书
Crypto_<vi>_<ai>_KeyElementIdsGet...获取密钥元素 ID 列表

共 12+ 密钥管理 API 函数。

8.4 调度函数(Scheduled functions)

CRYPTO 可定义调度函数 Crypto_<vi>_<ai>_MainFunction(),由 RTE 周期性调用以处理后台作业(如作业队列轮询、密钥管理后台处理)。

8.5 预期接口(Expected Interfaces)

8.5.1 到标准软件模块的接口(Interfaces to Standard Software Modules)

8.5.2 强制接口(Mandatory Interfaces)

8.5.3 可选接口(Optional Interfaces)

9 序列图(Sequence diagrams)

序列图 9.1 描述 CRYPTO 在同步作业处理中的角色:

  1. CRYIF 通过 Crypto_<vi>_<ai>_ProcessJob() 调用 CRYPTO;
  2. CRYPTO 验证参数;
  3. CRYPTO 在 CDO 上启动作业;
  4. CRYPTO 处理作业;
  5. 同步结果直接返回;异步结果通过回调通知。

序列图 9.2-9.5 分别描述异步作业、作业取消、密钥设置、密钥派生等流程。

配置规范(Configuration specification)

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

10.1.1 Crypto(根容器)

CRYPTO 模块根容器包含:

参数描述
CryptoDevErrorDetect开发错误检测开关
CryptoVersionInfoApiCrypto_GetVersionInfo() API 开关
CryptoEcucPartitionRefECU 分区引用

10.1.2 CryptoGeneral(通用配置)

参数描述
CryptoNumberOfCryptoDriverObjectsCDO 数量
CryptoNumberOfKeys密钥数量

10.1.3 CryptoDriverObjects(CDO 列表)

包含多个 CryptoDriverObject 子容器。

10.1.4 CryptoDriverObject(CDO)

参数描述
CryptoDriverObjectIdCDO ID
CryptoDriverObjectQueueSize队列大小
CryptoDriverObjectPriority优先级
CryptoPrimitiveRef支持的密码原语引用列表

10.1.5 CryptoKeys(密钥列表)

包含多个 CryptoKey 子容器。

10.1.6 CryptoKey(密钥)

参数描述
CryptoKeyId密钥 ID
CryptoKeyTypeRef密钥类型引用
CryptoKeyElementList密钥元素列表

10.1.7 CryptoKeyElements(密钥元素列表)

包含多个 CryptoKeyElement 子容器。

10.1.8 CryptoKeyElement(密钥元素)

参数描述
CryptoKeyElementId元素 ID
CryptoKeyElementInitValueLength初始值长度
CryptoKeyElementInitValue初始值
CryptoKeyElementReadAccess读访问权限
CryptoKeyElementWriteAccess写访问权限
CryptoKeyElementFormat格式

10.1.9 CryptoKeyTypes(密钥类型列表)

包含多个 CryptoKeyType 子容器。

10.1.10 CryptoKeyType(密钥类型)

参数描述
CryptoKeyTypeId类型 ID
CryptoKeyElementList支持的元素列表
CryptoAlgorithmRef支持的算法引用

10.1.11 CryptoPrimitives(密码原语列表)

包含多个 CryptoPrimitive 子容器。

10.1.12 CryptoPrimitive(密码原语)

参数描述
CryptoPrimitiveId原语 ID
CryptoAlgorithmFamily算法族(AES、SHA、RSA、ECC 等)
CryptoAlgorithmMode算法模式(ECB、CBC、GCM 等)
CryptoAlgorithmSecondaryFamily二级算法族
CryptoKeyLength密钥长度
CryptoKeyElementList密钥元素列表
CryptoServiceCode服务代码(HASH、AESENCRYPT 等)

10.2 发布信息(Published Information)

发布信息包括 CRYPTO 模块版本、配置变体、支持的算法列表、密钥数量、CDO 数量等。


📋 校对记录

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