CN112602287B - Can通信方法、设备及系统 - Google Patents

Can通信方法、设备及系统 Download PDF

Info

Publication number
CN112602287B
CN112602287B CN201980054284.3A CN201980054284A CN112602287B CN 112602287 B CN112602287 B CN 112602287B CN 201980054284 A CN201980054284 A CN 201980054284A CN 112602287 B CN112602287 B CN 112602287B
Authority
CN
China
Prior art keywords
ecu
master
message
state
slave
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201980054284.3A
Other languages
English (en)
Other versions
CN112602287A (zh
Inventor
沙庆迪
魏卓
杨艳江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN112602287A publication Critical patent/CN112602287A/zh
Application granted granted Critical
Publication of CN112602287B publication Critical patent/CN112602287B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R16/00Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for
    • B60R16/02Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements
    • B60R16/023Electric or fluid circuits specially adapted for vehicles and not otherwise provided for; Arrangement of elements of electric or fluid circuits specially adapted for vehicles and not otherwise provided for electric constitutive elements for transmission of signals between vehicle parts or subsystems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Mechanical Engineering (AREA)
  • Small-Scale Networks (AREA)

Abstract

本申请实施例提供一种CAN通信方法、设备及系统,该方法应用于控制器局域网CAN通信系统,CAN通信系统包括CAN总线和与CAN总线连接的至少两个电子控制单元ECU,该方法包括:第一ECU获取第一随机数,第一ECU为至少两个ECU中的任意一个ECU,第一随机数为至少两个ECU中的主ECU在CAN总线上发送的;第一ECU获取第一随机数对应的第一随机序列;第一ECU根据第一随机序列对在CAN总线上接收的数据报文进行解密处理,和/或,对在CAN总线上发送的数据报文进行加密处理。提高了CAN通信的安全性。

Description

CAN通信方法、设备及系统
技术领域
本申请涉及通信技术领域,尤其涉及一种CAN通信方法、设备及系统。
背景技术
目前,在多种设备(例如车辆、工业设备等)中设置有控制器局域网(controllerarea network,CAN)通信系统,CAN通信系统中包括CAN总线和与CAN总线连接的至少两个电子控制单元(electronic control unit,ECU)。
在实际应用过程中,ECU通常以广播的方式在CAN总线上发送报文,与CAN总线连接的所有ECU均可以接收到广播的数据。然而,在上述过程中,ECU在CAN总线中广播的数据可能会受到攻击,使得CAN总线中传输的数据泄露或者被非法篡改,导致CAN通信的安全性较低。
发明内容
本申请实施例提供一种CAN通信方法、设备及系统,提高了CAN通信的安全性。
第一方面,本申请实施例提供一种CAN通信方法,该方法可以应用于控制器局域网CAN通信系统,CAN通信系统包括CAN总线和与CAN总线连接的至少两个电子控制单元ECU,针对至少两个ECU中的任意一个第一ECU:第一ECU获取第一随机数,第一随机数为至少两个ECU中的主ECU在CAN总线上发送的;第一ECU获取第一随机数对应的第一随机序列;第一ECU根据第一随机序列对在CAN总线上接收的数据报文进行解密处理,和/或,对在CAN总线上发送的数据报文进行加密处理。
在上述过程中,同一CAN总线中的ECU可以获取相同的随机数,一个随机数对应一个随机序列。ECU在CAN总线上发送数据之前,ECU可以先获取随机数对应的随机序列,并根据随机序列对数据进行加密处理,并在CAN总线上发送加密后的数据。ECU在CAN总线上接收到数据之后,ECU可以先获取随机数对应的随机序列,并根据随机序列对数据进行解密处理,这样,可以降低CAN总线中传输的数据泄露或者被非法篡改的可能性(即,降低了窃听攻击的可能性),提高了CAN通信的安全性。
在一种可能的实施方式中,第一ECU可以通过如下可行的实现方式获取第一随机数:第一ECU确定第一ECU的主从状态,主从状态用于指示第一ECU为主ECU或者从ECU;第一ECU根据第一ECU的主从状态获取第一随机数。
在一种可能的实施方式中,第一ECU可以通过如下可行的实现方式确定第一ECU的主从状态:第一ECU在CAN总线上发送包括第一报文标识的主节点竞争报文;在CAN总线上接收至少两个ECU中除第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;根据第一报文标识和第二报文标识的大小,按照预设排序规则对至少两个ECU进行排序;判断排序后的第一ECU是否位于第一位,若是,则确定第一ECU为主ECU,若否,则确定第一ECU为从ECU。
在上述过程中,第一ECU可以根据各个ECU发送的报文中包括的报文标识确定其为主ECU或者从ECU,由于不同ECU发送的报文中包括的报文标识不同,因此,通过上述方式,根据报文标识可以在至少两个ECU中确定得到唯一的一个主ECU。
在一种可能的实施方式中,在确定第一ECU为主ECU之后,在第一ECU确定生命周期结束时,第一ECU发送主节点轮换通知消息,主节点轮换通知消息用于指示第一ECU的主从状态切换为从ECU,第一ECU的下一个ECU的主从状态切换为主ECU。
在上述过程中,通过上述方式,可以使得主ECU发生切换,减少主ECU被攻击的概率、以及减少由于主ECU作恶引起的通信安全问题。
在一种可能的实施方式中,在第一ECU确定为主ECU之后,第一ECU发送第一报文,第一报文中包括的第一ECU的主从状态为主状态、第一ECU的建环状态为有效状态;在第一ECU确定为从ECU时,在第一ECU接收到第二ECU发送的第二报文中包括的第二ECU的建环状态为有效状态之后,第一ECU发送第三报文,第三报文包括的第一ECU的主从状态为从状态、第一ECU的建环状态为有效状态,第二ECU为排序后的第一ECU的前一个ECU,第一EUC的建环状态为有效状态用于指示第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
在上述过程中,在第一ECU的主从状态确定之后,第一ECU广播报文,以在广播的报文中携带自己的主从状态以及建环状态,这样,可以使得CAN通信系统中的ECU可以获知其它各ECU的主从状态。
在一种可能的实施方式中,在第一ECU确定为主ECU时,在第一ECU确定至少两个ECU发送的报文中的建环状态均为有效时,则第一ECU生成第一随机数。在第一ECU确定为从ECU时,则第一ECU接收主ECU发送的第一随机数。
在上述过程中,可以确保由主ECU生成第一随机数,并将第一随机数发送给CAN通信系统中的其它ECU,以使通信系统中的ECU在同一时刻获取得到第一随机数相同。
在一种可能的实施方式中,第一ECU生成第一随机数之后,第一ECU发送第四报文,第四报文中包括第一随机数和第一随机数的状态为更新状态;第一ECU接收至少两个ECU中除第一ECU之外的其它ECU发送的第五报文,第五报文中包括第一随机数和第一随机数的状态为更新状态;在第一ECU确定至少两个ECU中除第一ECU之外的其它ECU均发送第五报文之后,第一ECU发送第六报文,第六报文中包括第一随机数和第一随机数的状态为保持状态,保持状态用于指示第一随机数生效。
在上述过程中,当第一ECU为主ECU时,第一ECU广播第一随机数之后,在第一ECU接收到所有其它ECU发送的第五报文之后,第一ECU广播第六报文,第六报文中的保持状态指示第一随机数生效。即,在确定CAN通信系统中的每个ECU均接收到第一随机数时,才使得第一随机数生效,这样,可以使得CAN通信系统中所有的ECU在同一时刻所使用的第一随机数相同,进而使得各个ECU可以进行正确的加密和解密。
在一种可能的实施方式中,若第一ECU在第一预设时长之内未收到第二ECU发送的第二报文,或者第一ECU接收到的第二ECU发送的报文中包括的建环状态为无效状态时,第一ECU发送第七报文并更新至少两个ECU,第七报文中包括的建环状态为无效状态。
在上述过程中,若第一ECU在第一预设时长之内未收到第二ECU发送的第二报文,或者第一ECU接收到的第二ECU发送的报文中包括的建环状态为无效状态时,说明CAN通信系统中存在ECU出线故障,则对CAN通信系统中的ECU进行更新,以及重新建环。
在一种可能的实施方式中,第一ECU可以通过如下可行的实现方根据第一随机序列对在CAN总线上发送的数据报文进行加密处理:第一ECU确定第一计数值;第一ECU根据待发送的第一应用数据、第一计数值和第一随机数确定第一校验和;第一ECU通过第一随机序列对第一应用数据、第一计数值和第一校验和进行加密处理,得到待发送的数据报文,并发送待发送的数据报文。
在上述过程中,通过第一计数值和第一随机数对第一应用数据进行加密处理,使得确定得到的待发送的数据报文的安全性较高。
在一种可能的实施方式中,第一ECU根据第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,第一ECU在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;在第一ECU验证第二计数值正确后,第一ECU根据第二计数值、第二应用数据和第一随机数确定第三校验和;在第一ECU确定第三校验和与第二校验和相同时,确定接收到的数据报文正确。
在上述过程中,通过计数值和校验和验证接收到的应用数据是否正确,这样,可以有效的防止注入攻击、重传攻击等,进一步提高了通信的安全性。
第二方面,本申请实施例提供一种CAN通信系统,包括控制器局域网CAN总线和与所述CAN总线连接的至少两个电子控制单元ECU,针对所述至少两个ECU中的任意一个第一ECU,所述第一ECU用于:
获取第一随机数,所述第一随机数为所述至少两个ECU中的主ECU在所述CAN总线上发送的;
获取所述第一随机数对应的第一随机序列;
根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理,和/或,对在所述CAN总线上发送的数据报文进行加密处理。
在一种可能的实施方式中,所述第一ECU具体用于:
确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
根据所述第一ECU的主从状态获取所述第一随机数。
在一种可能的实施方式中,所述第一ECU具体用于:
在所述CAN总线上发送包括第一报文标识的主节点竞争报文;
在所述CAN总线上接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;
根据所述第一报文标识和所述第二报文标识的大小,按照预设排序规则对所述至少两个ECU进行排序;
判断排序后的所述第一ECU是否位于第一位,若是,则确定所述第一ECU为主ECU,若否,则确定所述第一ECU为从ECU。
在一种可能的实施方式中,在确定所述第一ECU为主ECU之后,所述第一ECU还用于:
在所述第一ECU确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述第一ECU的主从状态切换为从ECU,所述第一ECU的下一个ECU的主从状态切换为主ECU。
在一种可能的实施方式中,在确定所述第一ECU为主ECU之后,所述第一ECU还用于发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
在确定所述第一ECU为从ECU之后,在所述第一ECU接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,所述第一ECU还用于发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为排序后的所述第一ECU的前一个ECU,所述第一EUC的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
在一种可能的实施方式中,在确定所述第一ECU为主ECU时,所述第一ECU具体用于:在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,生成所述第一随机数;
在确定所述第一ECU为从ECU时,所述第一ECU具体用于:接收所述主ECU发送的所述第一随机数。
在一种可能的实施方式中,在所述第一ECU生成所述第一随机数之后,所述第一ECU还用于:
发送第四报文,所述第四报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的第五报文,所述第五报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
在所述第一ECU确定所述至少两个ECU中除所述第一ECU之外的其它ECU均发送所述第五报文之后,发送第六报文,所述第六报文中包括所述第一随机数和所述第一随机数的状态为保持状态,所述保持状态用于指示所述第一随机数生效。
在一种可能的实施方式中,所述第一ECU还用于:
在所述第一ECU在第一预设时长之内未收到所述第二ECU发送的所述第二报文,或者所述第一ECU接收到的所述第二ECU发送的报文中包括的建环状态为无效状态时,发送第七报文并更新所述至少两个ECU,所述第七报文中包括的建环状态为无效状态。
在一种可能的实施方式中,所述第一ECU具体用于:
确定第一计数值;
根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
在一种可能的实施方式中,在所述第一ECU根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,所述第一ECU还用于:
在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
第三方面,本申请实施例提供一种ECU,所述ECU为第一ECU,所述第一ECU包括处理器、收发器、控制器和存储器,所述存储器中存储有计算机程序,所述处理器用于读取并执行所述存储器中的计算机程序,其中,
所述处理器用于,获取第一随机数,所述第一随机数为所述第一ECU所在的控制器局域网CAN通信系统中的主ECU在所述CAN通信系统中的CAN总线上发送的;
所述处理器还用于,获取所述第一随机数对应的第一随机序列;
所述控制器用于,控制所述收发器在所述CAN总线上接收数据,和/或,控制所述收发器在所述CAN总线上发送数据;
所述处理器还用于,根据所述第一随机序列对所述收发器在CAN总线上接收的数据报文进行解密处理,和/或,对所述收发器在所述CAN总线上发送的数据报文进行加密处理。
在一种可能的实施方式中,所述处理器具体用于:
确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
根据所述第一ECU的主从状态获取所述第一随机数。
在一种可能的实施方式中,所述处理器具体用于:
在所述CAN总线上发送包括第一报文标识的主节点竞争报文;
在所述CAN总线上接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;
根据所述第一报文标识和所述第二报文标识的大小,按照预设排序规则对所述至少两个ECU进行排序;
判断排序后的所述第一ECU是否位于第一位,若是,则确定所述第一ECU为主ECU,若否,则确定所述第一ECU为从ECU。
在一种可能的实施方式中,所述收发器具体用于:
在确定所述第一ECU为主ECU之后,在所述第一ECU确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述第一ECU的主从状态切换为从ECU,所述第一ECU的下一个ECU的主从状态切换为主ECU。
在一种可能的实施方式中,所述收发器还用于,在所述处理器确定所述第一ECU为主ECU时,发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
所述收发器还用于,在所述处理器确定所述第一ECU为从ECU时,在所述第一ECU接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为所述第一ECU的前一个ECU,所述第一EUC的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
在一种可能的实施方式中,所述处理器具体用于,在所述处理器确定所述第一ECU为主ECU时,在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,生成所述第一随机数;
所述收发器具体用于,在所述处理器确定所述第一ECU为从ECU时,接收所述主ECU发送的所述第一随机数。
在一种可能的实施方式中,所述收发器还用于,在所述处理器生成所述第一随机数之后,发送第四报文,所述第四报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
所述收发器还用于,接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的第五报文,所述第五报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
所述收发器还用于,在所述处理器确定所述至少两个ECU中除所述第一ECU之外的其它ECU均发送所述第五报文之后,发送第六报文,所述第六报文中包括所述第一随机数和所述第一随机数的状态为保持状态,所述保持状态用于指示所述第一随机数生效。
在一种可能的实施方式中,所述收发器还用于,在所述收发器在第一预设时长之内未收到所述第二ECU发送的所述第二报文,或者所述收发器接收到的所述第二ECU发送的报文中包括的建环状态为无效状态时,发送第七报文并更新所述至少两个ECU,所述第七报文中包括的建环状态为无效状态。
在一种可能的实施方式中,所述处理器具体用于:
确定第一计数值;
根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
在一种可能的实施方式中,在所述处理器根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,所述处理器还用于:
在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述处理器确定所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
第四方面,本申请实施例提供一种CAN通信装置,应用于控制器局域网CAN通信系统中的第一ECU,所述CAN通信系统包括CAN总线和与所述CAN总线连接的至少两个电子控制单元ECU,所述第一ECU为所述至少两个ECU中的任意一个ECU,所述装置包括处理模块和收发模块,其中,
所述处理模块用于,获取第一随机数,所述第一ECU为所述至少两个ECU中的任意一个ECU,所述第一随机数为所述至少两个ECU中的主ECU在所述CAN总线上发送的;
所述处理模块还用于,获取所述第一随机数对应的第一随机序列;
所述处理模块还用于,根据所述第一随机序列对所述收发模块在CAN总线上接收的数据报文进行解密处理,和/或,对所述收发模块在所述CAN总线上发送的数据报文进行加密处理。
在一种可能的实施方式中,所述处理模块具体用于:
确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
根据所述第一ECU的主从状态获取所述第一随机数。
在一种可能的实施方式中,所述收发模块还用于,在所述CAN总线上发送包括第一报文标识的主节点竞争报文;
所述收发模块还用于,在所述CAN总线上接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;
所述处理模块还用于,根据所述第一报文标识和所述第二报文标识的大小,按照预设排序规则对所述至少两个ECU进行排序;
所述处理模块还用于,判断排序后的所述第一ECU是否位于第一位,若是,则确定所述第一ECU为主ECU,若否,则确定所述第一ECU为从ECU。
在一种可能的实施方式中,所述收发模块还用于,在所述处理模块确定所述第一ECU为主ECU之后,在所述第一ECU确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述第一ECU的主从状态切换为从ECU,所述第一ECU的下一个ECU的主从状态切换为主ECU。
在一种可能的实施方式中,所述收发模块还用于,在所述处理模块确定所述第一ECU为主ECU时,发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
所述收发模块还用于,在所述确定模块确定所述第一ECU为从ECU时,在所述收发模块接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为排序后的所述第一ECU的前一个ECU,所述第一EUC的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
在一种可能的实施方式中,所述处理模块具有用于,在所述处理模块确定所述第一ECU为主ECU时,在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,生成所述第一随机数;
所述收发模块还用于,在所述处理模块确定所述第一ECU为从ECU时,接收所述主ECU发送的所述第一随机数。
在一种可能的实施方式中,所述收发模块还用于,在所述处理模块生成所述第一随机数之后,发送第四报文,所述第四报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
所述收发模块还用于,接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的第五报文,所述第五报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
所述收发模块还用于,在所述处理模块确定所述至少两个ECU中除所述第一ECU之外的其它ECU均发送所述第五报文之后,发送第六报文,所述第六报文中包括所述第一随机数和所述第一随机数的状态为保持状态,所述保持状态用于指示所述第一随机数生效。
在一种可能的实施方式中,所述收发模块还用于:
若所述收发模块在第一预设时长之内未收到所述第二ECU发送的所述第二报文,或者所述收发模块接收到的所述第二ECU发送的报文中包括的建环状态为无效状态时,发送第七报文并更新所述至少两个ECU,所述第七报文中包括的建环状态为无效状态。
在一种可能的实施方式中,所述处理模块具体用于:
确定第一计数值;
根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
在一种可能的实施方式中,所述处理模块还用于:
在所述处理模块根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
在所述第一ECU验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述第一ECU确定所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
第五方面,本申请提供一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序用于实现第一方面任一项所述的CAN通信方法。
第六方面,本申请实施例还提供一种芯片或者集成电路,包括:存储器和处理器;
所述存储器,用于存储程序指令,有时还用于存储中间数据;
所述处理器,用于调用所述存储器中存储的所述程序指令以实现第一方面任一项所述的CAN通信方法。
第七方面,本申请实施例还提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在存储介质中,所述计算机程序用于实现第一方面任一项所述的CAN通信方法。
本申请实施例提供的CAN通信方法、设备及系统,同一CAN总线中的ECU可以获取相同的随机数,一个随机数对应一个随机序列。ECU在CAN总线上发送数据之前,ECU可以先获取随机数对应的随机序列,并根据随机序列对数据进行加密处理,并在CAN总线上发送加密后的数据。ECU在CAN总线上接收到数据之后,ECU可以先获取随机数对应的随机序列,并根据随机序列对数据进行解密处理,这样,可以降低CAN总线中传输的数据泄露或者被非法篡改的可能性(即,降低了窃听攻击的可能性),提高了CAN通信的安全性。
附图说明
图1A为本申请实施例提供的一种CAN通信系统的架构图;
图1B为本申请实施例提供的另一种CAN通信系统的架构图;
图1C为本申请实施例提供的又一种CAN通信系统的架构图;
图2A为本申请实施例提供的一种ECU的结构示意图;
图2B为本申请实施例提供的另一种ECU的结构示意图;
图2C为本申请实施例提供的一种车机的结构示意图;
图2D为本申请实施例提供的另一种车机的结构示意图;
图2E为本申请实施例提供的一种网关的结构示意图;
图2F为本申请实施例提供的另一种网关的结构示意图;
图3为本申请实施例提供的确定主ECU方法的流程示意图;
图4为本申请实施例提供的主节点确定过程示意图;
图5为本申请实施例提供的一种CAN通信方法的流程示意图;
图6为本申请实施例提供的CAN报文的结构示意图;
图7为本申请实施例提供的另一种CAN通信方法的流程示意图;
图8为本申请实施例提供的一种CAN通信装置的结构示意图。
具体实施方式
本申请实施例所示的方法可以应用于CAN通信系统。为了便于理解,下面,对CAN通信系统进行介绍。
图1A为本申请实施例提供的一种CAN通信系统的架构图。请参见图1A,CAN通信系统包括CAN总线、以及与CAN总线连接的至少两个ECU(例如图1A中所示的ECU1、ECU2、ECU3和ECU4)。该至少两个ECU可以在CAN总线上广播数据,与CAN总线连接的每个ECU均可以接收到CAN总线上广播的数据。
本申请实施例所示的CAN通信系统可以应用于车辆、工业设备、人工智能设备等设备中。下面,以CAN通信系统应用于车辆为例,对CAN通信系统进行进一步说明。
当CAN通信系统应用于车辆时,CAN通信系统中还可以包括车机、网关等设备。下面,结合图1B-图1D为CAN通信系统进行说明。
图1B为本申请实施例提供的另一种CAN通信系统的架构图。请参见图1B,CAN通信系统包括CAN总线、与CAN总线连接的至少两个ECU、以及与CAN总线连接的车机。其中,车机是指车辆中具有大存储器、以及具有较强运算能力的设备,例如,车机可以为车辆中的中央大屏设备。ECU和车机均可以在CAN总线上广播数据,ECU和车机均可以在CAN总线上接收广播的数据。
图1C为本申请实施例提供的又一种CAN通信系统的架构图。请参见图1C,CAN通信系统包括CAN总线1、CAN总线2、至少两个ECU、车机和网关,其中,至少两个ECU与CAN总线1连接,车机与CAN总线2连接,CAN总线1和CAN总线2分别与网关连接。网关可以为设置在车辆中的中继设备,网关可以对不同CAN总线上的数据进行转发,例如,CAN总线1中的数据可以通过网关发送至CAN总线2,CAN总线2中的数据也可以通过网关发送至CAN总线1。可选的,网关还可以与云服务器进行通信,例如,网关可以向云服务器发送数据,网关还可以从云服务器接收数据。
下面,结合图2A-图2F,对上述任意一种CAN通信系统中的ECU、车机、和网关的结构进行说明。
ECU可以包括处理器、存储器、控制器(还可以称为CAN控制器)、收发器,收发器包括接收器和/或发送器。处理器可以分别与控制器和存储器连接,控制器还分别与存储器和收发器连接。其中,存储器可以存储应用数据、计算机程序等数据,该存储器通常较小,例如,该存储器的大小通常为10K-10M字节,例如,nxp的MC9SXS128芯片的存储器是64k,Infineon的芯片TC277的存储器是4M。处理器是指具有运算能力的器件,例如,处理器可以为微控制单元(Microcontroller Unit,MCU)、中央处理器(Central Processing Unit,CPU)等,处理器可以从存储器中读取并执行计算机程序,以及对存储器中的应用数据进行处理等。控制器可以控制接收器在CAN总线上接收数据,以及接收接收器发送的在CAN总线上接收到的数据,并将接收到的数据存储至存储器或者发送给处理器。控制器还可以从处理器或者存储器获取数据,并控制发送器在CAN总线上发送该数据。
可选的,控制器可以设置在处理器内部,也可以设置在处理器外部。存储器可以设置在处理器内部,也可以设置在存储器外部。下面,结合图2A-图2B,介绍两种可能的ECU的结构。
图2A为本申请实施例提供的一种ECU的结构示意图。请参见图2A,存储器和控制器设置在处理器内部,处理器还包括其它部件(例如处理部件等),在处理内部,存储器、控制器和其它部件之间可以相互通信。控制器与收发器连接。
图2B为本申请实施例提供的另一种ECU的结构示意图。请参见图2B,存储器和控制器设置在处理器外部,处理器分别与控制器和存储器连接,控制器还分别与存储器和收发器连接。
需要说明的是,图2A-图2B只是以示例的形式示意ECU的结构,并非对ECU的结构进行的限定。例如,还可以是存储器和控制器中的一个设置在处理器内部,或者,ECU包括两个存储器,一个存储器设置在处理器内部,另一个存储器设置在处理器外部。
车机可以包括处理器、存储器、控制器(还可以称为CAN控制器)、收发器,收发器包括接收器和/或发送器。处理器可以分别与控制器和存储器连接,控制器还分别与存储器和收发器连接。其中,存储器可以存储应用数据、计算机程序等数据,该存储器的存储空间通常较大,例如,该存储器的存储空间通常为几十G或者几百G,例如,车机的存储器可以为128G。处理器是指具有运算能力的器件,例如,处理器可以为微控制单元(MicrocontrollerUnit,MCU)、中央处理器(Central Processing Unit,CPU)等,处理器可以从存储器中读取并执行计算机程序,以及对存储器中的应用数据进行处理等。控制器可以控制接收器在CAN总线上接收数据,以及接收接收器发送的在CAN总线上接收到的数据,并将接收到的数据存储至存储器或者发送给处理器。控制器还可以从处理器或者存储器获取数据,并控制发送器在CAN总线上发送该数据。
可选的,控制器可以设置在处理器内部,也可以设置在处理器外部。存储器可以设置在处理器内部,也可以设置在存储器外部。下面,结合图2C-图2D,介绍两种可能的车机的结构。
图2C为本申请实施例提供的一种车机的结构示意图。请参见图2C,控制器设置在处理器内部,处理器还包括其它部件(例如处理部件等),在处理内部,控制器和其它部件之间可以相互通信。处理器中的其它部件与存储器连接,控制器还分别与存储器和收发器连接。
图2D为本申请实施例提供的另一种车机的结构示意图。请参见图2D,存储器和控制器设置在处理器外部,处理器分别与控制器和存储器连接,控制器还分别与存储器和收发器连接。
需要说明的是,图2C-图2D只是以示例的形式示意车机的结构,并非对车机的结构进行的限定。例如,还可以是存储器和控制器均设置在处理器内部,或者,车机包括两个存储器,一个存储器设置在处理器内部,另一个存储器设置在处理器外部。
网关可以包括处理器、存储器、控制器(还可以称为CAN控制器)、收发器,收发器包括接收器和/或发送器。处理器可以分别与控制器和存储器连接,控制器还分别与存储器和收发器连接。其中,存储器可以存储应用数据、计算机程序等数据,该存储器的存储空间通常较大,例如,该存储器的存储空间通常为几十G或者几百G,例如,网关的存储器可以为128G。处理器是指具有运算能力的器件,例如,处理器可以为微控制单元(MicrocontrollerUnit,MCU)、中央处理器(Central Processing Unit,CPU)等,处理器可以从存储器中读取并执行计算机程序,以及对存储器中的应用数据进行处理等。控制器可以控制接收器在CAN总线上接收数据,以及接收接收器发送的在CAN总线上接收到的数据,并将接收到的数据存储至存储器或者发送给处理器。控制器还可以从处理器或者存储器获取数据,并控制发送器在CAN总线上发送该数据。
可选的,控制器可以设置在处理器内部,也可以设置在处理器外部。存储器可以设置在处理器内部,也可以设置在存储器外部。下面,结合图2E-图2F,介绍两种可能的网关的结构。
图2E为本申请实施例提供的一种网关的结构示意图。请参见图2E,控制器设置在处理器内部,处理器还包括其它部件(例如处理部件等),在处理内部,控制器和其它部件之间可以相互通信。处理器中的其它部件与存储器连接,控制器还分别与存储器和收发器连接。
图2F为本申请实施例提供的另一种网关的结构示意图。请参见图2F,存储器和控制器设置在处理器外部,处理器分别与控制器和存储器连接,控制器还分别与存储器和收发器连接。
需要说明的是,图2E-图2F只是以示例的形式示意网关的结构,并非对网关的结构进行的限定。例如,还可以是存储器和控制器均设置在处理器内部,或者,网关包括两个存储器,一个存储器设置在处理器内部,另一个存储器设置在处理器外部。
为了便于理解,对本申请涉及的概念进行说明。
随机序列:对0至N-1(或者1至N)之间的N个整数进行排序后得到序列。N通常等于8*L,L为ECU发送的数据(CAN报文)的字节数,在数据发送过程中,通常以二进制形式进行发送,因此,N=8*L。ECU发送的CAN报文的字节数通常为固定。
随机序列全集:随机序列全集包括对N个整数按照所有排列方式排列后的序列,即,随机序列全集中可以包括
Figure GPA0000300771380000131
个随机序列。
随机序列子集:是指随机序列全集中的一部分。
随机数:一个随机序列对应一个随机数,随机数可以为0至N-1(或者1至N)之间的整数。例如,假设N为64,则随机数和随机序列之间的对应关系可以如表1所示:
表1
随机数 随机序列
0 0,1,2,3,4,5,......,61,62,63
1 1,0,2,3,4,5,......,61,62,63
2 2,1,0,3,4,5,......,61,62,63
3 3,0,1,2,4,5,......,61,62,63
...... ......
通过随机序列对待发送的数据进行加密的方式可以如下:根据随机序列,对待发送的数据中、不同位上的数据进行位置调换。例如,假设待发送的数据为8个字节(64位),若在根据随机数1对应的随机序列进行加密时,可以将待发送的数据的第一位和第二位上的数据交换位置,以得到加密后的数据;若根据随机数2对应的随机序列进行加密时,可以将待发送的数据的第一位和第三位的数据交换位置,以得到加密后的数据。
需要说明的是,根据随机序列对接收到的数据进行解密的过程为根据随机序列对待发送的数据进行加密的过程为反过程,此处不再进行赘述。
在本申请中,当ECU的存储器较大时,ECU可以存储随机序列全集。当ECU的存储器较小时,ECU可以存储随机序列子集和随机序列子集中每个随机序列对应的随机数,其中,与同一CAN总线连接的所有ECU中存储的随机序列子集相同,ECU中存储的随机序列子集可以周期性更新其存储的随机序列子集。
可选的,假设CAN通信系统应用于车辆,当CAN通信系统的架构如图1A所示时,在出厂时,可以将随机序列子集存储至各个ECU,若各个ECU可以通过网关与云服务器连接,则可以将随机序列全集存储至云服务器,当需要对ECU中的随机序列子集更新时,可以将云服务器中的随机序列全集中的一部分更新至ECU中。当CAN通信系统的架构如图1B所示,则可以将随机序列全集存储在车机中。当需要对ECU中的随机序列子集进行更新时,可以通过CAN总线将车机中的随机序列全集中的一部分更新至ECU。当CAN通信系统的架构如图1C所示时,则可以将随机序列全集存储在车机或者云服务器中,当随机序列全集存储在车机时,则可以通过网关和CAN总线将车机中的随机序列全集中的一部分更新至ECU。当随机序列全集存储至云服务器中时,则可以通过网关和CAN总线将车机中的随机序列全集中的一部分更新至ECU。
下面,通过具体实施例,对本申请所示的技术方案进行详细说明。需要说明的是,下面几个实施例可以单独存在,也可以相互结合,对于相同或显示的内容,在不同的实施例中不再重复说明。
在本申请实施例中,可以在CAN通信系统中的至少两个ECU中确定一个主ECU,主ECU可以在CAN总线上广播随机数,以使CAN通信系统中的所有ECU均采用该随机数对应的随机序列对待发送的数据进行加密处理、以及采用该随机数对应的随机序列对接收到的数据进行解密处理。
下面,结合图3,对确定主ECU以及随机数的更新过程进行说明。
图3为本申请实施例提供的确定主ECU方法的流程示意图。请参见图3,该方法可以包括:
S301、CAN通信系统中的每个ECU在CAN总线上发送竞争报文。
可选的,可以在需要确定主ECU时执行S301。例如,在CAN通信系统上电之后执行S301,或者,在需要重新确定主ECU(例如CAN通信系统中存在ECU故障或者新增ECU)时执行S301。
其中,CAN通信系统中ECU是指与同一CAN总线连接的ECU。
可选的,竞争报文中可以包括报文标识、主从状态和建环状态。竞争报文中的主从状态均为从ECU状态,竞争报文中的建环状态均为无效状态。主从状态用于指示ECU为主ECU或者从ECU,当ECU的主从状态为主状态时,则该ECU为主ECU,当ECU的主从状态为从状态时,则该ECU为从ECU。
可选的,对于CAN通信系统中的任意一个ECU,该ECU发送的同一类型的报文中包括的报文标识相同。例如,一个ECU发送的所有用于进行主节点竞争的报文(例如竞争报文、第一报文等)中携带的报文标识相同,一个ECU发送的所有第一应用数据的报文中携带的报文标识相同。不同的ECU发送的同一类型的报文中包括的报文标识不同,例如,不同ECU发送的竞争报文中包括的报文标识不同。
为了便于理解,在S303-S305中对建环状态进行说明。
需要说明的是,在本申请实施例中,在不进行特殊说明的情况下,ECU在CAN总线上发送数据是指ECU在CAN总线上广播数据。
S302、CAN通信系统中的每个ECU在CAN总线上接收竞争报文,并根据接收到的竞争报文确定各ECU的主从状态。
可选的,针对CAN通信系统中的任意一个ECU,该ECU可以获取在预设时段内接收到的竞争报文,并根据在预设时段内接收到的竞争报文确定自己的主从状态。预设时段可以为CAN通信系统上电之后的预设时段,例如,预设时段可以为CAN通信系统上电之后的5秒内、10秒内等。
可选的,针对CAN通信系统中的任意一个ECU,该ECU可以根据预设时段内接收到的竞争报文中的报文标识的大小顺序,按照预设排序规则对各个ECU进行排序,并将第一位的ECU确定为主ECU,将非第一位的ECU确定为从ECU。在下文中,将排序后的第一个ECU称为主ECU,第二个ECU称为第一从ECU,第三ECU称为第二从ECU,以此类推。
S303、主ECU在CAN总线上发送第一报文,第一报文中包括的主从状态为主状态、建环状态为有效状态。
可选的,第一报文中还包括报文标识。第一报文中包括的报文标识与主ECU发送的竞争报文中包括的报文标识相同。
可选的,第一报文中还可以包括随机数x、随机数的状态为保持状态。其中,随机数x为CAN通信系统在出厂时在ECU中设置的,也可以为CAN通信系统在上次运行时在ECU中设置的。随机数的状态为保持状态用于指示随机数x为可用状态,即,可以使用随机数x进行加密和/或解密处理。
其中,第一报文中包括的主状态用于指示发送该第一报文的ECU为主ECU,建环状态为有效状态用于指示主ECU可以进行正常的通信。
S304、在第一从ECU在CAN总线上接收到主ECU发送的第一报文之后,第一从ECU在CAN总线上发送第二报文,第二报文中包括的主从状态为从状态、建环状态为有效状态。
可选的,第二报文中还包括报文标识。该第二报文中包括的报文标识与第一从ECU发送的竞争报文中包括的报文标识相同。
可选的,第二报文中还可以包括随机数x、随机数的状态为保持状态。其中,随机数x为CAN通信系统在出厂时在ECU中设置的,也可以为CAN通信系统在上次运行时在ECU中设置的。随机数的状态为保持状态用于指示随机数x为可用状态,即,可以使用随机数x进行加密和/或解密处理。
其中,第一从ECU为按照预设排序规则排序后的、主ECU的后一个ECU。
可选的,第一从ECU可以判断主ECU发送的第一报文中的建环状态为有效状态,且第一报文中包括主从状态(主状态)与第一从ECU在S302中确定得到的主ECU的主从状态相同时,第一从ECU才发送上述第二报文。
第二报文中的从状态用于指示:发送该第二报文的ECU为从ECU。第二报文中的建环状态为有效状态用于指示:第一从ECU、以及第一从ECU之前的ECU(主ECU和第一从ECU)均可以进行正常的通信,且主ECU发送的第一报文中包括的主从状态正确。
需要说明的是,ECU可以根据报文中的报文标识识别发送报文的ECU。
S305、在第二从ECU在CAN总线上接收到第二报文之后,第二从ECU在CAN总线上发送第三报文,第三报文中包括的主从状态为从状态、建环状态为有效状态。
可选的,第三报文中还包括报文标识。该第三报文中包括的报文标识与第二从ECU发送的竞争报文中包括的报文标识相同。
可选的,第三报文中还可以包括随机数x、随机数的状态为保持状态。其中,随机数x为CAN通信系统在出厂时在ECU中设置的,也可以为CAN通信系统在上次运行时在ECU中设置的。随机数的状态为保持状态用于指示随机数x为可用状态,即,可以使用随机数x进行加密和/或解密处理。
其中,第二从ECU为按照预设排序规则排序后的、第一从ECU的后一个ECU。
可选的,只有当第二从ECU确定第二报文中的建环状态为有效状态,且第二报文中包括的主从状态(从状态)与第二从ECU在S302中确定得到的第一从ECU的主从状态相同时,第二从ECU才发送上述第二报文。
第三报文中的从状态用于指示:发送该第三报文的ECU为从ECU。第三报文中的建环状态为有效状态用于指示:第二从ECU、以及第二从ECU之前的ECU(主ECU、第一从ECU和第二从ECU)均可以进行正常的通信,且第二报文中包括的主从状态正确。
需要说明的是,其它从节点也执行与S305类似的步骤,直至最后一个从节点执行与S305类似的步骤之后,主ECU接收到最后一个从节点发送的报文。在主ECU在CAN总线上接收到最后一个从ECU发送的报文之后,该主ECU的身份生效。
其中,按照预设规则排序后的最后一个从ECU发送的报文中包括的主从状态为从状态、建环状态为有效状态。
在主ECU接收到最后一个从ECU发送的报文之后,说明CAN通信系统中的所有ECU均可以正常通信,且CAN通信系统中的所有ECU的主从状态均正确。
可选的,在主ECU接收到最后一个从ECU发送的报文之后,主ECU和从ECU可以周期性的重复执行S303-S305。
在重复执行S303-S305的过程中,当一个ECU故障时,则该ECU的下一个ECU则无法接收到对应的报文。若一个ECU在预设时长内未接收到上一个ECU发送的报文时,则该ECU发送的报文中包括的建环状态将设置为无效状态。相应的,若一个ECU接收到上一个ECU发送的报文中包括的建环状态为无效状态时,则该一个ECU发送的报文中包括的建环状态也将被设置为无效状态,以此类推,直至所有正常ECU都发送包括无效状态的报文之后,可以重新执行S301-S305,以实现重新确定主节点。
在重复执行S303-S305的过程中,CAN通信系统中可能会增加新的ECU,新的ECU发送的报文中的报文标识为新的报文标识,在该种情况下,也可以重新执行S301-S305,以实现重新确认主节点。
需要说明的是,在主ECU的身份生效之后,主ECU可以更新随机数,下面,结合S306-S309,对主ECU更新随机数的过程进行详细说明。
S306、在主ECU在CAN总线上接收到最后一个从ECU发送的报文之后,主ECU确定第一随机数。
其中,第一随机数为主ECU中存储的随机序列子集中任意一个随机序列对应的随机数。
S307、主ECU在CAN总线上发送第四报文,第四报文中包括第一随机数和第一随机数的状态为更新状态。
可选的,第四报文中还可以包括报文标识。
其中,当第一随机数的状态为更新状态时,说明第一随机数当前正在更新(未更新完成),即,不能使用第一随机数进行加密处理和/或解密处理。
S308、从ECU在接收到第四报文之后,在CAN总线上发送第五报文,第五报文中包括第一随机数和第一随机数的状态为更新状态。
可选的,第四报文中还可以包括主从状态为主状态、建环状态为有效状态。相应的,从ECU可以是在接收到其上一个ECU发送的第四报文或者第五报文之后,才发送第五报文,例如,第一从ECU接收到主节点发送的第四报文之后,发送第五报文,第二从ECU接收到第一从ECU发送的第五报文之后,发送第五报文,以此类推。
S309、在主ECU确定所有的从ECU的随机数均更新为第一随机数时,主ECU在CAN总线上发送第六报文,第六报文中包括第一随机数和第一随机数的状态为保持状态,保持状态用于指示第一随机数生效。
可选的,在从ECU接收到第六报文之后,从ECU开始使用第一随机数对数据进行加密和/或解密。
为了避免从ECU接收不到第六报文,主ECU可以重发多次第六报文。
可选的,ECU在发送图3实施例所涉及的报文(竞争报文、第一报文、第二报文、......、第六报文)时,均可以通过更新前的随机数对报文进行加密处理处理,其加密处理的过程与图5实施例所示的加密过程类似,此处不再进行赘述。
在图3所示的实施例中,ECU发送的报文中本身就会携带报文标识,因此,通过上述方法,无需在报文中增加额外的信息即可实现主ECU的竞争和随机数的更新,节省了信令开销。
在图3所示实施例的基础上,为了提高CAN通信的安全性,在CAN通信的过程中,可以对主ECU进行更新。可选的,可以通过如下可行的实现方式对主ECU进行更新:在当前的主ECU作为主ECU预设时长之后,可以由按照预设规则排序后的、该主ECU的下一个ECU作为主ECU。例如,当前的主ECU可以在CAN总线上发送通知消息,以指示下一个ECU轮为主ECU。
下面,结合图4,通过具体示例,对图3实施例所示的方法进行说明。
图4为本申请实施例提供的主节点确定过程示意图。请参见图4,假设CAN通信系统中包括ECU1、ECU2和ECU3。
在CAN通信系统上电之后,在第一个周期T1内,ECU1在CAN总线上广播竞争报文1,竞争报文1中的报文标识为0x501、主从状态为从状态、建环状态为无效状态。ECU2在CAN总线上广播竞争报文2,竞争报文2中的报文标识为0x502、主从状态为从状态、建环状态为无效状态。ECU3在CAN总线上广播竞争报文3,竞争报文3中包括的报文标识为0x503、主从状态为从状态、建环状态为无效状态。
ECU1、ECU2和ECU3均可以在CAN总线在获取得到竞争报文1、竞争报文2和竞争报文3,ECU1、ECU2和ECU3可以分别根据竞争报文中包括的报文标识,对ECU进行排序,排序后的ECU为:ECU1、ECU2和ECU3。对三个竞争报文中的报文标识进行排序,由于竞争报文1中的报文标识最小,则确定ECU1为主ECU,ECU2和ECU3为从ECU。
在第二个周期T2内,ECU1(主ECU)发送第一报文,第一报文中包括的报文标识为0x501、主从状态为主状态、建环状态为有效状态。
在ECU2接收到ECU1发送的第一报文之后,ECU2在第三个周期T3内发送第二报文,第二报文中包括的报文标识为0x502、主从状态为从状态、建环状态为有效状态。
在ECU3接收到ECU2发送的第二报文之后,ECU3在第四个周期T4内发送第三报文,第三报文中包括的报文标识为0x503、主从状态为从状态、建环状态为有效状态。
在ECU1接收到ECU3发送的第二报文之后,ECU1的主ECU身份生效,ECU1可以更新随机数。ECU1接收到ECU3发送的第二报文之后,ECU1在第五个周期T5内发送第一报文,第一报文中包括的报文标识为0x501、主从状态为主状态、建环状态为有效状态。以此类推。
假设在ECU1接收到ECU3发送的第二报文之后,ECU1将随机数更新为第一随机数,则ECU1在CAN总线上发送第四报文,第四报文中包括的报文标识为0x501、随机数为第一随机数、随机数状态为更新状态。在ECU2在CAN总线上接收到第四报文之后,ECU2在CAN总线上发送第五报文,ECU2发送的第五报文中包括的报文标识为0x502、随机数为第一随机数、随机数状态为更新状态。在ECU3在CAN总线上接收到第四报文之后,ECU3在CAN总线上发送第五报文,ECU3发送的第五报文中包括的报文标识为0x503、随机数为第一随机数、随机数状态为更新状态。在ECU1接收到ECU2发送的第五报文以及ECU3发送的第五报文之后,ECU1在CAN总线上发送三次第六报文,第六报文中包括的报文标识为0x501、随机数为第一随机数、随机数状态为保持状态。在ECU2和ECU3接收到第六报文之后,采用第一随机数对数据进行加密和/或解密。
在上述任意一个实施例的基础上,在CAN通信系统中的任意一个第一ECU发送数据时,可以通过图5实施例所示的方法对数据进行加密处理。
图5为本申请实施例提供的一种CAN通信方法的流程示意图。请参见图5,该方法可以包括:
S501、第一ECU获取第一随机数。
其中,第一随机数为CAN通信系统中的主ECU在CAN总线上发送的,例如,第一随机数可以为主ECU通过图3实施例所示的方式在CAN总线上发送的。
S502、第一ECU获取第一随机数对应的第一随机序列。
可选的,第一ECU的存储器中存储有第一随机数对应的第一随机序列,因此,第一ECU可以在其存储器中获取第一随机序列。
S503、第一ECU通过第一随机序列对第一应用数据进行加密处理,得到待发送的数据报文。
其中,第一应用数据为需要保护的数据,例如,第一应用数据可以为传感数据、控制指令等。
为了便于理解,首先结合图6,对CAN报文的结构进行说明。
图6为本申请实施例提供的CAN报文的结构示意图。请参见图6,CAN报文中包括报文标识和数据域,数据域包括应用数据、计数值和校验和。其中,校验和为根据应用数据、计数值和随机数确定得到的。
一个ECU可以发送多种类型的CAN报文,一种类型的CAN报文对应一种报文标识。一种类型的报文还对应一个计数器,ECU每发送一次该种类型的报文之后,则该种类型的报文对应的计数器将计数值加1。
可选的,第一ECU可以通过如下可行的实现方式对第一应用数据进行加密处理:第一ECU确定第一计数值,第一ECU根据待发送的第一应用数据、第一计数值和第一随机数确定第一校验和,第一ECU通过第一随机序列对第一应用数据、第一计数值和第一校验和进行加密处理,得到待发送的数据报文。
第一ECU可以获取第一应用数据对应的报文类型对应的当前计数值,并将当前计数值加1得到第一计数值。可以对第一应用数据、第一计数值和第一随机数进行逻辑运算得到校验和。可以将第一应用数据、第一计数值和第一校验和拼接得到数据域,通过第一随机序列对数据域进行加密处理,得到加密后的数据域,报文标识和加密后的数据域构成了待发送的数据报文。
需要说明的是,通过随机序列对数据进行加密处理的过程在本申请实施例中已进行介绍,此处不再进行赘述。
S504、第一ECU在CAN总线上发送待发送的数据报文。
可选的,第一ECU可以在CAN总线上广播待发送的数据报文。
在图5所示的实施例中,同一CAN总线中的ECU可以获取相同的随机数,一个随机数对应一个随机序列。ECU在CAN总线上发送数据之前,ECU可以先获取随机数对应的随机序列,并根据随机序列对数据进行加密处理,并在CAN总线上发送加密后的数据。这样,可以降低CAN总线中传输的数据泄露或者被非法篡改的可能性,提高了CAN通信的安全性。
在上述任意一个实施例的基础上,在CAN通信系统中的任意一个第一ECU接收到数据时,可以通过图7实施例所示的方法对数据进行解密处理。
图7为本申请实施例提供的另一种CAN通信方法的流程示意图。请参见图7,该方法可以包括:
S701、第一ECU接收数据报文。
该数据报文为第一ECU在CAN总线上接收到的,且该数据报文为通过图5实施例所示的方法进行加密后的报文。
S702、第一ECU获取第一随机数。
S703、第一ECU获取第一随机数对应的第一随机序列。
需要说明的是,S702-S703的执行过程可以参见S501-S502的执行过程,此处不再进行赘述。
S704、第一ECU通过第一随机序列对数据报文的数据域进行解密处理,得到第二应用数据、第二计数值和第二校验和。
需要说明的是,通过随机序列对数据进行解密处理的过程在本申请实施例中已进行介绍,此处不再进行赘述。
S705、第一ECU判断第二计数值是否正确。
若是,则执行S706。
若否,则执行S709。
S706、第一ECU根据第二计数值、第二应用数据和第一随机数确定第三校验和。
可选的,第一ECU可以对第二计数值、第二应用数据和第一随机数进行逻辑运算,以得到第三校验和。
S707、第一ECU判断第三校验和与第二校验和是否相同。
若是,则执行S708。
若否,则执行S709。
S708、第一ECU确定获取得到的第二应用数据正确。
S709、第一ECU确定获取得到的第二应用数据错误。
在图7所示的实施例中,同一CAN总线中的ECU可以获取相同的随机数,一个随机数对应一个随机序列。ECU在CAN总线上接收到数据之后,ECU可以先获取随机数对应的随机序列,并根据随机序列对数据进行解密处理,这样,可以降低CAN总线中传输的数据泄露或者被非法篡改的可能性(即,降低了窃听攻击的可能性),提高了CAN通信的安全性。进一步的,还可以根据计数值和校验和验证接收到的应用数据是否正确,这样,可以有效的防止注入攻击、重传攻击等。
本申请实施例还提供一种CAN通信系统,CAN通信系统的结构可以如图1A-图1C所示。请参见图1A-图1C。CAN通信系统至少包括CAN总线和与所述CAN总线连接的至少两个ECU,针对所述至少两个ECU中的任意一个第一ECU,所述第一ECU用于:
获取第一随机数,所述第一随机数为所述至少两个ECU中的主ECU在所述CAN总线上发送的;
获取所述第一随机数对应的第一随机序列;
根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理,和/或,对在所述CAN总线上发送的数据报文进行加密处理。
需要说明的是,第一ECU可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述第一ECU具体用于:
确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
根据所述第一ECU的主从状态获取所述第一随机数。
在一种可能的实施方式中,所述第一ECU具体用于:
在所述CAN总线上发送包括第一报文标识的主节点竞争报文;
在所述CAN总线上接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;
根据所述第一报文标识和所述第二报文标识的大小,按照预设排序规则对所述至少两个ECU进行排序;
判断排序后的所述第一ECU是否位于第一位,若是,则确定所述第一ECU为主ECU,若否,则确定所述第一ECU为从ECU。
在一种可能的实施方式中,在确定所述第一ECU为主ECU之后,所述第一ECU还用于:
在所述第一ECU确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述第一ECU的主从状态切换为从ECU,所述第一ECU的下一个ECU的主从状态切换为主ECU。
在一种可能的实施方式中,在确定所述第一ECU为主ECU之后,所述第一ECU还用于发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
在确定所述第一ECU为从ECU之后,在所述第一ECU接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,所述第一ECU还用于发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为排序后的所述第一ECU的前一个ECU,所述第一EUC的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
在一种可能的实施方式中,在确定所述第一ECU为主ECU时,所述第一ECU具体用于:在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,生成所述第一随机数;
在确定所述第一ECU为从ECU时,所述第一ECU具体用于:接收所述主ECU发送的所述第一随机数。
在一种可能的实施方式中,在所述第一ECU生成所述第一随机数之后,所述第一ECU还用于:
发送第四报文,所述第四报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的第五报文,所述第五报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
在所述第一ECU确定所述至少两个ECU中除所述第一ECU之外的其它ECU均发送所述第五报文之后,发送第六报文,所述第六报文中包括所述第一随机数和所述第一随机数的状态为保持状态,所述保持状态用于指示所述第一随机数生效。
在一种可能的实施方式中,所述第一ECU还用于:
在所述第一ECU在第一预设时长之内未收到所述第二ECU发送的所述第二报文,或者所述第一ECU接收到的所述第二ECU发送的报文中包括的建环状态为无效状态时,发送第七报文并更新所述至少两个ECU,所述第七报文中包括的建环状态为无效状态。
在一种可能的实施方式中,所述第一ECU具体用于:
确定第一计数值;
根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
在一种可能的实施方式中,在所述第一ECU根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,所述第一ECU还用于:
在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
需要说明的是,第一ECU可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图8为本申请实施例提供的一种CAN通信装置的结构示意图。请参见图8,该CAN通信装置10应用于CAN通信系统中的第一ECU,所述CAN通信系统包括CAN总线和与所述CAN总线连接的至少两个ECU,所述第一ECU为所述至少两个ECU中的任意一个ECU,所述CAN通信装置10包括处理模块11和收发模块12,其中,
所述处理模块11用于,获取第一随机数,所述第一ECU为所述至少两个ECU中的任意一个ECU,所述第一随机数为所述至少两个ECU中的主ECU在所述CAN总线上发送的;
所述处理模块11还用于,获取所述第一随机数对应的第一随机序列;
所述处理模块11还用于,根据所述第一随机序列对所述收发模块12在CAN总线上接收的数据报文进行解密处理,和/或,对所述收发模块12在所述CAN总线上发送的数据报文进行加密处理。
可选的,收发模块12可以包括接收模块和/或发送模块,接收模块用于在CAN总线上接收数据,发送模块用于在CAN总线上发送数据。
可选的,处理模块11可以执行图3实施例中的S301-S302,图5实施例中的S501-S503,以及图7实施例中的S702-S709。
可选的,收发模块12可以执行图3实施例中的S303-S309,图5实施例中的S504,以及图7实施例中的S701。
需要说明的是,本申请实施例提供的CAN通信装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述处理模块11具体用于:
确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
根据所述第一ECU的主从状态获取所述第一随机数。
在一种可能的实施方式中,所述收发模块12还用于,在所述CAN总线上发送包括第一报文标识的主节点竞争报文;
所述收发模块12还用于,在所述CAN总线上接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;
所述处理模块11还用于,根据所述第一报文标识和所述第二报文标识的大小,按照预设排序规则对所述至少两个ECU进行排序;
所述处理模块11还用于,判断排序后的所述第一ECU是否位于第一位,若是,则确定所述第一ECU为主ECU,若否,则确定所述第一ECU为从ECU。
在一种可能的实施方式中,所述收发模块12还用于,在所述处理模块11确定所述第一ECU为主ECU之后,在所述第一ECU确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述第一ECU的主从状态切换为从ECU,所述第一ECU的下一个ECU的主从状态切换为主ECU。
在一种可能的实施方式中,所述收发模块12还用于,在所述处理模块11确定所述第一ECU为主ECU时,发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
所述收发模块12还用于,在所述确定模块11确定所述第一ECU为从ECU时,在所述收发模块接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为排序后的所述第一ECU的前一个ECU,所述第一EUC的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
在一种可能的实施方式中,所述处理模块11具有用于,在所述处理模块11确定所述第一ECU为主ECU时,在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,生成所述第一随机数;
所述收发模块12还用于,在所述处理模块确定所述第一ECU为从ECU时,接收所述主ECU发送的所述第一随机数。
在一种可能的实施方式中,所述收发模块12还用于,在所述处理模块11生成所述第一随机数之后,发送第四报文,所述第四报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
所述收发模块12还用于,接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的第五报文,所述第五报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
所述收发模块12还用于,在所述处理模块11确定所述至少两个ECU中除所述第一ECU之外的其它ECU均发送所述第五报文之后,发送第六报文,所述第六报文中包括所述第一随机数和所述第一随机数的状态为保持状态,所述保持状态用于指示所述第一随机数生效。
在一种可能的实施方式中,所述收发模块12还用于:
若所述收发模块12在第一预设时长之内未收到所述第二ECU发送的所述第二报文,或者所述收发模块接收到的所述第二ECU发送的报文中包括的建环状态为无效状态时,发送第七报文并更新所述至少两个ECU,所述第七报文中包括的建环状态为无效状态。
在一种可能的实施方式中,所述处理模块11具体用于:
确定第一计数值;
根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
在一种可能的实施方式中,所述处理模块11还用于:
在所述处理模块根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
在所述第一ECU验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述第一ECU确定所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
需要说明的是,本申请实施例提供的CAN通信装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本申请实施例还提供一种ECU,所述ECU为第一ECU,所述第一ECU包括处理器、收发器、控制器和存储器,所述存储器中存储有计算机程序,所述处理器用于读取并执行所述存储器中的计算机程序,所述处理器分别与所述控制器和所述存储器连接,所述控制器还分别与所述收发器和所述存储器连接,所述收发器包括接收器和/或发送器,其中,
所述处理器用于,获取第一随机数,所述第一随机数为所述第一ECU所在的控制器局域网CAN通信系统中的主ECU在所述CAN通信系统中的CAN总线上发送的;
所述处理器还用于,获取所述第一随机数对应的第一随机序列;
所述控制器用于,控制所述收发器在所述CAN总线上接收数据,和/或,控制所述收发器在所述CAN总线上发送数据;
所述处理器还用于,根据所述第一随机序列对所述收发器在CAN总线上接收的数据报文进行解密处理,和/或,对所述收发器在所述CAN总线上发送的数据报文进行加密处理。
需要说明的是,本申请实施例提供的ECU的结构可以参见图2A-图2B所示,此处不再进行赘述。
可选的,本申请实施例所示的处理器可以实现图8实施例中的处理模块11的功能。本申请实施例所示的收发器可以实现图8实施例中的收发模块12的功能。
需要说明的是,本申请实施例提供的ECU可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述处理器具体用于:
确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
根据所述第一ECU的主从状态获取所述第一随机数。
在一种可能的实施方式中,所述处理器具体用于:
在所述CAN总线上发送包括第一报文标识的主节点竞争报文;
在所述CAN总线上接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;
根据所述第一报文标识和所述第二报文标识的大小,按照预设排序规则对所述至少两个ECU进行排序;
判断排序后的所述第一ECU是否位于第一位,若是,则确定所述第一ECU为主ECU,若否,则确定所述第一ECU为从ECU。
在一种可能的实施方式中,所述收发器具体用于:
在确定所述第一ECU为主ECU之后,在所述第一ECU确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述第一ECU的主从状态切换为从ECU,所述第一ECU的下一个ECU的主从状态切换为主ECU。
在一种可能的实施方式中,所述收发器还用于,在所述处理器确定所述第一ECU为主ECU时,发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
所述收发器还用于,在所述处理器确定所述第一ECU为从ECU时,在所述第一ECU接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为所述第一ECU的前一个ECU,所述第一EUC的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
在一种可能的实施方式中,所述处理器具体用于,在所述处理器确定所述第一ECU为主ECU时,在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,生成所述第一随机数;
所述收发器具体用于,在所述处理器确定所述第一ECU为从ECU时,接收所述主ECU发送的所述第一随机数。
在一种可能的实施方式中,所述收发器还用于,在所述处理器生成所述第一随机数之后,发送第四报文,所述第四报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
所述收发器还用于,接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的第五报文,所述第五报文中包括所述第一随机数和所述第一随机数的状态为更新状态;
所述收发器还用于,在所述处理器确定所述至少两个ECU中除所述第一ECU之外的其它ECU均发送所述第五报文之后,发送第六报文,所述第六报文中包括所述第一随机数和所述第一随机数的状态为保持状态,所述保持状态用于指示所述第一随机数生效。
在一种可能的实施方式中,所述收发器还用于,在所述收发器在第一预设时长之内未收到所述第二ECU发送的所述第二报文,或者所述收发器接收到的所述第二ECU发送的报文中包括的建环状态为无效状态时,发送第七报文并更新所述至少两个ECU,所述第七报文中包括的建环状态为无效状态。
在一种可能的实施方式中,所述处理器具体用于:
确定第一计数值;
根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
在一种可能的实施方式中,在所述处理器根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,所述处理器还用于:
在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述处理器确定所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
需要说明的是,本申请实施例提供的ECU可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
可选的,上述处理器可以是CPU、MCU,还可以是其他通用处理器、DSP、ASIC等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请所公开的认证方法实施例中的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本申请提供一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序用于实现上述实施例所述的CAN通信方法。
本申请实施例还提供一种芯片或者集成电路,包括:存储器和处理器;
所述存储器,用于存储程序指令,有时还用于存储中间数据;
所述处理器,用于调用所述存储器中存储的所述程序指令以实现如上所述的CAN通信方法。
可选的,存储器可以是独立的,也可以跟处理器集成在一起。在有些实施方式中,存储器还可以位于所述芯片或者集成电路之外。
本申请实施例还提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在存储介质中,所述计算机程序用于实现上述的CAN通信方法。
实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(英文:read-only memory,缩写:ROM)、RAM、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppydisk)、光盘(英文:optical disc)及其任意组合。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
在本申请中,术语“包括”及其变形可以指非限制性的包括;术语“或”及其变形可以指“和/或”。本本申请中术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。本申请中,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

Claims (20)

1.一种CAN通信方法,其特征在于,应用于控制器局域网CAN通信系统,所述CAN通信系统包括CAN总线和与所述CAN总线连接的至少两个电子控制单元ECU,所述方法包括:
第一ECU获取第一随机数,所述第一ECU为所述至少两个ECU中的任意一个ECU,所述第一随机数为所述至少两个ECU中的主ECU在所述CAN总线上发送的,其中,所述主ECU在确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述主ECU的主从状态切换为从ECU,并指示所述主ECU的下一个ECU的主从状态切换为主ECU;
所述第一ECU获取所述第一随机数对应的第一随机序列;
所述第一ECU根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理,和/或,对在所述CAN总线上发送的数据报文进行加密处理。
2.根据权利要求1所述的方法,其特征在于,所述第一ECU获取第一随机数,包括:
所述第一ECU确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
所述第一ECU根据所述第一ECU的主从状态获取所述第一随机数。
3.根据权利要求2所述的方法,其特征在于,所述第一ECU确定所述第一ECU的主从状态,包括:
所述第一ECU在所述CAN总线上发送包括第一报文标识的主节点竞争报文;
在所述CAN总线上接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;
根据所述第一报文标识和所述第二报文标识的大小,按照预设排序规则对所述至少两个ECU进行排序;
判断排序后的所述第一ECU是否位于第一位,若是,则确定所述第一ECU为主ECU,若否,则确定所述第一ECU为从ECU。
4.根据权利要求3所述的方法,其特征在于,所述第一ECU确定所述第一ECU的主从状态之后,还包括:
在所述第一ECU为主ECU时,所述第一ECU发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
在所述第一ECU为从ECU时,在所述第一ECU接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,所述第一ECU发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为排序后的所述第一ECU的前一个ECU,所述第一ECU 的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
5.根据权利要求4所述的方法,其特征在于,所述第一ECU根据所述第一ECU的主从状态获取所述第一随机数,包括:
在所述第一ECU为主ECU时,在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,则所述第一ECU生成所述第一随机数;
在所述第一ECU为从ECU时,则所述第一ECU接收所述主ECU发送的所述第一随机数。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述第一ECU根据所述第一随机序列对在所述CAN总线上发送的数据报文进行加密处理,包括:
所述第一ECU确定第一计数值;
所述第一ECU根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
所述第一ECU通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述第一ECU根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,还包括:
所述第一ECU在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
在所述第一ECU验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述第一ECU确定所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
8.一种CAN通信系统,其特征在于,包括控制器局域网CAN总线和与所述CAN总线连接的至少两个电子控制单元ECU,针对所述至少两个ECU中的任意一个第一ECU,所述第一ECU用于:
获取第一随机数,所述第一随机数为所述至少两个ECU中的主ECU在所述CAN总线上发送的,其中,所述主ECU在确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述主ECU的主从状态切换为从ECU,并指示所述主ECU的下一个ECU的主从状态切换为主ECU;
获取所述第一随机数对应的第一随机序列;
根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理,和/或,对在所述CAN总线上发送的数据报文进行加密处理。
9.根据权利要求8所述的系统,其特征在于,所述第一ECU具体用于:
确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
根据所述第一ECU的主从状态获取所述第一随机数。
10.根据权利要求9所述的系统,其特征在于,所述第一ECU具体用于:
在所述CAN总线上发送包括第一报文标识的主节点竞争报文;
在所述CAN总线上接收所述至少两个ECU中除所述第一ECU之外的其它ECU发送的包括第二报文标识的主节点竞争报文;
根据所述第一报文标识和所述第二报文标识的大小,按照预设排序规则对所述至少两个ECU进行排序;
判断排序后的所述第一ECU是否位于第一位,若是,则确定所述第一ECU为主ECU,若否,则确定所述第一ECU为从ECU。
11.根据权利要求10所述的系统,其特征在于,
在确定所述第一ECU为主ECU之后,所述第一ECU还用于发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
在确定所述第一ECU为从ECU之后,在所述第一ECU接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,所述第一ECU还用于发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为排序后的所述第一ECU的前一个ECU,所述第一ECU 的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
12.根据权利要求11所述的系统,其特征在于,
在确定所述第一ECU为主ECU时,所述第一ECU具体用于:在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,生成所述第一随机数;
在确定所述第一ECU为从ECU时,所述第一ECU具体用于:接收所述主ECU发送的所述第一随机数。
13.根据权利要求8-12任一项所述的系统,其特征在于,所述第一ECU具体用于:
确定第一计数值;
根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
14.根据权利要求8-12任一项所述的系统,其特征在于,在所述第一ECU根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,所述第一ECU还用于:
在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
15.一种ECU,其特征在于,应用于控制器局域网CAN通信系统,所述CAN通信系统包括CAN总线和与所述CAN总线连接的至少两个电子控制单元ECU,所述ECU为所述至少两个ECU中的第一ECU,所述第一ECU包括处理器、收发器、控制器和存储器,所述存储器中存储有计算机程序,所述处理器用于读取并执行所述存储器中的计算机程序,其中,
所述处理器用于,获取第一随机数,所述第一随机数为所述第一ECU所在的控制器局域网CAN通信系统中的主ECU在所述CAN通信系统中的CAN总线上发送的,其中,所述主ECU在确定生命周期结束时,发送主节点轮换通知消息,所述主节点轮换通知消息用于指示所述主ECU的主从状态切换为从ECU,并指示所述主ECU的下一个ECU的主从状态切换为主ECU;
所述处理器还用于,获取所述第一随机数对应的第一随机序列;
所述控制器用于,控制所述收发器在所述CAN总线上接收数据,和/或,控制所述收发器在所述CAN总线上发送数据;
所述处理器还用于,根据所述第一随机序列对所述收发器在CAN总线上接收的数据报文进行解密处理,和/或,对所述收发器在所述CAN总线上发送的数据报文进行加密处理。
16.根据权利要求15所述的ECU,其特征在于,所述处理器具体用于:
确定所述第一ECU的主从状态,所述主从状态用于指示所述第一ECU为主ECU或者从ECU;
根据所述第一ECU的主从状态获取所述第一随机数。
17.根据权利要求16所述的ECU,其特征在于,
所述收发器还用于,在所述处理器确定所述第一ECU为主ECU时,发送第一报文,所述第一报文中包括的所述第一ECU的主从状态为主状态、所述第一ECU的建环状态为有效状态;
所述收发器还用于,在所述处理器确定所述第一ECU为从ECU时,在所述第一ECU接收到第二ECU发送的第二报文中包括的所述第二ECU的建环状态为有效状态之后,发送第三报文,所述第三报文包括的所述第一ECU的主从状态为从状态、所述第一ECU的建环状态为有效状态,所述第二ECU为所述第一ECU的前一个ECU,所述第一EUC的建环状态为有效状态用于指示所述第一ECU之前的ECU发送的报文中包括的建环状态均为有效状态。
18.根据权利要求17所述的ECU,其特征在于,
所述处理器具体用于,在所述处理器确定所述第一ECU为主ECU时,在所述第一ECU确定所述至少两个ECU发送的报文中的建环状态均为有效时,生成所述第一随机数;
所述收发器具体用于,在所述处理器确定所述第一ECU为从ECU时,接收所述主ECU发送的所述第一随机数。
19.根据权利要求15-18任一项所述的ECU,其特征在于,所述处理器具体用于:
确定第一计数值;
根据待发送的第一应用数据、所述第一计数值和所述第一随机数确定第一校验和;
通过所述第一随机序列对所述第一应用数据、所述第一计数值和所述第一校验和进行加密处理,得到待发送的数据报文,并发送所述待发送的数据报文。
20.根据权利要求15-18任一项所述的ECU,其特征在于,在所述处理器根据所述第一随机序列对在CAN总线上接收的数据报文进行解密处理之后,所述处理器还用于:
在接收到的数据报文中获取第二计数值、第二应用数据和第二校验和;
验证所述第二计数值正确后,所述第一ECU根据所述第二计数值、所述第二应用数据和所述第一随机数确定第三校验和;
在所述处理器确定所述第三校验和与所述第二校验和相同时,确定接收到的数据报文正确。
CN201980054284.3A 2019-07-19 2019-07-19 Can通信方法、设备及系统 Active CN112602287B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/096740 WO2021012078A1 (zh) 2019-07-19 2019-07-19 Can通信方法、设备及系统

Publications (2)

Publication Number Publication Date
CN112602287A CN112602287A (zh) 2021-04-02
CN112602287B true CN112602287B (zh) 2022-02-11

Family

ID=74192790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980054284.3A Active CN112602287B (zh) 2019-07-19 2019-07-19 Can通信方法、设备及系统

Country Status (2)

Country Link
CN (1) CN112602287B (zh)
WO (1) WO2021012078A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113328919B (zh) * 2021-05-28 2023-10-10 江苏徐工工程机械研究院有限公司 一种can总线标识符、通信方法以及通信系统
CN114244747B (zh) * 2021-11-12 2023-11-17 潍柴动力股份有限公司 一种报文健康监控方法、装置及ecu
CN115878160B (zh) * 2023-03-08 2023-05-26 江铃汽车股份有限公司 一种基于can通信的ecu升级方法及系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106105105B9 (zh) * 2014-04-03 2020-01-24 松下电器(美国)知识产权公司 网络通信系统、不正常检测电子控制单元以及不正常应对方法
EP3412514B1 (en) * 2014-11-12 2019-12-04 Panasonic Intellectual Property Corporation of America Update management method, update management device, and control program
US9729312B2 (en) * 2015-04-28 2017-08-08 The United States Of America As Represented By The Secretary Of The Navy System and method for high-assurance data storage and processing based on homomorphic encryption
US10673623B2 (en) * 2015-09-25 2020-06-02 Mongodb, Inc. Systems and methods for hierarchical key management in encrypted distributed databases
JP6217728B2 (ja) * 2015-10-19 2017-10-25 トヨタ自動車株式会社 車両システムおよび認証方法
CN106027260B (zh) * 2016-05-12 2019-04-02 成都信息工程大学 基于密钥预分配的汽车ecu完整性验证和加密通信方法
US10623178B2 (en) * 2016-07-15 2020-04-14 Dell Products L.P. System and method for secure messaging between distributed computing nodes
CN106549940B (zh) * 2016-10-13 2019-11-26 北京奇虎科技有限公司 车辆数据传输方法及系统
CN108199941B (zh) * 2017-12-29 2022-03-08 北京纳米维景科技有限公司 一种基于can2.0b的can总线通信方法
CN108989024B (zh) * 2018-06-29 2023-04-14 百度在线网络技术(北京)有限公司 控制ecu间通信的方法、装置、设备以及相应车辆
CN109450750A (zh) * 2018-11-30 2019-03-08 广东美的制冷设备有限公司 设备的语音控制方法、装置、移动终端和家电设备

Also Published As

Publication number Publication date
WO2021012078A1 (zh) 2021-01-28
CN112602287A (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
CN112602287B (zh) Can通信方法、设备及系统
EP2775660B1 (en) Message authentication method in communication system and communication system
US10735435B2 (en) Communication system, management node, normal node, counter synchronization method, and storage medium
EP3038318B1 (en) Communication control apparatus, communication control method and communication control program
EP3386163A1 (en) Apparatus for use in a can system
EP3151462A1 (en) Transmission device, reception device, transmission method, and reception method
US10812261B2 (en) Vehicle system and key distribution method
CN112688845B (zh) 车载can网络的通信方法及装置
US10050983B2 (en) Communication system, receiving apparatus, receiving method, and computer program product
KR102450811B1 (ko) 차량 내부 네트워크의 키 관리 시스템
EP3451577A1 (en) Computing device, authentication system, and authentication method
CN112799706A (zh) 车辆升级包处理方法和装置
CN108418845A (zh) 蓝牙配对码配备方法、系统、终端、服务器及车载设备
CN102292962A (zh) 与地址产生、传送和/或验证相关的方法和装置
US20220131839A1 (en) Systems, methods and controllers for secure communications
JP2013121070A (ja) 中継システム及び、当該中継システムを構成する中継装置、通信装置
CN113632419A (zh) 用于对要在总线系统(bu)、特别是机动车辆的总线系统中传输的至少一个数据分组进行生成和认证检查的装置和方法
US20230037778A1 (en) Method and system for data exchange on a network to enhance security measures of the network, vehicle comprising such system
CN112930662B (zh) 信息处理装置、管理装置
JP6958114B2 (ja) 電子制御装置
CN112740726B (zh) 一种数据传输方法及装置
JP2020113852A (ja) 車載通信システム、車載通信制御装置、車載通信装置、コンピュータプログラム、通信制御方法及び通信方法
WO2023187896A1 (ja) 通信システム、送信機、及び受信機
US20240007271A1 (en) In-vehicle device, encrypted communication method, and encrypted communication program
EP3958151A1 (en) Computation device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant