一种基于MAC加密的CAN总线消息认证方法

文档序号:24647944发布日期:2021-04-13 16:05阅读:393来源:国知局
一种基于MAC加密的CAN总线消息认证方法
一种基于mac加密的can总线消息认证方法
技术领域
1.本发明涉及can总线安全和信息安全加密领域,特别是涉及一种基于mac加密的can总线消息认证方法。


背景技术:

2.汽车是我们生活中必不可少的交通工具,汽车的安全性关乎人们的生命财产安全。can总线简化了汽车设计制造的难度,降低了汽车的成本,但是由于其本身固有的广播机制,仲裁机制,明文传输等特点,使得can总线容易遭受洪泛攻击、帧监听、帧修改、重放攻击。随着物联汽车的发展,总线也时刻面临着无线攻击的威胁,汽车的安全性面临越来越严峻的挑战。
3.目前对于总线的安全性问题,加密认证的方法能够有效防止总线面临的大部分攻击。加密认证的方法需要计算认证码,并且需要对发送的数据加密,复杂的计算对ecu提出了新的要求,但是由于车载ecu的成本、体积等要求,限制了ecu的计算能力,因此在加密认证是ecu所需要的计算能力不宜过大。
4.在参考文献《efficient in

vehicle delayed data authentication based on compound message authentication codes》中将4个帧复合,4个64位的数据块以及发送节点与接收节点共享的密钥作为kasumi加密算法的输入计算出64位mac,然后将其分配给接下来总线要发送的4个帧,并将其放入每个帧的crc位,待接收节点收到最初的4个帧后,采用相同的方法计算出mac并与后面接收到的4个帧中提取的mac进行比较来认证消息,该方法在实施过程中存在大量延迟时间。在专利《一种车载can总线报文的加密通信方法》中,仅仅只使用了一个字节的反重放攻击校验值,而一个字节的反重放攻击校验值不足以保证总线在通信过程中的安全性。


技术实现要素:

5.本发明的目的是提供一种基于mac加密的can总线消息认证方法,从而可以保证can总线在通信过程中消息传输的真实性,可以有效的应对重放攻击等网络攻击问题。
6.为实现上述目的,本发明提供了如下方案:
7.一种基于mac加密的can总线消息认证方法,包括:
8.发送节点ecu1与接收节点ecu2进行配对;
9.所述发送节点ecu1初始化除数a以及被除数b,并将所述除数a以及被除数b传输给接收节点ecu2;
10.所述发送节点ecu1根据除数a以及被除数b得到第一商c与第一余数d;
11.对所述第一商c与第一余数d进行位变换,分别得到c1和d1,所述c1和d1用于组成消息认证码mac;
12.所述发送节点ecu1将所述c1和d1与待发送消息进行组合并加密,得到加密消息;
13.所述发送节点ecu1将所述加密消息传输给接收节点ecu2;
14.所述接收节点ecu2对所述加密消息进行解密并提取所述c1和d1;
15.所述接收节点ecu2根据除数a以及被除数b计算第二商c与第二余数d;
16.对所述第二商c与第二余数d进行位变换,分别得到c1和d1;
17.判断所述c1与c1是否相同、d1与d1是否相同;
18.若相同,则接收节点ecu2接收所述加密消息。
19.可选的,所述发送节点ecu1将所述加密消息传输给接收节点ecu2步骤之后,还包括:发送节点ecu1对所述被除数b进行更新。
20.可选的,所述发送节点ecu1将所述加密消息传输给接收节点ecu2步骤之后,还包括:所述发送节点ecu1将所述被除数b增加1。
21.可选的,所述发送节点ecu1将所述c1和d1与待发送消息进行组合并加密,得到加密消息,包括:
22.将c1放入can扩展帧的仲裁段中;
23.将d1与所述待发送消息放入can帧的数据段中;
24.对所述数据段中数据进行tea加密,得到加密消息。
25.可选的,所述接收节点ecu2接收所述加密消息步骤之后,还包括:接收节点ecu2对所述被除数b进行更新。
26.可选的,所述接收节点ecu2接收所述加密消息步骤之后,还包括:接收节点ecu2将所述被除数b增加1。
27.可选的,所述发送节点ecu1初始化除数a以及被除数b,并将所述除数a以及被除数b传输给接收节点ecu2步骤之后,还包括:
28.所述接收节点ecu2向发送节点ecu1发送一个特定的帧;
29.判断所述发送节点ecu1是否收到所述特定的帧;
30.若没有,则跳转至步骤所述发送节点ecu1初始化除数a以及被除数b,并将所述除数a以及被除数b传输给接收节点ecu2。
31.可选的,所述被除数b初始化的范围为1~1000。
32.可选的,所述除数a的范围为a
min
~2
16

1,其中,n=t*3600*100,n为t小时内发送节点ecu1发送消息的次数。
33.可选的,如若发送节点ecu1连续5次没有收到接收节点ecu2返还的特定的帧,则发送节点ecu1发送特定的帧报错。
34.根据本发明提供的具体实施例,本发明公开了以下技术效果:
35.本发明通过简单的方法计算出消息认证码mac,同时在发送的过程中对数据进行了加密处理,保证了总线在通信过程中的安全性,同时满足通信过程中消息的实时性要求与总线的负载率要求。
附图说明
36.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图
获得其他的附图。
37.图1为本发明基于mac加密的can总线消息认证方法的流程图;
38.图2为本发明发送节点ecu1计算mac的流程图;
39.图3为本发明发送节点ecu1将消息与mac加密传输中加密的流程图;
40.图4为本发明发送节点ecu1发送消息后更新被除数的流程图;
41.图5为本发明接收节点ecu2解密消息并提取mac的流程图;
42.图6为本发明接收节点ecu2计算mac的流程图;
43.图7为本发明接收节点ecu2认证mac的流程图;
44.图8为本发明接收节点ecu2更新被除数的流程图。
具体实施方式
45.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.本发明的目的是提供一种基于mac加密的can总线消息认证方法,从而可以保证can总线在通信过程中消息传输的真实性,可以有效的应对重放攻击等网络攻击问题。
47.此外,由于车载ecu对体积,成本等因素的要求,限制了ecu的计算能力,因此本发明采用了简单的除法运算以及位变换来计算mac,即mac由商与余数经位变换后构成,极大的降低了mac的计算难度。本发明计算出的mac认证码长度为4个字节,其中商与余数各占用两个字节,为了进一步提高安全性,在消息发送之前需对商与余数进行位变换,并将结果分别放入仲裁段与数据段中,然后,对数据段进行tea对称加密。本发明将mac认证码与发送的数据复合在同一个帧中,并且在加密传输的过程中采用了tea对称加密算法。tea是一种分组加密算法,使用64位的明文分组和118位的密钥。采用feistel分组加密框架,进行64轮迭代。本发明能够降低总线的负载率,减小总线的开销,同时也能够有效保证总线的安全性。
48.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
49.本发明的节点配对是在节点认证里面完成,消息认证只是在节点认证完成后验证消息的有效性。
50.本发明的具体流程如图1所示,总的来说可以分为以下几个步骤:
51.s11、初始化mac所需的参数。
52.除法运算的两个参数是除数与被除数,通过控制除数与被除数可以实现对商与余数的控制。can总线中,首先进行节点认证,也就是发送节点ecu1与接收节点ecu2进行配对(如果发送节点发送的数据由多个节点接收,算为广义的配对)。
53.当系统完成节点身份认证(认证ecu1与ecu2的合法性)过后,发送节点ecu1首先根据在一定时间内,在mac码不重复的要求下,初始化除数a以及被除数的初值b,每对节点初始化的除数与被除数的初值各不相同。发送节点ecu1将初始化的除数a与被除数的初值b加密传输给接收节点ecu2。接收节点ecu2收到消息后向发送节点ecu1返还一个特定的帧,该帧发送的内容很特殊,用以表征发送节点ecu1与接收节点ecu2在初始化参数时同步。如若发送
节点ecu1没有收到接收节点ecu2返还的消息,则发送节点ecu1重新生成除数与被除数并发送到接收节点ecu2。如若发送节点ecu1连续5次没有接收到接收节点ecu2返还的消息,则发送节点ecu1发送特定的帧报错。
54.s12、发送节点ecu1计算mac。
55.由于mac是需要和消息一起发送给接收节点的,所以在发送消息之前需要先计算出认证码,然后再和消息放在一起,其中“消息”指的是总线中真正需要发送的数据,如汽车abs的数据,mac的作用仅仅是验证发送的消息的合法性。
56.发送节点ecu1在每次发送消息之前需计算消息认证码mac。mac由被除数b(初始时刻,被除数b为初值b0)与除数a进行除法运算后所得到的第一商c与第一余数d,经过位变换后得到的c1与d1所组成,其中c、d、c1、d1都占用两个字节。
57.s13、发送节点ecu1将消息与mac加密传输。
58.首先将c1放入can扩展帧的仲裁段中(扩展帧仲裁段中的11+18位标识符均可以占用,本发明中以占用18位标识符中的后16位为例),d1放入数据段中(d1放入数据段的前两个字节中,数据段的后六个字节为所需要传输的数据)。然后,发送节点ecu1对数据段的数据进行tea加密,将加密后的消息传输给接收节点ecu2。tea加密过程中所使用的密钥为预先存储在节点内部的密钥,每对节点所使用的密钥不相同。
59.s14、发送节点ecu1发送消息后更新被除数。
60.发送节点ecu1发送完消息后需要对被除数b进行更新,每发送完一次消息,被除数b增加1。这一步的作用相当于生成动态密码,也就是每发送一次消息,需要认证的密码会改变。主要用于防止重放攻击,重放攻击是恶意的can节点接收总线的消息,然后原封不动的将消息发回总线中,如果密码不改变则接收节点会接收这个重放的消息。
61.s15、接收节点ecu2解密消息并提取mac。
62.接收节点ecu2收到消息后利用tea算法对收到的消息进行解密,解密过后从消息中提取出c1与d1。
63.s16、接收节点ecu2计算mac。
64.接收节点ecu2利用被除数b(初始时刻被除数b为b0)与除数a计算出第二商c与第二余数d,将第二商c与第二余数d进行与s12中相同的位变换,变换后得到c1与d1。
65.s17、接收节点ecu2认证mac。
66.接收节点ecu2将消息中提取出的c1与d1分别与自身节点内部计算出的c1与d1作比较,如果相同则接收数据,反之则不接收数据。
67.s18、接收节点ecu2更新被除数。
68.接收节点ecu2收到消息后需要对被除数b进行更新,每收到一次消息,被除数b增加1。这一步的作用是让后一次与上一次生成的mac不相同。防止重放攻击(接收到消息后原封不动地发出去),重放攻击先接收上一次的消息,然后再发送出去。如果更新mac后,重放攻击发送的mac是上一次的,与接收节点更新后的mac不一样,就可以用来判断是不是合法的消息了。
69.其中,s11为正常通信之前的必要准备工作,s12至s18为正常通信的流程。s12与s17中采用了简单的除法运算计算mac,不需要消耗ecu过多的计算能力,同时在发送消息之前对总线上的数据进行了加密,有效的保证了总线在通信过程中的安全性。
70.具体的,下面结合附图2至附图8对本发明做进一步说明。
71.步骤s11:该步骤主要是合理地初始化除数与被除数(除数占用两个字节,被除数占用4个字节)。在t小时内发送节点发送消息的次数n为(节点每10ms发送一次消息):
72.n=t*3600*100
73.首先初始化被除数的初值b0,为了保证在t小时内mac不重复,则要求
[0074]232

b0≥n。所以b0不宜过大,因此选择b0随机初始化的范围为1~1000。然后根据安全时间的要求以及被除数的初始值,可以计算出除数的最小值a
min
为:
[0075][0076]
所以除数a随机初始化的范围为a
min
~2
16

1。
[0077]
步骤s12:请参阅图2,该步骤主要是计算mac。mac是被除数b与除数a进行除法运算后所得的第一商c与第一余数d进行位变换后所得到。
[0078][0079]
d=b mod a
[0080]
c的原始位排列为:
[0081]
12345678910111213141516
[0082]
对c进行位变换后得到c1,c1的位排列为:
[0083]
16115214313412511610798
[0084]
同理,对d进行位变换后得到d1,d1的位排列为:
[0085]
19210311412513614715816
[0086]
mac由c1与d1共同组成,其为:
[0087]
mac=[c1,d1]
[0088]
步骤s13:请参阅图3,该步骤主要为消息与mac加密传输。首先将c1与d1分别放入仲裁段与数据段,然后对数据段进行tea加密。
[0089]
w=[d1,data]
[0090]
ciphertext=tea(w,key)
[0091]
明文数据w包括2字节的mac数据d1和6字节的有效数据信息data,ciphertext为对明文数据加密后的密文。tea加密所用的密码预先存储在节点内部,每对节点使用特定的密钥。加密后密文替换原数据段内的明文数据w,然后,发送节点ecu1将加密后的帧发送给接收节点ecu2。
[0092]
步骤s14:请参阅图4,该步骤主要为发送节点发送完消息后更新被除数。发送节点ecu1发送完数据后依据发送消息的次数更新被除数b,每发送一次消息,被除数b加1。
[0093]
步骤s15:请参阅图5,该步骤主要为接收节点解密收到的消息并提取出mac。接收节点ecu2收到消息后依据内部存储的密钥利用tea算法对消息进行解密。
[0094]
w=dtea(ciphertext,key)
[0095]
解密后从仲裁段与数据段中分别提取c1与d1,可得到mac:
[0096]
mac=[c1,d1]
[0097]
步骤s16:请参阅图6,该步骤主要为接收节点计算mac1。接收节点ecu2依据被除数b
与除数a计算出第二商c与第二余数d。
[0098][0099]
d=b mod a
[0100]
对c与d进行同s12中相同的位变换得到c1与d1。由此可得mac1为:
[0101]
mac1=[c1,d1]
[0102]
步骤s17:请参阅图7,该步骤主要为接收节点认证mac。接收节点ecu2比较mac与mac1是否相同,如果相同则接收数据,反之则不接收。
[0103]
步骤s18:请参阅图8,该步骤主要为接收节点更新被除数。接收节点ecu2依据收到消息的次数更新被除数b,每收到一次消息,被除数b加1。
[0104]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0105]
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1