一文读懂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. 接收方就是个逆过程了,校验失败就扔掉

 详细的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 接口

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

安全报文发送时序图

安全报文的接收时序图

新鲜值处理时序图

新鲜值构建的三种方式:

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

  2. Freshness Value Based on Single Freshness Timestamp

  3. Freshness Value Based on Multiple Freshness Counters

  • 14
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: AUTOSAR是一种企业和汽车制造商合作的技术标准,致力于在汽车电子系统中实现标准化和交互操作性。SECOCAUTOSAR的一种安全框架,用于保护车辆中的数据和通信。安全在汽车电子系统中至关重要,任何漏洞都有可能导致车辆被黑客攻击或者其他损害。SECOC提供了一种可靠的方法,通过加密,完整性检查,身份验证和授权来确保数据和通信的安全性。SECOC还提供了专门的安全管理子系统,以便管理和分析汽车中发生的可能的安全漏洞。使用SECOC可以确保汽车安全性,预防恶意行为和保护乘客的隐私。因此,AUTOSARSECOC等技术标准已成为汽车工业中的重要标准和实践。 ### 回答2: AutosarAutomotive Open System Architecture)是一个汽车开放系统架构的标准化软件平台,旨在为汽车电子控制单元提供标准化的软件和硬件接口,并提高整车系统的可靠性和安全性。而SecOC(Secure Onboard Communication)是Autosar安全架构的一个组件,它是用于保护汽车信息安全的一种方法。 SecOC模块提供了一种可靠的安全通信机制,确保了传输过程中数据的完整性、机密性和鉴别性。这个模块包含多个子模块,例如CAN(Controller Area Network)密钥管理,CAN安全路由,端到端安全通信等等。在汽车中,这种安全认证是非常重要的,因为一旦车辆信息不安全,将会对整个车辆系统产生极大的影响。 SecOC模块采用了多级认证技术和加密技术来保护信息的安全性。在信息网络中,使用asymmetric encryption(非对称加密),对于消息的完整性和真实性使用MAC(Message Authentication Code)技术进行验证和确认,对于重要信息,使用PKI(Public Key Infrastructure)系统进行加密。这些安全措施同时也能保护AutoSAR中的其他模块不受到信息攻击或者恶意注入。 总的来说,SecOC模块是Autosar安全框架的一个重要组件,为汽车网络通信提供了高效、安全、可靠的保护机制,更好地保护车辆及其乘客的安全。 ### 回答3: AUTOSAR是一种开放式的软件框架,其中包含了用于汽车电子系统的软件组件的标准化协议。SECOCAUTOSAR的一个特定模块,它的目的是提高汽车电子系统的安全性。 SECOC可以被看作是一个安全组件,它在AUTOSAR系统中扮演着非常重要的角色。该组件的功能是实现一些安全机制,以保护汽车电子系统及其相关通信的安全性。 SECOC模块的核心设计包括两个主要部分:密钥管理和加密机制。密钥管理是指对加密密钥的创建、存储以及维护。加密机制是指对所有传输的数据进行加密处理,以确保未经授权的第三方无法访问数据内容。 SECOC模块支持多种加密算法,比如DES、AES和RSA等。这个模块还允许为不同的组件和应用程序指定各自的加密密钥,以防止针对特定组件的攻击和破解。 除了以上功能外,SECOC模块还提供了一系列的安全策略和规则。这些策略和规则具体指定了不同的安全需求,包括访问控制、审核和日志记录等。 总之,SECOC是一个非常重要的模块,它的意义远远超过了一个普通的软件模块。该模块的存在可以为汽车电子系统带来更高的安全保障,提升了整个汽车行业的发展水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值