PMQ9/rust-v-hsm-can
GitHub: PMQ9/rust-v-hsm-can
基于Rust在树莓派4上实现的车载CAN总线虚拟硬件安全模块,提供完整的多ECU模拟和ISO 21434合规的网络安全防护。
Stars: 1 | Forks: 0
# rust-v-hsm-can
用于 CAN 总线安全的虚拟硬件安全模块 (V-HSM),使用 Rust 编写。
**在真实硬件上运行:具备多核架构的 Raspberry Pi 4**
本项目部署在 **Raspberry Pi 4 Model B**(4x ARM Cortex-A72 核心)上,并采用 CPU 亲和性绑核技术,展示了在嵌入式硬件上进行实时汽车 CAN 总线安全的实现。
**Raspberry Pi 4 上的 CAN 总线监视器:**
本代码库包含两种 CAN 总线实现:
1. **[basic/](basic/)** - 原始的简单 CAN 总线实现,用于学习和测试
2. **[autonomous_controller/](autonomous_controller/)** - **主项目**:在 Raspberry Pi 4 硬件上运行的自动驾驶车辆 CAN 总线,包含 9 个 ECU
## 快速开始 (在 Raspberry Pi 4 上)
### 选项 A:自动驾驶车辆系统(含 HSM 安全机制)
```
cd autonomous_controller
cargo run # Standard mode
cargo run -- --perf # With HSM performance metrics
# 按 'q' 退出
```
系统将自动执行以下操作:
1. 在专用核心 3 上启动 HSM 服务(加密引擎)
2. 在核心 0 上启动总线服务器
3. 在核心 1 上启动 6 个传感器 ECU(车轮、引擎、转向)
4. 在核心 2 上启动 3 个控制器 ECU(自动驾驶、制动、转向)
5. 在核心 0 上显示实时仪表盘
### 选项 B:基础 CAN 模拟器
```
cd basic
cargo run --bin demo # Single-process demo
# 或多终端模式 (见 basic/README.md)
```
## 架构概述
### 基础项目架构
```
Input ECU ──┐
│
├──> Virtual CAN Bus ──┬──> Output ECU
│ │
│ └──> Monitor
│
More ECUs ──┘
```
该系统模拟了一个完整的 CAN 总线网络:
- **虚拟 CAN 总线**:模拟真实 CAN 总线行为的广播通信通道。所有连接的节点都能以亚毫秒级延迟看到所有消息。
- **输入 ECU (ARM Cortex-M4)**:模拟向总线发送 CAN 帧的传感器/执行器 ECU。支持标准(11 位)和扩展(29 位)CAN ID。
- **输出 ECU (ARM Cortex-M7)**:模拟从总线接收并处理 CAN 帧的高性能控制 ECU。
- **监视器**:观察所有总线流量,带有颜色编码的时间戳、ID、数据长度和有效载荷。
所有组件连接到一个共享广播总线。任何 ECU 发送的帧都会被所有其他连接的组件接收。
### 自动驾驶车辆项目架构(运行于 Pi4 硬件)
**硬件平台**:Raspberry Pi 4 Model B
- **CPU**:4x ARM Cortex-A72 核心 @ 1.5GHz (64-bit ARMv8-A)
- **架构**:aarch64 (ARM64)
- **内存**:4GB LPDDR4
- **操作系统**:Linux 6.12.34+rpt-rpi-v8
**多核架构**:
```
Core 0: Bus Server + Monitor (Infrastructure)
Core 1: 6 Sensor ECUs (Data producers)
Core 2: 3 Controller/Actuator ECUs (Data consumers)
Core 3: HSM Service (Dedicated crypto engine)
```
**9 个 ECU**:wheel_fl, wheel_fr, wheel_rl, wheel_rr, engine_ecu, steering_sensor, autonomous_controller, brake_controller, steering_controller
**核心组件**:
- 6 个发送实时车辆数据的传感器 ECU
- 位于专用核心 3 的**集中式 HSM 服务**(Unix socket IPC)
- 基于硬件的 RNG(Linux getrandom 系统调用)
- 带硬件加速的 AES-256-GCM 加密
- V-HSM 安全层,通过 HMAC-SHA256 + CRC32 保护所有通信
- 作为中央 TCP 广播中心的 CAN 总线服务器
- 处理传感器数据并做出驾驶决策的自动驾驶控制器
- 2 个接收控制指令的执行器 ECU
- 提供实时仪表盘和安全状态的监视器
**功能特性**:
- 具有 HMAC-SHA256 MAC 和 CRC32 校验的虚拟 HSM(硬件安全模块)
- 带 CPU 亲和性绑核的**多核处理**(每进程 ECU 模型)
- **基于硬件的随机数生成**(加密安全)
- 所有 ECU 的安全启动和受保护内存
- 汽车 CAN 消息 ID(0x100-0x3FF 范围)
- 10-20 Hz 的周期性传感器广播
- 包含速度控制和路径跟踪的自动驾驶控制循环
- 安全特性:制动压力限制、转向速率限制
- 车轮速度差异的异常检测
- 带安全状态的实时仪表盘监视器
### 紧急攻击响应
当检测到不安全的 CAN 帧(MAC=0)时,自动驾驶控制器立即进入紧急关闭模式:
- **自动关闭**:所有控制指令(制动、油门、转向)立即停止
- **安全监视**:继续读取传感器数据,但不执行任何操作
- **可见警报**:监视器显示红色警告横幅:"⚠ AUTONOMOUS CONTROLLER DEACTIVATED ⚠"
- **手动恢复**:需要重启才能恢复操作
这种故障安全机制可防止在遭受主动攻击期间受损的指令到达车辆执行器。
### HSM 安全密钥
每个 ECU 的虚拟 HSM 管理 7 个加密密钥(均为 256 位):
- **主密钥**:密钥派生层级的根密钥
- **安全启动密钥**:固件签名验证
- **固件更新密钥**:固件更新授权
- **对称通信密钥**:用于 CAN 消息的 HMAC-SHA256 MAC 生成
- **密钥加密密钥**:安全密钥交换/配置
- **RNG 种子密钥**:确定性随机数生成
- **种子/密钥访问令牌**:诊断访问控制(UDS 种子/密钥)
每个 ECU 还维护网络中所有受信任 ECU 的 **MAC 验证密钥**。
### 攻击检测
所有 ECU 使用基于阈值的攻击检测和结构化错误类型:
- **MAC 错误**:容忍 3 次连续失败(严格的加密安全性)
- **CRC 错误**:容忍 5 次连续失败(噪声/损坏容忍度)
- **未加密帧**:立即触发(对注入攻击零容忍)
错误计数器在帧验证成功后自动重置,允许从瞬时故障中恢复,同时检测持续攻击。
### ISO 21434 网络安全合规性
本项目实施全面的 ISO/SAE 21434:2021(道路车辆 - 网络安全工程)合规功能:
**自动化事件响应** (§8.6, §9.4.3):
- 基于严重性的事件分类(低/中/高/严重)
- 8 种事件类别及自动化响应动作
- 分级响应:日志 → 警报 → 故障安全 → 隔离 ECU
- 事件升级和解决跟踪
**安全事件关联** (§9.4.2, §10.4):
- 基于模式的跨时间和 ECU 攻击检测
- 8 种攻击模式:协调多源攻击、渐进式升级、定向攻击、多 ECU 重放、暴力破解等
- 时间窗口关联分析(60 秒窗口)
- 自动缓解建议
**固件更新回滚** (§8.5, §10.3):
- 带签名验证的安全固件更新
- 验证失败时自动回滚
- 启动尝试限制(最多 3 次)
- 版本回滚预防
- 更新生命周期:待定 → 安装中 → 等待验证 → 已提交
**TARA 文档** (§8.4):
- 威胁分析与风险评估生成器
- STRIDE 威胁建模方法论
- ISO 21434 风险矩阵(影响 × 可行性)
- 6 个预定义的汽车威胁场景
- 自动化 TARA 报告生成
**安全审计报告**:
- 全面的 ISO 21434 合规文档
- 覆盖 10+ 项 ISO 21434 要求
- 运行:`cargo run --bin iso21434_audit_report`
- 运行:`cargo run --bin generate_tara_report`
有关完整文档,请参阅 [autonomous_controller/README.md](autonomous_controller/README.md)。
### 高级汽车安全功能(第 3 和第 4 阶段)
**UDS 安全诊断** (ISO 14229):
- 种子/密钥挑战-响应认证
- 4 个安全级别(Level1-Level4),具有分级权限
- 带超时保护的会话管理
- 3 次失败尝试后的锁定机制(60 秒锁定)
- 诊断服务:安全访问、会话控制、ECU 重置
**签名配置管理**:
- ECU 配置的加密完整性保护
- 带 SHA256 指纹识别的 HMAC-SHA256 签名
- 5 种配置类型:访问控制策略、诊断配置、网络配置、安全配置、固件元数据
- 授权签名者验证(FACTORY, FLEET_MANAGER)
- 篡改检测与拒绝
**增强的安全仪表盘**:
- 实时威胁等级可视化(安全/低/中/高/严重)
- 安全速率百分比跟踪(安全帧与非安全帧)
- 每个 ECU 的攻击统计及攻击率计算
- 唯一 CAN ID 监控
- 攻击持续时间跟踪
- 颜色编码的威胁指示器
**安全网关**(区域分割):
- 基于区域的 CAN 总线隔离:动力总成、底盘、ADAS、信息娱乐、车身、诊断
- 区域间路由策略,带默认动作(允许/拒绝/审计)
- 每条路由的 CAN ID 白名单
- 跨区域流量的审计日志
- 防止信息娱乐系统受损影响安全关键系统
- 统计跟踪:转发/阻止/审计的消息
## 构建
每个项目都是独立的:
```
# 构建自动驾驶车辆模拟器
cd autonomous_controller
cargo build --release
# 构建基础模拟器
cd ../basic
cargo build --release
```
## 项目结构
```
rust-v-hsm-can/
├── basic/ # Original simple implementation
│ ├── src/
│ │ ├── types.rs # CAN frame types
│ │ ├── can_bus.rs # Virtual CAN bus
│ │ ├── ecu.rs # ECU emulator
│ │ ├── network.rs # TCP networking
│ │ └── bin/
│ │ ├── bus_server.rs # Bus server
│ │ ├── monitor.rs # Traffic monitor
│ │ ├── input_ecu.rs # Interactive sender
│ │ ├── output_ecu.rs # Receiver
│ │ └── demo.rs # Single-process demo
│ └── README.md
│
├── autonomous_controller/ # Realistic autonomous vehicle
│ ├── src/
│ │ ├── types.rs # Automotive CAN types
│ │ ├── can_bus.rs # Virtual CAN bus
│ │ ├── ecu.rs # ECU emulator
│ │ ├── network.rs # TCP networking
│ │ ├── hsm/ # Virtual HSM with cryptography (modular)
│ │ ├── protected_memory.rs # Secure boot and memory
│ │ └── bin/
│ │ ├── bus_server.rs # Bus server
│ │ ├── monitor.rs # Enhanced monitor
│ │ ├── wheel_fl.rs # Front left wheel
│ │ ├── wheel_fr.rs # Front right wheel
│ │ ├── wheel_rl.rs # Rear left wheel
│ │ ├── wheel_rr.rs # Rear right wheel
│ │ ├── engine_ecu.rs # Engine control
│ │ ├── steering_sensor.rs # Steering sensors
│ │ ├── autonomous_controller.rs # Autonomous brain
│ │ ├── brake_controller.rs # Brake actuator
│ │ └── steering_controller.rs # Steering actuator
│ └── README.md
│
├── CHANGELOG.md # Project history
└── README.md # This file
```
## 测试
### 快速开始:在本地运行所有 CI 测试
```
./run_ci_tests.sh
```
此脚本运行完整的 CI 测试套件(9 个测试类别)并提供带通过/失败状态的彩色输出。在推送前使用此脚本以确保所有测试通过。
### 单独测试类别
```
# 格式化和 linting
cargo fmt -- --check
cargo clippy -- -D warnings
# 构建
cargo build --verbose
# 单元测试 (133 个测试)
cargo test --workspace --lib --verbose
# 集成测试 (14 个测试)
cargo test --workspace --test integration_tests --verbose
# 回归测试 (4 个套件)
cargo test --test attack_regression_tests -- --ignored --test-threads=1 --nocapture
cargo test --test access_control_regression_tests -- --ignored --test-threads=1 --nocapture
cargo test --test replay_protection_regression_tests -- --ignored --test-threads=1 --nocapture
cargo test --package autonomous_vehicle_sim --test anomaly_ids_regression_tests -- --ignored --test-threads=1 --nocapture
```
**总测试数:** 所有类别共 266+ 个测试(257 个单元测试 + 9 个监视器 UI + 集成测试 + 回归测试)
详情请参阅 [tests/README.md](tests/README.md)。
## 开发状态
**已完成功能:**
- [x] V-HSM 加密层(HMAC-SHA256 + CRC32)
- [x] 消息认证码 (MAC)
- [x] 密钥管理系统
- [x] 攻击场景脚本
- [x] 入侵检测系统
- [x] 性能基准测试
- [x] HSM 性能评估模式
- [x] 回归测试与 CI/CD 集成
- [x] **在 Raspberry Pi 4 上的硬件部署**
- [x] **带 CPU 亲和性的多核架构**
- [x] **集中式 HSM 服务(Unix socket IPC)**
- [x] **基于硬件的 RNG(Linux getrandom)**
- [x] **AES-256-GCM 加密**
**未来增强:**
- [ ] CAN FD 支持
- [ ] 硬件 CAN 总线接口(MCP2515/MCP2518FD)
- [ ] 实时调度(SCHED_FIFO)
- [ ] Zephyr RTOS 集成
- [ ] 硬件 HSM(TPM, ARM TrustZone)
### ISO 21434 路线图
**第 1 阶段 - 基础:**
- [x] 安全事件日志记录(防篡改审计跟踪)
- [x] CAN ID 访问控制白名单(授权模型)
- [x] 增强重放保护(滑动窗口 + 时间戳)
**第 2 阶段 - 检测:**
- [x] 速率限制与 DoS 防护(每 ECU 限流)
- [x] 基于异常的 IDS(统计基线分析)
- [x] 攻击模拟框架(模糊测试、注入、重放)
**第 3 阶段 - 架构(已完成):**
- [x] 安全网关 ECU(区域分割)
- [x] 加密密钥轮换(会话密钥生命周期)
- [x] 增强的安全仪表盘(实时威胁指标)
**第 4 阶段 - 高级(已完成):**
- [x] UDS 安全诊断(种子/密钥认证)
- [x] 签名配置管理(策略篡改检测)
- [x] 高级故障安全恢复机制
**第 5 阶段 - ISO 21434 合规(已完成):**
- [x] 自动化事件响应 (§8.6, §9.4.3)
- [x] 安全事件关联 (§9.4.2, §10.4)
- [x] 固件更新回滚 (§8.5, §10.3)
- [x] TARA 文档生成器 (§8.4)
- [x] ISO 21434 审计报告
**待办事项**
- [x] 基于硬件的 RNG(Linux, ARM, Windows)
- [ ] ~~CAN 消息可读性~~设计上可读的,因为本项目旨在进行实验,我们需要查看原始数据
- [x] 用 AES-256-GCM 替换基于 XOR 的加密
本代码库包含两种 CAN 总线实现:
1. **[basic/](basic/)** - 原始的简单 CAN 总线实现,用于学习和测试
2. **[autonomous_controller/](autonomous_controller/)** - **主项目**:在 Raspberry Pi 4 硬件上运行的自动驾驶车辆 CAN 总线,包含 9 个 ECU
## 快速开始 (在 Raspberry Pi 4 上)
### 选项 A:自动驾驶车辆系统(含 HSM 安全机制)
```
cd autonomous_controller
cargo run # Standard mode
cargo run -- --perf # With HSM performance metrics
# 按 'q' 退出
```
系统将自动执行以下操作:
1. 在专用核心 3 上启动 HSM 服务(加密引擎)
2. 在核心 0 上启动总线服务器
3. 在核心 1 上启动 6 个传感器 ECU(车轮、引擎、转向)
4. 在核心 2 上启动 3 个控制器 ECU(自动驾驶、制动、转向)
5. 在核心 0 上显示实时仪表盘
### 选项 B:基础 CAN 模拟器
```
cd basic
cargo run --bin demo # Single-process demo
# 或多终端模式 (见 basic/README.md)
```
## 架构概述
### 基础项目架构
```
Input ECU ──┐
│
├──> Virtual CAN Bus ──┬──> Output ECU
│ │
│ └──> Monitor
│
More ECUs ──┘
```
该系统模拟了一个完整的 CAN 总线网络:
- **虚拟 CAN 总线**:模拟真实 CAN 总线行为的广播通信通道。所有连接的节点都能以亚毫秒级延迟看到所有消息。
- **输入 ECU (ARM Cortex-M4)**:模拟向总线发送 CAN 帧的传感器/执行器 ECU。支持标准(11 位)和扩展(29 位)CAN ID。
- **输出 ECU (ARM Cortex-M7)**:模拟从总线接收并处理 CAN 帧的高性能控制 ECU。
- **监视器**:观察所有总线流量,带有颜色编码的时间戳、ID、数据长度和有效载荷。
所有组件连接到一个共享广播总线。任何 ECU 发送的帧都会被所有其他连接的组件接收。
### 自动驾驶车辆项目架构(运行于 Pi4 硬件)
**硬件平台**:Raspberry Pi 4 Model B
- **CPU**:4x ARM Cortex-A72 核心 @ 1.5GHz (64-bit ARMv8-A)
- **架构**:aarch64 (ARM64)
- **内存**:4GB LPDDR4
- **操作系统**:Linux 6.12.34+rpt-rpi-v8
**多核架构**:
```
Core 0: Bus Server + Monitor (Infrastructure)
Core 1: 6 Sensor ECUs (Data producers)
Core 2: 3 Controller/Actuator ECUs (Data consumers)
Core 3: HSM Service (Dedicated crypto engine)
```
**9 个 ECU**:wheel_fl, wheel_fr, wheel_rl, wheel_rr, engine_ecu, steering_sensor, autonomous_controller, brake_controller, steering_controller
**核心组件**:
- 6 个发送实时车辆数据的传感器 ECU
- 位于专用核心 3 的**集中式 HSM 服务**(Unix socket IPC)
- 基于硬件的 RNG(Linux getrandom 系统调用)
- 带硬件加速的 AES-256-GCM 加密
- V-HSM 安全层,通过 HMAC-SHA256 + CRC32 保护所有通信
- 作为中央 TCP 广播中心的 CAN 总线服务器
- 处理传感器数据并做出驾驶决策的自动驾驶控制器
- 2 个接收控制指令的执行器 ECU
- 提供实时仪表盘和安全状态的监视器
**功能特性**:
- 具有 HMAC-SHA256 MAC 和 CRC32 校验的虚拟 HSM(硬件安全模块)
- 带 CPU 亲和性绑核的**多核处理**(每进程 ECU 模型)
- **基于硬件的随机数生成**(加密安全)
- 所有 ECU 的安全启动和受保护内存
- 汽车 CAN 消息 ID(0x100-0x3FF 范围)
- 10-20 Hz 的周期性传感器广播
- 包含速度控制和路径跟踪的自动驾驶控制循环
- 安全特性:制动压力限制、转向速率限制
- 车轮速度差异的异常检测
- 带安全状态的实时仪表盘监视器
### 紧急攻击响应
当检测到不安全的 CAN 帧(MAC=0)时,自动驾驶控制器立即进入紧急关闭模式:
- **自动关闭**:所有控制指令(制动、油门、转向)立即停止
- **安全监视**:继续读取传感器数据,但不执行任何操作
- **可见警报**:监视器显示红色警告横幅:"⚠ AUTONOMOUS CONTROLLER DEACTIVATED ⚠"
- **手动恢复**:需要重启才能恢复操作
这种故障安全机制可防止在遭受主动攻击期间受损的指令到达车辆执行器。
### HSM 安全密钥
每个 ECU 的虚拟 HSM 管理 7 个加密密钥(均为 256 位):
- **主密钥**:密钥派生层级的根密钥
- **安全启动密钥**:固件签名验证
- **固件更新密钥**:固件更新授权
- **对称通信密钥**:用于 CAN 消息的 HMAC-SHA256 MAC 生成
- **密钥加密密钥**:安全密钥交换/配置
- **RNG 种子密钥**:确定性随机数生成
- **种子/密钥访问令牌**:诊断访问控制(UDS 种子/密钥)
每个 ECU 还维护网络中所有受信任 ECU 的 **MAC 验证密钥**。
### 攻击检测
所有 ECU 使用基于阈值的攻击检测和结构化错误类型:
- **MAC 错误**:容忍 3 次连续失败(严格的加密安全性)
- **CRC 错误**:容忍 5 次连续失败(噪声/损坏容忍度)
- **未加密帧**:立即触发(对注入攻击零容忍)
错误计数器在帧验证成功后自动重置,允许从瞬时故障中恢复,同时检测持续攻击。
### ISO 21434 网络安全合规性
本项目实施全面的 ISO/SAE 21434:2021(道路车辆 - 网络安全工程)合规功能:
**自动化事件响应** (§8.6, §9.4.3):
- 基于严重性的事件分类(低/中/高/严重)
- 8 种事件类别及自动化响应动作
- 分级响应:日志 → 警报 → 故障安全 → 隔离 ECU
- 事件升级和解决跟踪
**安全事件关联** (§9.4.2, §10.4):
- 基于模式的跨时间和 ECU 攻击检测
- 8 种攻击模式:协调多源攻击、渐进式升级、定向攻击、多 ECU 重放、暴力破解等
- 时间窗口关联分析(60 秒窗口)
- 自动缓解建议
**固件更新回滚** (§8.5, §10.3):
- 带签名验证的安全固件更新
- 验证失败时自动回滚
- 启动尝试限制(最多 3 次)
- 版本回滚预防
- 更新生命周期:待定 → 安装中 → 等待验证 → 已提交
**TARA 文档** (§8.4):
- 威胁分析与风险评估生成器
- STRIDE 威胁建模方法论
- ISO 21434 风险矩阵(影响 × 可行性)
- 6 个预定义的汽车威胁场景
- 自动化 TARA 报告生成
**安全审计报告**:
- 全面的 ISO 21434 合规文档
- 覆盖 10+ 项 ISO 21434 要求
- 运行:`cargo run --bin iso21434_audit_report`
- 运行:`cargo run --bin generate_tara_report`
有关完整文档,请参阅 [autonomous_controller/README.md](autonomous_controller/README.md)。
### 高级汽车安全功能(第 3 和第 4 阶段)
**UDS 安全诊断** (ISO 14229):
- 种子/密钥挑战-响应认证
- 4 个安全级别(Level1-Level4),具有分级权限
- 带超时保护的会话管理
- 3 次失败尝试后的锁定机制(60 秒锁定)
- 诊断服务:安全访问、会话控制、ECU 重置
**签名配置管理**:
- ECU 配置的加密完整性保护
- 带 SHA256 指纹识别的 HMAC-SHA256 签名
- 5 种配置类型:访问控制策略、诊断配置、网络配置、安全配置、固件元数据
- 授权签名者验证(FACTORY, FLEET_MANAGER)
- 篡改检测与拒绝
**增强的安全仪表盘**:
- 实时威胁等级可视化(安全/低/中/高/严重)
- 安全速率百分比跟踪(安全帧与非安全帧)
- 每个 ECU 的攻击统计及攻击率计算
- 唯一 CAN ID 监控
- 攻击持续时间跟踪
- 颜色编码的威胁指示器
**安全网关**(区域分割):
- 基于区域的 CAN 总线隔离:动力总成、底盘、ADAS、信息娱乐、车身、诊断
- 区域间路由策略,带默认动作(允许/拒绝/审计)
- 每条路由的 CAN ID 白名单
- 跨区域流量的审计日志
- 防止信息娱乐系统受损影响安全关键系统
- 统计跟踪:转发/阻止/审计的消息
## 构建
每个项目都是独立的:
```
# 构建自动驾驶车辆模拟器
cd autonomous_controller
cargo build --release
# 构建基础模拟器
cd ../basic
cargo build --release
```
## 项目结构
```
rust-v-hsm-can/
├── basic/ # Original simple implementation
│ ├── src/
│ │ ├── types.rs # CAN frame types
│ │ ├── can_bus.rs # Virtual CAN bus
│ │ ├── ecu.rs # ECU emulator
│ │ ├── network.rs # TCP networking
│ │ └── bin/
│ │ ├── bus_server.rs # Bus server
│ │ ├── monitor.rs # Traffic monitor
│ │ ├── input_ecu.rs # Interactive sender
│ │ ├── output_ecu.rs # Receiver
│ │ └── demo.rs # Single-process demo
│ └── README.md
│
├── autonomous_controller/ # Realistic autonomous vehicle
│ ├── src/
│ │ ├── types.rs # Automotive CAN types
│ │ ├── can_bus.rs # Virtual CAN bus
│ │ ├── ecu.rs # ECU emulator
│ │ ├── network.rs # TCP networking
│ │ ├── hsm/ # Virtual HSM with cryptography (modular)
│ │ ├── protected_memory.rs # Secure boot and memory
│ │ └── bin/
│ │ ├── bus_server.rs # Bus server
│ │ ├── monitor.rs # Enhanced monitor
│ │ ├── wheel_fl.rs # Front left wheel
│ │ ├── wheel_fr.rs # Front right wheel
│ │ ├── wheel_rl.rs # Rear left wheel
│ │ ├── wheel_rr.rs # Rear right wheel
│ │ ├── engine_ecu.rs # Engine control
│ │ ├── steering_sensor.rs # Steering sensors
│ │ ├── autonomous_controller.rs # Autonomous brain
│ │ ├── brake_controller.rs # Brake actuator
│ │ └── steering_controller.rs # Steering actuator
│ └── README.md
│
├── CHANGELOG.md # Project history
└── README.md # This file
```
## 测试
### 快速开始:在本地运行所有 CI 测试
```
./run_ci_tests.sh
```
此脚本运行完整的 CI 测试套件(9 个测试类别)并提供带通过/失败状态的彩色输出。在推送前使用此脚本以确保所有测试通过。
### 单独测试类别
```
# 格式化和 linting
cargo fmt -- --check
cargo clippy -- -D warnings
# 构建
cargo build --verbose
# 单元测试 (133 个测试)
cargo test --workspace --lib --verbose
# 集成测试 (14 个测试)
cargo test --workspace --test integration_tests --verbose
# 回归测试 (4 个套件)
cargo test --test attack_regression_tests -- --ignored --test-threads=1 --nocapture
cargo test --test access_control_regression_tests -- --ignored --test-threads=1 --nocapture
cargo test --test replay_protection_regression_tests -- --ignored --test-threads=1 --nocapture
cargo test --package autonomous_vehicle_sim --test anomaly_ids_regression_tests -- --ignored --test-threads=1 --nocapture
```
**总测试数:** 所有类别共 266+ 个测试(257 个单元测试 + 9 个监视器 UI + 集成测试 + 回归测试)
详情请参阅 [tests/README.md](tests/README.md)。
## 开发状态
**已完成功能:**
- [x] V-HSM 加密层(HMAC-SHA256 + CRC32)
- [x] 消息认证码 (MAC)
- [x] 密钥管理系统
- [x] 攻击场景脚本
- [x] 入侵检测系统
- [x] 性能基准测试
- [x] HSM 性能评估模式
- [x] 回归测试与 CI/CD 集成
- [x] **在 Raspberry Pi 4 上的硬件部署**
- [x] **带 CPU 亲和性的多核架构**
- [x] **集中式 HSM 服务(Unix socket IPC)**
- [x] **基于硬件的 RNG(Linux getrandom)**
- [x] **AES-256-GCM 加密**
**未来增强:**
- [ ] CAN FD 支持
- [ ] 硬件 CAN 总线接口(MCP2515/MCP2518FD)
- [ ] 实时调度(SCHED_FIFO)
- [ ] Zephyr RTOS 集成
- [ ] 硬件 HSM(TPM, ARM TrustZone)
### ISO 21434 路线图
**第 1 阶段 - 基础:**
- [x] 安全事件日志记录(防篡改审计跟踪)
- [x] CAN ID 访问控制白名单(授权模型)
- [x] 增强重放保护(滑动窗口 + 时间戳)
**第 2 阶段 - 检测:**
- [x] 速率限制与 DoS 防护(每 ECU 限流)
- [x] 基于异常的 IDS(统计基线分析)
- [x] 攻击模拟框架(模糊测试、注入、重放)
**第 3 阶段 - 架构(已完成):**
- [x] 安全网关 ECU(区域分割)
- [x] 加密密钥轮换(会话密钥生命周期)
- [x] 增强的安全仪表盘(实时威胁指标)
**第 4 阶段 - 高级(已完成):**
- [x] UDS 安全诊断(种子/密钥认证)
- [x] 签名配置管理(策略篡改检测)
- [x] 高级故障安全恢复机制
**第 5 阶段 - ISO 21434 合规(已完成):**
- [x] 自动化事件响应 (§8.6, §9.4.3)
- [x] 安全事件关联 (§9.4.2, §10.4)
- [x] 固件更新回滚 (§8.5, §10.3)
- [x] TARA 文档生成器 (§8.4)
- [x] ISO 21434 审计报告
**待办事项**
- [x] 基于硬件的 RNG(Linux, ARM, Windows)
- [ ] ~~CAN 消息可读性~~设计上可读的,因为本项目旨在进行实验,我们需要查看原始数据
- [x] 用 AES-256-GCM 替换基于 XOR 的加密标签:ARM Cortex-A72, CAN Bus, CPU亲和性, ECU, IoT安全, meg, Raspberry Pi 4, Rust, V2X安全, V-HSM, 仿真模拟, 信息安全, 分布式系统, 可视化界面, 响应大小分析, 多核架构, 密码学引擎, 嵌入式系统, 并发处理, 汽车网络安全, 网络流量审计, 自动驾驶控制器, 虚拟硬件安全模块, 车载网络, 通知系统, 通知系统