广告

一文读懂AUTOSARSecOC通讯

2022-04-28 汽车电子与软件 阅读:
为什么用SecOC在车载网络中,CAN总线作为常用的通讯总线之一,其大部分数据是以明文方式广播发送且无认证接收。这种方案具有低成本、高性能的优势,但是随着汽车网联化,智能化的业务需要,数据安全性被大家
为什么用SecOC

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

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

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

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

  1. 对称加密算法

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

  1. 非对称加密算法

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

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

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

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

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

MAC和新鲜度值的作用

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

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

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

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。dl2ednc

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

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

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

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

    dl2ednc

详细的SecOC通讯过程如下:

dl2ednc

安全报文介绍dl2ednc

安全报文的组成:dl2ednc

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

数据结构如下:dl2ednc

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

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

新鲜度值管理:dl2ednc

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

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

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

新鲜度值结构:dl2ednc

dl2ednc

dl2ednc

 dl2ednc

dl2ednc

dl2ednc

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

新鲜度等值变化规则dl2ednc

dl2ednc

dl2ednc

FVM新鲜值管理dl2ednc

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

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

 dl2ednc

dl2ednc

同步报文的结构:dl2ednc

dl2ednc

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

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

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

同步报文发送时序图:dl2ednc

dl2ednc

同步报文接收时序图:dl2ednc

dl2ednc

SecOC与PduR模块的关系dl2ednc

dl2ednc

dl2ednc

FVM与SecOC的交互关系dl2ednc

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

dl2ednc

 

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

  1. System Service(含OS/EcuM/ComM)dl2ednc

  2. Communication(含Com/SecOC/PduR)dl2ednc

  3. 秘钥算法模块(CSM/CryIf/Crypto)dl2ednc

  4. Memory(含NVM/MemIf/Fee)dl2ednc

  5. Diagnostics(含DCM)dl2ednc

  6. MACL(含MCU)dl2ednc

  7. IO(含Port)dl2ednc

FVM 接口dl2ednc

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

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

void Fvm_ResetTripCounter (void); dl2ednc

uint32 Fvm_ IncreaseTripCounter (uint16 syncId); dl2ednc

void Fvm_Init(const Fvm_RWFunc * func); dl2ednc

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

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

uint32 Fvm_GetRxMsgCnt(uint16 freshnessValueID);dl2ednc

SecOC适配接口dl2ednc

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

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

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

安全报文发送时序图

dl2ednc

dl2ednc

dl2ednc

安全报文的接收时序图dl2ednc

dl2ednc

dl2ednc

dl2ednc

新鲜值处理时序图

dl2ednc

新鲜值构建的三种方式

  1. Freshness Value Based on Single Freshness Counter dl2ednc

    dl2ednc

  2. Freshness Value Based on Single Freshness Timestampdl2ednc

    dl2ednc

  3. Freshness Value Based on Multiple Freshness Countersdl2ednc

dl2ednc

dl2ednc

dl2ednc

ENDdl2ednc

责编:Lefeng
文章来源及版权属于汽车电子与软件,EDN电子技术设计仅作转载分享,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。如有疑问,请联系Demi.xia@aspencore.com
  • 写的真好,很详细,很具体。
汽车电子与软件
汽车电子与软件
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了