Autosar信息安全入门系列01-SecOC基础介绍

2024-01-20 04:12

本文主要是介绍Autosar信息安全入门系列01-SecOC基础介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文框架

  • 1. 概述
  • 2. SecOC基本概念
    • 2.1 SecOC是什么?
    • 2.2 新鲜度值与MAC值
    • 2.3 SecOC报文格式
  • 3. SecOC报文发送及接收逻辑
    • 3.1 SecOC报文的发送
    • 3.2 SecOC报文的接收

1. 概述

本文为Autosar通信入门系列介绍,如您对AutosarMCAL配置,通信,诊断等实战有更高需求,可以参见AutoSar 实战进阶系列专栏,快速链接:AutoSar实战进阶系列导读

本篇我们一起看下SecOC,全文大纲如下:
在这里插入图片描述

2. SecOC基本概念

2.1 SecOC是什么?

在车载网络中,大部分的数据都是以明文方式广播发送且无认证接收,例如应用最广的CAN通讯设计之初是没有考虑过信息安全问题,其明文传输、报文广播传输、极少网络分段等特性,让进入整车网络的黑客可以轻松伪造报文对车辆进行控制,为了提升CAN网络的安全性,BOSCH在AUTOSAR标准中补充了SecOC标准,为传统CAN通讯引入了通讯认证机制。

SecOC在其全称是Security Onboard Communication,即板端加密通讯,是AUTOSAR标准中关于ECU间通讯安全提出的标准,在Autosar架构中的位置如下图,其中PduR负责将传入和传出的安全相关I-PDU路由到SecOC模块,SecOC模块对路由来的I-PDU进行添加或处理安全相关信息后,将结果再传播回PduR,再由PduR进一步路由I-PDU。
在这里插入图片描述
在SecOC标准中,AUTOSAR主要基于两种手段来实现数据的真实性和完整性的校验
基于MAC的身份验证和基于Freshness的放重放攻击。

2.2 新鲜度值与MAC值

新鲜度值(Freshness Value):传达了信息的实时性,可由时间戳校验和帧计数器校验两种模式生成。
时间戳检验的挑战在于多个ECU间需要进行时间同步,以消除各ECU振荡器自身产生的偏差。目前,只有TTCAN和更先进的Flexray总线支持这种机制,因此帧计数器模式被选用。新鲜度值的主要作用是防止重放攻击。
新鲜度值的组成如下图所示:由同步计数器,重置计数器,消息计数器及重置标志位组成。
在这里插入图片描述

MAC(Message Authentication Code):是保障信息完整性和认证的密码学方法之一。
CMAC(Cipher–based Message Authentication Code)通常用于对称加密。整车厂可以选择在车辆下线刷写程序时静态分配密钥,或者使用云端服务器动态地给车辆分配密钥。例如,对于一个具体的I-PDU,其需要认证的数据和完整的新鲜度值会与Data ID进行拼接,然后进行加密运算以得到实际的MAC。

2.3 SecOC报文格式

如下图,SecOC报文格式如下由三部分组成:PDU+新鲜度值+MAC值。其中新鲜度是截取低字节,MAC值是截取高字节部分拼接而成。
在这里插入图片描述

3. SecOC报文发送及接收逻辑

在这里插入图片描述

3.1 SecOC报文的发送

SecOC通过CMAC算法生成相关的MAC值,并截取有效MAC数据及新鲜值数据填充到报文PDU中,对外完成发送。

3.2 SecOC报文的接收

SecOC提取接收报文PDU中包含的截取的MAC信息,通过本地CMAC算法和PDU以及新鲜值数据,生成本地MAC信息,与接收的MAC信息比对,如果正确则路由到上层且更新本地的该报文的新鲜度值,如果错误则会拿接收的MAC信息与默认码比对,如果默认码比对也不正确则该PDU数据无效。

这篇关于Autosar信息安全入门系列01-SecOC基础介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/624755

相关文章

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir