安全视角下的CAN协议分析

安全视角下的CAN协议分析目录相关背景CAN节点介绍CAN帧结构介绍CAN总线攻击面分析CAN总线安全缺陷基于ID的仲裁机制安全缺陷针对CAN总线的攻击方式[2]参考文章相关背景控制器局域网(CANbus)由罗伯特·博世公司于1983年开发。该协议于1986年美国密歇根州底特律市举行的国际汽车工程师学会(SAE)会议上正式发表。第一个CAN控制芯片,由英特尔和飞利浦生产,并且于1987年发布。世界上第一台装载了基于CAN的多重线系统的汽车是1991年推出的梅赛德斯-奔驰W140。..

大家好,又见面了,我是你们的朋友全栈君。

目录

相关背景

CAN节点介绍

 CAN帧结构介绍

CAN总线攻击面分析

CAN总线安全缺陷

基于ID的仲裁机制

安全缺陷

针对CAN总线的攻击方式[2]

 参考文章


相关背景

控制器局域网(CAN bus)由罗伯特·博世公司于1983年开发。该协议于1986年美国密歇根州底特律市举行的国际汽车工程师学会(SAE)会议上正式发表。第一个CAN控制芯片,由英特尔和飞利浦生产,并且于1987年发布。 世界上第一台装载了基于CAN的多重线系统的汽车是1991年推出的梅赛德斯-奔驰 W140。[1]

CAN节点介绍

连接到CAN总线上的单元被称为CAN节点,所有连接到同一个CAN总线上的节点同CAN总线一起组成了CAN网络。CAN节点一般由以下几个模块组成:

1)中央处理器、微处理器或主处理器

处理器对收发到的消息进行解析和处理,类似于CAN节点的大脑,经由该大脑的分析之后将指令下发给传感器、驱动器和控制设备。

2)CAN控制器,用于收发消息的控制模块

接收:CAN控制器将从总线上串行接收的字节流,直到整个消息接收完毕,然后将消息发送给处理器进行分析处理。

发送:主处理器发送信息到CAN控制器,之后当总线空闲时将信息以比特流的方式串行发送至总线。

3)收发器,由ISO11898-2/3标准定义

接收:把数据流从CAN总线层转换成CAN控制器可以使用的标准。 

传输:把来自CAN控制器的数据流转换至CAN总线层。

CAN总线上的每个节点都能够发送和接收信息,但不能够同时进行。 一个消息或帧主要包括标识符(ID)、CRC、ACK等字段。ID表示信息的优先级,最多八个数据字节。消息采用不归零(NRZ)格式串行传送到CAN总线,并且可被所有节点接收。

安全视角下的CAN协议分析

CAN节点示意图(图片来自维基百科 )

被CAN网络连接的设备通常是传感器,驱动器和其他控制设备。 这些设备通过一个中央处理器、一个CAN控制器,和一个CAN接收器连接至总线。

 CAN帧结构介绍

CAN节点在CAN总线上以帧结构发送CAN消息。CAN帧结构,包括帧起始标志SOF、帧结束标志EOF、仲裁字段、控制字段、数据字段、CRC校验字段ACK字段七个组成部分。

安全视角下的CAN协议分析

 CAN帧格式(图片来自维基百科)

 CAN总线有四种不同的帧类型,分别是数据帧、远程帧、错误帧和过载帧。数据帧用来传送数据,远程帧通过特殊的Identifier请求指定消息,当节点检测到错误时会发送一个错误帧,过载帧用来在数据帧和远程帧之间设置延迟。CAN帧格式各个字段解释如下:

安全视角下的CAN协议分析

CAN帧各字段解释(表格来自维基百科)

CAN总线攻击面分析

CAN总线攻击面包括远程攻击面和物理接触攻击面两个大的方面,其中远程攻击面有远程信息处理单元(TBOX,或5G模块)、车载信息娱乐系统(HU)、蓝牙模块、WIFI、遥控钥匙和远程诊断接口等,物理接触攻击面主要为OBD-II诊断端口和各类传感器。

安全视角下的CAN协议分析

 CAN总线攻击面

(该图片及“针对CAN的攻击”一节的图片来源:Security Issues with In-Vehicle Networks, and Enhanced Countermeasures Based on Blockchain

CAN总线安全缺陷

基于ID的仲裁机制

CAN帧没有标识发送者和接收者,CAN协议使用一种叫“带有冲突检测的载波侦听多路访问”机制进行仲裁。当多个节点同时发送消息时,ID最小的节点拥有最高的优先级。当任意一个节点发送控制位时,其他节点均会读取控制位,无论控制位的值是多少。当一个节点检测到更高优先级的数据帧时,它将停止发送。

我们以两个不同ID的节点简单介绍以下仲裁机制生效的方式。假设在同一个CAN总线上存在节点15和节点16,两个节点在CAN总线空闲时同时抢占总线,它们即将发送的帧数据如下表所示:

安全视角下的CAN协议分析

 (表格数据来自维基百科)

Node 15和Node 16在同一时间想要发送数据,两个节点分别发送最高的位,一次发送一位,使用“线与”机制判断,0为显性,1为隐性,前面6个比特两个节点都发送0,接收到0;第七比特位,Node 15发送0接收0,Node 16发送1接收0,Node 15胜出。

安全视角下的CAN协议分析

安全缺陷

针对这种仲裁机制,大家很容易就能想到攻击者可以伪造高优先级的报文,频繁地向CAN总线上发送,导致CAN总线上合法节点无法正常发送报文,即拒绝服务攻击。究其原因,CAN协议没有标识发送者和接收者的机制,也没有额外的认证手段;此外,在CAN总线上传输的数据的机密性也无法得到保证。

针对CAN总线的攻击方式[2]

由于CAN总线没有提供认证机制和保密性机制,攻击者可以对CAN总线发起DOS攻击、Fuzzy攻击、嗅探与重放攻击以及节点伪造等等。

安全视角下的CAN协议分析

针对CAN总线的攻击方式

针对没有认证机制的缺陷,攻击者可以以高频率的方式频繁发送最高优先级的消息:

安全视角下的CAN协议分析

DOS攻击示意图

同样地,攻击者可以使用Fuzzy的方式随机注入消息,测试CAN总线和节点是否存在逻辑漏洞和内存相关的安全缺陷: 

安全视角下的CAN协议分析

Fuzz攻击示意图

针对缺少保密性和认证的缺陷,攻击者可以先嗅探CAN总线,然后对消息进行重放,通过这种方式可以实现多种针对车辆控制系统的操作: 

安全视角下的CAN协议分析

嗅探与重放攻击示意图

节点伪造攻击也同样适用于CAN总线,因为总线没有认证节点身份的机制,攻击者可以通过物理接触的方式添加任意节点:

安全视角下的CAN协议分析

 节点伪造攻击示意图

 参考文章

[1]. 来自维基百科的介绍https://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E5%99%A8%E5%8D%80%E5%9F%9F%E7%B6%B2%E8%B7%AF安全视角下的CAN协议分析https://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E5%99%A8%E5%8D%80%E5%9F%9F%E7%B6%B2%E8%B7%AF

 [2].Security Issues with In-Vehicle Networks, and Enhanced Countermeasures Based on Blockchain

N KhatriR ShresthaSY Nam – Electronics, 2021 – mdpi.com 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154156.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • chromedriver怎么下载_chrome国内下载地址

    chromedriver怎么下载_chrome国内下载地址1、亲测能正常下载运用,具体地址如下:http://chromedriver.storage.proxy.ustclug.org/index.html选择对应版本,一定要与本地谷歌浏览器版本一致,要不在运行webdriver时会报错window10的环境,打开后选择win32的zip包应用就行,无论你是64位还是32位都选这个就ok:…

    2022年9月19日
    0
  • linux如何卸载jdk_怎么卸载JDK

    linux如何卸载jdk_怎么卸载JDK介绍了如何在Linux环境中卸载JDK的方法。

    2022年10月1日
    0
  • Windows系统通用定时关机命令

    Windows系统通用定时关机命令定时关机命令-s:表示关机-r:表示重启-t:表示时间(秒为单位)-a:表示取消关机10秒后关机shutdown-s-t10win10会弹出提示框提示关机时间,其它版本的系统右下角有提示,或者没有提示

    2022年5月14日
    39
  • matlab plot颜色代码_matlab改图像背景颜色

    matlab plot颜色代码_matlab改图像背景颜色通常有两种方法: 使用预置的颜色代码 ‘r’红色’m’粉红’g’绿色’c’青色’b’兰色’w’白色’y’黄色’k’黑色 使用颜色数组 plot(x,y,’color’,[0.10.20.3])%颜色数组三个元素都在0~1之间

    2022年10月16日
    0
  • python3使用付费代理和ip池的维护「建议收藏」

    更新:在使用代理是如果频率过快返回的是‘{“code”:“3001”,“msg”:“提取频繁请按照规定频率提取!”}’不可将该msg添加到ip池中,故需要先判断返回状态。这一段时间爬取一些数据的时候遭到了封ip。免费的ip满足不了我的需求并且不是很稳定,所以选择的代理ip,我买了蘑菇代理一天2000ip,这些对于我的小爬爬就够了。记录了第一次使用代理ip的一些坎坷和经历,希望能够减少初学者的…

    2022年4月11日
    35
  • navicat 15.017激活码(最新序列号破解)

    navicat 15.017激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号