👹
Carlos's Tech Blog
  • 🧔ECUs
    • ZYNQ_Documents
      • [ZYNQ] 构建ZYNQ的BSP工程
      • [ZYNQ] 启动流程
      • [ZYNQ] Secure Boot Flow
      • [ZYNQ] Provisioning Guideline
      • [ZYNQ] Decrypting Partition by the Decrypt Agent Using PUF key
      • [ZYNQ] enabling the cryptsetup on ramdisk
      • [ZYNQ] Encrypt external files based on file system using PUF key
      • [ZYNQ] Loading an Encrypted Linux kernel at U-Boot with a KUP Key
      • [ZYNQ] cross-compile the cryptsetup on Xilinx ZYNQ aarch64 platform
      • [ZYNQ] Linux Linaro系统镜像制作SD卡启动
    • S32G_Documents
      • [S32G] Going through the s32g hard/soft platform
      • [S32G] S32g247's Secure Boot using HSE firmware
        • S32g2 HSE key config
        • How S32g verify secure boot image
        • S32g secure boot signature generation
        • How to download and build S32g Secure boot image
        • [S32G] OTA with Secure Boot
    • RT117x_Documents
      • [RT-117x]IMX RT1170 Provisioning Guideline
      • [RT-117x] Going through the MX-RT1170 hard/soft platform
      • [RT-117x] i.MX-RT1170's Secure Boot
        • [RT-117x]Signing image with the HSM (SignServer)
    • LS104x_Documents
      • [LS104x] bsp project
      • [LS104x] boot flow
      • [LS104x] secure boot
      • [LS104x] Application Note, Using the PKCS#11 in TCU platform
      • [LS104x] 使用ostree更新rootfs
      • [LS104x] ostree的移植
      • [LS104x] Starting with Yocto
      • [LS104x] 使用FIT的kernel格式和initramfs
    • IMX6/8_Documents
      • [IMX6] Defining A U-Boot Command
      • NXP IMX6 嵌入式板子一些笔记
      • NXP-imx6 initialization
    • Vehicle_Apps
      • [SecOC] Tree
        • [SecOC] SecOC Freshness and MAC Truncation
  • 😾TECH
    • Rust Arm OS
      • ARMv7m_Using_The_RUST_Cross_Compiler
    • ARM
      • ARM-v7-M
        • 01_ARMv7-M_处理器架构技术综述
        • 02_ARMv7-M_编程模型与模式
        • 03_ARMv7-M_存储系统结构
        • 04_ARMv7-M_异常处理及中断处理
      • ARM-v8-A
        • 02_ARMv8_基本概念
        • 03_ARMv8_指令集介绍_加载指令集和存储指令集
        • 04_ARMv8_指令集_运算指令集
        • 05_ARMv8_指令集_跳转_比较与返回指令
        • 06_ARMv8_指令集_一些重要的指令
        • 0X_ARMv8_指令集_基于汇编的UART驱动
        • 07_ARMv8_汇编器Using as
        • 08_ARMv8_链接器和链接脚本
        • 09_ARMv8_内嵌汇编(内联汇编)Inline assembly
        • 10_ARMv8_异常处理(一) - 入口与返回、栈选择、异常向量表
        • 11_ARMv8_异常处理(二)- Legacy 中断处理
        • 12_ARMv8_异常处理(三)- GICv1/v2中断处理
        • 13_ARMv8_内存管理(一)-内存管理要素
        • 14_ARMv8_内存管理(二)-ARM的MMU设计
        • 15_ARMv8_内存管理(三)-MMU恒等映射及Linux实现
        • 16_ARMv8_高速缓存(一)cache要素
        • 17_ARMv8_高速缓存(二)ARM cache设计
        • 18_ARMv8_高速缓存(三)多核与一致性要素
        • 19_ARMv8_TLB管理(Translation Lookaside buffer)
        • 20_ARMv8_barrier(一)流水线和一致性模型
        • 21_ARMv8_barrier(二)内存屏障案例
      • ARM Boot Flow
        • 01_Embedded_ARMv7/v8 non-secure Boot Flow
        • 02_Embedded_ARMv8 ATF Secure Boot Flow (BL1/BL2/BL31)
        • 03_Embedded_ARMv8 BL33 Uboot Booting Flow
      • ARM Compiler
        • Compiler optimization and the volatile keyword
      • ARM Development
        • 在MACBOOK上搭建ARMv8架构的ARM开发环境
        • Starting with JLink debugger or QEMU
    • Linux
      • Kernel
        • 0x01_LinuxKernel_内核的启动(一)之启动前准备
        • 0x02_LinuxKernel_内核的启动(二)SMP多核处理器启动过程分析
        • 0x21_LinuxKernel_内核活动(一)之系统调用
        • 0x22_LinuxKernel_内核活动(二)中断体系结构(中断上文)
        • 0x23_LinuxKernel_内核活动(三)中断体系结构(中断下文)
        • 0x24_LinuxKernel_进程(一)进程的管理(生命周期、进程表示)
        • 0x25_LinuxKernel_进程(二)进程的调度器的实现
        • 0x26_LinuxKernel_设备驱动(一)综述与文件系统关联
        • 0x27_LinuxKernel_设备驱动(二)字符设备操作
        • 0x28_LinuxKernel_设备驱动(三)块设备操作
        • 0x29_LinuxKernel_设备驱动(四)资源与总线系统
        • 0x30_LinuxKernel_设备驱动(五)模块
        • 0x31_LinuxKernel_内存管理(一)物理页面、伙伴系统和slab分配器
        • 0x32_LinuxKernel_内存管理(二)虚拟内存管理、缺页与调试工具
        • 0x33_LinuxKernel_同步管理_原子操作_内存屏障_锁机制等
        • 01_LinuxDebug_调试理论和基础综述
      • Userspace
        • Linux-用户空间-多线程与同步
        • Linux进程之间的通信-管道(上)
        • Linux进程之间的通信-管道(下)
        • Linux进程之间的通信-信号量(System V)
        • Linux进程之间的通信-内存共享(System V)
        • Linux进程之间的通信-消息队列(System V)
        • Linux应用调试(一)方法、技巧和工具 - 综述
        • Linux应用调试(二)工具之coredump
        • Linux应用调试(三)工具之Valgrind
        • Linux机制之内存池
        • Linux机制之对象管理和引用计数(kobject/ktype/kset)
        • Linux机制copy_{to, from}_user
        • Linux设备树 - DTS语法、节点、设备树解析等
        • Linux System : Managing Linux Services - inittab & init.d
        • Linux System : Managing Linux Services - initramfs
      • Kernel Examples
        • Linux Driver - GPIO键盘驱动开发记录_OMAPL138
        • 基于OMAPL138的Linux字符驱动_GPIO驱动AD9833(一)之miscdevice和ioctl
        • 基于OMAPL138的Linux字符驱动_GPIO驱动AD9833(二)之cdev与read、write
        • 基于OMAPL138的字符驱动_GPIO驱动AD9833(三)之中断申请IRQ
        • Linux内核调用SPI驱动_实现OLED显示功能
        • Linux内核调用I2C驱动_驱动嵌套驱动方法MPU6050
    • OPTEE
      • 01_OPTEE-OS_基础之(一)功能综述、简要介绍
      • 02_OPTEE-OS_基础之(二)TrustZone和ATF功能综述、简要介绍
      • 03_OPTEE-OS_系统集成之(一)编译、实例、在QEMU上执行
      • 05_OPTEE-OS_系统集成之(三)ATF启动过程
      • 06_OPTEE-OS_系统集成之(四)OPTEE镜像启动过程
      • 07_OPTEE-OS_系统集成之(五)REE侧上层软件
      • 08_OPTEE-OS_系统集成之(六)TEE的驱动
      • 09_OPTEE-OS_内核之(一)ARM核安全态和非安全态的切换
      • 10_OPTEE-OS_内核之(二)对安全监控模式的调用的处理
      • 11_OPTEE-OS_内核之(三)中断与异常的处理
      • 12_OPTEE-OS_内核之(四)对TA请求的处理
      • 13_OPTEE-OS_内核之(五)内存和cache管理
      • 14_OPTEE-OS_内核之(六)线程管理与并发
      • 15_OPTEE-OS_内核之(七)系统调用及IPC机制
      • 16_OPTEE-OS_应用之(一)TA镜像的签名和加载
      • 17_OPTEE-OS_应用之(二)密码学算法和安全存储
      • 18_OPTEE-OS_应用之(三)可信应用的开发
      • 19_OPTEE-OS_应用之(四)安全驱动开发
      • 20_OPTEE-OS_应用之(五)终端密钥在线下发系统
    • Binary
      • 01_ELF文件_目标文件格式
      • 02_ELF文件结构_浅析内部文件结构
      • 03_ELF文件_静态链接
      • 04_ELF文件_加载进程虚拟地址空间
      • 05_ELF文件_动态链接
      • 06_Linux的动态共享库
      • 07_ELF文件_堆和栈调用惯例以ARMv8为例
      • 08_ELF文件_运行库(入口、库、多线程)
      • 09_ELF文件_基于ARMv7的Linux系统调用原理
      • 10_ELF文件_ARM的镜像文件(.bin/.hex/.s19)
    • Build
      • 01_Script_makefile_summary
    • Rust
      • 02_SYS_RUST_文件IO
    • Security
      • Crypto
        • 1.0_Security_计算机安全概述及安全需求
        • 2.0_Security_随机数(伪随机数)
        • 3.0_Security_对称密钥算法加解密
        • 3.1_Security_对称密钥算法之AES
        • 3.2_Security_对称密钥算法之MAC(CMAC/HMAC)
        • 3.3_Security_对称密钥算法之AEAD
        • 8.0_Security_pkcs7(CMS)_embedded
        • 9.0_Security_pkcs11(HSM)_embedded
      • Tools
        • Openssl EVP to implement RSA and SM2 en/dec sign/verify
        • 基于Mac Silicon M1 的OpenSSL 编译
        • How to compile mbedtls library on Linux/Mac/Windows
    • Embedded
      • eMMC启动介质
  • 😃Design
    • Secure Boot
      • JY Secure Boot Desgin
    • FOTA
      • [FOTA] Module of ECUs' FOTA unit design
        • [FOTA] Tech key point: OSTree Deployment
        • [FOTA] Tech key point: repositories role for onboard
        • [FOTA] Tech key point: metadata management
        • [FOTA] Tech key point: ECU verifying and Decrpting
        • [FOTA] Tech key point: time server
      • [FOTA] Local-OTA for Embedded Linux System
    • Provisioning
      • [X-Shield] Module of the Embedded Boards initialization
    • Report
由 GitBook 提供支持
在本页
  • 1. Overview
  • 1.1 System Architecture
  • 1.2 Security Requirements
  • 2. High-Level Design
  • 2.1 FOTA Overall Security
  • 4.2 FOTA workflow
  • 4.3 ECUs Hardware Arch and Scope Definition
  1. Design
  2. FOTA

[FOTA] Module of ECUs' FOTA unit design

上一页FOTA下一页[FOTA] Tech key point: OSTree Deployment

最后更新于1年前

1. Overview

The X-Shield System (XSS) is a GUI feature set used to support AUTOX’s production-secure features and provide auxiliary functions that contain embedded board initialization requirements, OBD diagnosis and analysis, certificate configuration, also include firmware sideloading.

The requirement for a solid and secure firmware update mechanism for ECU devices has been raised in the IoT vehicle industry in order to fix the vulnerabilities of IoT devices as well as implement new features and functionalities or update customized configurations and settings.

Because a FOTA solution needs to cover a wide variety of ECU devices, especially the ones with constrained resources, the AUTOX FOTA solution is built on a light-weight control protocol - MQTT, with KPI to provide a trustworthy channel, and protocol-leveled data transmission scalability leveraging the (USDI). AUTOX FOTA solution is a full-featured firmware update solution for ECU devices, which covers firmware image packaging, control message publishing/subscribing, and metadata campaigning.

1.1 System Architecture

AUTOX FOTA solution aligns with the security framework. Uptane was developed in response to the clear need for a comprehensive security model for automotive updates and is the first security system that provides serious compromise resilience in .

FOTA System components include:

  • Repositories

  • FOTA Manager (On the primary ECU)

    • FOTA Download Manager

    • FOTA Update Manager

  • FOTA Update Agent (On the secondary ECU)

1.1.1 Uptane structure

The most important concept in Uptane is that there are two sets of metadata, from separate sources, that must agree with each other and have valid cryptographic signatures.

  • Image Repository​, the image repository contains metadata for update packages that are valid install targets, and its metadata is signed by a chain of trust.

  • Director Repository, which controls what updates (selected from the valid install targets) should actually be installed on devices.

1.1.2 Uptane metadata

The Uptane specification defines several different types of metadata, but the two main files that you need to manage are as follows:

1.1.3 Primary and Secondary ECUs

In the Uptane framework, an ECU is categorized as either a Primary or a Secondary ECU. In most cases, a vehicle has one Primary ECU and several Secondary ECUs. The Primary ECU is responsible for downloading and distributing software to the Secondary ECUs. In the AUTOX FOTA solution, the Telematics Control Unit (TCU) serves the role of Primary ECU. A Primary ECU also verifies and distributes the Uptane-compliant metadata associated with each piece of software. Secondary ECUs, such as the Transmission or Body control modules, receive the software and should also perform some form of metadata verification.

1.2 Security Requirements

  • The FOTA control message publishing/subscribing should base on the X.509 PKI authentication. And the FOTA message should transform via the TLS using the MSG x.509 certificate[3].

  • The FOTA package should be signed by Target Key[1], which supports RSA up to 2048-bit keys with RSA PKCS#1 v1.5 signature with hashing mode. The signature hash scheme supports the SHA-256[2]. The FOTA manager should verify the signature of the FOTA package after it is downloaded and before being parsed into firmware components.

  • The FOTA solution should set up trusted communication between the FOTA Update Manager and the FOTA Update Agent based on the UDS-29 service[4] using the x.509 certificate. Moreover, the FOTA solution should set up secure access based on the UDS-27 service with the FOTA Update Agent.

  • For anti-rollback, FOTA Current Version is stored in RPMB and updated after each firmware update is successfully done by the FOTA update agent.

The following table summarizes the credentials needed for the FOTA solution:

Credentials

Description

x.509 certificate

For TLS, MQTT Broker with The FOTA download manager.

For the Download Server with the FOTA download manager.

For UDS-29, FOTA download manager with the FOTA update agent.

trust chain

CA cert.

Sign server public key (.pem) (Uptane Targes Key)

For verifying the targets meta data that is signed by the Signing Server.

2. High-Level Design

2.1 FOTA Overall Security

The FOTA solution overall security arch is shown in the following figure:

Note, the red blocks shall not be included in the FOTA solution on the device side. The green blocks are the FOTA solution’s components

4.2 FOTA workflow

The below steps demonstrate a typical FOTA scenario:

A. Device acquires Model ID and Device ID, and other relevant eFUSE via The Provisioning Tool. B. FOTA admin downloads the corresponding FOTA image’s signer public key and inputs the key to The Provisioning Tool. C. FOTA admin builds new images with the FOTA signer public keys. Target metadata is zipped and uploaded to the image repository. D. The director repository invokes the FOTAGENtool in the image repository to generate a signed new target metadata. E. The target information is stored in the director repository. F. The Director repository publishes a new FOTAREQ message which includes the download URL, version filters, and other parameters to the MQTT broker. G. Device FOTA Download Manager publishes a FOTREG message as registration to the director repository as the device boots. H. Device FOTA Download Manager subscribes to FOTAREQ message and verifies the message using TLS. I. Device FOTA Download Manager interprets the FOTAREQ message and determines whether to download the new FOTA metadata by checking Current Version, version filters, and other parameters. J. Device FOTA Download Manager setups an HTTPS connection with the image repository. (Initial connection triggers provisioning and stores the device root credentials and relevant business root CA) K. Device FOTA Download Manager downloads FOTA metadata from the specific URL to the FOTA cache. L. Device FOTA Download Manager downloads proceeds a sanity-check[5] on the downloaded FOTA package and parses each firmware metadata from it. M. Each firmware in the FOTA cache is loaded by the FOTA update manager. T. The Device FOTA Update Agent will call U-APIs to load the firmware and to update. N. The Device FOTA Update Agent writes the current version and results to the RPMB and the FOTA cache. S. The Device Manager updates ECUs based on the UDS protocol.

4.3 ECUs Hardware Arch and Scope Definition

4.3.1 Hardware Arch

The TCU should typically be configured as the primary ECU. The perspective with TCU as the primary ECU is shown in the following figure:

This perspective has limitations in that the TCU cannot access the XCU and CDC using the CANFD protocol. From this point of view, the Ethernet protocol serves solely as a means for transmitting OTA packages.

In the XERO project, the VDU offers more extensive transmission mediums options compared to the TCU's perspective as the primary ECU, such as the CANFD, ETH1000, and ETH100.

When considering transmission mediums, it is more suitable to set the primary ECU to VDU.

4.3.2 Layers Definition

A typical ECUs layer is shown in the following figure:

In the FOTA solution, we defined four levels (Level 0 - Level 3) to cover the entire ECUS according to the vehicle structure.

  1. Defined as Level 0: The FOTA manager and FOTA agent are running on the TCU. The FOTA agent is used to update TCU itself.

  2. Defined as Level 1: The FOTA agent is running on this level. The FOTA agent provides some API services such as receiving the FOTA packages, reporting upgrade results, and gathering the version number, etc.

  3. Defined as Level 2: This is NOT in the FOTA scope, the ECU team themselves shall cover the firmware updating. The FOTA agent provides some API services such as receiving the FOTA packages, reporting upgrade results, and gathering the version number, etc.

  4. Defined as Level 3: This is NOT in the FOTA scope, the ECU team themselves shall cover the firmware updating.

4.3.2 Layers Security

1. The FOTA manager (running on the TCU or VDU) downloads the metadata package from the repository and verifies the metadata package using the RSA public key. Then, the FOTA manager parses the metadata into the metadata images for ECUs of level-1.

2. After the FOTA agent (running on ECUs of level-1) receives its metadata image from the FOTA manager, the FOTA agent verifies the metadata image using the RSA public key. If the metadata image belongs to its own, the ECU of level-1 shall execute the Local-OTA process. However, the metadata images are for level-2, the ECU of level-1 shall refresh the corresponding firmware by the UDS (The UDS Security service 0x29 shall be used). (Note, It is NOT in the FOTA scope)

3 & 4. Similarly, the behavior of the ECU in level-3 and level-4 shall align with level-2 and level-3. (It is also NOT in the FOTA scope)

For the flow of the Image and the Director, please refer to the link .

root.json: This file contains information about all the roles that can sign software metadata. To see an example of this metadata, open the root.json file from the TUF (The Update Framework) website.

targets.json: The instance of targets.json in your image repository contains information about all the valid software files. To see an example of this metadata, open the targets.json file from the TUF (The Update Framework) website.

The FOTA metadata downloading is via TLS, and the FOTA business secrets such as RSA keypair and X.509 certificate are managed by the crypto hardware engine. The FOTA download manager is responsible to establish and maintain the TLS connection via the library using the x.509 certificate[3].

All of the credentials (certs, public keys, etc, shall be injected by the trusted X-Shield Provisioning Tool). For the provisioning tool, please refer to the link: [5]. Moreover, The provisioning tool helps the FOTA solution to set up the trust chain (CA cert).

The [1] defined in . The key is used to sign the "targets" metadata file for software updates. This file contains information about all the valid software files in your software repository.

The [2] defined in . The public key cryptographic algorithm used by the key (such as RSA or ECDSA). The particular scheme used to verify the signature (such as rsassa-pss-sha256 or ecdsa-sha2-nistp256)

The [3] defined in s. The Director repository could utilize other mechanisms to uniquely identify a vehicle (e.g., 2-way TLS with unique client certificates)

The [4] defined in , Problems associated with OBD or UDS programming of ECUs, such as authentication of communications between ECUs is outside the scope of the Uptane.

The [5] defined in .

The Provisioning Suite in

The [5] defined in An in-vehicle client on a Primary ECU is capable of verifying the signatures on all update metadata and downloading updates on behalf of its associated Secondary ECUs. The Primary ECU can be the same ECU that communicates with the server.

😃
Image Repository
Director Repository
Directing the installation of images on vehicles
sample
sample
mbedtls
[X-Shield] Module of ECUs' Provisioning Host Tool
5.2.3. Targets metadata
5.2.1. Common metadata structures
5.3.2.1. Directing installation of images on vehicle
3.4. Out of scope
5.4.1. Build-time prerequisite requirements for ECUs
https://app.gitbook.com/o/eTBeA3vhkOtihTJASkhd/s/tqiX1ZbXhRorHX3bwk1r/~/changes/28/design/provisioning
5. Detailed design of Uptane.
Uptane Standard for Design and Implementation 2.0.0
Uptane
that space
The perspective with TCU as primary ECU.