网络安全:关于SecOC及测试开发实践简介

01

前言

我们知道,在车载网络中,大部分的数据都是以明文方式广播发送且无认证接收。这种方案在以前有着低成本、高性能的优势,但是随着当下智能网联化的进程,这种方案所带来的安全问题越来越被大家所重视。
为了提高车载通信的安全性,各OEM已经采用针对敏感数据增加诸如RollingCounter和Checksum的信息,但其能实现的安全性十分有限。
而随着车载网络技术的发展,我们有了更多的方式来实现网络安全。

02

SecOC简介

SecOC全称Secure Onboard Communication,主要用于对车内敏感信息进行认证。
其数据结构如下:Authentic I-PDU是需要被保护的数据;Authenticator为认证信息(通常使用消息认证码,即Message Authentication Code,简称MAC,后文以MAC来简称此内容);Secured I-PDU Header为可选用的报头;Freshness Value为可选用的新鲜度值。
图1 Secured I-PDU结构
而在实际使用中,新鲜度值和MAC可能会使用较多长度的数据来提高安全性,但这又会消耗大量的带宽等资源,所以 常使用截取的方式做平衡处理 。新鲜度值和MAC都按照完整的值来生成,但是在发送和认证的时候只会截取一部分,如下图所示:
图2 Secured I-PDU的截取
以CANoe Demo中的ARXML为例,其节点ECU1发送的Secured_PDU_1分别包含了8个字节的Authentic I-PDU,1个字节的新鲜度值( 实际长度8字节 )和3个字节的MAC( 实际长度16字节 )。
图3 Secured I-PDU在ARXML中的排布示例
接下来我们就以此Demo为例,来详细谈谈SecOC中2个重要的组成部分: 新鲜度值管理(Freshness Value Manager,简称FVM)和MAC生成。

03

新鲜度值管理

在SecOC中,给出了多种新鲜度值管理方案:
基于counter的递增,即包含了原有方案的机制
基于全局时间戳,源于时间戳的唯一性
基于同步的复合counter
这里我们主要谈一下第三种方案。在此方案中,完整的新鲜度值包括同步计数器(Trip Counter)、重置计数器(Reset Counter)、重置标志值(Reset Flag)和消息计数器(Message Counter)。其中消息计数器又分为高值和低值,而真正在报文中发送的值只包含消息计数器的低值和重置标志值。
图4 新鲜度值结构
新鲜度值的更新如下所示,完整的新鲜度值为0x10000040F,实际发送的新鲜度值为0xF。而由于重置标志值为1 bit,消息计数器虽然以步长1递增,实际发送到总线上的新鲜度值则是以2的步长递增。
图5 新鲜度值示例
从上述内容可以看出,新鲜度值存在2个重要的基准: 同步计数器和重置计数器 ,这2个计数器需要接收方和发送方保持一致。SecOC在新鲜度值管理上提出了主从模式的框架,由主节点向接收方和发送方分发同步计数器和重置计数器,从而达到同步的目的。
图6 主从模式的新鲜度值管理
图7 新鲜度值的分发示例

04

MAC生成

MAC是对受保护数据的身份认证。其中涉及的加密算法多种多样,每个算法还可以有多个配置。这里我们以SecOC提供的一个方案Profile 1进行说明,其使用CMAC/AES-128的算法,截取8 bit的新鲜度值和24 bit的MAC,配置信息如下所示。
图8 Profile 1配置
除此配置外,MAC生成还需要128 bit的密钥(这里预先定义了0x0102030405060708090A0B0C0D0E0F10)、16 bit的Data ID(这里预先定义了33)、完整的新鲜度值和需要认证的数据。Data ID是用来标识I-PDU的数据,可以给密钥管理机制提供支持。以demo中时间戳为8.300203的I-PDU进行说明,需要认证的数据为0xE8030000000000FF,完整的新鲜度值为0x100000405,实际进行加密运算的数据为Data ID、待认证数据和完整新鲜度值的拼接,计算后的实际MAC为0x498330e818f3fbb068759ff3b72d015f,截取24 bit后发送的MAC为0x498330。
图9 MAC发送示例
这里使用的加密为对称加密,以更快地进行I-PDU的交换 。通常的做法还包括利用非对称加密的方式来传递对称加密的密钥,以此完成密钥的定期更新。通过对Data ID、I-PDU和密钥的映射,以及密钥的更新和分发,可以做到一个非常完整的密钥管理方案。

05

SecOC测试开发

从上面可以看出,SecOC的机制是比较复杂的,按照过往的项目经验,需要测试验证的内容包括新鲜度值管理、MAC认证、密钥分发等。
为了保证ECU的运行环境,并监测ECU自身的行为,我们需要仿真其外部条件,包括同步报文、ECU接收的SecOC报文等。为了实现此仿真环境,可以使用CANoe提供的 Security模块 。
在CANoe的Security Configuration中,对SecOC方案的进行选择与配置,并将其与控制器的端口形成映射。
图10 Security Configuration配置
在ARXML中,可直接配置相关的信息,包括Data ID、新鲜度值的长度等。 通过这种方式,可以对每个I-PDU进行不同Data ID的配置从而形成I-PDU和Data ID的映射。
图11 ARXML相关配置
在CANoe的Security Manager中,可以对Data ID进行其密钥的写入,实现密钥与Data ID的映射。
图12 Security Manager相关配置
除了使用CANoe的Security模块,还可以集成CANoe的SecOC接口函数等进行编程来实现仿真环境。 解决了仿真环境后,需要依据所开发的测试用例实现测试脚本。一方面验证正向的SecOC流程,另一方面验证SecOC机制的防“攻击”特性。通过使用CANoe的各个内置函数及外部第三方编程接口,对仿真条件进行相应的输入控制器,并监测ECU的反馈,就可以高效地完成SecOC的验证。
图13 SecOC测试用例展示

06

总结

在网络安全领域,越高的安全性要求,意味越复杂的安全机制,以及更高的系统资源消耗和性能要求。那么,分析和确认哪些数据需要被保护、网络安全等级如何定义也尤为重要。结合应用场景,考虑数据的敏感性、实时性等要求,才能选择合适的方案。不管是E2E更偏向数据完整性的校验,还是SecOC中更关注身份合法性的认证,包括SSL、TLS提供的保密性,都是可供选择的方案。
北汇信息专注于汽车电子测试、与众多OEM合作,在总线网络诊断测试开发相关领域积累了丰富的经验。本次为大家简单介绍了SecOC,后续将会为大家带来更多网络安全的相关内容。关于车内的通信、诊断刷写中各类网络安全相关的测试验证方案,欢迎垂询和沟通,共同探讨。
(0)

相关推荐

  • 基础知识:Mac上更改“字体”窗口中的字体大小

    如何在Mac上更改"字体"窗口中的字体大小呢?别急,今天小编给大家带来了更改"字体"窗口中可用的字体大小的教程,希望对您有所帮助,快来跟小编看看吧! 1.在 M ...

  • 汽车里的通讯鉴权—Sec OC

    什么是SecOC? SecOC是Secure Onboard Communication的简称,是AUTOSAR从Classic Platform 4.2开始新增的一个基础软件(BSW)模块,为汽车嵌 ...

  • 【学术论文】基于全同态MAC的消息认证算法设计

    随着电子技术和互联网技术的迅速崛起,特别是云计算商业化平台的出现,不安全信道中消息认证变得越来越重要.在消息认证过程中,通常采用构造消息认证码(Message Authentication Code, ...

  • 基于Autosar的网络安全理解

    来源:汽车电子与软件 01 车载网络安全说明 主要解决的网络安全/信息安全问题包括:信息的机密性.新鲜性.完整性.真实性以及可用性是汽车网络通信的最基本的安全需求. 目前网络安全标准为 ISO/SAE ...

  • 什么是 AES

    AES是一种对称加密算法,它的相关概念在此不赘述. GCM ( Galois/Counter Mode) 指的是该对称加密采用Counter模式,并带有GMAC消息认证码. 在详细介绍AES-GCM之 ...

  • 三. 散列算法概述与部分详解

    2.2 散列算法介绍 2.2.1 散列算法(函数) 概念 散列函数没有密钥,散列函数就是把可变输入长度串(叫做预映射, Pre-image)转换成固定长度输出串(叫做散列值)的一种函数. 散列函数又可 ...

  • (9条消息) Modbus应用协议详解

    Modbus应用协议 缩略语 协议描述 服务器正常响应 服务器异常响应 三种PDU mb_req_pdu mb_rsp_pdu mb_excep_rsp_pdu 数据编码 Modbus数据模型 Mod ...

  • BAT 大厂测试开发技能成长最佳实践 | 霍格沃兹测试学院课程体系

    霍格沃兹测试学院简介 霍格沃兹测试学院是中国领先的测试技术高端教育品牌,致力于为 IT 行业提供高级测试开发技术培训和优秀人才内推服务.我们的愿景是成为测试开发工程师的黄埔军校. 霍格沃兹测试学院课程 ...

  • 微信音乐小程序开发实践

    使用微信小程序实现个人音乐播放平台 一,效果展示 二,实现的功能 1,音乐播放,暂停,切换,歌词同步展示. 2,音乐收藏,根据搜索和播放历史推荐,播放排行榜展示. 三,数据库设计 1,基于功能需求,设 ...

  • 技术 | ​石墨烯锦纶6/粘胶混纺纱的开发实践

    摘要:介绍了石墨烯锦纶纤维原料的养生处理方法,石墨烯锦纶与粘胶的混和方式,以及石墨烯锦纶/粘胶混纺纱各工序工艺参数的优化.主要纺纱器材的选型.胶辊胶圈的处理方法. 关键词:石墨烯锦纶纤维:牵伸:养生: ...

  • Android开发知识简介

    手机操作系统 Windows Mobile 由微软公司推出的移动设备操作系统 播放音视频.浏览网页.MSN聊天.收发电子邮件 硬件配置高.耗电量大.电池续航时间短.硬件成本高 PalmOS 由3Com ...

  • 上汽乘用车:车身域控制系统开发实践

    声明:本文内容及图片由BC-AUTO转载至网络,信息来源于公众号汽车电子电气架构创新发展论坛.

  • python测试开发django-1.开始hello world!

    前言 当你想走上测试开发之路,用python开发出一个web页面的时候,需要找一个支持python语言的web框架.django框架有丰富的文档和学习资料,也是非常成熟的web开发框架,想学pytho ...

  • python测试开发django-2.templates模板与html页

    前言 Django 中的视图的概念是一类具有相同功能和模板的网页的集合.通俗一点来说,就是你平常打开浏览器,看到浏览器窗口展示出来的页面内容,那就是视图. 前面一章通过浏览器访问http://127. ...

  • python测试开发django-3.url配置

    前言 我们在浏览器访问一个网页是通过url地址去访问的,django管理url配置是在urls.py文件.当一个页面数据很多时候,通过会有翻页的情况,那么页数是不固定的,如:page=1. 也就是ur ...

  • python测试开发django-4.获取url参数和name的作用

    前言 如打开博客园按时间分类标签页[https://www.cnblogs.com/yoyoketang/archive/2018/10.html],里面是时间参数是动态的,如果我想获取里面的时间参数 ...