1159 lines
49 KiB
Markdown
1159 lines
49 KiB
Markdown
# 加密栈需求 (Requirements on Crypto Stack)
|
||
|
||
**AUTOSAR CP Release 4.4.0**
|
||
|
||
> 翻译说明:本文档为 AUTOSAR 经典平台 (CP) Release 4.4.0 中 SRS 文档 426《Requirements on Crypto Stack》的中文翻译版本。原始英文文档中的 AUTOSAR 方框符 `⌈⌋`、API 标识符(如 `Crypto_ProcessJob`)、模块缩写(Crypto、CryIf、Csm、KeyM 等)、加密算法名(AES、SHA、RSA、ECC 等)、需求 ID(如 `SRS_CryptoStack_xxxxx`)以及文档交叉引用均予以保留。
|
||
|
||
## 文档标识
|
||
|
||
| 项目 | 内容 |
|
||
|---|---|
|
||
| 文档标题 (Document Title) | Requirements on Crypto Stack(加密栈需求) |
|
||
| 文档所有者 (Document Owner) | AUTOSAR |
|
||
| 文档责任方 (Document Responsibility) | AUTOSAR |
|
||
| 文档标识号 (Document Identification No) | 426 |
|
||
| 文档状态 (Document Status) | Final |
|
||
| 所属 AUTOSAR 标准 | Classic Platform |
|
||
| 所属标准版本 (Part of Standard Release) | 4.4.0 |
|
||
|
||
## 文档变更历史 (Document Change History)
|
||
|
||
| 日期 | 版本 | 变更者 | 变更描述 |
|
||
|---|---|---|---|
|
||
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 增加对 Key Manager 的覆盖;移除安全计数器功能;编辑性修订 |
|
||
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 默认错误检测重命名为开发错误检测;编辑性修订 |
|
||
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 为整个加密栈增加需求并重命名文档;引入加密作业概念;引入密钥管理概念 |
|
||
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 编辑性修订 |
|
||
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 编辑性修订 |
|
||
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | TPS_STDT_0078 格式化;BSWAndRTE_Features 的可追溯性 |
|
||
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 初始发布 |
|
||
|
||
---
|
||
|
||
## 目录 (Table of Contents)
|
||
|
||
- [1 文档范围](#1-文档范围)
|
||
- [2 使用的约定](#2-使用的约定)
|
||
- [3 缩略语和缩写](#3-缩略语和缩写)
|
||
- [3.1 术语表](#31-术语表)
|
||
- [4 功能概述](#4-功能概述)
|
||
- [4.1 支持的算法](#41-支持的算法)
|
||
- [5 需求规范](#5-需求规范)
|
||
- [5.1 功能需求](#51-功能需求)
|
||
- [5.1.1 加密栈](#511-加密栈)
|
||
- [5.1.2 密钥管理器](#512-密钥管理器)
|
||
- [5.1.3 加密服务管理器](#513-加密服务管理器)
|
||
- [5.1.4 加密接口](#514-加密接口)
|
||
- [5.1.5 加密驱动](#515-加密驱动)
|
||
- [5.1.6 安全事件存储器](#516-安全事件存储器)
|
||
- [5.2 非功能需求(质量)](#52-非功能需求质量)
|
||
- [5.2.1 通用](#521-通用)
|
||
- [5.2.2 加密服务管理器](#522-加密服务管理器)
|
||
- [5.2.3 加密接口](#523-加密接口)
|
||
- [5.2.4 加密驱动](#524-加密驱动)
|
||
- [6 需求追溯](#6-需求追溯)
|
||
- [7 参考](#7-参考)
|
||
- [7.1 AUTOSAR 交付物](#71-autosar-交付物)
|
||
- [7.2 相关标准和规范](#72-相关标准和规范)
|
||
|
||
---
|
||
|
||
## 1 文档范围
|
||
|
||
本文档规定了加密栈的需求,涉及:
|
||
|
||
- 加密服务管理器 (Csm)
|
||
- 加密接口 (CryIf)
|
||
- 加密驱动 (Crypto)
|
||
- 密钥管理器 (Key Manager)
|
||
|
||
---
|
||
|
||
## 2 使用的约定
|
||
|
||
- AUTOSAR 文档中的需求表示遵循 [TPS_STDT_00078] 中规定的表格。
|
||
- 在需求中,应使用以下特定语义(基于互联网工程任务组 IETF):
|
||
|
||
本文档中的关键字 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 的解释如下:
|
||
|
||
- **SHALL**:该词表示该定义是规范的绝对要求。
|
||
- **SHALL NOT**:该短语表示该定义是规范的绝对禁止。
|
||
- **MUST**:该词表示由于法律问题,该定义是规范的绝对要求。
|
||
- **MUST NOT**:该短语表示由于法律约束,该定义是规范的绝对禁止。
|
||
- **SHOULD**:该词或形容词 "RECOMMENDED" 表示在特定情况下可能有合理理由忽略某项,但在选择不同方案之前必须充分理解并仔细权衡其全部影响。
|
||
- **SHOULD NOT**:该短语或短语 "NOT RECOMMENDED" 表示在特定情况下可能有合理理由接受甚至有用该特定行为,但在实现以此标签描述的任何行为之前,应充分理解相关情况并仔细权衡。
|
||
- **MAY**:该词或形容词 "OPTIONAL" 表示某项是真正可选的。一个供应商可能选择包含该项,因为特定市场需要它或因为供应商认为它可以增强产品;而另一个供应商可能省略同一项。未包含特定选项的实现必须准备好与包含该选项的另一个实现进行互操作(尽管可能功能有所降低)。同样,包含特定选项的实现也必须准备好与不包含该选项的另一个实现进行互操作(当然,该选项所提供的功能除外)。
|
||
|
||
---
|
||
|
||
## 3 缩略语和缩写
|
||
|
||
| 缩写 | 描述 |
|
||
|---|---|
|
||
| µC | 微控制器 (Microcontroller) |
|
||
| AES | 高级加密标准 (Advanced Encryption Standard) |
|
||
| CBC | 密码块链接 (Cipher Block Chaining) |
|
||
| CDD | 复杂驱动 (Complex Device Driver) |
|
||
| CFB | 密码反馈 (Cipher Feedback) |
|
||
| CMAC | 基于密码的消息认证码 (Cipher-based Message Authentication Code) |
|
||
| CPU | 中央处理器 (Central Processing Unit) |
|
||
| CRYPTO / Crypto | 加密驱动 (Crypto Driver) |
|
||
| CRYIF / CryIf | 加密接口 (Crypto Interface) |
|
||
| CSM / Csm | 加密服务管理器 (Crypto Service Manager) |
|
||
| DET / Det | 默认错误追踪器 (Default Error Tracer) |
|
||
| ECB | 电子密码本 (Electronic Code Book) |
|
||
| ECC | 椭圆曲线密码学 (Elliptic Curve Cryptography) |
|
||
| ECDH | 椭圆曲线 Diffie-Hellman (Elliptic Curve Diffie-Hellman) |
|
||
| ECDSA | 椭圆曲线数字签名算法 (Elliptic Curve Digital Signature Algorithm) |
|
||
| ECIES | 椭圆曲线综合加密方案 (Elliptic Curve Integrated Encryption Scheme) |
|
||
| ECU | 电子控制单元 (Electronic Control Unit) |
|
||
| GCM | Galois 计数器模式 (Galois Counter Mode) |
|
||
| GMAC | 基于 Galois 的消息认证码 (Galois-based Message Authentication Code) |
|
||
| HMAC | 基于哈希的消息认证码 (Hash-based Message Authentication Code) |
|
||
| HSM / Hsm | 硬件安全模块 (Hardware Security Module) |
|
||
| HW | 硬件 (HardWare) |
|
||
| KEM | 密钥封装机制 (Key Encapsulation Mechanism) |
|
||
| KeyM | 密钥管理器 (Key Manager) |
|
||
| MAC | 消息认证码 (Message Authentication Code) |
|
||
| MCAL | 微控制器抽象层 (Micro Controller Abstraction Layer) |
|
||
| OEM | 原始设备制造商 (Original Equipment Manufacturer) |
|
||
| OFB | 输出反馈 (Output Feedback) |
|
||
| PKI | 公钥基础设施 (Public Key Infrastructure) |
|
||
| PRNG | 伪随机数生成器 (Pseudo-Random Number Generator) |
|
||
| RACE | 快速自动加密设备 (Rapid Automatic Cryptographic Equipment) |
|
||
| RAM | 随机访问存储器 (Random Access Memory) |
|
||
| RIPEMD | RACE 完整性原语评估消息摘要 (RACE Integrity Primitives Evaluation Message Digest) |
|
||
| RSA | Rivest-Shamir-Adleman 密码系统 |
|
||
| RTE | 运行时环境 (Run Time Environment) |
|
||
| SHA | 安全哈希算法 (Secure Hash Algorithm) |
|
||
| SECOC / SecOc | 安全车载通信 (Secure Onboard Communication) |
|
||
| SW | 软件 (SoftWare) |
|
||
| SWC | 软件组件 (SoftWare Component) |
|
||
| SWS | 软件规范 (SoftWare Specification) |
|
||
| TRNG | 真随机数生成器 (True Random Number Generator) |
|
||
| Vi | 供应商标识 (VendorId) |
|
||
| XEX | 异或-加密-异或 (Xor-Encrypt-Xor) |
|
||
| XTS | 基于 XEX 的密文窃取调整码本模式 (XEX-based tweaked-codebook mode with ciphertext stealing) |
|
||
|
||
### 3.1 术语表
|
||
|
||
| 术语 | 描述 |
|
||
|---|---|
|
||
| Crypto Driver Object (加密驱动对象) | Crypto Driver Object 是加密模块(硬件或软件)的一个实例,能够执行一种或多种不同的加密操作。 |
|
||
| User (用户) | 用户是配置的对象,具有 ID 和已配置的作业。 |
|
||
| Channel (通道) | 通道是从 CSM 队列经 CRYIF 到特定 Crypto Driver Object 的路径。 |
|
||
| Job (作业) | 作业是用户的已配置加密原语的一个实例。 |
|
||
| Crypto Primitive (加密原语) | 加密原语是已配置加密算法的一个实例。 |
|
||
| Operation (操作) | 加密原语的操作声明应执行该加密原语的哪一部分。有三种不同的操作: **START** — 表示加密原语的全新请求,并应取消之前的所有请求; **UPDATE** — 表示加密原语期望输入数据; **FINISH** — 表示在此部分之后所有数据均已完全送入,加密原语可以完成计算。也可以通过将 operation_mode 参数的对应位串接在一起,一次执行多个操作。 |
|
||
| Priority (优先级) | 用户的优先级定义其重要性。优先级越高(值越大),用户的作业越被更立即地执行。加密作业的优先级是用户配置的一部分。 |
|
||
|
||
---
|
||
|
||
## 4 功能概述
|
||
|
||
加密栈为应用程序和系统功能提供对加密服务的标准化访问。
|
||
|
||
加密服务例如哈希计算、非对称签名验证、对称数据加密等。这些服务依赖于底层的加密原语和加密方案。CSM 应使不同的应用能够使用相同的服务,但使用不同的底层原语和/或方案成为可能。例如,一个应用可能需要使用哈希服务来计算 SHA2 摘要,而另一个应用可能需要计算 SHA1 摘要。或者一个应用可能需要验证使用 RSASSA-PKCS1-V1_5 签名方案并以 SHA1 作为底层哈希原语计算的签名,而另一个应用可能需要验证使用以 SHA2 作为底层哈希原语的不同方案计算的签名。加密栈应使能够配置哪些服务是必需的,并为每个服务创建多个可选择方案和原语的配置。
|
||
|
||
此外,由于许多加密服务的计算量很大,因此必须为这些长时间的计算进行调度。作业应可配置为同步或异步执行。
|
||
|
||
加密栈提供基于软件库或硬件模块的密码学功能的加密服务。同时,也允许混合配置,例如当硬件模块无法独立提供所需的功能时。下面,我们将底层功能的所有实例(无论是硬件还是软件)称为 "crypto library"。
|
||
|
||
### 4.1 支持的算法
|
||
|
||
加密栈应支持以下加密算法或原语:
|
||
|
||
- 随机数生成
|
||
- 确定性随机数生成器 (DRNG)
|
||
- 真随机数生成器 (TRNG)
|
||
- 对称加密
|
||
- AES
|
||
- 密钥长度:128 和 256 位
|
||
- 模式:ECB, CBC, CTR, GCM, OFB, CFB, XTS
|
||
- PRESENT
|
||
- 密钥长度:128 位
|
||
- 模式:ECB, CBC, CTR, GCM, OFB, CFB, XTS
|
||
- ChaCha12/ChaCha20
|
||
- 密钥长度:256 位
|
||
- 非对称加密/解密与签名处理
|
||
- RSA
|
||
- 密钥长度:1024, 2048, 3072, 4096
|
||
- 填充:PKCS#1 v2.2
|
||
- Curve25519/Ed25519
|
||
- 哈希
|
||
- SHA-2
|
||
- 长度:224, 256, 384, 512
|
||
- SHA-3
|
||
- 长度:224, 256, 384, 512
|
||
- BLAKE
|
||
- 长度:224, 256, 384, 512
|
||
- RIPEMD-160
|
||
- MAC
|
||
- CMAC
|
||
- GMAC
|
||
- HMAC
|
||
|
||
---
|
||
|
||
## 5 需求规范
|
||
|
||
### 5.1 功能需求
|
||
|
||
#### 5.1.1 加密栈
|
||
|
||
##### 5.1.1.1 通用
|
||
|
||
###### [SRS_CryptoStack_00100] 同步作业处理
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 某些加密服务应允许同步作业处理。 |
|
||
| Rationale | 有些加密服务可以非常快速地计算并且要求快速响应。那么,包含主函数调用和回调函数的异步作业处理开销就太大了。 |
|
||
| Use Case | SecOC 模块的 MAC 生成。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456)
|
||
|
||
###### [SRS_CryptoStack_00101] 异步作业处理
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 某些加密服务应允许异步作业处理。 |
|
||
| Rationale | 有些加密服务需要大量时间或在 HSM 中执行。此时同步作业处理将耗费过多时间。 |
|
||
| Use Case | 签名验证。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456)
|
||
|
||
###### [SRS_CryptoStack_00003] 加密栈应能够纳入加密库的模块
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应能够纳入加密库的模块。 |
|
||
| Rationale | 加密库本身必须在 AUTOSAR 栈中可用。 |
|
||
| Use Case | 加密原语的软件实现。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02032)
|
||
|
||
##### 5.1.1.2 配置
|
||
|
||
###### [SRS_CryptoStack_00007] 加密栈应为加密功能提供可扩展性
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应保证未使用的加密功能不会被编译进二进制文件。 |
|
||
| Rationale | 不同的安全功能需要不同的加密解决方案(例如对称/非对称加密、哈希),可能具有或不具有硬件支持。可用的硬件配置提供不同的功能(例如内部 NVM、随机数生成器、安全 CPU 核……)。加密功能的可扩展性允许在某些功能不需要时采取不同的实现策略,从而最小化 SW 或 HW 资源利用。 |
|
||
| Use Case | 加密栈与微控制器硬件功能的映射允许硬件供应商为其 HSM 开发通用驱动。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456, RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00008] 加密栈应允许对加密作业所使用的密钥进行静态配置
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应允许对加密服务所使用的对称和非对称密钥对进行静态配置。 |
|
||
| Rationale | 应能够单独使用密钥。 |
|
||
| Use Case | 在 HSM 中使用受保护密钥进行数据加密。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031, RS_BRF_01946)
|
||
|
||
###### [SRS_CryptoStack_00105] 加密栈应仅允许唯一的密钥标识符
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 每个加密密钥配置一个 keyId。 |
|
||
| Rationale | 应能够单独处理密钥。 |
|
||
| Use Case | 加密密钥的使用。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031, RS_BRF_01946)
|
||
|
||
###### [SRS_CryptoStack_00013] 加密栈的模块应仅支持预编译时配置
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈的模块应仅支持预编译时配置。 |
|
||
| Rationale | 没有适用的后构建或链接时参数。 |
|
||
| Use Case | 所有可配置参数值必须在编译或构建之前决定。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01136)
|
||
|
||
###### [SRS_CryptoStack_00094] 加密栈模块的配置文件应对人类可读
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈模块的配置文件应对人类可读:例如通过集成注释或工具支持。 |
|
||
| Rationale | 人类必须能够阅读和理解配置。因此,配置应可读且可理解。 |
|
||
| Use Case | 调试。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456)
|
||
|
||
##### 5.1.1.3 初始化
|
||
|
||
无。
|
||
|
||
##### 5.1.1.4 正常运行
|
||
|
||
###### [SRS_CryptoStack_00009] 加密栈应支持所有加密服务的可重入性
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应支持加密相关接口的可重入性,以便在多个用户请求时能够并行执行相同或不同类型的操作。本需求还涵盖应用程序驻留在不同核心上的场景。 |
|
||
| Rationale | 加密作业应能够同时处理。 |
|
||
| Use Case | 不同的应用程序可能并行使用加密服务。需要同时处理不同的任务。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02033)
|
||
|
||
###### [SRS_CryptoStack_00010] 加密栈应对加密服务用户屏蔽对称密钥
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 不应存在将对称密钥值直接导出到用户的接口。密钥应通过标识符由用户寻址。 |
|
||
| | 这些密钥只能以加密格式导出。 |
|
||
| Rationale | 如果密钥存储在应用程序中,则会增加密钥失效或密钥泄露的几率。 |
|
||
| Use Case | 驻留在 HSM 中的密钥。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031, RS_BRF_01946)
|
||
|
||
###### [SRS_CryptoStack_00011] 加密栈应对加密服务用户屏蔽非对称私钥
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 不应存在将非对称私钥值直接导出到用户的接口。密钥应通过标识符由用户寻址。 |
|
||
| | 这些密钥只能以加密格式导出。 |
|
||
| Rationale | 如果密钥存储在应用程序中,则会增加密钥失效或密钥泄露的几率。 |
|
||
| Use Case | 驻留在 HSM 中的密钥。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031, RS_BRF_01946)
|
||
|
||
###### [SRS_CryptoStack_00019] 加密栈应将随机数生成标识为可向驱动请求的加密原语
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应将随机数生成标识为可向驱动请求的加密原语。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的随机数生成器。 |
|
||
| Use Case | 生成随机数。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00020] 加密栈应将对称加密/解密标识为可向驱动请求的加密原语
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应将对称加密/解密标识为可向驱动请求的加密原语。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的对称算法。 |
|
||
| Use Case | 加密通信。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00021] 加密栈应将非对称加密/解密标识为可向驱动请求的加密原语
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应将非对称加密/解密标识为可向驱动请求的加密原语。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的非对称算法。 |
|
||
| Use Case | 异构硬件和软件解决方案成功所需的统一接口。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00022] 加密栈应将 MAC 生成/验证标识为可向驱动请求的加密原语
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应将 MAC 生成/验证标识为可向驱动请求的加密原语。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的 MAC 算法。 |
|
||
| Use Case | SecOC 使用 MAC 来验证消息。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00023] 加密栈应将非对称签名生成/验证标识为可向驱动请求的加密原语
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应将非对称签名生成/验证标识为可向驱动请求的加密原语。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的非对称签名算法。 |
|
||
| Use Case | 签名创建/验证。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00024] 加密栈应将哈希计算标识为可向驱动请求的加密原语
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应将哈希计算标识为可向驱动请求的加密原语。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的哈希算法。 |
|
||
| Use Case | 签名验证。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00026] 加密栈应提供非对称密钥生成的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应提供用于非对称密钥对服务生成的抽象接口。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的密钥生成服务。 |
|
||
| Use Case | 在 ECU 内生成非对称密钥对。然后,私钥永远不需要在 ECU 之外可用。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00027] 加密栈应提供对称密钥生成的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应通过标准化接口使用户与由各种 Crypto Driver 存储的多个对称密钥抽象开。此外,还应提供到驱动用于生成此类密钥的接口。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的密钥生成服务。 |
|
||
| Use Case | 基于口令的密钥输入。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00103] 加密栈应提供对称密钥派生的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应通过标准化接口使用户与由各种 Crypto Driver 存储的多个对称密钥抽象开。此外,还应提供到驱动用于派生此类密钥的接口。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的密钥派生服务。 |
|
||
| Use Case | 基于口令的密钥输入。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00028] 加密栈应提供密钥交换机制的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应支持密钥交换机制作为密钥管理接口。 |
|
||
| Rationale | 应使用统一的接口访问不同加密驱动上的密钥交换算法。 |
|
||
| Use Case | 会话处理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00029] 加密栈应提供密钥包装/解封机制的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应支持密钥包装(封装)和解封机制,并将来自 CSM 的此类请求转发到相应的驱动。它应支持使用对称密钥以及非对称密钥进行包装。 |
|
||
| Rationale | 驱动中实现的密钥包装和封装算法不应由用户直接访问,需要进行抽象。 |
|
||
| Use Case | 会话处理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031)
|
||
|
||
###### [SRS_CryptoStack_00031] 加密栈应提供解析证书的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密栈应支持解析证书并提取其中包含的密钥。 |
|
||
| Rationale | 加密驱动应解析传入的证书并将密钥信息存储在相应的密钥中。 |
|
||
| Use Case | 对于 PKI,有必要从证书中获取公钥。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01946)
|
||
|
||
###### [SRS_CryptoStack_00061] 加密栈应支持检测无效密钥
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密原语的实现应检测并拒绝无效的密钥。 |
|
||
| Rationale | 像 RSA 或多种 ECC 变体之类的算法知道某些密钥——这些密钥可以执行该算法的数学基础而不报错,但涉及特殊情况并且不安全处理。必须识别并拒绝此类密钥。没有通用方法,因此实现必须在加密原语本身中,或者在使用硬件的情况下在其驱动中。 |
|
||
| Use Case | RSA 和多种椭圆曲线密码系统。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02031, RS_BRF_01946)
|
||
|
||
##### 5.1.1.5 关闭操作
|
||
|
||
无。
|
||
|
||
##### 5.1.1.6 故障操作
|
||
|
||
无。
|
||
|
||
#### 5.1.2 密钥管理器
|
||
|
||
##### 5.1.2.1 通用
|
||
|
||
###### [SRS_CryptoStack_00106] 密钥管理器操作应支持同步或异步运行
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 密钥管理器操作应支持同步模式,如果计算耗时较长,则支持异步模式。对于后者,回调应指示操作已完成。 |
|
||
| Rationale | 为了避免多次任务激活,密钥管理操作应在后台执行。 |
|
||
| Use Case | 密钥派生可能需要相当长的时间。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_0001])
|
||
|
||
###### [SRS_CryptoStack_00107] 密钥管理器应提供生成或更新密钥材料的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 模块应提供允许软件组件或 DCM 生成或更新 ECU 密钥材料的 API。KeyM 应使用 CSM 进行所需的加密操作和密钥存储。 |
|
||
| Rationale | 基础软件模块(例如 DCM 或软件组件)触发生成或重新生成密钥材料。KeyM 生成密钥材料并通过调用 CSM 的适当函数将其存储在加密驱动中。 |
|
||
| Use Case | 密钥服务器希望提供密钥材料。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00108] 密钥管理器应能够通过与其他 ECU 交换消息协商共享密钥
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 模块应支持通过到 PduR 的接口在 ECU 之间进行密钥协商。 |
|
||
| Rationale | 密钥管理任务(例如多方密钥协商)可能需要交换消息以就密钥达成一致。 |
|
||
| Use Case | 密钥的车载协商。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00109] 密钥管理器应能够管理从公共密钥派生密钥材料
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 模块应提供用于从公共共享密钥派生密钥的 API。 |
|
||
| Rationale | 密钥(例如用于安全车载通信的密钥)必须在多个 ECU 之间共享。处理此问题的一种方法是从参与的 ECU 之间共享的密钥派生这些密钥。 |
|
||
| Use Case | 密钥服务器提供一个公共密钥,密钥管理器从该公共密钥派生多个对称密钥。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00110] KeyM 模块应支持车载生成的密钥
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 应提供用于处理车载生成密钥的 API。 |
|
||
| Rationale | 车载生成的密钥必须在两个或更多 ECU 之间协商。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00111] KeyM 模块应支持基于已配置规则验证证书
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 提供的证书验证操作应允许将已配置证书元素的值的检查作为验证操作的一部分。 |
|
||
| Rationale | 除了验证签名和基本证书元素外,证书验证可能需要检查自定义证书元素是否符合特定规则。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00112] KeyM 模块应支持检索证书的任意元素
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 应提供检索任意证书元素值的操作。 |
|
||
| Rationale | 应用程序和基础软件模块可能需要使用特定证书元素的值来执行操作。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
##### 5.1.2.2 配置
|
||
|
||
###### [SRS_CryptoStack_00113] 加密栈中的密钥可被唯一标识
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 维护的所有密钥必须可唯一寻址,以便由密钥服务器提供的新密钥材料可以分配给加密驱动中相应的密钥。 |
|
||
| Rationale | 需要符号标识,以便 KeyM 能够唯一标识相应作业使用哪个密钥。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00114] 加密驱动应将密钥放入特定的密钥槽中
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 密钥应放入特定密钥槽。SHE 需要这样做以提供正确的密钥更新信息。 |
|
||
| Rationale | SHE 更新协议信息包括应更新的密钥的槽号。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00115] KeyM 应具有高度可配置性以支持不同的 OEM 用例
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 密钥管理提供了各种选项,例如证书处理、密钥管理操作。此外,已经存在多种密钥管理系统需要满足。这要求该模块具有高度的灵活性以适应不同的用例。 |
|
||
| Rationale | 密钥管理高度依赖于 OEM 的特定流程和格式。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
##### 5.1.2.3 初始化
|
||
|
||
###### [SRS_CryptoStack_00116] 密钥在配置时应使用默认值
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 应可以将 KeyM 配置为使用密钥默认值。 |
|
||
| Rationale | 在安全系统的开发过程中密钥服务器可能不可用。因此应可以配置可在开发期间使用的默认密钥。 |
|
||
| Use Case | 开发阶段的系统测试。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00117] 密钥为空或已损坏则不应被使用
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 没有默认值或已编程但其内容无法被检索的密钥应被标记为无效,因此不可使用。 |
|
||
| Rationale | 没有正确初始化密钥的系统不应提供任何不确定的加密结果。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
##### 5.1.2.4 正常运行
|
||
|
||
###### [SRS_CryptoStack_00118] 密钥材料应安全地存储在 NVM 或 CSM 中
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 应使用 CSM 接口安全地存储密钥。 |
|
||
| Rationale | 必须安全存储非车载生成的密钥和车载生成的密钥。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00119] 提供密钥已正确编程的证明
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | KeyM 应提供用于为正确编程的密钥提供证明的接口。验证函数可用于在正确的密钥已被编程并与特定作业关联时向密钥服务器提供证明。 |
|
||
| Rationale | 验证密钥安装成功。密钥提供者可能希望检查密钥是否已正确编程。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
##### 5.1.2.5 关闭操作
|
||
|
||
###### [SRS_CryptoStack_00120] 关闭操作时清除所有密钥材料
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 密钥可能临时存储在 RAM 中。关闭操作可以通过从 RAM 中删除密钥数据来清除这些密钥。 |
|
||
| Rationale | 密钥可能在关闭操作期间存储。出于安全原因,应销毁 RAM 中的密钥。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
##### 5.1.2.6 故障操作
|
||
|
||
###### [SRS_CryptoStack_00121] 将安全相关事件传递给安全事件存储器 (SEM) 以进行安全日志记录
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Draft |
|
||
| Description | KeyM 应使用安全事件存储器提供的接口对 KeyM 产生的安全相关事件进行安全日志记录。 |
|
||
| Rationale | 失败密钥协商之类的事件是需要记录的安全相关事件。 |
|
||
| Use Case | C2 – 密钥管理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C2 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
#### 5.1.3 加密服务管理器
|
||
|
||
##### 5.1.3.1 通用
|
||
|
||
###### [SRS_CryptoStack_00006] CRYIF 的每个原语应恰好属于 CSM 的一个服务
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CRYIF 的每个原语应恰好属于 CSM 的一个服务。 |
|
||
| Rationale | 存在通过 CRYIF 将用户特定的加密原语映射到底层 Crypto Driver 模块的通道。 |
|
||
| Use Case | CRYIF 负责将每个服务映射到相应的 Crypto Driver 模块。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02032)
|
||
|
||
##### 5.1.3.2 配置
|
||
|
||
###### [SRS_CryptoStack_00079] CSM 服务的作业处理模式(同步或异步)应由静态配置定义
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 提供的加密作业模式应由静态配置定义。 |
|
||
| Rationale | 在运行时不应可能更改特定 CSM 服务的行为。 |
|
||
| Use Case | 同步哈希计算。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456, RS_BRF_01136)
|
||
|
||
###### [SRS_CryptoStack_00102] 用户及其加密作业的优先级应由静态配置定义
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 用户的优先级应由静态配置定义。该用户的所有作业继承此优先级。 |
|
||
| Rationale | 有些加密作业必须非常快速地处理(例如 SecOC 的 MAC 生成)。其他加密作业(例如对整个 ROM 进行哈希)耗时较长但非时间关键。 |
|
||
| Use Case | 优先级作业处理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋()
|
||
|
||
###### [SRS_CryptoStack_00080] CSM 提供的加密服务集合应由静态配置定义
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 提供的加密服务集合应由静态配置定义。 |
|
||
| Rationale | 运行时不可能添加新的 CSM 服务。 |
|
||
| Use Case | 如果驱动支持对称加密,则必须配置使用它的用户及其密钥。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456, RS_BRF_01136)
|
||
|
||
###### [SRS_CryptoStack_00081] CSM 模块规范应规定需要哪些其他模块
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 模块规范应规定需要哪些其他模块。 |
|
||
| Rationale | 基本功能。 |
|
||
| Use Case | -- |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456, RS_BRF_01064)
|
||
|
||
###### [SRS_CryptoStack_00082] CSM 模块规范应规定异步作业处理模式下回调函数的接口和行为
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 模块规范应规定如果选择了异步作业处理模式,则必须如何实现回调函数。 |
|
||
| Rationale | CSM 必须调用回调函数。因此,CSM 必须知道回调函数的签名。 |
|
||
| Use Case | -- |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456, RS_BRF_01064)
|
||
|
||
##### 5.1.3.3 初始化
|
||
|
||
##### 5.1.3.4 正常运行
|
||
|
||
###### [SRS_CryptoStack_00084] CSM 模块应对某些选定服务使用流式方法
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 模块应对某些提供的服务使用流式方法(参见 CSM 的软件规范)。 |
|
||
| Rationale | 基本功能。 |
|
||
| Use Case | 应可以以小数据块的形式将输入数据传递给服务。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456)
|
||
|
||
##### 5.1.3.5 关闭操作
|
||
|
||
<模块关闭时应执行的操作>
|
||
|
||
##### 5.1.3.6 故障操作
|
||
|
||
###### [SRS_CryptoStack_00086] CSM 模块应区分错误类型
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 模块应区分以下两种类型的错误: - 仅在开发期间可能发生的错误; - 在生产代码中也预期会发生的错误。 |
|
||
| Rationale | 基本功能。 |
|
||
| Use Case | -- |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02168, RS_BRF_02272)
|
||
|
||
###### [SRS_CryptoStack_00087] CSM 模块应将检测到的开发错误报告给默认错误追踪器
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 模块应将检测到的开发错误报告给默认错误追踪器 (DET)。 |
|
||
| Rationale | 基本功能。 |
|
||
| Use Case | -- |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02168, RS_BRF_02272)
|
||
|
||
###### [SRS_CryptoStack_00087] CSM 模块不应通过 API 返回特定的开发错误代码
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 模块不应通过 API 返回特定的开发错误代码。在检测到开发错误的情况下,错误应仅报告给 DET。如果检测到错误的 API 函数的返回类型为 Std_ReturnType,则应返回 E_NOT_OK。 |
|
||
| Rationale | 基本功能。 |
|
||
| Use Case | -- |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_00129, RS_BRF_02168)
|
||
|
||
###### [SRS_CryptoStack_00088] CSM 应检查传入的 API 参数的有效性
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 应检查传入的 API 参数的有效性。对于仅在开发期间可能发生的错误,此检查应可静态配置。 |
|
||
| Rationale | 基本功能。 |
|
||
| Use Case | 调试。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_00129, RS_BRF_02168, RS_BRF_02232)
|
||
|
||
#### 5.1.4 加密接口
|
||
|
||
##### 5.1.4.1 配置
|
||
|
||
###### [SRS_CryptoStack_00014] 加密接口应具有到加密驱动静态配置信息的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密接口应具有到加密驱动静态配置信息的接口。 |
|
||
| Rationale | 灵活性和可扩展性。 |
|
||
| Use Case | 派生供应商 API Infix 以支持多个 Crypto Driver。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01008)
|
||
|
||
###### [SRS_CryptoStack_00015] 映射到不同 Crypto Driver Object 的通道应在加密接口中可唯一配置
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密接口应支持一种配置模型,其中所有虚拟通道应静态映射到 Crypto Driver Object。 |
|
||
| | 虚拟通道是从 CSM 队列经 CRYIF 到相应 Crypto Driver Object 的虚拟路径。 |
|
||
| Rationale | 驱动中的每个加密驱动对象都可以被抽象出来,并由 CSM 使用虚拟通道使用。 |
|
||
| Use Case | 两个硬件资源:一个用于对称密码学,一个用于非对称密码学。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02032, RS_BRF_01456, RS_BRF_01136)
|
||
|
||
##### 5.1.4.2 初始化
|
||
|
||
##### 5.1.4.3 正常运行
|
||
|
||
##### 5.1.4.4 关闭操作
|
||
|
||
无。
|
||
|
||
##### 5.1.4.5 故障操作
|
||
|
||
###### [SRS_CryptoStack_00034] 加密接口应将检测到的开发错误报告给默认错误追踪器
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密接口应将检测到的开发错误报告给默认错误追踪器 (DET)。检测和报告应可使用单个预处理开关进行静态配置。 |
|
||
| Rationale | 调试支持。 |
|
||
| Use Case | 所有输入参数和内部状态在处理之前都必须进行验证。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02232)
|
||
|
||
#### 5.1.5 加密驱动
|
||
|
||
##### 5.1.5.1 配置
|
||
|
||
###### [SRS_CryptoStack_00036] 加密驱动应允许静态配置 Crypto Driver Object
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密驱动应允许定义不同的 Crypto Driver Object。 |
|
||
| Rationale | 抽象不同硬件单元。 |
|
||
| Use Case | 对称和非对称操作的并行处理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456, RS_BRF_01136)
|
||
|
||
###### [SRS_CryptoStack_00104] 映射到不同 Crypto Driver 密钥的加密接口密钥应在加密接口中可唯一配置
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密接口应支持一种配置模型,其中所有 CRYIF 密钥应静态映射到加密驱动中的密钥。 |
|
||
| Rationale | 与 CsmQueue 映射到 Crypto Driver Object 的通道类似,CSM 中的密钥必须通过 CRYIF 映射到加密驱动中的相应密钥。 |
|
||
| Use Case | 多个 Crypto Driver 模块,每个模块都有自己的密钥标识符。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_02032, RS_BRF_01456, RS_BRF_01136)
|
||
|
||
##### 5.1.5.2 初始化
|
||
|
||
##### 5.1.5.3 正常运行
|
||
|
||
###### [SRS_CryptoStack_00098] 加密驱动应提供对硬件支持的所有加密算法的访问
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密驱动应支持访问加密栈支持的所有算法。 |
|
||
| Rationale | 硬件支持的利用和性能优势。 |
|
||
| Use Case | 应可通过加密驱动访问 HSM 支持的原语。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋()
|
||
|
||
##### 5.1.5.4 关闭操作
|
||
|
||
无。
|
||
|
||
##### 5.1.5.5 故障操作
|
||
|
||
#### 5.1.6 安全事件存储器
|
||
|
||
##### 5.1.6.1 通用
|
||
|
||
###### [SRS_CryptoStack_00122] 记录由基础软件模块和 SWC 报告的安全事件
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 安全事件存储器 (SEM) 应能够记录由 BSW 模块或 SWC 监视的安全事件 (SE)。应可以存储安全事件的类型以及用于取证分析有用的数据。 |
|
||
| Rationale | 以对取证分析有用的方式记录安全事件。 |
|
||
| Use Case | UC1.1:BSW 模块或 SWC 将安全相关事件写入 SEM。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C1 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00123] 配置安全事件属性
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 根据安全事件的类型,可存储的快照数以及快照的属性应可配置。 |
|
||
| Rationale | 根据事件类型,需要在事件的快照中存储不同的数据。根据事件的预期频率,特定数量的可存储快照就足够了。 |
|
||
| Use Case | UC1.1:BSW 模块或 SWC 将安全相关事件写入 SEM。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C1 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
###### [SRS_CryptoStack_00124] 允许授权用户通过诊断接口读取 SEM 数据
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | SEM 应通过诊断接口提供 SEM 数据。SEM 数据应受保护,防止通过诊断接口进行未经授权的读写访问。 |
|
||
| Rationale | 诊断测试仪用于访问 SEM 数据。 |
|
||
| Use Case | UC1.2:授权的利益相关者从 SEM 读取数据以进行车外取证分析。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | Concept 636 "Security Extensions" – C1 |
|
||
⌋(Uptrace: Link to RS_Main: [RS_Main_00514])
|
||
|
||
### 5.2 非功能需求(质量)
|
||
|
||
#### 5.2.1 通用
|
||
|
||
#### 5.2.2 加密服务管理器
|
||
|
||
##### [SRS_CryptoStack_00088] CSM 模块应提供为上层软件层提供对加密算法访问的标准化接口的抽象层
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 模块应提供为上层软件层提供对加密算法访问的标准化接口的抽象层。 |
|
||
| Rationale | 抽象层封装内部行为并降低复杂性。它还增加了可维护性、改善了可移植性并简化了可测试性。 |
|
||
| Use Case | 会话处理。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01456, RS_BRF_01016, RS_BRF_01056)
|
||
|
||
##### [SRS_CryptoStack_00089] CSM 模块应位于 AUTOSAR 服务层中
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 模块应位于 Autosar 服务层中。 |
|
||
| Rationale | 管理功能必须对系统的所有模块和层可用。 |
|
||
| Use Case | CSM 模块应可从 RTE 上方的应用程序访问。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01016, RS_BRF_01408)
|
||
|
||
##### [SRS_CryptoStack_00090] CSM 应提供可通过 RTE 访问的接口
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 应提供可通过 RTE 访问的接口。 |
|
||
| Rationale | CSM 模块应可从 RTE 上方的应用程序访问。 |
|
||
| Use Case | 需要加密服务的应用程序。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01408, RS_BRF_01280)
|
||
|
||
##### [SRS_CryptoStack_00091] CSM 应为每个配置提供一个 Provide-Port
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 应为每个配置提供一个 Provide-Port。所有已配置的服务应可通过此端口访问。 |
|
||
| Rationale | 所有加密服务应可从 RTE 上方的应用程序通过 Provide-Port 访问。 |
|
||
| Use Case | 对 CSM 的所有请求都使用此端口。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01056, RS_BRF_01280, RS_BRF_01408, RS_BRF_01456)
|
||
|
||
##### [SRS_CryptoStack_00092] CSM 应为每个配置提供一个 Require-Port
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CSM 应为每个配置提供一个 Require-Port。已配置的回调函数应可通过此端口访问。 |
|
||
| Rationale | 所有加密服务应可通过 Require-Port 访问已配置的回调函数。 |
|
||
| Use Case | 大多数异步服务都有自己的回调函数。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01056, RS_BRF_01280, RS_BRF_01408, RS_BRF_01456)
|
||
|
||
#### 5.2.3 加密接口
|
||
|
||
##### [SRS_CryptoStack_00075] 加密接口应为底层加密驱动与上层之间的接口层
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密接口是所有上层 (BSW) 加密操作的唯一接口。加密接口是 Crypto Driver 的唯一使用者。 |
|
||
| Rationale | 接口和交互。 |
|
||
| Use Case | 不同用户可能需要访问多个 Crypto Driver 或基于软件的解决方案。此外,不同的上层可能需要访问加密服务。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | AUTOSAR_WP Architecture_SoftwareArchitecture |
|
||
⌋(RS_BRF_01000, RS_BRF_01008, RS_BRF_01016)
|
||
|
||
##### [SRS_CryptoStack_00076] 加密接口的实现和接口应独立于底层加密硬件或软件
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | CRYIF 实现和 CRYIF 接口应独立于底层 Crypto Driver 模块。 |
|
||
| Rationale | 可移植性和可重用性。 |
|
||
| Use Case | 将特定加密模块的实现细节从较高软件层中封装。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_01000, RS_BRF_02031)
|
||
|
||
#### 5.2.4 加密驱动
|
||
|
||
##### [SRS_CryptoStack_00095] 加密驱动模块应严格区分错误和状态信息
|
||
⌈
|
||
| 项 | 内容 |
|
||
|---|---|
|
||
| Type | Valid |
|
||
| Description | 加密驱动模块应严格区分错误和状态信息。本需求适用于返回值以及内部变量。 |
|
||
| Rationale | 区分错误和状态信息可更轻松地处理它们。错误的处理方式应与状态信息不同。 |
|
||
| Use Case | 所有返回值都是错误信息。 |
|
||
| Dependencies | -- |
|
||
| Supporting Material | -- |
|
||
⌋(RS_BRF_00129, RS_BRF_02168, RS_BRF_02232, RS_BRF_02272)
|
||
|
||
---
|
||
|
||
## 6 需求追溯
|
||
|
||
| 需求 | 描述 | 由以下满足 |
|
||
|---|---|---|
|
||
| RS_BRF_00129 | AUTOSAR 应支持数据损坏检测和保护 | SRS_CryptoStack_00087, SRS_CryptoStack_00088, SRS_CryptoStack_00095 |
|
||
| RS_BRF_01000 | AUTOSAR 架构应将 BSW 组织为硬件无关和硬件相关层 | SRS_CryptoStack_00075, SRS_CryptoStack_00076 |
|
||
| RS_BRF_01008 | AUTOSAR 应将硬件相关层组织为微控制器无关和微控制器相关层 | SRS_CryptoStack_00014, SRS_CryptoStack_00075 |
|
||
| RS_BRF_01016 | AUTOSAR 应在软件层内提供模块化设计 | SRS_CryptoStack_00075, SRS_CryptoStack_00088, SRS_CryptoStack_00089 |
|
||
| RS_BRF_01056 | AUTOSAR BSW 模块应提供标准化接口 | SRS_CryptoStack_00088, SRS_CryptoStack_00091, SRS_CryptoStack_00092 |
|
||
| RS_BRF_01064 | AUTOSAR BSW 应提供回调函数以访问上层模块 | SRS_CryptoStack_00081, SRS_CryptoStack_00082 |
|
||
| RS_BRF_01136 | AUTOSAR 应支持在系统启动之后解析的已配置 BSW 数据的变体 | SRS_CryptoStack_00013, SRS_CryptoStack_00015, SRS_CryptoStack_00036, SRS_CryptoStack_00079, SRS_CryptoStack_00080, SRS_CryptoStack_00104 |
|
||
| RS_BRF_01280 | AUTOSAR RTE 应提供软件组件之间以及软件组件和 BSW 之间的外部接口 | SRS_CryptoStack_00090, SRS_CryptoStack_00091, SRS_CryptoStack_00092 |
|
||
| RS_BRF_01408 | AUTOSAR 应提供可从每个基础软件层访问的服务层 | SRS_CryptoStack_00089, SRS_CryptoStack_00090, SRS_CryptoStack_00091, SRS_CryptoStack_00092 |
|
||
| RS_BRF_01456 | AUTOSAR 服务应提供系统范围的加密功能 | SRS_CryptoStack_00007, SRS_CryptoStack_00015, SRS_CryptoStack_00036, SRS_CryptoStack_00079, SRS_CryptoStack_00080, SRS_CryptoStack_00081, SRS_CryptoStack_00082, SRS_CryptoStack_00084, SRS_CryptoStack_00088, SRS_CryptoStack_00091, SRS_CryptoStack_00092, SRS_CryptoStack_00094, SRS_CryptoStack_00100, SRS_CryptoStack_00101, SRS_CryptoStack_00104 |
|
||
| RS_BRF_01946 | AUTOSAR 微控制器抽象应提供对加密硬件的访问 | SRS_CryptoStack_00008, SRS_CryptoStack_00010, SRS_CryptoStack_00011, SRS_CryptoStack_00031, SRS_CryptoStack_00061, SRS_CryptoStack_00105 |
|
||
| RS_BRF_02031 | AUTOSAR 应提供对由软件或硬件实现的加密解决方案的统一访问 | SRS_CryptoStack_00007, SRS_CryptoStack_00008, SRS_CryptoStack_00010, SRS_CryptoStack_00011, SRS_CryptoStack_00019, SRS_CryptoStack_00020, SRS_CryptoStack_00021, SRS_CryptoStack_00022, SRS_CryptoStack_00023, SRS_CryptoStack_00024, SRS_CryptoStack_00026, SRS_CryptoStack_00027, SRS_CryptoStack_00028, SRS_CryptoStack_00029, SRS_CryptoStack_00061, SRS_CryptoStack_00076, SRS_CryptoStack_00103, SRS_CryptoStack_00105 |
|
||
| RS_BRF_02032 | AUTOSAR 安全应允许将加密原语集成到加密服务管理器中 | SRS_CryptoStack_00003, SRS_CryptoStack_00006, SRS_CryptoStack_00015, SRS_CryptoStack_00104 |
|
||
| RS_BRF_02033 | AUTOSAR 应提供对加密服务的并发访问 | SRS_CryptoStack_00009 |
|
||
| RS_BRF_02168 | AUTOSAR 诊断应提供异常操作条件的集中分类和处理 | SRS_CryptoStack_00086, SRS_CryptoStack_00087, SRS_CryptoStack_00088, SRS_CryptoStack_00095 |
|
||
| RS_BRF_02232 | AUTOSAR 应支持运行时断言检查的开发 | SRS_CryptoStack_00034, SRS_CryptoStack_00088, SRS_CryptoStack_00095 |
|
||
| RS_BRF_02272 | AUTOSAR 应提供应用程序软件行为的跟踪 | SRS_CryptoStack_00086, SRS_CryptoStack_00087, SRS_CryptoStack_00095 |
|
||
|
||
---
|
||
|
||
## 7 参考
|
||
|
||
### 7.1 AUTOSAR 交付物
|
||
|
||
- [1] General Requirements on Basic Software Modules — `AUTOSAR_SRS_BSWGeneral.pdf`
|
||
- [2] Layered Software Architecture — `AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf`
|
||
- [3] Software Standardization Template — `AUTOSAR_TPS_StandardizationTemplate.pdf`
|
||
- [4] Specification of System Template — `AUTOSAR_TPS_SystemTemplate.pdf`
|
||
- [5] Requirements on AUTOSAR Features — `AUTOSAR_RS_Features`
|
||
|
||
### 7.2 相关标准和规范
|
||
|
||
---
|
||
|
||
## 翻译说明
|
||
|
||
- 本文档为 AUTOSAR SRS 426《Requirements on Crypto Stack》(CP 4.4.0) 的中文翻译;
|
||
- 文档标识号:426;
|
||
- 文档共 36 页,已完整翻译所有 7 个章节及所有需求条目;
|
||
- 保留了所有 AUTOSAR 方框符、API 标识符、模块缩写、算法名和需求 ID;
|
||
- 翻译以保证技术含义准确为前提,语句尽量贴近 AUTOSAR 中文术语库常用译法。 |