您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
一文读懂AUTOSAR SecOC通讯
 
作者:aFakeProgramer
   次浏览      
 2024-7-17
 
编辑推荐:
本文主要介绍AUTOSAR SecOC通讯,SecOC的通讯加密和认证过程以及安全报文的发送,希望对你的学习有帮助。
本文来自于CSDN,由火龙果软件Alice编辑,推荐。

 

为什么用SecOC

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

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

SecOC 是在AUTOSAR软件包中添加的信息安全组件,该特性增加了 加解密运算,密钥管理,新鲜值管理和分发 等一系列功能和新要求。

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

什么是对称加密与非对称加密

对称加密算法:

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

非对称加密算法:

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

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

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

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

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

MAC和新鲜度值的作用

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

其中MAC和新鲜度分别具有不同的作用,在SecOC标准中,AUTOSAR主要基于两种手段来实现数据的真实性和完整性的校验:

1.基于MAC的身份验证:

MAC(Message Authentication Code)是保障信息完整性和认证的密码学方法之一,其中CMAC(Cipher based MAC,CMAC 一般用于对称加密 ,整车厂可在 车辆下线刷写程序时静态分配密钥,也可选择使用云端服务器动态地给车辆分配密钥 。)是车载总线加密认证常用方案。

MAC的作用不是防止有效数据被泄露,而是为了 保护数据不会被攻击方篡改,即完成数据来源的认证。 如需保护通信数据不被攻击方监听,则报文的有效数据还需要进行额外的加密。

2.基于Freshness的防重放攻击

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

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通讯过程如下:

 

安全报文介绍

安全报文的组成:

安全报文由组成

1.一个头

2.真实的I-PDU

3.新鲜度值

4.用新鲜度值创建的认证器 (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

这里我们主要谈一下第三种方案。在此方案中,完整的新鲜度值包括:

1.同步计数器(Trip Counter)

2.重置计数器(Reset Counter)

3.消息计数器(Message Counter),消息计数器又分为高值和低值,真实在报文中发送的值只包含 消息计数器的低值和重置标志值 。

4.重置标志值(Reset Flag)

 

新鲜度值结构图

 

TripCounter和ResetCounter由主ECU发送,其他ECU接收,保持此值。

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

新鲜度等值变化规则

 

FVM新鲜值管理

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

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

同步报文的结构:

 

同步报文包含:行程计数器和重置计数器以及授权码。

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

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

授权码由SecOC计算追加,用于校验同步计数器“TripCnt |ResetCnt”值的完整性和真实性校验。

同步报文发送时序图:

 

同步报文接收时序图:

 

SecOC与PduR模块的关系

 

FVM与SecOC的交互关系

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

目标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)

FVM 接口

  1. Std_ReturnType Fvm_SetTripResetSyncMsg(uint16 syncId,uint32 tripcnt, uint32 resetCnt);
  2. Std_ReturnType Fvm_GetTripResetSyncMsg(uint16 syncId, uint32* tripCnt, uint32* resetCnt);
  3. void Fvm_ResetTripCounter (void);
  4. uint32 Fvm_ IncreaseTripCounter (uint16 syncId);
  5. void Fvm_Init(const Fvm_RWFunc * func);
  6. typedef Std_ReturnType (*Fvm_WriteTripFunc) (uint16 tripId,uint32 tripCounter);
  7. typedef Std_ReturnType (*Fvm_ReadTripFunc) (uint16 tripId,uint32 *tripCounter);
  8. uint32 Fvm_GetRxMsgCnt(uint16 freshnessValueID);

 

SecOC适配接口

  1. Std_ReturnType SecOC_GetRxFreshness (
  2. uint16 SecOCFreshnessValueID,
  3. const uint8* SecOCTruncatedFreshnessValue,
  4. uint32 SecOCTruncatedFreshnessValueLength,
  5. uint16 SecOCAuthVerifyAttempts,
  6. uint8* SecOCFreshnessValue,
  7. uint32* SecOCFreshnessValueLength);
  8. Std_ReturnType SecOC_GetTxFreshness (
  9. uint16 SecOCFreshnessValueID,
  10. uint8* SecOCFreshnessValue,
  11. uint32* SecOCFreshnessValueLength);
  12. Std_ReturnType SecOC_SPduTxConfirmation(uint16 SecOCFreshnessValueID);
  13. void Fvm_VerificationStatusCallout (SecOC_VerificationStatusType verificationStatus);

 

安全报文发送时序图

 

安全报文的接收时序图

 

新鲜值处理时序图

 

新鲜值构建的三种方式:

  1. 基于单个新鲜度计数器的新鲜度值
  2. 基于单个新鲜度时间戳的新鲜度值
  3. 基于多个新鲜度计数器的新鲜度值

Freshness Value Based on Single Freshness Counter

Freshness Value Based on Single Freshness Timestamp

Freshness Value Based on Multiple Freshness Counters

 

 
   
次浏览       
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
相关文档

汽车设计-汽车的整体结构及动力系统
自动驾驶汽车软件计算框架
SysML在汽车领域的应用实践
电子电气架构-大陆汽车系统架构平台
相关课程

AutoSAR原理与实践
功能安全管理体系(基于ISO26262)
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发

最新活动计划
SysML和EA系统设计与建模 7-26[特惠]
Python、数据分析与机器学习 8-23[特惠]
软件架构设计方法、案例与实践 8-23[特惠]
嵌入式软件架构设计 8-22[线上]
Linux内核编程及设备驱动 7-25[北京]
 
 
最新文章
中央计算的软件定义汽车架构设计方案解析
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
智能汽车车用基础软件的内核和中间件
最新课程
Auto SAR原理与实践
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发(域控模式)
人工智能助力汽车行业升级
基于UML和EA进行系统分析设计
SysML和EA进行系统设计建模
更多...   
成功案例
奇瑞商用车 购买建模工具EA完全版
航空发动机研究院 购买建模工具EA完全版
联创汽车 购买建模工具EA完全版
江淮汽车 购买建模工具EA
更多...