一种CAN总线中ECU安全通信的方法与流程

文档序号:12493403阅读:652来源:国知局
一种CAN总线中ECU安全通信的方法与流程

本发明涉及车内网、通信协议设计、密钥分配、安全认证和加密等领域,尤其涉及车内CAN总线中电子控制单元的安全通信领域。



背景技术:

现有的汽车模型与各种信息技术融合,给用户提供了舒适的驾驶环境。为了将信息技术应用到车辆中,安装了多种智能应用组件。在这些部件中,电子控制单元(ECU)是控制车辆电子系统的最重要的部件。车辆电子系统由超过70个ECU组成,这些ECU通过不同的通信网络互联如控制器区域网(CAN),如果攻击者在ECU中注入非法控制信息,将直接威胁乘客的生命安全,因此我们需要一种能够进行密钥分配、验证消息以及认证合法ECU的安全机制来保证车内网的安全。

大多数现有的解决方案仅考虑到了车载网安全,在车内并没有高效的安全机制。CAN是最有代表性的车内局域网络,它显着减少了通信线路的数量并且确保了数据传输的可靠性。车内传输的每个比特的信息对驾驶者的生命安全至关重要。但是在CAN的设计中没有考虑到信息安全。当使用CAN总线网络进行数据广播,CAN不能确保CAN数据帧的机密性,以及ECU对CAN数据帧的认证,使得恶意攻击者轻松地窃取数据或进行重放攻击。因此车内CAN总线中需要拥有密钥更新机制,不仅要考虑车内的密钥更新,还要考虑外部设备接入带来的安全隐患。然而,大多数方案没有包括这一点,仅考虑了车内的情况,既不安全也不高效。



技术实现要素:

为解决上述情况,我们需要提出一种更全面的安全方案,在密钥更新中考虑释放外部设备和连接外部设备的情况克服以上的缺点。本发明的目的在于,提出一种CAN总线中ECU安全通信方法,用以解决车内CAN总线中ECU被攻击者注入非法信息,窃取车内网的数据,以及外部设备接入和释放等安全问题。

为了实现上述目的,本发明的技术方案为:

一种CAN总线中ECU安全通信的方法,包括以下步骤:(1)建立系统模型,包括电子控制单元ECU、网关电子控制单元GECU以及连接在车辆上的外部设备;(2)网关电子控制单元GECU将会话密钥加载到它的安全存储中:当车辆启动或者更换ECU时,GECU将认证密钥ki和长期对称密钥Gk加载到安全存储中,并将安装在车辆上的ECU的数量N记录下来;(3)GECU对CAN总线中的每个ECU进行会话密钥分发:启动车辆之后,每个ECU轮流等待GECU分发会话密钥,在没有收到会话密钥之前,ECU之间不进行通信;(4)接受方ECUr对发送方ECUs发送的加密数据帧进行认证:ECUs使用AES算法加密两个数据帧,并为数据帧生成MAC值,ECUr对MAC进行认证和解密;(5)GECU对加密密钥EKk和认证密钥AKk进行更新,主要分为车内ECU密钥更新、释放外部设备连接时的密钥更新两个阶段;(6)当车辆与外部设备连接时,设计附加认证和密钥分配的方法,保证了所接入的外部设备的合法性。

进一步,所述步骤(3)GECU对CAN总线中的每个ECU进行会话密钥分发部分,启动车辆之后,每个ECU轮流等待GECU分发会话密钥,在没有收到会话密钥之前,ECU之间不进行通信;其步骤如下:

步骤3.1:ECUi选择随机数Ri,并且将它传输给GECU;

步骤3.2:GECU选择随机数Seed1,生成MAC1,并且将它们传输给具有Seed1的ECUi,随后ECUi认证MAC,并计算会话密钥;

步骤3.3:ECUi生成MAC2和MAC3,并将它们一起传输给GECU;

步骤3.4:GECU认证MAC2,通过验证MAC2,确认ECUi是否正确接收Seed1,在认证MAC2之后,GECU用步骤3.2的方法计算会话密钥;

步骤3.5:在生成会话密钥之后,GECU认证MAC3。通过认证MAC3,确认ECUi是否正确地生成会话密钥。

进一步,所述步骤(4)接收方ECUr对发送方ECUs发送的加密数据帧进行认证部分;

ECUs使用AES算法加密两个数据帧,并为数据帧生成MAC值,ECUr对MAC进行认证和解密;其步骤如下:

步骤4.1:发送方ECUs管理其数据帧计数器值当传输数据帧时,ECUs用生成密文C;的结果是128比特,由于CAN数据帧最大有效载荷为64比特,只有前64比特是用来生成密文C,用128比特的AES算法来加密两个明文;

步骤4.2:ECUs为CAN数据帧生成MAC值,其中包括明文C和

步骤4.3:ECUr接收发送方ECUs的计数器值并用和AKk来验证所接收的CAN数据帧的MAC是否正确;

步骤4.4:如果正确验证CAN数据帧的MAC,执行来执行解密并获得消息M;

步骤4.5:在完成对接收到的数据帧的认证和解密之后,ECUr增加ECU的CAN数据帧计数器值

进一步,所述步骤(5)GECU对通信的加密密钥和认证密钥进行更新,主要分为车内ECU密钥更新、释放外部设备连接时的密钥更新两个阶段,在第k个会话密钥中,密钥更新阶段如下:

第一,车内ECU密钥更新阶段,其步骤如下:

步骤5.1:选择随机值Seedk+1,GECU生成密钥请求消息并将其广播到车内CAN;

步骤5.2:接收密钥请求消息的每个ECUi使用AKk验证MAC和KEKk解密密文(C)。然后,ECUi使用预定义函数KDF得到在第k+1个会话中使用的会话密钥。每个数据帧计数器值初始化为0;

步骤5.3:在步骤5.2之后,每个ECUi生成密钥回复消息,并将其发送到GECU以检查他们是否正确地接收到密钥请求消息。

步骤5.4:在确认正确接收到密钥请求消息之后,GECU将ECUi的每个数据帧计数器初始化为零。当GECU初始化自己的数据帧计数器时,密钥更新阶段完成。

第二,释放外部设备连接时的密钥更新阶段,其步骤如下:

步骤5.5:GECU生成随机值Seednew的。然后使用UK生成密钥请求消息然后,GECU将密钥请求消息广播到车载CAN;

步骤5.6:接收密钥请求消息的每个ECUi分别使用AKk和UK执行MAC的验证和解密密文(C)。其余步骤与车内ECU密钥更新阶段相同。

进一步,所述车辆与外部设备连接部分,设计了附加认证和密钥分配的方法,保证了所接入的外部设备的合法性,其步骤如下:

步骤6.1:将外部设备连接到车辆之后,外部设备向GECU发送认证请求;

步骤6.2:在接收到请求后,GECU生成随机数及r1在P上的签名。然后,使用它的证书将这些值发送到外部设备;

步骤6.3:如果成功验证GECU发送的证书和签名,则外部设备生成随机数和r2在P上的签名。然后它用自己的证书把这些值传给GECU。在完成传输之后,外部设备生成临时会话密钥SK并且将r2在P上的签名去掉。

步骤6.4:验证外部设备发送的证书和签名之后,GECU生成临时会话密钥SK并且将r1在P上的签名去掉。然后,GECU用SK加密Seedk并将加密后的结果发送到外部设备。外部设备使用Seedk生成在第k个会话中使用的会话密钥,然后利用这个会话密钥进行通信。

进一步,所述接收方ECUr对发送方ECUs发送的数据帧进行加密部分,使用AES算法来加密两个CAN数据帧。由于CAN数据的有效载荷为64位,128比特的加密结果被分成两部分(左右各64位),有效的降低了计算成本。

进一步,所述密钥更新部分考虑到了外部设备连接的密钥更新,并且会话密钥是从随机生成的,彼此没有关联,即Seed1,Seed2,Seed3和Seedn均是不同的值。

进一步,所述车辆与外部设备连接部分,若外部设备和车载CAN之间的连接到期,则GECU广播包含Seednew的密钥请求消息。由于密钥请求消息由UK加密,所以外部设备不能获得前向会话密钥(由随机值Seedk-1生成的会话密钥),也很难获得后向会话密钥(由随机值Seedk+1生成的会话密钥)。

本发明提出了一种车内CAN总线中ECU安全通信的方法,该方法有以下有益效果:

1)使用AES算法加密两个数据帧,由于CAN数据的有效载荷为64位,128比特的被分成两部分(左右各64位),有效的降低了计算成本。

2)通过引入MAC机制,保证了认证的高效性。

3)在密钥更新部分考虑到了连接和释放外部设备的密钥更新,并且会话密钥是从随机生成的,彼此没有关联,即Seed1,Seed2,Seed3和Seedn均是不同的值。

4)加入时间戳机制,保证了双方通信的实时性,使用计数器生成随机数来改变用于密钥生成的参数,有效地防止了重放攻击。

5)当车辆与外部设备连接时,保证了前向密钥和后向密钥安全,若外部设备和车载CAN之间的连接到期,则GECU广播包含Seednew的密钥请求消息。由于密钥请求消息由UK加密,所以外部设备不能获得前向会话密钥(由随机值Seedk-1生成的会话密钥),也很难获得后向会话密钥(由随机值Seedk+1生成的会话密钥)。

附图说明

图1为本发明的总体设计图;

图2为本发明中的会话密钥分发图;

图3为本发明中ECUr对ECUs发送的CAN数据帧的认证图;

图4为本发明中的会话密钥更新图;

图5为本发明中的GECU对外部设备的认证图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。本发明的方法以现有车辆的CAN总线、若干电子控制单元ECU和网关电子控制单元GECU为应用系统基础,主要包括以下五部分,

本发明的方法主要包括以下五部分(本发明中的所有符号见表1):

表1主要符号定义

1、网关电子控制单元GECU将会话密钥加载到它的安全存储中

当车辆启动或者更换ECU时,GECU将认证密钥ki和长期对称密钥Gk加载到安全存储中,并将安装在车辆上的ECU的数量N记录下来。

2、GECU对CAN总线中的ECU进行会话密钥分发

在启动车辆之后,CAN总线中的每个ECU按顺序等待GECU执行会话密钥分发过程。GECU给等待的ECU分发会话密钥,但其他ECU不通信,而是轮流等待。GECU对ECU的密钥分发过程如图2所示,具体步骤如下:

第一步:ECUi选择随机数Ri,并且将它传输给GECU;

第二步:GECU选择随机数Seed1,用ki对IDi,IDGECU,Ri以及Seed1加密生成MAC1,并且将它们传输给具有Seed1的ECUi,随后ECUi认证MAC1,并计算会话密钥:KDFGK(Seed1)=EK1||AK1||KEK1||UK;

第三步:ECUi用ki对IDi,Seed1加密生成MAC2;用AK1对IDi,EK1,AK1,KEK1,KGK1和UK加密生成MAC3,并将MAC2和MAC3一起传输给GECU;

第四步:GECU认证MAC2,通过验证MAC2,确认ECUi是否正确接收Seed1,在认证MAC2之后,GECU用第二步的方法计算会话密钥;

第五步:在生成会话密钥之后,GECU认证MAC3。通过认证MAC3,确认ECUi是否正确地生成会话密钥。

3、接收方ECUr对发送方ECUs发送的加密数据帧进行认证

在会话密钥分发过程完成之后,GECU执行在车辆驾驶期间ECU产生的数据帧进行认证。在方法中,用128比特的高级加密标准AES算法和带有密钥的哈希功能的消息认证码MAC。ECUs使用AES算法加密两个数据帧,并为数据帧生成MAC值,ECUr对MAC进行认证和解密,过程如图3所示,具体步骤如下:

第一步:发送方ECUs管理其数据帧计数器值当传输数据帧时,ECUs用生成密文C:的结果是128比特,由于CAN数据帧最大有效载荷为64比特,只有前64比特是用来生成密文C,用128比特的AES算法来加密两个明文;

第二步:ECUs为CAN数据帧生成MAC值,其中包括明文和密文C,即:

第三步:ECUr接收发送方ECUs的计数器值并用和AKk来验证所接收的CAN数据帧的MAC是否正确;

第四步:如果正确验证CAN数据帧的MAC,执行来执行解密并获得明文信息M;

第五步:在完成对接收到的数据帧的认证和解密之后,ECUr增加ECU的CAN数据帧计数器值

4、GECU对ECU之间通信的加密密钥和认证密钥进行更新

主要分为车内ECU密钥更新、释放外部设备连接时的密钥更新两个阶段,在第k个会话密钥中,密钥更新阶段如图4所示,具体步骤如下:

第一,车内ECU密钥更新阶段,GECU如下执行每个预定义周期(T)的密钥更新,其步骤如下:

第一步:选择随机值Seedk+1,GECU生成密钥请求消息并将其广播到车内CAN,这个消息如下:

第二步:接收密钥请求消息的每个ECUi使用AKk验证MAC和KEKk解密密文(C)。然后,ECUi使用预定义函数KDF得到在第k+1个会话中使用的会话密钥。每个数据帧计数器值初始化为0;

第三步:在第二步之后,每个ECUi生成密钥回复消息,并将其发送到GECU以检查他们是否正确地接收到密钥请求消息:

第四步:在确认正确接收到密钥请求消息之后,GECU将ECUi的每个数据帧计数器初始化为零。当GECU初始化自己的数据帧计数器时,密钥更新阶段完成。

第二,释放外部设备连接时的密钥更新阶段,如果外部设备和车辆之间的连接被终止,则GECU如下执行会话密钥更新过程保证安全,其步骤如下:

第一步:GECU生成随机值Seednew,然后使用UK生成密钥请求消息:

GECU将密钥请求消息广播到车载CAN;

第二步:接收密钥请求消息的每个ECUi分别使用AKk和UK执行MAC的验证和解密密文(C)。其余步骤与车内ECU密钥更新阶段相同。

车辆辆与外部设备连接的附加认证和密钥分发

在第K次会话中,外部设备认证和会话密钥分发步骤如下:

第一步:将外部设备连接到车辆之后,外部设备向GECU发送认证请求;

第二步:在接收到请求后,GECU生成随机数r1及r1在P上的签名。然后,使用它的证书将这些值发送到外部设备;

第三步:如果成功验证GECU发送的证书和签名,则外部设备生成随机数和r2在P上的签名。然后它用自己的证书把这些值传给GECU。在完成传输之后,外部设备生成临时会话密钥SK并且将r2在P上的签名去掉。

第四步:验证外部设备发送的证书和签名之后,GECU生成临时会话密钥SK并且将r1在P上的签名去掉。然后,GECU用SK加密Seedk并将加密后的结果发送到外部设备。外部设备使用Seedk生成在第k个会话中使用的会话密钥,然后利用这个会话密钥进行通信。

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

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1