【CAN-IDPS】汽车网关信息安全要求以及实验方法

2024-08-21 03:52

本文主要是介绍【CAN-IDPS】汽车网关信息安全要求以及实验方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《汽车网关信息安全技术要求及试验方法》是中国的一项国家标准,编号为GB/T 40857-2021,于2021年10月11日发布,并从2022年5月1日起开始实施 。这项标准由全国汽车标准化技术委员会(TC114)归口,智能网联汽车分会(TC114SC34)执行,主管部门为工业和信息化部。

该标准主要起草单位包括广州汽车集团股份有限公司、中国汽车技术研究中心有限公司等多家企业和研究机构,主要起草人有尚进、孙航等多位专家。标准内容涵盖了汽车网关硬件、通信、固件、数据的信息安全技术要求及试验方法,目的在于保障汽车网关在车内多个网络间安全、可靠地进行数据转发和传输,满足数据保密性、完整性、可用性等基本安全要求。

本篇文章主要摘取规范中对汽车网关网络安全和信息安全要求和测试方法。其中基于以太网的网络安全和信息安全技术较为成熟,无需过多介绍,而针对CAN网关的安全要求基于本人对CAN-IDPS开发经验添加了说明。


目录

1 汽车网关网络拓扑结构

1.1 CAN网关

1.2 以太网网关

1.3 混合网关

2 技术要求

2.1 硬件信息安全要求

2.2 通信信息安全要求

2.2.1 CAN网关通信信息安全要求

2.2.1.1 访问控制

2.2.1.2 拒绝服务攻击检测

2.2.1.3 数据帧健康检测

2.2.1.4 数据帧异常检测

2.2.1.5 UDS会话检测

2.2.2 以太网网关通信信息安全要求

2.2.2.1 网络分域

2.2.2.2 访问控制

2.2.2.3 拒绝服务攻击检测

2.2.2.4 协议状态检测

2.2.3 混合网关通信信息安全要求

2.3 固件信息安全要求

2.3.1 安全启动

2.3.2 安全日志

2.3.3 安全漏洞

2.4 数据信息安全要求

3 典型攻击举例

3.1 死亡之 Ping(Ping of death)

3.2 ICMP 泛洪攻击

3.3 UDP泛洪攻击

3.4 TCP SYN攻击

3.5 Teardrop攻击

3.6 ARP欺骗攻击

3.7 IP欺骗攻击

3.8 ICMP Smurf攻击

3.9 IP地址扫描

3.10 端口扫描(Port scan)

3.11 恶意软件

3.12 CAN 数据帧泛洪攻击

3.13 CANID伪造

3.14 CAN 数据帧重放攻击

3.15 CAN 网络扫描

3.16 ECU 认证破解

3.17 UDS服务攻击


1 汽车网关网络拓扑结构

1.1 CAN网关

基于CAN和/或CAN-FD总线的车内网络结构中,大多数的ECU、域控制器之间都会通过CAN和/或CAN-FD总线进行通信。这类结构中的汽车网关主要有CAN和/或CAN-FD总线接口,可称为CAN网关。下图是典型的CAN网关拓扑结构。

1.2 以太网网关

基于以太网的车内网络结构中,大多数的ECU、域控制器之间会通过以太网进行通信。这类结构中的汽车网关主要有以太网接口,可称为以太网网关。下图是典型的以太网网关拓扑结构。

1.3 混合网关

部分新一代车内网络结构中,一部分ECU、域控制器之间通过以太网通信,而另一部分ECU、域控制器之间仍通过传统通信协议(例如:CAN、CAN-FD、LIN、MOST等)通信。这类结构中的汽车网关既有以太网接口,还有传统通信协议接口,可称为混合网关。下图是典型的混合网关拓扑结构。

2 技术要求

2.1 硬件信息安全要求

(1)网关不应存在后门或隐蔽接口。

        测试方法:拆解被测样件设备外壳,取出PCB板,检查PCB板硬件是否存在后门或隐蔽接口。

(2)网关的调试接口应禁用或设置安全访问控制。

        测试方法:检查是否有存在暴露在PCB板上的JTAG、USB、UART、SPI等调试接口,如存在则使用试验工具尝试获取调试权限。

2.2 通信信息安全要求

2.2.1 CAN网关通信信息安全要求

2.2.1.1 访问控制

网关应在各路CAN网络间建立通信矩阵,并建立基于CAN数据帧标识符(CANID)的访问控制策略,按照测试方法(a)应在列表指定的目的端口检测接收到源端口发送的数据帧;按照测试方法(b)应对不符合定义的数据帧进行丢弃或者记录日志。

测试方法:

(a)设置访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送符合策略规定的数据帧,并在列表指定的目的端口检测接收数据帧。

(b)设置访问控制策略(若被测样件的访问控制策略无法通过软件配置修改,则由送样方提供已预置的访问控制策略列表),检测设备向列表指定的源端口发送不符合策略规定的数据帧,在列表指定的目的端口检测接收到的数据帧,并收集样件日志。

个人观点:

文档中要求建立基于CANID的访问控制策略,其实就是CANID白名单功能,白名单中包含通信矩阵中规定网关所能接收的所有CANID,网关安全组件(例如CAN-IDPS)监控网关流量,并判断所接收的CANID是否在白名单中,如果在,则应执行丢弃或者记录日志。需要注意的是,一般ECU在CAN收发器处已经设置了报文过滤条件,即不是该ECU需要接收的CANID报文在底层就已经丢弃了。

2.2.1.2 拒绝服务攻击检测

网关应对车辆对外通信接口的CAN通道(例如:连接BD-I端口的通道和连接车载信息交互系统的通道)进行CAN总线DoS攻击检测。网关应具备基于 CAN总线接口负载的DoS攻击检测功能,宜具备基于某个或多个CAN ID数据帧周期的 DoS 攻击检测功能。按照测试方法(a)、(b)进行测试,当网关检测到某一路或多路CAN通道存在DoS攻击时,应满足以下:

(1)网关未受攻击的通道的通信功能和预先设定的性能不应受影响;

(2)网关对检测到的攻击数据帧进行丢弃或者记录日志。

测试方法:

(a)由送样方确认网关连接车辆对外通信接口的AN道,检测设备对此通道以大于80%总线负载率发送符合通信矩阵的泛洪攻击数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。如果有多个此类通道,则依次分别试验。

(b)由送样方确认网关连接车辆对外通信接口的CAN通道,检测设备对此通道以1ms为周期发送符合通信矩阵的某个CANID数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。如果有多个此类通道,则依次分别试验。

个人观点:

两个重点,一是文档中提到Dos攻击检测对象重点是车辆对外通信接口的CAN通道,例如OBD接口或者车机通道;二是提出了Dos攻击的两种检测方法,一种是通过判断总线负载率是否达到告警阈值,另一种就是监控某个CANID报文实际周期是否远小于通信矩阵中对其规定的正常周期。除此之外,在测试方法中提到以大于80%的总线负载率进行测试,网关安全组件(例如CAN-IDPS)在设置总线负载率告警阈值时,可以以此为参考设置成80%,也可以对实车总线负载率进行实时统计,并选则大于其峰值的合适值作为阈值,实施难度就是需要在统计过程中,模拟车辆所有的操作以及业务,这样计算出的阈值才可靠。

2.2.1.3 数据帧健康检测

网关宜根据通信矩阵中的信号定义,对数据帧进行检查,检查内容包括DLC字段、信号值有效性等,按照测试方法(a)进行试验,对不符合通信矩阵定义的数据帧进行丢弃或者记录日志。

测试方法:

(a)检测设备对网关发送一个或多个DCL字段值不符合通信矩阵定义的数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。

(b)检测设备对网关发送一个或多个信号值不符合通信矩阵定义的数据帧,在指定的目的端口检测接收到的数据帧,并收集样件日志。

个人观点:

通信矩阵中规定了每个CAN报文的数据长度,即DLC字段值。ECU应严格遵

这篇关于【CAN-IDPS】汽车网关信息安全要求以及实验方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1092044

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE