首页> 中国专利> 一种基于CRC校验的CAN总线通信信息安全增强方法

一种基于CRC校验的CAN总线通信信息安全增强方法

摘要

本发明提出了一种基于CRC校验的CAN总线通信信息安全增强方法。所述方法针对每个关键的数据帧,设计一个专用的附加参数表和帧计数器。在发送端,截取第一帧计数器的低字节部分Cnt_L放到数据场中,再从第一附加参数表中选择第一参数X,与Cnt_L和协议数据单元PDU一起合成一个数据串,计算该数据串的CRC校验码并放到数据场中。在接收端,提取数据场中的帧计数器信息,与第二帧计数器的高字节部分Cnt_h合成得到完整的帧计数器值,并对该值进行检验以防止重放攻击;检验通过后再生成第二CRC码,与第一CRC码进行比较,以检验数据的完整性和来源。本发明在不升级控制器硬件的条件下,大幅度增强了CAN总线通信的安全性,是一种性价比很高的车内CAN通信信息安全升级方案。

著录项

说明书

技术领域

本发明涉及车内CAN总线网络通信,具体涉及一种基于CRC校验的CAN总线通信信息安全增强方法。

背景技术

随着汽车逐渐走向网联化,近年来,出现了多起针对网联汽车的黑客攻击事件,不仅影响人们的出行交通安全,也阻碍了汽车的网联化发展。CAN总线是目前汽车内部应用最广泛的通信总线,通过CAN消息可以直接控制汽车各个零部件。但是,CAN总线的信息安全问题一直没有引起重视,严重缺乏信息安全防护技术和手段。

为了响应汽车行业对数据加密和验证的需求,AUTOSAR组织提出了一系列通信加密和验证的标准。目前行业内比较认可的是Security Onboard Communication简称为SecOC,该模块的主要作用是为总线上传输的数据提供身份验证,它可以有效地检测出数据回放、欺骗以及篡改等攻击手段。但是SecOC应用中最大的问题有两个,一是SecOC要采用128位的对称加密算法,加密算法的实现如果采用软件实现方式,则对MCU计算资源的开销太大,如果采用硬件加密模块实现,则又需要对现有硬件进行升级,增加硬件成本。二是128位的消息认证码即使采用数据截短的方式,对于经典CAN总线而言,仍然是一个很大的数据场资源开销。

发明内容

本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种基于CRC校验的CAN总线通信信息安全增强方法。

为了实现本发明的上述目的,本发明提供了一种基于CRC校验的CAN总线通信信息安全增强方法,由发送端和接收端协同工作,共同实现增强通信数据可信度,防止可能的攻击的目标,包括以下步骤:

S1,在发送端,提取ID数据帧,截取ID数据帧的部分信息作为待处理信息,并放到数据场中;将待处理信息通过第一数据合成器进行第一数据合成,得到第一数据信息;将第一数据信息进行CRC校验码计算得到第一CRC码并放到数据场中;

S2,在接收端收到数据场中的信息后,进行帧计数器值检验;检验通过后通过第二数据合成器进行第二数据合成,得到第二数据信息;将第二数据信息进行CRC校验码计算得到第二CRC码;第二CRC码与第一CRC码进行CRC校验,以检验数据的完整性和来源。

在本发明的一种优选实施方式中,在步骤S1中,所述部分信息为第一帧计数器的低字节部分。

在本发明的一种优选实施方式中,在步骤S1中,所述第一数据合成包括以下步骤:

通过第一数据合成器,从第一附加参数表中选择第一参数,与待处理信息和协议数据单元一起合成第一数据串。

在本发明的一种优选实施方式中,在步骤S2中,所述帧计数器值检验包括以下步骤:

提取数据场中的待处理信息;

与第二帧计数器的低字节部分进行比较;

通过合成规则与第二帧计数器的高字节部分合成得到完整的当前帧计数器值;

将当前帧计数器值与第二帧计数器值进行比较,以判断当前数据帧的时效性,防止重放攻击。

在本发明的一种优选实施方式中,在步骤S2中,所述的基于CRC校验的CAN总线通信信息安全增强方法,其特征在于,所述合成规则包括:

如果从数据场中提取的待处理信息比第二帧计数器的低字节部分大,则取第二帧计数器的高字节部分与待处理信息直接合并,得到当前帧计数器值;

如果从数据场中提取的待处理信息比第二帧计数器的低字节部分小或者相等,则取第二帧计数器值的高字节部分加1后再与待处理信息合并,得到当前帧计数器值。

在本发明的一种优选实施方式中,在步骤S2中,所述第二数据合成包括以下步骤:

根据从数据场中收到的待处理信息,从第二附加参数表中选择第二参数,与提取的待处理信息和协议数据单元一起合成第二数据串。

在本发明的一种优选实施方式中,在步骤S2中,所述CRC校验包括:

比较第一CRC码与第二CRC码是否相同;

如果相同,CRC校验通过,则接受本帧数据,并更新本地帧计数器的数值;

如果不相同,CRC校验未通过,则丢弃本帧数据,并发送数据帧重置命令,重置第二帧计数器。

在本发明的一种优选实施方式中,所述帧计数器包括:对于每个需要保护的关键数据帧,在发送端和接收端都设计有一个专用本地帧计数器分别为第一帧计数器和第二帧计数器,用于跟踪CAN消息事件,帧计数器通常为一个16位的计数器,且只会在每次成功发送或接收事件计数,当出现报文错误或丢失情况时,可以通过帧计数器重新同步来恢复正常工作。

在本发明的一种优选实施方式中,所述附加参数表包括:对于每个需要保护的关键数据帧,对应设置一个8位的数组,每个数组拥有n个随机设置的元素,n=2^i,(i=4,5,6,7,8)的附加参数表。附加参数表由通信协议规定,只有通信的双方才知道,且不在数据通信时传输,不同的数据帧,不同的帧计数器数值对应的附加参数值各不相同,以增加攻击者破解CRC算法的难度。

综上所述,由于采用了上述技术方案,本发明的有益效果是:本发明在不升级控制器硬件的条件下,以与一般CRC校验算法相同的计算代价,大幅度增强了CAN总线通信的安全性,是一种性价比很高的车内CAN通信信息安全升级方案。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明的系统原理示意图。

图2为本发明的数据接收检验流程流程图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

由图1所示,一种基于CRC校验的CAN总线通信信息安全增强方法,具体包括:帧计数器值检验方法和CRC校验码生成方法。针对每个关键的数据帧,设计一个专用的附加参数表和帧计数器。在发送端,提取一个ID数据帧,截取第一帧计数器(帧计数器S)的低字节部分Cnt_L放到数据场中,再根据第一帧计数器低字节部分的数值从第一附加参数表中选择第一参数X,通过第一数据合成器进行第一数据合成,与第一帧计数器的低字节部分和协议数据单元PDU一起合成得到第一数据信息即第一数据串,通过CRC计算器(设定的CRC参数信息为多项式,初始值和异或值)计算该数据串的CRC校验码得到第一CRC码并放到数据场中,协议数据单元PDU也放到数据场中,但是第一参数X不发送到数据场中。

在接收端,提取数据场中的帧计数器信息Cnt_L,然后与第二帧计数器(帧计数器R)的低字节部分Cnt_l进行比较,再通过CNT合成器,与第二帧计数器的高字节部分Cnt_h合成得到完整的当前帧计数器值,合成规则如下:如果从数据场中提取的帧计数器信息Cnt_L比第二帧计数器的低字节部分Cnt_l大,则取第二帧计数器的高字节部分Cnt_h与Cnt_L直接合并,得到当前帧计数器值。如果从数据场中提取的帧计数器信息Cnt_L比第二帧计数器的低字节部分Cnt_l小或者相等,则取第二帧计数器值的高字节部分Cnt_h加1后再与Cnt_L合并,得到当前帧计数器值;再与第二帧计数器值进行比较,以判断当前数据帧的时效性,以防止重放攻击;帧计数器值检验通过后再采用与发送端相同的方式即根据收到的数据帧中提取的帧计数器信息Cnt_L从第二附加参数表中选择第二参数X’,通过第二数据合成器将帧计数器信息Cnt_L和协议数据单元PDU一起合成第二数据信息即第二数据串,通过CRC计算器(设定的CRC参数信息为多项式,初始值和异或值)计算该数据串的CRC校验码生成第二CRC码,再通过CRC验证器与数据场中的第一CRC码进行比较即CRC校验,以检验数据的完整性和来源。

CRC校验:通过CRC验证器比较数据场中的第一CRC码与计算得到的第二CRC码是否相同。如果CRC校验通过,表明本帧数据来源可靠,且没有发生数据传输错误。则接受本帧数据,并更新本地帧计数器的数值。如果CRC校验未通过,表明本帧数据或者是来源不可靠,或者是在数据传输过程中发生了错误。则丢弃本帧数据,并发送数据帧重置命令,重置本帧数据对应的帧计数器。

本发明提供一种基于CRC校验的CAN总线通信信息安全增强方法,其中数据接收检验流程如图2所示,包括:

步骤1:当接收端新收到一个数据帧时,从收到的数据帧中提取帧计数器信息,即Cnt_L。然后与本地保存的帧计数器即第二帧计数器的低字节部分Cnt_l进行比较。

步骤2:重构用于检验的帧计数器值即当前帧计数器值,如果从数据场中提取的帧计数器信息Cnt_L比第二帧计数器的低字节部分Cnt_l大,则取第二帧计数器值的高字节部分Cnt_h与Cnt_L直接合并,得到待检验的当前帧计数器值。如果从数据场中提取的帧计数器信息Cnt_L比第二帧计数器的低字节部分Cnt_l小或者相等,则取第二帧计数器值的高字节部分Cnt_h加1后再与Cnt_L合并,得到待检验的当前帧计数器值。

步骤3:数据帧时效性检查,如果重构的帧计数器的值比本地保存的帧计数器即第二帧计数器的值大,且在设定的范围内,则数据帧时效性检验通过,可以继续进行CRC验证码的检验,进入步骤5。

步骤4:如果时效性检验未通过,则很可能是发生了重放攻击,应当丢弃本帧数据,且本地帧计数器的数值不进行更新,流程结束。

步骤5:附加参数选择,在时效性检验通过的情况下,基于从收到的数据帧中提取的帧计数器信息Cnt_L,查询第二附加参数表,获得第二参数X’。

步骤6:计算CRC校验码,采用与发送端一样的方式,即根据收到的数据帧中提取的帧计数器信息Cnt_L从第二附加参数表中选择第二参数X’,通过第二数据合成器将帧计数器信息Cnt_L和协议数据单元PDU一起合成第二数据串,通过CRC计算器计算该数据串的CRC校验码生成第二CRC码。将第一参数X添加到有效数据场中,再根据设定的CRC参数信息计算CRC校验码。

步骤7:CRC校验码检查,通过CRC验证器比较数据场中的第一CRC码与计算得到的第二CRC码是否相同。

步骤8:如果CRC校验通过,表明本帧数据来源可靠,且没有发生数据传输错误。则接受本帧数据,并更新本地帧计数器的数值。

步骤9:如果CRC校验未通过,表明本帧数据或者是来源不可靠,或者是在数据传输过程中发生了错误。则丢弃本帧数据,并发送数据帧重置命令,重置本帧数据对应的帧计数器。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号