一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种CAN通信方法与流程

2022-07-16 20:52:31 来源:中国专利 TAG:

一种can通信方法
技术领域
1.本发明涉及can技术领域,尤其涉及一种can通信方法。


背景技术:

2.can全称为“controller area network”,即控制器局域网,是一种多主方式的串行通讯总线,是国际上应用最广泛的现场总线之一。
3.然而,目前的can通信至少有如下两个方面的缺点:一是缺乏加密和访问控制机制,可被攻击者逆向破解总线通信协议,分析出汽车控制指令;二是缺乏认证及消息校验机制,不能对攻击者伪造、篡改的异常消息进行识别和预警。因此,现有的can通讯方法存在较大的安全隐患,尤其是对于智能网联汽车而言,这种安全隐患更甚。


技术实现要素:

4.本发明提供一种can通信方法,旨在解决现有技术中的缺陷,实现can通信安全。
5.为达到上述目的,本发明所采取的技术方案为:
6.本发明提供一种can通信方法,包括:
7.步骤1、检测can网络中的报文是否受到攻击,是则标记为目标报文,并进入下一步,否则循环执行本步骤;
8.步骤2、控制目标发送节点以预设规则发送反攻击报文,所述目标发送节点为所述目标报文的发送节点,所述反攻击报文至少包括原始can id、替换can id;
9.步骤3、所述目标发送节点以所述替换can id发送所述目标报文;
10.步骤4、接收设备接收所述反攻击报文,根据预设规则解析得到反攻击报文内容,将所述原始can id用所述替换id替换。
11.具体地,所述步骤1包括:
12.步骤101、获取当前报文m(i)的周期ti、当前帧的接收时间ti(k);
13.步骤102、根据所述报文周期ti,预测所述当前报文m(i)下一帧报文的接收时间;
14.步骤103、判断在预测时间区间内,所述当前报文的数量是否大于1,是则判定所述当前报文受到攻击,标记为目标报文,否则判断所述当前报文正常,并返回步骤2。
15.具体地,ti(k 1)=ti(k) ti,其中,ti(k)表示当前报文当前帧的接收时间,ti(k 1)表示当前报文下一帧报文的接收时间,ti表示当前报文的周期。
16.具体地,所述预测时间区间为[ti(k 1)-ε,ti(k 1) ε],其中ε为系统误差。
[0017]
具体地,所述预设规则包括:
[0018]
步骤201、预先在can网络各通讯节点中预设特征can id、反攻击报文内容和密钥,所述特征can id用于发送所述反攻击报文,所述密钥用于加密所述反攻击报文内容;
[0019]
步骤202、目标发送节点读取预设密钥,对所述反攻击报文内容进行加密,生成目标密文;
[0020]
步骤203、所述目标发送节点根据所述目标密文生成反攻击报文,所述反攻击报文
的can id为所述特征can id,帧格式为标准can报文,数据段包括:帧序号(1字节) 分段密文(最大6字节) 校验和(1字节)。
[0021]
具体地,所述反攻击报文内容、所述预设密钥的长度为16个字节。
[0022]
具体地,所述反攻击报文内容的结构为第一报文结构、第二报文结构、第三报文结构、第四报文结构中的任意一种:
[0023]
所述第一报文结构为id1(3个字节) id2(3个字节) 填充位(10个字节);
[0024]
所述第二报文结构为id1(3个字节) id2(3个字节) 掩码(1个字节) 填充位(9个字节);
[0025]
所述第三报文结构为id1(3个字节) id2(3个字节) id3(3个字节) id2/id3选择位(1个字节) 填充位(6个字节);
[0026]
所述第四报文结构为id1(3个字节) id2(3个字节) id3(3个字节) id2/id3选择位(1个字节) 掩码(1个字节) 填充位(5个字节);
[0027]
其中,id1表示原始can id;id2、id3分别表示第一替换can id、第二替换can id;id2/id3选择位表示选择第一替换can id2或者第二替换can id3;掩码用于提取计算数据段检验值的字节;填充位用于填充不足的位数。
[0028]
具体地,所述步骤3包括:
[0029]
步骤301、判断所述发送反攻击报文内容中是否有选择位,是则进入下一步,否则将所述原始can id切换为第一替换can id后发送;
[0030]
步骤302、若所述选择位为第一标志位,则将所述原始can id切换为第一替换can id后发送;若所述选择位为第二标志位,则将所述原始can id切换为第二替换can id后发送;若所述选择位为第三标志位,则将所述原始can id交替切换为第一替换can id、第二替换can id后发送。
[0031]
进一步地,在所述步骤4之后,还包括:
[0032]
步骤5、若所述反攻击报文内容中包含掩码,则所述接收设备在接收到以所述替换can id发送的目标报文后,进入下一步;
[0033]
步骤6、通过所述掩码获取所述报文数据段的第一校验码;
[0034]
步骤7、比较所述第一校验码与所述报文数据段携带的校验码是否一致,是则判断所述报文数据段正确,否则判断所述报文数据段错误,丢弃并请求所述目标发送设备重发。
[0035]
具体地,所述步骤6包括:
[0036]
步骤601、计算所述掩码对应的二进制数值;
[0037]
步骤602、将所述二进制数值的高低位顺序变换为与所述报文数据段的高低位顺序一致,得到倒序二进制数值;
[0038]
步骤603、将所述倒序二进制数值与所述报文数据段中的数据字节进行与运算,生成目标码;
[0039]
步骤604、将所述目标码通过预设crc算法得到第一校验码。
[0040]
本发明的有益效果在于:本发明通过检测can网络中的报文受到攻击后,目标发送设备以预设规则发送包含原始can id、替换can id的反攻击报文,然后以替换can id发送所述目标报文,接收设备接收反攻击报文,解析得到反攻击报文内容,并将原始can id用替换id替换,实现了can通信安全。
附图说明
[0041]
图1是本发明的can通信方法的流程示意图;
[0042]
图2是本发明的反攻击报文内容的结构示意图;
[0043]
图3是本发明的反攻击报文数据段示意图;
[0044]
图4是本发明的标准can报文的数据段示意图。
具体实施方式
[0045]
下面结合附图具体阐明本发明的实施方式,附图仅供参考和说明使用,不构成对本发明专利保护范围的限制。
[0046]
在本发明的说明书、权利要求书或附图中描述的流程中,包含各个步骤的序号(如步骤10、20等),所述序号仅用于区分开各个步骤,所述序号本身不代表任何的执行顺序。需要说明的是,本文中的“第一”、“第二”等描述,仅用于区分描述对象等,不代表先后顺序,也不表示“第一”、“第二”等是不同的类型。
[0047]
实施例1
[0048]
如图1所示,本实施例提供一种can通信方法,包括:
[0049]
步骤1、检测can网络中的报文是否受到攻击,是则标记为目标报文,并进入下一步,否则循环执行本步骤。
[0050]
在本实施例中,所述步骤1包括:
[0051]
步骤101、获取当前报文m(i)的周期ti、当前帧的接收时间ti(k)。
[0052]
步骤102、根据所述报文周期ti,预测所述当前报文m(i)下一帧报文的接收时间。
[0053]
在本实施例中,ti(k 1)=ti(k) ti,其中,ti(k)表示当前报文当前帧的接收时间,ti(k 1)表示当前报文下一帧报文的接收时间,ti表示当前报文的周期。
[0054]
步骤103、判断在预测时间区间内,所述当前报文的数量是否大于1,是则判定所述当前报文受到攻击,标记为目标报文,否则判断所述当前报文正常,并返回步骤2。
[0055]
在本实施例中,所述预测时间区间为[ti(k 1)-ε,ti(k 1) ε],其中ε为系统误差。
[0056]
步骤2、控制目标发送节点以预设规则发送反攻击报文,所述目标发送节点为所述目标报文的发送节点,所述反攻击报文至少包括原始can id、替换can id。
[0057]
在本实施例中,所述预设规则包括:
[0058]
步骤201、预先在can网络各通讯节点中预设特征can id、反攻击报文内容和密钥,所述特征can id用于发送所述反攻击报文,所述密钥用于加密所述反攻击报文内容。
[0059]
在本实施例中,所述通讯节点为can网络中参与通讯的设备,例如车载ecu(电子控制单元);所述特征can id为一固定值,例如0x362。
[0060]
在本实施例中,所述反攻击报文内容、所述预设密钥的长度为16个字节。
[0061]
如图2所示,所述反攻击报文内容的结构包括但不限于以下几种:
[0062]
第一报文结构:id1(3个字节) id2(3个字节) 填充位(10个字节);
[0063]
第二报文结构:id1(3个字节) id2(3个字节) 掩码(1个字节) 填充位(9个字节);
[0064]
第三报文结构:id1(3个字节) id2(3个字节) id3(3个字节) id2/id3选择位(1个字节) 填充位(6个字节);
[0065]
第四报文结构:id1(3个字节) id2(3个字节) id3(3个字节) id2/id3选择位(1个
字节) 掩码(1个字节) 填充位(5个字节);
[0066]
其中,id1表示原始can id;id2、id3分别表示第一替换can id、第二替换can id;id2/id3选择位表示选择第一替换can id2或者第二替换can id3;掩码用于提取计算数据段检验值的字节;填充位用于填充不足的位数,一般为0。
[0067]
所述原始can id即为所述目标报文的当前can id。
[0068]
在具体实施时,所述第一替换can id、第二替换can id从预留的can id中随机选择。
[0069]
例如,以第四报文结构为例,若id1=0x240,id2=0x310,id3=0x280,id2/id3选择位为1,掩码为4,填充位为00000,则所述反攻击报文内容为:2 4 0 3 1 0 2 8 0 1 4 0 0 0 0 0。
[0070]
步骤202、目标发送节点读取预设密钥,对所述反攻击报文内容进行加密,生成目标密文。
[0071]
若所述密钥为16字节密钥:4561 84c6 7bab d914,则生成的16字节目标密文为:
[0072]
bb ce dd b5 94 9f be c7 f2 66 1c 86 5b 43 2a 9e
[0073]
步骤203、所述目标发送节点根据所述目标密文生成反攻击报文,所述反攻击报文的can id为所述特征can id,帧格式为标准can报文,数据段包括:帧序号(1字节) 分段密文(最大6字节) 校验和(1字节)。
[0074]
在本实施例中,所述分段密文最大长度为6字节,若分段密文不足6字节,则以预设值(例如0)进行填充,使其长度为6字节。
[0075]
例如,若所述目标密文长度为16字节,标准can报文数据段的长度为8字节,反攻击报文中数据段的分段密文最大为6字节,则需以3帧标准can报文发送,各帧密文的数据段的具体结构如图3所示。
[0076]
例如,若所述目标密文为:
[0077]
bb ce dd b5 94 9f be c7 f2 66 1c 86 5b 43 2a 9e
[0078]
那么,3帧反攻击报文的数据段为:
[0079]
01 bb ce dd b5 94 9f b1
[0080]
02 be c7 f2 66 1c 86 7f
[0081]
03 5b 43 2a 9e 00 00 97
[0082]
以上3帧报文数据段的第1个字节(01、02、03)表示帧序号,最后一个字节(b1、7f、97)表示校验和。
[0083]
本步骤通过对替换can id进行加密,使得攻击者即便拦截到反攻击报文,也无法知道替换can id是什么,起到了保护作用;同时由于只对反攻击报文中的替换can id进行加密,而不是对每帧报文的can id或数据进行加密,减轻了系统的解密工作量,保障了系统的实时性。
[0084]
步骤3、所述目标发送节点以所述替换can id发送所述目标报文。
[0085]
在本实施例中,所述步骤3包括:
[0086]
步骤301、判断所述发送反攻击报文内容中是否有选择位,是则进入下一步,否则将所述原始can id切换为第一替换can id后发送;
[0087]
步骤302、若所述选择位为第一标志位(例如0),则将所述原始can id切换为第一
替换can id后发送;若所述选择位为第二标志位(例如1),则将所述原始can id切换为第二替换can id后发送;若所述选择位为第三标志位(例如2),则将所述原始can id交替切换为第一替换can id、第二替换can id后发送。
[0088]
例如,若系统采用第四报文结构,且id2/id3选择位为2,则目标报文在用替换can id发送报文时,第一帧用can id=id2(0x310)发送,下一帧用can id=id3(0x280)发送,再下一帧用can id=id2(0x310)发送
……
如此循环。
[0089]
步骤4、接收设备接收所述反攻击报文,根据预设规则解析得到反攻击报文内容,将所述原始can id用所述替换id替换。
[0090]
例如,以所述第四报文结构为例,如果反攻击报文内容为:
[0091]
2 4 0 3 1 0 2 8 0 1 4 0 0 0 0 0
[0092]
则,使用第二替换can id(id3=0x280)替换can id1(0x240)。
[0093]
又如,以第四报文结构为例,如果反攻击报文内容为:
[0094]
2 4 0 3 1 0 2 8 0 3 4 0 0 0 0 0
[0095]
则使用第一替换can id(id2=0x310)、第二替换can id(id3=0x280)替换can id1(0x240)。
[0096]
当目标发送端发送的目标报文的can id为id2(0x310)、id3(0x280)时,都会被接收设备接收。
[0097]
实施例2
[0098]
与实施例1不同的是,本实施例在实施例1的步骤4之后,还包括:
[0099]
步骤5、若所述反攻击报文内容中包含掩码,则所述接收设备在接收到以所述替换can id发送的目标报文后,进入下一步。
[0100]
步骤6、通过所述掩码获取所述报文数据段的第一校验码。
[0101]
在本实施例中,所述步骤6包括:
[0102]
步骤601、计算所述掩码对应的二进制数值;
[0103]
步骤602、将所述二进制数值的高低位顺序变换为与所述报文数据段的高低位顺序一致,得到倒序二进制数值;
[0104]
步骤603、将所述倒序二进制数值与所述报文数据段中的数据字节进行与运算,生成目标码;
[0105]
步骤604、将所述目标码通过预设crc算法得到第一校验码。
[0106]
步骤7、比较所述第一校验码与所述报文数据段携带的校验码是否一致,是则判断所述报文数据段正确,否则判断所述报文数据段错误,丢弃并请求所述目标发送设备重发。
[0107]
例如,以所述替换can id发送的can报文的数据段如图4所示,其中数据段的byte7~1是数据,byte0为校验码。
[0108]
以第四报文结构为例,若掩码为4,对应的8位二进制数值为00000100,由于can报文数据段是高位在前低位在后,因此需要先将二进制数值掩码各位的位置进行颠倒,得到倒序二进制数值00100000,然后将该倒序二进制数值00100000与can报文数据段中的数据字节进行与运算,得到目标码00 00 04 00 00 00 00 00。
[0109]
然后,对目标码通过预设crc算法(例如crc8(0x107))计算得到第一校验码,判断第一校验码是否为0x8f,如果是则判断数据正确,否则判断数据不正确。
[0110]
以上所揭露的仅为本发明的较佳实施例,不能以此来限定本发明的权利保护范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献