引 言
近年来,得益于智能传感器、无线通信技术和大数据分析等技术的进步,车联网的发展呈现出爆发式增长。它不仅改变了车辆本身的功能和性能,还影响着整个现代交通系统的运作模式,在这个过程中,确保车联网的安全性成为重中之重。本文将由车联网的宏观视角逐步转向智能汽车的微观领域,深入聚焦车内网络的核心——CAN总线,解析其作为汽车电子系统核心的重要性。
Part.1
从车联网到车内网络:认识智能汽车的心脏
车联网的兴起
车联网是指车载设备通过无线通信技术,对信息网络平台中的所有车辆动态信息进行有效利用,在车辆运行中提供不同的功能服务。它为实现更高效、更安全的道路交通环境提供了可能,同时也推动了自动驾驶等前沿技术的发展。随着消费者对智能汽车的需求不断增加,政府政策的支持也加速着车联网技术的应用和发展,例如在京举办的《2024世界智能网联汽车大会》,预计在未来几年内,车联网将继续扩展其影响力,成为智慧城市建设和交通运输现代化不可或缺的一部分。
车联网与车内网络的关系
图 车联网架构
车联网不仅涵盖了车辆间的交互,还包括车辆内部不同组件之间的沟通。因此车联网可以分为车内网和车外网2大组成部分,如图所示,车内网实现了车辆内部的数据采集、通信、处理和执行,以总线通信作为主要的通信方式。车外网中,车辆本身作为一个通信实体,参与构建了车、路边基础设施、云服务器、移动设备等各个设备间的交互协作体系。
车内网络作为车联网的基础架构,支撑着车辆内部信息交换的关键任务。它对车联网整体性能有着不可忽视的影响,是构建智能驾驶体验的重要组成部分。
车内网络核心:CAN
在汽车的内部通信中,多种总线协议协同工作,包括控制器局域网络(CAN)、本地互联网络(LIN)、FlexRay和媒体导向系统传输(MOST)等。其中,CAN总线凭借高效、可靠的特性,成为全球车企的首选。从豪华品牌奔驰、宝马、奥迪,到大众、吉利、奇瑞等品牌均广泛采用CAN技术,覆盖从低端代步车到高端智能电动车的全系产品。
CAN总线连接着车辆各个控制单元(ECU),使得它们之间能够快速准确地传递指令和反馈信息,主要包括:
-
发动机控制:传感器将空气流量、温度、转速等数据实时传递给发动机ECU,动态调整燃油喷射和点火时机,提升性能与油耗表现,让动力“随叫随到”;一旦检测到爆震或空燃比异常,ECU立即生成故障码并通过仪表盘提醒驾驶员。
-
自动变速器:CAN将油门踏板、车速、发动机状态等信息同步至变速器ECU,实现精准换挡逻辑。例如,急加速时自动降挡提速,坡道起步时智能锁止档位。
-
ABS/ESP:轮速传感器、加速度计等通过CAN传输数据,让制动系统在0.1秒内完成防抱死或车身稳定干预;触发制动系统时,刹车信号会抢占通信通道,避免因数据拥堵导致安全隐患。
-
电池和电机:电池管理系统(BMS)通过CAN监控电压、温度、电量,防止过充/过放,延长电池寿命。CAN整合动力系统与热管理数据,优化电能回收效率并调节电池冷却。
可以说,CAN总线就像是智能汽车的心脏,维持着整个系统的正常运转。
车联网的网络安全问题
车联网技术的快速发展带来了前所未有的便利,其所面临的安全威胁也日益增多。云端业务系统漏洞、数据泄露事件被频繁披露,对个人隐私保护构成了严重威胁。而恶意软件入侵则可能危及车辆控制系统,操控车辆的行驶状态,造成交通事故甚至生命危险。
特别是对于CAN总线而言,作为智能汽车内部通信的主要通道,已经成为了攻击者的首要目标。CAN主要被设计用于可靠和快速的通信,但因其缺少安全认证和防御机制,所以抵抗消息伪造、篡改、拒绝服务以及物理访问攻击等其他安全威胁的能力较弱,攻击者能够轻易地通过受损ECU访问CAN总线,发送和删除消息,误导车辆做出错误决策,甚至可以截获CAN总线上的消息进行篡改,影响车辆正常运行等。
CAN总线的安全漏洞并非偶然,而是与其通信机制的底层设计密切相关。要真正理解这些安全风险的根源,并探索防御方案,就必须深入理解CAN网络的工作原理。只有掌握这些技术细节,我们才能看清攻击者如何利用协议漏洞、加密增强或硬件隔离等手段,构建更安全的车载通信网络。
Part.2
深入理解CAN总线
传统CAN
CAN基本概念
CAN是由德国Robert Bosch公司在20世纪80年代初为汽车业开发的一种串行数据通信总线,并最终成为国际标准(ISO 11519以及ISO 11898)。主要应用于工业控制和汽车电子领域,旨在为电子控制单元之间提供一种可靠且高效的通信方式,是国际上应用最广泛的现场总线之一。
目前CAN总线中使用最广泛的正是CAN 2.0 A/B协议,也称作传统CAN(Classic CAN),其中CAN 2.0A协议仅支持标帧格式,而CAN 2.0B协议支持标准帧格式(11位标识符)和扩展帧格式(29位标识符)。
它采用差分信号的方式对数据进行明文广播传输,即通过两条线路(CAN_H和CAN_L)来发送数据,以增强抗干扰能力,并允许在恶劣电磁环境中保持稳定通信,传输速度可达1Mbps。
CAN工作原理
在现代汽车中,CAN总线被广泛应用于各种控制系统之间的数据交换,如动力系统、底盘控制系统、车身电器等。这些系统通常由分布在车辆各处的ECU组成,它们通过CAN总线相连,形成了一个复杂的分布式网络。
图 车内CAN总线拓扑图
具体来说,CAN总线的工作流程如下:
-
消息准备:某个ECU需要发送数据时,它将构建一条包含ID(标识符)、DLC(数据长度码)以及实际负载数据的消息。
-
总线访问:如果此时总线空闲,则该节点可以直接发送消息;若总线正忙,则需等待直到其变为可用状态。
-
消息传输:消息按照规定格式依次经过每一位进行编码后发送出去。在此期间,所有监听同一总线上的其他节点都会接收到这条消息。
-
接收与处理:每个节点根据预设规则检查接收到的消息是否与自己相关。如果是,则进一步解析数据内容并执行相应操作;否则忽略之。
-
确认反馈:发送完成后,源节点会等待一段时间看是否有ACK(确认应答)。如果没有收到,则认为传输失败并重试。
-
错误管理:在整个过程中,各个节点持续监控通信质量。一旦检测到异常情况(例如CRC校验错误),它们会立刻通知整个网络,并尝试恢复正常的通信秩序。
CAN协议栈架构
为了实现上述功能,CAN采用了OSI七层模型简化后的三层协议栈架构:
-
物理层:负责定义电气特性和物理连接方式,确保比特流能够在介质上正确传输。
-
数据链路层:分为LLC(逻辑链路控制子层)和MAC(媒体访问控制子层),前者负责帧格式化和错误检测,后者负责总线访问管理和冲突解决。
-
应用层:直接面向用户应用程序,提供了诸如API接口等功能,便于开发者编写基于CAN的应用程序。
CAN总线特点
-
多主结构:网络上的任意节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。
-
非破坏性仲裁机制:当多个节点同时尝试发送消息时,优先级较高的消息会自动胜出,优先级低的节点主动停止数据发送,而不会导致冲突或数据丢失。
-
错误检测与处理:每个节点都能够监测自身及其它节点的数据传输状态,一旦发现错误就会立即采取措施纠正。
-
灵活的消息格式:支持标准帧(11位标识符)和扩展帧(29位标识符),适应不同应用需求。
CAN2.0帧格式
CAN报文帧分为标准帧和扩展帧2种类型,具体格式如图所示。由于总线上采用明文广播传输,所以报文并不提供发送方地址和接收方地址,其ID位只表明消息优先级,在总线仲裁阶段优先级高的报文获得总线通信权,且报文只提供简单的CRC校验位。
图 CAN帧格式
CAN帧以帧起始(SOF)一个显性位(逻辑 0)段作为开始,以帧结束(EOF)7个连续的隐性位(逻辑 1) 段结束,在它们之间,分别有仲裁段、控制段、数据段、CRC 段和 ACK 段。
-
SOF段:帧起始信号只有一个数据位,是一个显性电平,它用于通知各个节点将有数据传输,其它节点通过帧起始信号的电平跳变沿来进行硬同步。
-
EOF段:帧结束段由发送节点发送的 7 个隐性位表示结束。
-
仲裁段:主要是数据段的ID信息,当同时有两个报文被发送时,总线会根据仲裁段的内容决定哪个数据包能被传输;RTR位,远程传输请求位,用于区分数据帧和远程帧,当它为显性电平时表示数据帧,隐性电平时表示远程帧;IDE位,标识符扩展位,用于区分标准格式与扩展格式,当它为显性电平时表示标准格式,隐性电平时表示扩展格式;SRR位,只存在于扩展格式,用于替代标准格式中的RTR 位,由于扩展帧中的SRR位为隐性位,RTR在数据帧为显性位,所以在两个ID相同的标准格式报文与扩展格式报文中,标准格式的优先级较高。
-
控制段:标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧的控制段由r1、r0和DLC组成。r1 和 r0 为保留位,默认设置为显性位。最主要的是DLC 段,它由4个数据位组成,用于表示本报文中的数据段含有多少个字节,DLC段表示的数字为 0~8。
-
数据段:节点要发送的原始信息,由 0~8 个字节组成,MSB先行,即在传输一个字节的时候先传输高位。
-
CRC段:用来保证报文的正确传输,一旦接收节点算出的CRC码跟接收到的CRC码不同,则它会向发送节点反馈出错信息,利用错误帧请求它重新发送。CRC部分的计算一般由CAN控制器硬件完成,出错时的处理则由软件控制最大重发数。在CRC校验码之后,有一个CRC界定符,它为隐性位,主要作用是把CRC校验码与后面的 ACK 段间隔起来。
-
ACK段:在ACK槽位中,发送节点发送的是隐性位,当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平以示应答。在ACK 槽和帧结束之间由ACK界定符位间隔开。
CAN FD技术
随着总线技术在汽车电子领域越来越广泛和深入的应用,传统CAN网络逐渐暴露出带宽不足的问题。特别是在面对高级辅助驾驶系统(ADAS)等高要求应用场景时,原有的数据传输速率难以满足需求。因此在2012年,Bosch发布了新的CAN FD(Flexible Data-rate)标准,旨在克服这一局限性。
CAN FD改进点
CAN FD的主要改进体现在以下几个方面:
-
增加数据传输速度:相比传统CAN最高只能达到1Mbps的速度限制,CAN FD可以在保证兼容性的前提下传输数据段的速率提升至高达8Mbps,在消息头部继续沿用较低的波特率。
-
支持更长的消息长度:传统CAN每条消息最多携带8个字节的有效载荷,而CAN FD则可扩展至64个字节,大大提高了单次传输的信息量。
-
保持向后兼容性:尽管引入了新特性,只要保证总线上节点的CAN控制器与收发器支持CAN FD功能,硬件方面则不需要做任何修改。
-
优化错误处理机制:CAN FD使用改进的循环冗余校验(CRC)和"受保护的填充位计数器",从而降低未被检测到的错误的风险,提升了整体系统的可靠性。
CAN FD帧格式
图 CAN FD标准帧
图 CAN FD扩展帧
CAN FD帧在控制场新添加EDL 位、BRS 位、ESI 位,采用了新的DLC编码方式、新的CRC算法(CRC 场扩展到21位),并取消了远程帧功能。CAN FD帧格式如上图。
关于新增位:
-
EDL(Extended Data Length)位:原CAN数据帧中的保留位r,该位为隐性时表示CAN FD报文,显性时表示CAN报文。
-
BRS(Bit Rate Switch)位:该位为隐性时表示转换可变速率,显性时表示不转换速率。
-
ESI(Error State Indicator)位:该位为隐性时表示发送节点处于被动错误状态,显性时表示发送节点处于主动错误状态。
CAN FD CRC校验
在传统CAN总线中,由于位填充规则可能对CRC产生干扰,导致错帧检测效率低于预期。CAN FD采用了一种新的策略:直接基于包含填充位的位流来计算CRC。在计算校验和时,为防止连续相同位超过6个,规定在序列开始处及之后每4位插入一个填充位,此填充位是前一位的反码。如果检测到填充位不符合这一规则,则认为出现错误。
同时,CAN FD中的CRC字段长度被扩展到了21位,并根据数据段长度的不同采用两种不同的CRC多项式。对于DLC小于等于210位的帧,采用17位长的CRC(CRC_17),对于数据长度可达1023位甚至更长的帧,采用21位长的CRC(CRC_21)。这种设计确保了不同长度的数据帧都能获得有效的错误检测,以提升系统的可靠性。
CAN FD影响
CAN FD的出现不仅解决了传统CAN网络存在的瓶颈问题,更为车联网带来了新的可能性。它使得车辆内部各组件之间的通信更加流畅高效,促进了诸如自动驾驶、远程诊断等一系列智能化服务的发展。
Part.3
CAN总线安全风险
CAN总线设计之初并未充分考虑网络安全问题,这使得它在面对现代网络攻击时显得尤为脆弱。常见的攻击方式包括但不限于:
-
重放攻击:针对缺少保密性和认证的缺陷,攻击者截取合法的CAN消息并稍后重新发送以欺骗系统,通过这种方式可以实现多种针对车辆控制系统的操作。
-
注入攻击:通过物理访问或无线接口直接向CAN总线上发送伪造的消息。
-
拒绝服务(DOS)攻击:CAN协议没有标识发送者和接收者的机制,也没有额外的认证手段,攻击者可以以高频率的方式频繁发送最高优先级的无效数据包使CAN总线过载,阻止合法消息的传输。
-
中间人(MitM)攻击:攻击者插入自己到两个通信节点之间,读取、修改甚至阻止他们的通信。
-
嗅探:因为总线没有认证节点身份的机制,攻击者可以使用专用设备窃听CAN总线上的所有通信内容并分析流量。
-
软件漏洞利用:利用ECU中的软件漏洞进行攻击,比如缓冲区溢出等。
-
远程访问攻击:当今的汽车包含了与被动防盗、胎压监测系统、蓝牙、无线电数据、远程报文处理等系统通信所需的不同类型的无线接口。这些无线接口需要与CAN通信,通常通过网关ECU来保护网络,攻击者可以入侵网关ECU并获得隔离CAN的访问权限,注入报文进而远程控制车辆,实现远距离攻击。
针对这些安全威胁,如何有效提升CAN总线这一传统车载网络协议的安全性成为了制造商和服务提供商共同关注的核心议题。传统的防御措施如物理隔离虽然可以在一定程度上防止攻击,但无法完全抵御所有类型的网络威胁。
Part.4
CAN总线安全检测
面对CAN总线架构中潜伏的多样化攻击向量,传统被动防御体系已难以应对汽车智能化浪潮下的安全挑战。在车联网深度渗透的今天,汽车网络已从封闭式物理架构演变为多层互联的复杂系统,攻击面的几何级扩张使得"事后修补"的安全策略风险倍增。为此,汽车网络安全亟需转向主动防御范式——通过深度协议解析与系统性漏洞挖掘,在攻击发生前构建起动态防御屏障。
针对这一行业痛点,威努特自主研发的工控漏洞挖掘平台创新性集成了CAN协议模糊测试引擎,突破性地将智能模糊测试技术(Intelligent Fuzzing)与汽车总线协议深度结合。该平台针对CAN总线各协议层次的安全盲区,构建了覆盖协议栈健壮性测试与车载控制域定向打击的二维检测体系,通过深度解码总线通信的脆弱性基因,为智能汽车打造全生命周期的主动防御闭环。
图 工控漏洞挖掘平台
全球仅六个获得ISASecure CRT Test Tools认证证书的产品之一
图 工控漏洞挖掘平台测试CAN部署
被测设备通过前面板业务CAN接口接入工控漏洞挖掘平台,单击“环境设置”—“接口配置”进入测试环境配置页面,选择“CAN”进行配置。
图 CAN接口配置(选择接口)
工控漏洞挖掘平台默认使能“CAN0”接口,波特率为“500kbps”。用户配置完成后进行保存,选择CAN测试用例进行测试。
图 CAN接口配置(配置参数)
其中协议栈健壮性测试,主要包括:
-
基础帧结构变异测试:包括CAN标准帧随机测试(构造符合CAN2.0的随机标准帧,可能不符合J1939CAN规定)、DLC填充错误测试(如DLC=8时数据域仅填充3字节)、含有数据场的远程帧测试、帧类型不匹配测试等基础变异规则,验证CAN总线对异常基础帧的容错极限。
-
J1939协议栈测试:设计J1939CAN优先级随机语法测试、PDU禁用参数组语法测试、分片错误测试(包括①其中一片丢失 ②其中一片重复发送 ③乱序 ④尾部填充错误)、请求PGN报文语法测试(随机构造数据段大于或小于3字节的请求PGN报文)、确认报文语法测试(随机构造数据段填充可能不符合规定的确认报文)、地址管理报文语法测试、故障诊断报文语法测试等攻击向量,突破协议状态机边界。
图 CAN协议栈健壮性测试用例
车载控制域定向打击测试,主要包括:
-
动力域:电机转速/电量/车速等关键参数异常值注入。
-
车身域:车灯/车门/雨刮/后备箱控制指令随机化测试。
-
底盘域:油门/刹车数值越界、OTA版本号污染等攻击仿真。
图 车载控制域测试用例
图 ZCANPRO作为被测设备收到的报文
平台通过智能变异算法动态生成测试用例,对被测设备进行未知漏洞挖掘、安全性和健壮性测试,深度挖掘工控设备或系统的各类已知、未知漏洞。在测试过程中自动记录用例执行状态,并自动生成ISASecure标准的测试报告,清晰标注异常报文特征及对应攻击向量类型。工程师可基于原始测试数据,结合目标ECU的物理反馈(如总线负载变化、功能异常表现等)进一步定位潜在缺陷,为车载系统的协议健壮性验证提供可量化的基准测试框架。
图 生成的测试报告
通过上述技术体系,威努特的工控漏洞挖掘平台为智能汽车打造了贯穿研发验证、产线检测等全生命周期的主动防御闭环,真正实现漏洞可测、风险可视、防御可控的智能汽车网络安全新范式。
原文始发于微信公众号(威努特安全网络):解码智能汽车心脏:CAN总线安全剖析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论