一文读懂AUTOSAR SecOC通讯

为什么用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. 接收方就是个逆过程了,校验失败就扔掉

一文读懂AUTOSAR SecOC通讯_第1张图片

 详细的SecOC通讯过程如下:

一文读懂AUTOSAR SecOC通讯_第2张图片

安全报文介绍

安全报文的组成:

安全报文由组成

  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为可选用的新鲜度值。

一文读懂AUTOSAR SecOC通讯_第3张图片

而在实际使用中,新鲜度值和MAC可能会使用较多长度的数据来提高安全性,但这又会消耗大量的带宽等资源,所以常使用截取的方式做平衡处理。

新鲜度值和MAC都按照完整的值来生成,但是在发送和认证的时候只会截取一部分。

一文读懂AUTOSAR SecOC通讯_第4张图片

 新鲜度值管理:

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

  1. 基于Counter的递增,即包含了原有方案的机制

  2. 基于全局时间戳,源于时间戳的唯一性

  3. 基于同步的复合Counter

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

  1. 同步计数器(Trip Counter)
  2. 重置计数器(Reset Counter)
  3. 消息计数器(Message Counter),消息计数器又分为高值和低值,真实在报文中发送的值只包含消息计数器的低值和重置标志值
  4. 重置标志值(Reset Flag)

一文读懂AUTOSAR SecOC通讯_第5张图片

新鲜度值结构图

一文读懂AUTOSAR SecOC通讯_第6张图片

 一文读懂AUTOSAR SecOC通讯_第7张图片

一文读懂AUTOSAR SecOC通讯_第8张图片

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

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

新鲜度等值变化规则

一文读懂AUTOSAR SecOC通讯_第9张图片

 一文读懂AUTOSAR SecOC通讯_第10张图片

FVM新鲜值管理

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

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

 一文读懂AUTOSAR SecOC通讯_第11张图片

同步报文的结构:

一文读懂AUTOSAR SecOC通讯_第12张图片

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

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

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

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

同步报文发送时序图:

 一文读懂AUTOSAR SecOC通讯_第13张图片

 同步报文接收时序图:

 一文读懂AUTOSAR SecOC通讯_第14张图片

SecOC与PduR模块的关系

一文读懂AUTOSAR SecOC通讯_第15张图片

一文读懂AUTOSAR SecOC通讯_第16张图片

FVM与SecOC的交互关系

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

一文读懂AUTOSAR SecOC通讯_第17张图片

目标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 接口

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);

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);

安全报文发送时序图

一文读懂AUTOSAR SecOC通讯_第18张图片

一文读懂AUTOSAR SecOC通讯_第19张图片

一文读懂AUTOSAR SecOC通讯_第20张图片

安全报文的接收时序图

一文读懂AUTOSAR SecOC通讯_第21张图片

一文读懂AUTOSAR SecOC通讯_第22张图片

一文读懂AUTOSAR SecOC通讯_第23张图片

新鲜值处理时序图

一文读懂AUTOSAR SecOC通讯_第24张图片

新鲜值构建的三种方式:

  1. 基于单个新鲜度计数器的新鲜度值
  2. 基于单个新鲜度时间戳的新鲜度值
  3. 基于多个新鲜度计数器的新鲜度值
  1. Freshness Value Based on Single Freshness Counter 

    一文读懂AUTOSAR SecOC通讯_第25张图片

  2. Freshness Value Based on Single Freshness Timestamp

    一文读懂AUTOSAR SecOC通讯_第26张图片

  3. Freshness Value Based on Multiple Freshness Counters

一文读懂AUTOSAR SecOC通讯_第27张图片

一文读懂AUTOSAR SecOC通讯_第28张图片

一文读懂AUTOSAR SecOC通讯_第29张图片

你可能感兴趣的:(AP,AUTOSAR,网络协议,autosar)