本发明涉及机动车辆网络中的欺骗检测,具体地,本发明涉及一种用于阻止机动车辆网络中的欺骗的方法和系统以及一种用于阻止机动车辆网络中的欺骗的计算机程序产品。
背景技术:
现代的机动车辆典型地具有用于各种系统和子系统的多个,例如,多达七十个,电子控制单元(ECU)。其它ECU被用于变速器、安全气囊、防抱死制动/ABS、巡航控制、电动助力转向、音频系统、电动窗、门、镜调节、混合动力电动车辆的电池和再充电系统等。这些ECU中的一些形成独立的子系统,但是尽管如此,在ECU中的通信通常是必要的。
控制器局域网(CAN)总线标准被设计,并且是众所周知的,以允许微控制器,例如在ECU中和在车辆中的其它装置中,以在没有主计算机的应用中彼此连通。CAN是基于消息的协议,被最初设计用于机动车辆应用,但也被用在许多其它领域中。CAN总线使用串行通信来发送和接受消息。串行通信指的是循序地通过通信通道——例如,车辆的通信总线——每次发送一位数据的过程。
欺骗是这样的情况,在该情况下,计算实体和/或程序通过伪造数据成功地伪装成另一个并因此获得非法访问系统或网络的权利。车辆通信总线上的消息的欺骗典型地包含伪装成ECU模块并将消息置于车辆通信总线上犹如伪装ECU模块是消息的合法来源。伪装ECU模块可以发送消息至总线上。总线上的接收模块可以对消息起作用,而没察觉到它们的真实来源。对欺骗的消息起作用的车辆的后果可能是严重的。
技术实现要素:
根据本发明,提供一种用于阻止机动车辆网络中的欺骗的方法,方法包含:
存储第一车辆电子控制单元的至少一个地址;
检测来自于车辆通信总线上的多个第二电子控制单元的至少一个消息,至少一个消息具有匹配电子控制单元的至少一个地址的源地址;
确定至少一个消息是由不同于电子控制单元的来源发送;以及
产生和传送否定应答(NACK)消息至机动车辆网络中的总线上的至少一个模块,命令多个第二电子控制单元不对至少一个消息采取动作。
根据本发明的一个实施例,检测通过由电子控制单元的处理器执行的监测程序来执行。
根据本发明的一个实施例,检测通过离散逻辑门的阵列来执行。
根据本发明的一个实施例,车辆通信总线是车辆网络的一部分,车辆网络包括无线网络。
根据本发明的一个实施例,进一步包含在接收到预定数量的NACK之后迫使攻击程序进入离开总线状态。
根据本发明的一个实施例,至少一个消息包括传感器数据。
根据本发明的一个实施例,电子控制单元通过监测电子控制单元的至少一个经传送的消息来确定至少一个消息由不同于电子控制单元的来源发送。
根据本发明的一个实施例,电子控制单元的至少一个地址是动态的。
根据本发明,提供一种用于阻止机动车辆网络中的欺骗的系统,包含:
包括处理器的电子控制单元;
可通过处理器执行的应用程序,该应用程序配置为实施:
检测来自于机动车辆网络中的总线上的多个电子控制单元的至少一个消息并且至少一个消息具有匹配电子控制单元的至少一个地址的源地址;
确定至少一个消息是由不同于电子控制单元的来源发送;以及
产生和传送否定应答(NACK)消息至机动车辆网络中的总线上的至少一个模块,命令多个电子控制单元不对至少一个消息采取动作。
根据本发明的一个实施例,机动车辆网络是无线网络。
根据本发明的一个实施例,进一步包含在接收到预定数量的NACK之后迫使攻击程序进入离开总线状态。
根据本发明的一个实施例,消息响应于传感器而被传送。
根据本发明的一个实施例,应用程序通过监测电子控制单元的至少一个经传送的消息来确定电子控制单元的至少一个地址。
根据本发明的一个实施例,电子控制单元的至少一个地址是动态的。
根据本发明,提供一种用于阻止机动车辆网络中的欺骗的计算机程序产品,计算机程序产品包含非易失性存储介质,该非易失性存储介质具有体现在其上的指令,当由电子控制单元的处理器执行计算机程序产品时,导致电子控制单元实施:
检测来自于机动车辆网络中的总线上的多个电子控制单元的至少一个消息并且至少一个消息具有匹配电子控制单元的至少一个地址的源地址;
确定至少一个消息是由不同于电子控制单元的来源发送;以及
产生和传送否定应答(NACK)消息至机动车辆网络中的总线上的至少一个模块,命令多个电子控制单元不对至少一个消息采取动作。
根据本发明的一个实施例,机动车辆网络是无线网络。
根据本发明的一个实施例,机动车辆网络连接至远程信息处理单元。
根据本发明的一个实施例,消息响应于传感器而被传送。
根据本发明的一个实施例,计算机程序产品通过监测电子控制单元的至少一个经传送的消息来确定电子控制单元的至少一个地址。
根据本发明的一个实施例,电子控制单元的至少一个地址是动态的。
附图说明
图1是示例性车辆总线防欺骗系统的框图;
图2是示出串行通信协议的示例性框架的视图;
图3是举例说明用于图1的系统的示例性程序的流程图。
具体实施方式
图1是示例性车辆总线防欺骗系统100的框图。传感器111连接至电子控制单元(ECU)102,例如,以公知的方式。ECU 102具有控制器104,其与通信控制器106连通。通信控制器106连接至防欺骗模块108。防欺骗模块108通信地连接至通信收发器110。通信收发器110相应地与机动车辆网络的总线101通信地连接。总线101在总线101的每一端具有阻抗终端电阻器103。
控制器104可以包括一个或多个处理器,例如,微处理器或微控制器。控制器104也可以具有存储器,例如只读存储器(ROM)以存储由处理器执行的指令,以及例如随机存取存储器(RAM)以暂时地存储数据或保存注册信息。ECU 102可以使用微处理器以处理来自于传感器111(例如,发动机传感器,例如,燃料喷射传感器、定时装置、氧传感器、冷却剂传感器、进气口传感器,等等)的传感器读数,并且作为应答,根据它们各自的功能,将该信息传送至车辆中的其它车辆部件,例如,ECU 112、ECU 114和ECU 116或例如仪表灯、车灯、喇叭等这样的装置。当附接至总线101时,每个ECU必须具有唯一地址,以避免混淆。例如,ECU 102、ECU 112、ECU 114和ECU 116可以分别具有唯一的ECU十六进制地址:1A0h、2B0h、3AFh和008h。
通信控制器106可以是,例如,控制器局域网(CAN)控制器并且通常是控制器104的处理器的主要部分。通信控制器104可以包含处理器以执行指令。当接收数据时,通信控制器106存储接收到的位串行,该接收到的位串行从总线101接收直到全部消息是可用的。消息可以在之后通过控制器104处理器检索。通信控制器可以引起控制器104处理器中的中断,提醒处理器已经接收到新消息。当发送数据时,控制器104处理器发送将要置于总线101上的消息至通信控制器106。
防欺骗模块108被定位在通信控制器106和通信收发器110之间。防欺骗 模块的功能可在硬件、软件或它们的结合中实现。防欺骗模块108的实施方式的示例在以下讨论。在操作中,防欺骗模块108通过通信收发器110监测总线101并且检测什么时候总线101上接收到的消息具有匹配ECU 102的发出地址的源地址以及接收到的消息不通过ECU 102发送。在欺骗的消息能够完成之前,防欺骗模块108将立即通过通信收发器110发送一系列六个连续的显性位(dominant bit)至总线101,因此否定了欺骗的消息(在以下进一步讨论)。六个位包含根据CAN总线标准的“激活错误标志”,是激活错误标志并且构成来自于ECU 102的否定应答(NACK)消息,通知总线101上的任何模块已接收到欺骗消息。有利地,ECU 102NACK消息将导致该欺骗消息被总线101上的模块忽视。
如所知的,CAN总线数据传送使用争用解决的无损逐位判优方法。该判优方法要求CAN网络上所有节点同步以大体上同时对CAN网络上的每个位取样。CAN规范使用以下术语“显性”位和“隐性”位。显性是逻辑0(通过发射器被主动驱动至一电压),以及隐性是逻辑1(通过电阻器被被动返回至一电压)。由隐性水平(逻辑1)表示闲置状态。如果一个节点传送显性位并且另一节点传送隐性位,则有冲突并且显性位“赢”。这意味着高优先级消息没有延迟,并且传送低优先级消息的节点自动尝试在显性消息结束之后重新传送六位时钟周期。这使得CAN非常适合作为实时优先通信系统。
图2是串行通行总线的数据帧10的时间图。列表示数据帧10中的不同字段。逻辑1(隐性)和逻辑0(显性)数据状态表示为沿着y轴具有针对每列的多个位。数据帧10与在前的帧分开称为帧间间隔16的位字段。帧间间隔16包含至少三个连续的隐性(1)位。如果在帧间间隔16之后检测到显性位(0),则其将被认为是帧位18的开始。下一列是判优字段20,是11位并且将在下面讨论。在判优字段20之后是包含四个位的控制字段22,控制字段22指示数据字段24中的字节数。数据字段24包含被发送和能够从0至8字节长度的数据。CRC字段26是十六位循环冗余检验字段,以检测任何数据和校正数据错误。CRC校正是十五位,其第十六位是隐性(1)位。确认字段28是两位。帧字段30的结束是七个隐性(1)位并且被用于标记数据帧10的结束。
判优字段20类似于地址字段,但因为CAN总线是半异步的,所以总线上 的任何ECU可以在任何时间传送,这可导致总线争用问题。一些ECU将需要优于其它模块的优先级。例如,制动系统ECU将需要优于娱乐模块的优先级。如上所述的争用解决的逐位判优方法将被使用并且制动系统ECU将被分配低数值总线地址。因为地址的低阶值是优于地址的高值的显性,所以制动系统ECU将优于娱乐ECU占优势。
当从总线101接收到数据时,通信收发器110将来自于总线101的数据流信号水平转换和缓冲至防欺骗模块108的信号水平。当传送时,通信收发器110将来自于防欺骗模块108的数据流转换至总线101的水平。例如,CAN总线上的信号水平可以在从-3伏特至+32伏特的范围,并且防欺骗模块108控制器可以使用TTL(晶体管-晶体管逻辑)逻辑并且可以能够处理电压中的至多0至+5伏特摆动。通信收发器110,例如,CAN收发器,将使传送的和接收到的数据信号转换至合适的信号电压水平。此外,CAN收发器必须能够抑制从-150伏特至+100伏特的任何瞬时电压峰值。
总线101可以利用任何适当类型的网络配置实施。例如,在一个实施例中,总线101可以利用标准协议操作,例如,控制器局域网(CAN)协议。通过非限制性示例,总线101可被实施为单线或可以是双线(例如,双绞线),其将来自于一个ECU的消息传送至另一ECU并且至其它所需的车辆部件。在其它非限制性示例中,总线101可以利用同轴电缆或光纤实施,或者可以利用射频发信号无线地实施。进一步地,总线101可以利用本领域已知的任何适当的网络拓扑结构实施,例如,点对点、星、总线、环、网格、树、菊花链,等等。
总线101也可以被连接至远程信息处理单元以允许外部的ECU通过远程通信链路连接至车载网络的总线101。远程信息处理单元,如所知的,可以通过远程通信装置发送、接收和存储关于各种车辆部件,例如,传感器、仪表、无线网络状态和通信、路况、道路安全等的信息。
在一个示例中,防欺骗模块108可以通过离散逻辑门的阵列完成。ECU的地址可以被硬接线至防欺骗模块108,并且当接收到的地址匹配ECU的传送地址时,逻辑电路可以发送导致总线101上的任何模块忽视欺骗消息的 NACK消息。逻辑门,如所知的,是数字电路的基本构件。
根据另一示例,可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、或嵌入式控制器可以用作防欺骗模块108。如所知的,PLD是用于建立可重构逻辑电路的电子元件。与具有固定功能的逻辑门不同,PLD在生产的时候具有未限定的功能。在PLD被用于电路中之前,它必须被编程为所需逻辑模式。例如,PLD可以被编程为模拟离散逻辑门,如上所述的。FPGA包含可编程逻辑块的阵列、和允许块被“线接在一起”的可重构互相连接的层级结构。逻辑块可以配置为执行复杂的组合功能,或仅简单的逻辑门,例如,与(AND)和异或(XOR)。嵌入式控制器是系统中的微控制器,其处理操作系统不处理的各种系统任务。
在另一示例中,ECU 102中的处理器可以执行编程以监测总线101上的地址。如果监测程序检测到总线101上的进入消息具有和ECU 102发出地址相同的地址,并且ECU 102不发送消息,则监测程序可以在之后发送NACK消息至总线101并且导致欺骗消息被总线101上的其它模块忽视。
在一些示例中,ECU 102地址是动态的并且将不时改变。因此,使用ECU 102的嵌入式控制器或处理器的优点是它能够被编程为当ECU 102的地址变化时获知ECU 102的地址。例如,控制器14的处理器可以执行节点以监测ECU 102发出的原始消息并将ECU 102发出地址存储在存储器中以及在之后将ECU 102的发出地址置于防欺骗模块108中。
ECU 102发送NACK消息以通知总线101上的装置以忽视欺骗消息的特点是通过重复NACK迫使攻击程序离开总线。例如,攻击程序发送一系列欺骗消息,ECU 102检测到该欺骗消息并利用NACK进行响应。在NACK的阈值之后,初始欺骗装置的CAN总线控制器将进入总线关闭状态,将初始欺骗装置移出总线101。在总线关闭状态中,节点不被允许在总线上通信。例如,在迫使欺骗装置的CAN控制器进入总线关闭状态之前,ISO 11898-1:2003CAN总线标准允许256的传送错误(NACK)计数。
图3是举例说明在硬件或软件中执行的防欺骗模块108的示例性程序200的流程图。
程序200在框210中开始,其中,ECU 102的地址被加载到防欺骗模块中。例如,ECU 102可以具有十六进制地址1A0h,该地址之后被加载到防欺骗模块108中。接下来,在框220中,总线101上的通信量被监测用于任何接收到的欺骗消息,例如,接收到的消息具有源地址1A0h,与ECU 102相同。接下来,在框230中,做出一个这样的消息是否被接收到的确定。如果在框230中未接收到欺骗消息,则防欺骗模块将返回值框220。如果已经接收到欺骗消息,则在框240中,NACK消息被发送到总线101上指示发生错误。接下来在框250中,总线101上的模块将忽视该欺骗消息。在框250之后,程序200结束。可选择地,或额外地,程序200可以返回至框200以继续监测总线200通信量。
如在此使用的,修饰形容词的副词“大体上”意味着形状、结构、测量值、数值、计算结果、时间等可以偏离精确描述的几何学、距离、测量值、数值、计算结构、时间等,因为材料、机械加工、制造、传感器测量、计算、处理时间、通信时间等中的不完美。
计算机装置,例如,那些在此讨论的,大体上每个包括由一个或多个计算装置,例如,那些上述的,可执行的指令,并且用于执行上述程序的框或步骤。计算可机执行指令可以由利用各种程序语言和/或技术创建的计算机程序编译或解释,程序语言和/或技术包括,但不限于单独或者组合的,JavaTM、C、C++、C#、Visual Basic、Java Script、Perl、HTML、PHP等。通常,处理器(例如,微处理器)例如从存储器、计算机可读介质等接收指令,并且执行这些指令,从而执行一个或多个程序,包括这里所描述的一个或多个程序。这种指令和其它的数据利用各种计算机可读介质可以被存储和传送。计算装置中的文件通常是存储在计算机可读介质——例如,存储介质、随机存取存储器——上的数据的集合。
计算机可读介质包括任何介质,其参与提供计算机可读的数据(例如,指令)。这种介质可采取多种形式,包括,但不限于,非易失性介质、易失性介质等。非易失性介质包括,例如,光盘或磁盘以及其它的永久存储器。易失性介质包括动态随机存取存储器(DRAM),其典型地构成主存储器。计算机可读介质的一般形式包括,例如,软盘、柔性盘、硬盘、磁带、任何其它的磁介质,只读光盘驱动器(CD-ROM)、数字化视频光盘(DVD)、任 何其它的光学介质,穿孔卡片、纸带、任何其它的具有孔式样的物理介质,RAM、可编程只读存储器(PROM)、电可编程只读存储器(EPROM)、闪速可编程可擦除只读存储器(FLASH-EEPROM)、任何其它的存储器芯片或盒式磁盘,或任何其它的计算机可读的介质。
关于这里描述的介质、程序、系统、方法等,应该理解的是,虽然这些程序的步骤等已经被描述为按照某个有序序列发生,但是可以在以与此处所述顺序不同的顺序执行所描述的步骤的情况下实施这些程序。应该进一步理解的是,某些步骤能够同时执行,能够加入其它步骤,或者能够省略这里所描述的某些步骤。也就是说,在这里的系统和/或程序的说明旨在提供用于说明某些实施例的目的,并且不应以任何方式被解释为限制权利要求。
因此,应该理解的是,上述说明旨在说明并非限制。通过阅读上述说明,除了提供的示例以外的许多实施例和应用将是显而易见的。本发明的保护范围应该不应参照上述说明确定,而是应当参照所附至和/或包括在非临时专利申请中的权利要求连同这些权利要求所享有的全部等同范围而确定。可以预期和想到的是未来的发展将出现在这里所述的技术中,并且该公开的系统和方法将结合入这些未来的实施例中。总之,应该理解的是,该应用可被修改和变化。