一文读懂Autosar SecOC通讯

2023-05-16

一、为什么用SecOC?

在车载网络中,CAN总线作为常用的通讯总线之一,其大部分数据是以明文方式广播发送且无认证接收。这种方案具有低成本、高性能的优势,但是随着汽车网联化,智能化的业务需要,数据安全性被大家越来越重视。传统的针对报文添加RollingCounter和Checksum的信息,实现的安全性十分有限,也容易被逆向破解,伪造报文控制车辆。

在AUTOSAR架构中对于网络安全的机制,有E2E(End to End)保护,另外还有SecOC(Secure Onboard Communication),主要实现对车内敏感数据信息进行认证。

SecOC是在AUTOSAR软件包中添加的信息安全组件,该特性增加了加解密运算,密钥管理,新鲜值管理和分发等一系列功能和新要求。SecOC模块在PDU级别上为关键数据提供有效可行的身份验证机制。该规范主要使用带有消息认证码(MAC-Message Authentication Code)的对称认证方法。与不对称方法对比,他们使用更小的密钥实现了相同级别的安全性,并且可以在软件和硬件中紧凑高效地实现。但是,规范提供了两种必要的抽象级别,因此对称和非对称身份验证方法都可使用。由于非对称加密计算量大,目前主要都是采用对称加密。

(1)什么是对称加密与非对称加密?

1.对称加密算法

对称加密算法的加密和解密使用的密匙是相同的,也就是说如果通讯两方如果使用对称加密算法来加密通讯数据,那么通讯双方就需要都知道这个密匙,收到通讯数据后用这个密匙来解密数据。

2.非对称加密算法

非对称算法中用到的密匙有两个,分别是公匙和私匙,要求通讯双方都有自己的公匙和私匙,自己公匙加密的数据只有自己的私匙才能解开,自己私匙加密的数据也只有自己的公匙才能解开。公匙是可以公布在网络上的,相当于一个公共的电话簿,可以被其他人获取到的。

以一个通信的例子来说明非对称算法:

A 要和 B 进行通信,A在网络上获取到B的公匙,然后把数据用B的公匙进行加密发送给B,B收到了数据后就用自己的私匙进行解密数据,然后就可以看到数据内容了,即使在网络传输中加密数据被黑客截取,由于黑客没有对应的私匙,他也无法解密数据进行查看。

在通信中对称加密算法比较高效,但是需要告知对方加密钥匙,在实际运用时比较麻烦,所以一般都是用非对称加密算法来加密对称加密算法的钥匙,然后发送给对方,对方收到对称加密算法的钥匙后,后续通信就用对称加密算法来加密消息内容了

目前,使用使用非对称加密方法的数据签名还不能用于车载通讯,因为这样会显著增加计算量。

(2)MAC和新鲜度值的作用

MAC可以防止插入恶意消息,新鲜度值可以防止重放攻击。

其中MAC和新鲜度分别具有不同的作用,在SecOC标准中,AUTOSAR主要基于两种手段来实现数据的真实性和完整性的校验:基于MAC的身份验证和基于Freshness的防重放攻击。首先MAC(Message Authentication Code)是保障信息完整性和认证的密码学方法之一,其中CMAC(Cipher based MAC,CMAC一般用于对称加密,整车厂可在车辆下线刷写程序时静态分配密钥,也可选择使用云端服务器动态地给车辆分配密钥。)是车载总线加密认证常用方案。MAC的作用不是防止有效数据被泄露,而是为了保护数据不会被攻击方篡改,即完成数据来源的认证。如需保护通信数据不被攻击方监听,则报文的有效数据还需要进行额外的加密。

为了降低重复攻击的风险,则需要在Secured I-PDU中加入新鲜度值,Freshness Value是一个根据一定逻辑不断更新的数值,Freshness Value的更新方法多种多样,AUTOSAR 标准将计数器或基于时间的新鲜度值作为典型选项。具体使用何种和具体的加密方式,以及如何定义新鲜度度其实并不在标准之内,这就给OEM有了各自定制化方案的可选余地,因此OEM 在实施 SecOC 方案时需要定义和做好两个关键部分:新鲜度值管理和密钥管理。

(3)SecOC的通讯加密和认证过程

在发送节点,SecOC模块向待发送的Authentic I-PDU添加认证信息从而创建Secured I-PDU。认证信息包括Authenticator(例如CMAC)和可选的Freshness Value。无论Freshness Value是否包含在打包后的Secured I-PDU中,在生成Authenticator期间都会考虑Freshness Value。在接收节点,SecOC模块通过验证收到的Secured I-PDU中包含的Authenticator来判断Authentic I-PDU的来源。为了实现认证,接收节点除了需要Authentic I-PDU外还需要知道发送节点计算Authenticator时使用的Freshness Value。

新鲜度值收发双方验证机制:

SecOC是在AutoSAR软件包中添加的信息安全组件,增加了加解密运算、密钥管理、新鲜值管理和分发等一系列的功能和新要求。SecOC占用CAN报文的负载中的若干字节,在其中填入身份认证和新鲜值字段。

于是,假如搭载SecOC后,一次CAN通信就变成了如下过程:

  1. 报文的原始数据切片,加上秘钥,加上新鲜值,通过算法生成身份认证信息MAC。
  2. 然后再将身份认证信息的切片和新鲜值切片,插入CAN报文负载的指定字节中。其中新鲜值切片可以长度为0,但是身份认证信息的切片必须要存在。
  3. 接收方就是个逆过程了,校验失败就扔掉

详细的SecOC通讯过程如下:

二、安全报文介绍

安全报文的组成:

安全报文由一个头和真实的I-PDU,新鲜度值和用新鲜度值创建的认证器(eg.MAC)组成。由于SecOC机制需要占用总线带宽,因此一般适用于CANFD通讯网络。其中身份验证器(例如MAC)是指使用密钥、安全I-PDU的数据标识符ID、真实有效负载和新鲜度值生成的唯一身份验证数据字符串。消息头可用来指明安全PDU的长度。

数据结构如下:

Authentic I-PDU是需要被保护的数据;Authenticator为认证信息(通常使用消息认证码,即Message Authentication Code,简称MAC);Secured I-PDU Header为可选用的报头;Freshness Value为可选用的新鲜度值。

而在实际使用中,新鲜度值和MAC可能会使用较多长度的数据来提高安全性,但这又会消耗大量的带宽等资源,所以常使用截取的方式做平衡处理。新鲜度值和MAC都按照完整的值来生成,但是在发送和认证的时候只会截取一部分。

新鲜度值管理:

在SecOC中,给出了多种新鲜度值管理方案:

  1. 基于Counter的递增,即包含了原有方案的机制
  2. 基于全局时间戳,源于时间戳的唯一性
  3. 基于同步的复合Counter

这里我们主要谈一下第三种方案。在此方案中,完整的新鲜度值包括同步计数器(Trip Counter)、重置计数器(Reset Counter)、消息计数器(Message Counter)和重置标志值(Reset Flag)。其中消息计数器又分为高值和低值,而真正在报文中发送的值只包含消息计数器的低值和重置标志值。

新鲜度值结构:

TripCounter和ResetCounter由主ECU发送,其他ECU接收,保持此值。MessageCounter每个ECU发送的一次I-PDU加1,当ResetCounter变化时,MessageCounter变为初始值0,到达最大值时保持最大值发送ResetFlag与ResetCounter完成同步,并保持ResetCounter的低位。

新鲜度等值变化规则

三、FVM新鲜值管理

采用一主多从通讯模式实现新鲜值同步报文收发,如下图所示。发送新鲜值同步报文的ECU为主节点,接收新鲜值同步报文

的ECU为从节点。在车载网络中主节点一般是Gateway。

同步报文的结构:

同步报文如上图所示,包含行程计数器和重置计数器以及授权码,授权码由SecOC计算追加,用于校验同步计数器“TripCnt |ResetCnt”值的完整性和真实性校验。

行程计数器:主节点每次上电、唤醒(可包含复位)和检测到新的通讯安全从节点加入网络通信时使发送的行程计数器 1,第二帧和第三帧保持不变,连发三帧,间隔50ms;之后按1s周期发送。发送属性根据项目需求可自定义。

重置计数器:同步报文每次发送第一帧时加1,第二帧第三帧保持不变。

同步报文发送时序图:

同步报文接收时序图:

四、SecOC与其他模块交互

(1) SecOC与PduR模块的关系

(2)FVM与SecOC的交互关系

FVM并不是标准的AUTOSAR组件,其作为复杂设备驱动,与SecOC交互图如下:

五、SecOC在Autosar标准中的实现

目标ECU应该提供以下AUTOSAR基础软件:

  1. System Service(含OS/EcuM/ComM)
  2. Communication(含Com/SecOC/PduR)
  3. 秘钥算法模块(CSM/CryIf/Crypto)
  4. Memory(含NVM/MemIf/Fee)
  5. Diagnostics(含DCM)
  6. MACL(含MCU)
  7. IO(含Port)

(1) FVM 接口

Std_ReturnType Fvm_SetTripResetSyncMsg(uint16 syncId,uint32 tripcnt, uint32 resetCnt); 

Std_ReturnType Fvm_GetTripResetSyncMsg(uint16 syncId, uint32* tripCnt, uint32* resetCnt); 

void Fvm_ResetTripCounter (void); 

uint32 Fvm_ IncreaseTripCounter (uint16 syncId); 

void Fvm_Init(const Fvm_RWFunc * func); 

typedef Std_ReturnType (*Fvm_WriteTripFunc) (uint16 tripId,uint32 tripCounter); 

typedef Std_ReturnType (*Fvm_ReadTripFunc) (uint16 tripId,uint32 *tripCounter); 

uint32 Fvm_GetRxMsgCnt(uint16 freshnessValueID);

(2) SecOC适配接口

Std_ReturnType SecOC_GetRxFreshness (uint16 SecOCFreshnessValueID,const uint8* SecOCTruncatedFreshnessValue,uint32 SecOCTruncatedFreshnessValueLength,uint16 SecOCAuthVerifyAttempts,uint8* SecOCFreshnessValue,uint32* SecOCFreshnessValueLength); 

Std_ReturnType SecOC_GetTxFreshness (uint16 SecOCFreshnessValueID,uint8* SecOCFreshnessValue,uint32* SecOCFreshnessValueLength); 

Std_ReturnType SecOC_SPduTxConfirmation(uint16 SecOCFreshnessValueID); void Fvm_VerificationStatusCallout (SecOC_VerificationStatusType verificationStatus);

(3) 安全报文发送时序图

(4) 安全报文的接收时序图

(5) 新鲜值处理时序图

新鲜值构建的三种方式

  1. Freshness Value Based on Single Freshness Counter 

  1. Freshness Value Based on Single Freshness Timestamp

  1. Freshness Value Based on Multiple Freshness Counters

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文读懂Autosar SecOC通讯 的相关文章

  • Adaptive AUTOSAR——Cryptography (VRTE3.0 R21-11)

    Cryptography模块是用于自适应汽车软件架构的密码学模块 xff0c 主要用于实现各种安全功能 xff0c 包括加密 解密 签名和验证 等操作 它的主要作用包括 xff1a 安全通信 xff1a 使用各种算法对数据进行加密和解密 x
  • 一文读懂AUTOSAR SecOC通讯

    为什么用SecOC 在车载网络中 xff0c CAN总线作为常用的通讯总线之一 xff0c 其大部分数据是以明文方式广播发送且无认证接收 这种方案具有低成本 高性能的优势 xff0c 但是随着汽车网联化 xff0c 智能化的业务需要 xff
  • 一文读懂anchor-base和anchor-free

    1 从Faster RCNN看Anchor Faster RCNN相对于Fast RCNN的一个改进是引入了RPN网络 xff0c RPN用于区域推荐 xff0c 替换了此前的SS算法使得网络在整体上更加的CNN化 那么RPN是怎么进行区域
  • AUTOSAR——AUTOSAR基础

    一 AUTOSAR AUTOSAR全称为 AUTomotive Open System ARchitecture xff0c 译为 汽车开放系统体系结构 二 AUTOSAR核心思想 1 xff09 提倡 在标准上合作 xff0c 在实现上竞
  • 1、AUTOSAR简介

    AUTOSAR xff08 AUTotmotive Open System ARchitecture xff09 汽车开放系统架构是由全球各大汽车整车厂 汽车零部件供应商 汽车电子软件系统公司联合建立的一套标准协议 xff0c 是对汽车技术
  • AUTOSAR ComM模块介绍

    AUTOSAR ComM模块介绍 Autosar ComM概述 Autosar ComM 全称是 Autosar Communication Manager 顾名思义就是用来管理通讯的 ComM 模块位于 BSW 中 Systme Serv
  • Autosar CAN通讯——CANSM

    关于CANSM参考 xff1a https zhuanlan zhihu com p 126073070
  • 谈谈汽车软件中间件(Autosar为例)

    文章目录 操作系统 xff0c 中间件 xff0c 应用软件 各司其职分工不同什么是汽车软件中间件 xff1f 汽车软件中间件有什么好处 xff1f 中间件的明星方案 AUTOSARAUTOSAR Adaptive拯救AUTOSAR技术细节
  • 一文读懂pid控制器

    文章目录 PID控制器1 控制器1 1 电机速度控制系统1 2 温度或水位控制系统1 3 小小总结 2 PID3 模拟式PID4 数字式PID4 1 位置式PID算法4 1 2 位置式pid算法的缺点 4 2 增量式PID算法4 2 2 增
  • Autosar 软件中间件

    我们都知道手机 xff0c 电脑啥的在应用之下 xff0c 硬件之上 xff0c 还有一个东西叫操作系统 xff0c 车辆里也有类似的东西 操作系统 xff0c 中间件 xff0c 应用软件 各司其职分工不同 操作系统 我负责对硬件 xff
  • 从Adaptive AUTOSAR的角度看SOA

    前言 身处汽车行业的我们深知 xff0c 新技术的应用或者新概念的提出 xff0c 一定是事出有因的 通常是为了抢夺新技术高地 xff0c 让汽车更好地满足未来的需求 那么 xff0c 汽车电子电气架构领域掀起的这股SOA热潮是由什么导致的
  • AP AUTOSAR——Security Management

    11 Security Management 11 1 What is Security Management 安全管理是自适应平台体系结构中的一个功能集群 作为一个功能集群 xff0c 安全管理由多个模块组成 xff0c 这些模块向在Ad
  • Adaptive AUTOSAR——Update and Configuration Management(VRTE 3.0 R21-11)

    16 1 What is Update and Configuration Management 更新和配置管理 xff08 UCM xff09 是自适应平台服务中的一个功能集群 作为一种自适应平台服务 xff0c UCM实现了自适应平台的
  • Adaptive AUTOSAR——Execution Management(VRTE 3.0 R21-11)

    ChatGPT回答 xff1a Adaptive AUTOSAR Execution Management 模块是用于管理软件执行的模块 xff0c 其主要功能包括 xff1a 任务调度 xff1a 支持对任务进行调度和执行 xff0c 以
  • 基于CANoe的SecOC实现

    在今天的车载网络中 xff0c 大部分数据传输是在没有任何特殊安全措施的情况下进行的 因此 xff0c 一旦能够直接访问车辆的总线 xff0c 任何人都可以读取总线上传输的原始数据 xff0c 甚至 在今天的车载网络中 xff0c 大部分数
  • Autosar Configuration(五) Security之Csm配置

    本系列教程是根据实际项目开发中总结的经验所得 如发现有不对的地方 还请指正 目录 Autosar Configuration 一 Davinci Developer 工具介绍 Autosar Configuration 二 Davinci
  • 【AUTOSAR】【信息安全】SecOC

    目录 一 概述 二 约束和假设 三 依赖模块 四 功能描述 4 1 安全解决方案的规范 4 1 1 安全解决方案的基本实体 4 1 2 安全的I PDU构建 4 1 3 安全的I PDU验证 4 2 与PduR的关系 4 3 初始化 4 4
  • PHY- PHY芯片概述

    1 PHY概述 关于Internet Protocal的分层模型可以参考文章 Internet Protocal OSI模型中的网络分层模型 下面我们讲讲底层以太网控制器和收发器的知识 其主要是处理OSI模型中的物理层和链路层的事情 在CA
  • SOTA机制详解

    1 SOTA的定义 SOTA即软件在线升级 Software updates Over The Air 是指在不连接烧写器的情况下 通过CAN UART或其它通讯方式 实现应用程序的更新 在进行SOTA时 需要把旧的应用程序擦除 把新的应用
  • IPC-核间通讯

    1 IPC通讯是AUTOSAR体系结构中的核心组成部分 它使得不同的软件组件可以相互通信 协同工作 从而实现整车系统的功能 IPC可以理解为核间通讯 就是一个芯片有多个核 现在想让多核之间通信 达到下面几个目的 数据共享 不同的软件组件之间

随机推荐

  • github 添加wiki

    亲们支持我的新博客哦 61 61 地址 xff08 以后更新会尽量在新博客更新 xff0c 欢迎大家访问加入我的后宫w xff09 xff08 欢迎加群一起玩耍 xff1a 575180837 xff09 平时都是写readMe和docs的
  • 2011

    2011 Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits G
  • 数据结构与算法1:用JavaScript 实现 栈 结构

    栈 xff08 stack xff09 又名堆栈 xff0c 数据特点 xff1a 后进先出 由于其数据形式特点 xff0c 故用 数组搭建 常用方法有 xff1a push 入栈pop 出栈peek 查看栈顶元素isEmpty 判断是否为
  • 【ROS实践入门(八)ROS使用USB视觉传感器相机】

    ROS实践入门 xff08 八 xff09 ROS使用USB视觉传感器相机 本内容经官网实例以及一些参考书总结而成 xff0c 欢迎留言评论交流 xff5e 联系方式 xff1a ziyuanw foxmail com 换成 64 ROS对
  • 【ROS实践入门(五)自定义节点功能包使用与消息传递】

    ROS实践学习入门系列 xff08 五 xff09 自定义节点功能包使用与消息传递 本内容经官网实例以及一些参考书总结而成 xff0c 欢迎留言评论交流 xff5e 联系方式 xff1a ziyuanw foxmail com 换成 64
  • FreeRTOS学习笔记(二)——FreeRTOS中的任务管理

    目录 FreeRTOS的任务创建和删除创建动态任务创建静态任务和空闲任务FreeRTOS的任务删除 FreeRTOS中的任务状态常用函数 FreeRTOS的延时函数 FreeRTOS的任务创建和删除 创建动态任务 BaseType t sp
  • Docker 产品手册之 Docker Hub - 通过 GitHub 实现自动构建

    原文地址 如果你已经将 Docker Hub 链接到了你的 GitHub 账户 xff0c 直接跳到第五小节 创建自动构建 1 将 Docker Hub 链接到 GitHub 账户 注意 xff1a 因为 Docker Hub 需要设置 G
  • 微信自动回复(python)

    前言 xff1a 自从微信禁止网页版登陆之后 xff0c itchat 库也就都不能用了 xff0c 新号不能再登录网页版 xff0c 而且itchat 库在headers里面只放了UserAgent xff0c 其他字段都没有放 所以在你
  • 国际贸易词汇术语大搜罗

    价格术语 world international market price 国际市场价格 FOB free on board 离岸价 C amp F cost and freight 成本加运费价 CIF cost insurance an
  • 【保姆级教程】Docker服务在双架构(X86和ARM)编译统一实践

    在现代计算机系统中 xff0c X86和ARM64是两种常见的处理器架构 为了满足不同架构的需求 xff0c Docker镜像也需要支持双架构编包形式 本文将介绍Docker镜像双架构编包统一的实践 一 Docker镜像编包 在Docker
  • 玩Raspberrypi走过的坑

    树莓派挺有用 xff0c 基本上linux所有的功能都能用上 xff0c 比如开发个人脸识别 xff0c 搭建一个AVR开发环境 xff0c 都相当的不错 从18年到现在一年多 xff0c 也走过不少的坑 xff0c 希望分享一下自己的经验
  • 小米吉姆尼自动驾驶改造

    最近买了个小米吉姆尼 xff0c 恰好有个wifi图传 xff0c 准备做个无人驾驶 xff0c 通过图像处理实现自动驾驶 图传回到PC处理图像目前已经实现 xff0c 这个比较简单 现在存在的问题如何给吉姆尼发送信号 考虑方式有两种 xf
  • 化骨龙 GPS M80Pro 拆解

    最近玩穿越机 xff0c 用GPS的时候一不小心锡渣把9V和5V短路 xff0c 直接把化骨龙GPS M80Pro烧了血泪教训 这个GPS还是挺精致的 xff0c 于是乎拆解一下分享给大家 拆开来看其实并不复杂 xff0c 核心是一颗Ubl
  • freeRTOS 低功耗模式 和 空闲任务

    低功耗模式 1 芯片原本就支持的硬件低功耗 2 freeRTOS提供的软件低功耗 xff0c Tickless模式 xff01 当用户将宏定义 configUSE TICKLESS IDLE 配置为 1 且系统运行满足以下两个条件时 xff
  • 化骨龙zeus 800mw 图传拆解

    最近比较倒霉 xff0c 飞飞机又炸鸡了 xff0c 这次炸的有点狠 xff0c 炸到水泥路上了 xff0c 化骨龙小锤子天线炸断 xff0c 电池炸坏一个 xff0c 图传炸断天线座 xff0c 电子炸坏一个 xff0c 关键是电机这几天
  • pixhawk 电源电压电流计拆解

    闲来无事拆解了一个pixhawk带电流计的电源 xff0c 挺有意思的 xff0c 如下图 xff1a 模块挺简单的 xff0c 正面是就是一块MPS公司的电源芯片MP1593 xff0c 最高4 75 28V xff0c 3A 5V输出
  • VM中linux和windows主机进行串口通信

    最近在做关于AIS的内容 为了对AIS电文进行解码 xff0c 串口收发 数据有PC机模拟发送 xff0c 为了调试方便 xff0c 不用次次将程序放到开发板上运行 xff0c 所以利用pc主机和虚拟机进行串口通信模拟该过程 首先需要用到一
  • 基于CANoe的SecOC实现

    在今天的车载网络中 xff0c 大部分数据传输是在没有任何特殊安全措施的情况下进行的 因此 xff0c 一旦能够直接访问车辆的总线 xff0c 任何人都可以读取总线上传输的原始数据 xff0c 甚至 在今天的车载网络中 xff0c 大部分数
  • Autosar Configuration(五) Security之Csm配置

    本系列教程是根据实际项目开发中总结的经验所得 如发现有不对的地方 还请指正 目录 Autosar Configuration 一 Davinci Developer 工具介绍 Autosar Configuration 二 Davinci
  • 一文读懂Autosar SecOC通讯

    一 为什么用SecOC xff1f 在车载网络中 xff0c CAN总线作为常用的通讯总线之一 xff0c 其大部分数据是以明文方式广播发送且无认证接收 这种方案具有低成本 高性能的优势 xff0c 但是随着汽车网联化 xff0c 智能化的