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

1元 10元 50元





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



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 
 订阅
一文读懂AUTOSAR SecOC通讯
 
作者:aFakeProgramer
  140  次浏览      4 次
 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

 

 
   
140 次浏览       4
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
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
更多...