数据处理方法、装置、系统、设备及作业机械转让专利

申请号 : CN202210799009.8

文献号 : CN115314253B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 欧阳泽华粟华潇辉

申请人 : 湖南行必达网联科技有限公司

摘要 :

本发明提供一种数据处理方法、装置、系统、设备及作业机械,应用于车载控制器端的方法,通过发送随机数密文至云端;接收云端发送的固件密文和第一消息认证码;利用固件密文、第二密钥和随机数明文进行消息认证码运算,得到第二消息认证码;当第一消息认证码与第二消息认证码相同时,利用第一密钥解密固件密文,得到固件数据;其中,第一密钥和第二密钥均是基于车载控制器的标识信息生成的,第一密钥与第二密钥不同,由于整个的传输过程中增加了加解密的过程,且第一密钥实现数据加解密,第二密钥实现消息认证码验证,从而更好地保证了数据传输的安全,提高了对于车载控制器的安全管理。

权利要求 :

1.一种数据处理方法,其特征在于,应用于车载控制器,所述方法包括:发送随机数密文至云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;

接收所述云端发送的固件密文和第一消息认证码,所述固件密文为所述云端通过所述第一密钥对固件数据进行加密后得到的,所述第一消息认证码为所述云端对所述随机数明文、所述固件密文和第二密钥运算生成的,生成所述第一消息认证码采用的随机数明文为所述云端利用所述第一密钥对所述随机数密文解密得到的;

利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;

当所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;

其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。

2.根据权利要求1所述的数据处理方法,其特征在于,所述发送随机数密文至云端之前,还包括:接收所述云端发送的固件开始更新指令;

基于所述固件开始更新指令,返回固件更新应答指令至所述云端。

3.根据权利要求1所述的数据处理方法,其特征在于,利用所述第一密钥解密所述固件密文,得到固件数据之后,还包括:发送数据接收成功应答指令至所述云端,并更新所述随机数密文,直至固件的所有数据传输完成。

4.根据权利要求1所述的数据处理方法,其特征在于,所述车载控制器还包括非易失存储器;

所述第一密钥和所述第二密钥存储于所述非易失存储器内。

5.根据权利要求1‑4任一项所述的数据处理方法,其特征在于,还包括:接收所述云端对所述第一密钥和/或所述第二密钥的修改信号;

当所述修改信号为预设信号时,对所述第一密钥和/或所述第二密钥进行修改,否则仅读取所述第一密钥和/或所述第二密钥。

6.一种数据处理方法,其特征在于,应用于云端,所述方法包括:接收车载控制器发送的随机数密文;

利用第一密钥对所述随机数密文进行解密,得到随机数明文,并利用所述第一密钥加密固件数据,得到固件密文;

利用所述随机数明文、所述固件密文和第二密钥进行消息认证码运算,得到第一消息认证码;

发送所述固件密文和所述第一消息认证码至所述车载控制器;

其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。

7.根据权利要求6所述的数据处理方法,其特征在于,还包括:确定所述第一密钥和/或所述第二密钥的修改信号;

发送所述修改信号至所述车载控制器,对所述第一密钥和/或所述第二密钥进行修改。

8.一种数据处理装置,其特征在于,应用于车载控制器,包括:第一发送模块,用于发送随机数密文至云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;

第二接收模块,用于接收所述云端发送的固件密文和第一消息认证码,所述固件密文为所述云端通过所述第一密钥对固件数据进行加密后得到的,所述第一消息认证码为所述云端对所述随机数明文、所述固件密文和第二密钥运算生成的,生成所述第一消息认证码采用的随机数明文为所述云端利用所述第一密钥对所述随机数密文解密得到的;

第一验证模块,用于利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;当所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;

其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。

9.一种数据处理装置,其特征在于,应用于云端,包括:第二接收模块,用于接收车载控制器发送的随机数密文;

加解密模块,用于利用第一密钥对所述随机数密文进行解密,得到随机数明文,并利用所述第一密钥加密固件数据,得到固件密文;

第二验证模块,利用所述随机数明文、所述固件密文和第二密钥进行消息认证码运算,得到第一消息认证码;

第二发送模块,用于发送所述固件密文和所述第一消息认证码至所述车载控制器;

其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。

10.一种数据处理系统,其特征在于,包括:车载控制器和云端;

所述车载控制器发送随机数密文至所述云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;

所述云端接收所述车载控制器发送的随机数密文,利用第一密钥对所述随机数密文进行解密,得到随机数明文,并利用所述第一密钥加密固件数据,得到固件密文;

所述云端利用所述随机数明文、所述固件密文和第二密钥进行消息认证码运算,得到第一消息认证码;

所述云端发送所述固件密文和所述第一消息认证码至所述车载控制器;

所述车载控制器接收所述云端发送的固件密文和第一消息认证码,并利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;

当所述车载控制器确定所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;

其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。

11.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项所述应用于车载控制器的数据处理方法或如权利要求6或7所述的应用于云端的数据处理方法。

12.一种作业机械,其特征在于,所述作业机械包含如权利要求10所述数据处理系统。

说明书 :

数据处理方法、装置、系统、设备及作业机械

技术领域

[0001] 本发明涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、系统、设备及作业机械。

背景技术

[0002] 车载控制器单元(Electronic Control Unit,ECU)是车辆电控系统中的重要控制器,随着车载控制单元功能与数量的日益增多,和车载网联技术的发展,借助车载网络可实现ECU的远程在线升级。常用的升级技术有空中下载技术OTA(Over The Air Technology),而实现OTA功能的关键需要ECU内部的嵌入式微控制器(Microcontroller Unit,MCU)的底层驱动的支持。底层驱动中的Bootloader(固件引导加载程序)是实现应用升级的关键,它是MCU中嵌入式系统在应用程序运行前,用于启动和加载应用程序的一段代码。传统的应用程序(APP)升级是现场通过PC主机与ECU的通信接口(如:CAN/LIN/以太网等),与Bootloader进行数据交互实现。
[0003] 但是,该种升级方式容易造成核心代码的泄密问题,且车载控制器单元容易受到恶性固件的攻击,不利于车辆的安全管理。

发明内容

[0004] 本发明提供一种数据处理方法、装置、系统、设备及作业机械,用以解决现有技术中固件升级时数据处理安全性低的缺陷,实现通过对固件数据的加解密以及传输过程的认证,提高数据处理的安全性能。
[0005] 本发明提供一种数据处理方法,应用于车载控制器,所述方法包括:
[0006] 发送随机数密文至云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;
[0007] 接收所述云端发送的固件密文和第一消息认证码,所述固件密文为所述云端通过所述第一密钥对固件数据进行加密后得到的,所述第一消息认证码为所述云端对所述随机数明文、所述固件密文和第二密钥运算生成的,生成所述第一消息认证码采用的随机数明文为所述云端利用所述第一密钥对所述随机数密文解密得到的;
[0008] 利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;
[0009] 当所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;
[0010] 其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0011] 根据本发明提供的一种数据处理方法,所述发送随机数密文至云端之前,还包括:
[0012] 接收所述云端发送的固件开始更新指令;
[0013] 基于所述固件开始更新指令,返回固件更新应答指令至所述云端。
[0014] 根据本发明提供的一种数据处理方法,所述利用所述第一密钥解密所述固件密文,得到固件数据之后,还包括:
[0015] 发送数据接收成功应答指令至所述云端,并更新所述随机数密文,直至固件的所有数据传输完成。
[0016] 根据本发明提供的一种数据处理方法,所述车载控制器还包括非易失存储器;
[0017] 所述第一密钥和所述第二密钥存储于所述非易失存储器内。
[0018] 根据本发明提供的一种数据处理方法,还包括:
[0019] 接收所述云端对所述第一密钥和/或所述第二密钥的修改信号;
[0020] 当所述修改信号为预设信号时,对所述第一密钥和/或所述第二密钥进行修改,否则仅读取所述第一密钥和/或所述第二密钥。
[0021] 本发明还提供一种数据处理方法,应用于云端,所述方法包括:
[0022] 接收车载控制器发送的随机数密文;
[0023] 利用第一密钥对所述随机数密文进行解密,得到随机数明文,并利用所述第一密钥加密固件数据,得到固件密文;
[0024] 利用所述随机数明文、所述固件密文和第二密钥进行消息认证码运算,得到第一消息认证码;
[0025] 发送所述固件密文和所述第一消息认证码至所述车载控制器;
[0026] 其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0027] 根据本发明提供的一种数据处理方法,还包括:
[0028] 确定所述第一密钥和/或所述第二密钥的修改信号;
[0029] 发送所述修改信号至所述车载控制器,对所述第一密钥和/或所述第二密钥进行修改。
[0030] 本发明还提供一种数据处理装置,应用于车载控制器,包括:
[0031] 第一发送模块,用于发送随机数密文至云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;
[0032] 第二接收模块,用于接收所述云端发送的固件密文和第一消息认证码,所述固件密文为所述云端通过所述第一密钥对固件数据进行加密后得到的,所述第一消息认证码为所述云端对所述随机数明文、所述固件密文和第二密钥运算生成的,生成所述第一消息认证码采用的随机数明文为所述云端利用所述第一密钥对所述随机数密文解密得到的;
[0033] 第一验证模块,用于利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;当所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;
[0034] 其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0035] 本发明还提供一种数据处理装置,应用于云端,包括:
[0036] 第二接收模块,用于接收车载控制器发送的随机数密文;
[0037] 加解密模块,用于利用第一密钥对所述随机数密文进行解密,得到随机数明文,并利用所述第一密钥加密固件数据,得到固件密文;
[0038] 第二验证模块,利用所述随机数明文、所述固件密文和第二密钥进行消息认证码运算,得到第一消息认证码;
[0039] 第二发送模块,用于发送所述固件密文和所述第一消息认证码至所述车载控制器;
[0040] 其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0041] 本发明还提供一种数据处理系统,包括:车载控制器和云端;
[0042] 所述车载控制器发送随机数密文至所述云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;
[0043] 所述云端接收所述车载控制器发送的随机数密文,利用第一密钥对所述随机数密文进行解密,得到随机数明文,并利用所述第一密钥加密固件数据,得到固件密文;
[0044] 所述云端利用所述随机数明文、所述固件密文和第二密钥进行消息认证码运算,得到第一消息认证码;
[0045] 所述云端发送所述固件密文和所述第一消息认证码至所述车载控制器;
[0046] 所述车载控制器接收所述云端发送的固件密文和第一消息认证码,并利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;
[0047] 当所述车载控制器确定所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;
[0048] 其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0049] 本发明还提供一种作业机械,所述作业机械包含如上述所述数据处理系统,或所述作业机械用于执行如上述任一项所述应用于车载控制器的数据处理方法。
[0050] 本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述应用于车载控制器的数据处理方法或应用于云端的数据处理方法。
[0051] 本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述应用于车载控制器的数据处理方法或应用于云端的数据处理方法。
[0052] 本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述应用于车载控制器的数据处理方法或应用于云端的数据处理方法。
[0053] 本发明提供的一种数据处理方法、装置、系统、设备及作业机械,应用于车载控制器端的方法,通过发送随机数密文至云端,随机数密文为利用第一密钥对随机数明文加密得到的,随机数明文为接收到云端发送的固件开始更新指令后随机生成的;接收云端发送的固件密文和第一消息认证码,固件密文为云端通过第一密钥对固件数据进行加密后得到的,第一消息认证码为云端对随机数明文、固件密文和第二密钥运算生成的,生成第一消息认证码采用的随机数明文为云端利用第一密钥对随机数密文解密得到的;利用固件密文、第二密钥和随机数明文进行消息认证码运算,得到第二消息认证码;当第一消息认证码与第二消息认证码相同时,利用第一密钥解密固件密文,得到固件数据;其中,第一密钥和第二密钥均是基于车载控制器的标识信息生成的,第一密钥与第二密钥不同,由于整个的传输过程中增加了加解密的过程,且第一密钥实现数据加解密,第二密钥实现消息认证码验证,从而更好地保证了数据传输的安全,提高了对于车载控制器的安全管理。

附图说明

[0054] 为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0055] 图1是本发明提供的数据处理方法的流程示意图之一;
[0056] 图2是本发明提供的密钥管理过程的结构示意图;
[0057] 图3是本发明提供的MAC运算的结构示意图;
[0058] 图4是本发明提供的ID更新过程的结构示意图;
[0059] 图5是本发明提供的数据处理装置的结构示意图之一;
[0060] 图6是本实施例提供的数据处理方法的流程示意图之二;
[0061] 图7是本发明提供的数据处理装置的结构示意图之二;
[0062] 图8是本发明提供的数据处理系统的结构示意图;
[0063] 图9是本发明提供的电子设备的结构示意图。

具体实施方式

[0064] 为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0065] 下面结合图1‑图9描述本发明的一种数据处理方法、装置、系统、设备及作业机械。
[0066] 图1是本发明提供的数据处理方法的流程示意图之一,图2是本发明提供的密钥管理过程的结构示意图,图3是本发明提供的MAC运算的结构示意图。
[0067] 如图1所示,本发明实施例提供的一种数据处理方法,应用于车载控制器,即执行主体为车载控制器,主要包括以下步骤:
[0068] 101、发送随机数密文至云端,随机数密文为利用第一密钥对随机数明文加密得到的,随机数明文为接收到云端发送的固件开始更新指令后随机生成的。
[0069] 在一个具体的实现过程中,需要对车载控制器的固件进行固件升级,此时便需要通过云端发送固件数据至车载控制器的MCU端,通过MCU端底层驱动中的Bootloader完成固件升级。为了保证固件数据的安全,以及车载控制器的安全,不仅要对固件数据进行加密,还要确定固件数据是否为安全数据,从而保证升级过程的安全进行。通常,Bootloader在APP应用程序固件升级之前,需要将固件数据(常用类型有SREC、BIN、HEX等文件类型)通过云端发送给车载控制器的Bootloader,然后车载控制器中的Bootloader利用接收到的固件数据进行固件升级。其中,车载控制器可以是作业机械的车载控制器,作业机械包括挖掘机、起重机、汽车等等机械。
[0070] 当需要接收固件数据时,为了保证数据的保密性和授权,要产生随机数,通过随机数生成模块生成随机数,将生成的随机数作为一层密保,保证数据传输的安全。随机数生成模块由真随机数生成器(TRNG)和伪随机数生成器(PRNG)组成;TRNG用于生成种子(seed);然后给PRNG生成随机数,随机数生成模块在每次发送之前都会重置随机数,因此每次发送的都是新的随机数。这样在程序升级过程中,Bootloader首先生成一个随机数,然后对随机数进行加密并发送给云端。
[0071] 其中,随机数即随机数明文也就是没有进行加密的随机数,可以直接读取到的,而随机数密文指的是对随机数进行加密后的数据,通过对随机数密文进行解密才能得到随机数明文。而对随机数的加解密过程采用第一密钥进行,第一密钥是通过AES算法基于车载控制器独有的身份标识信息生成的。
[0072] 具体的,AES算法高级加密标准,包含了AES‑128、AES‑192、AES‑256三个标准,即密钥的数据长度为128位(16Bytes)、192位(24Bytes)、256位(32Bytes);在设计中初始化向量与密钥长度保持一致;对于AES‑128标准的加密过程是将要升级的固件数据分解成N个数据块,每个数据块大小为16Bytes,初始化向量IV(initialization Vector)为16Bytes;因此第一密钥为16Bytes。
[0073] 102、接收云端发送的固件密文和第一消息认证码,固件密文为云端通过第一密钥对固件数据进行加密后得到的,第一消息认证码为云端对随机数明文、固件密文和第二密钥运算生成的,生成第一消息认证码采用的随机数明文为云端利用第一密钥对随机数密文解密得到的。
[0074] 具体的,接收云端发送的固件密文和第一消息认证码MAC,其中,固件密文为固件升级所需要的固件数据加密后的文件,而加密规则同样则是利用第一密钥进行加密。例如可以是使用AES算法基于车载控制器的唯一身份标识信息进行加密,得到第一密钥,由于每台作业机械的车载控制器都有唯一的身份标识信息ID,因此,每台作业机械的第一密钥都是不同的,即使其中一台的第一密钥丢失,也不会影响其他作业机械的第一密钥安全。
[0075] 其中,第一消息认证码为云端对随机数明文、固件密文和第二密钥运算生成的,而生成第一消息认证码采用的随机数明文则又是云端对接收到的车载控制器发送的随机数密文进行解密得到的。云端和车载控制器端均有密钥管理模块、加解密模块、MAC运算模块、ID模块等。第二密钥可以是通过CBC算法基于车载控制器唯一的ID信息生成的。第一密钥和第二密钥通过密钥管理模块对ID信息进行编码生成,同时交给云端与车载控制器的底层驱动的bootloader;然后云端通过AES CBC算法对固件数据加密;Bootloader接收到固件密文数据后,用已知的第一密钥进行解密,第二密钥进行MAC认证,如此确保固件数据的保密性。
[0076] 如图2所示,为第一密钥和第二密钥的编码与解码的过程,密钥管理模块通过对控制器唯一的身份标识ID进行编码得到第一密钥和第二密钥。同理,通过对第一密钥和第二密钥进行解码,便可以得到控制器唯一的身份标识ID。第一密钥和第二密钥在出厂时由控制器唯一身份识别号生成,确保了第一密钥、第二密钥的可靠性,安全性大大提高。由于云端与车载控制器的Bootloader双方采用对称加密,因此密钥的管理是非在线的,第一密钥和第二密钥在出厂时也就是早应用程序下载之前就分别由Bootloader和云端分别进行保管,即Bootloader和云端内均存储有第一密钥和第二密钥。
[0077] 密钥管理模块支持编码解码,属于软件功能模块,由云端主机(HOST)与本地MCU的Bootloader共同拥有,在云端,HOST直接可见的是控制器ID信息,而生成的第一密钥和第二密钥是不可见的,即使发生泄密,丢失的只是ID信息而非密钥。
[0078] 103、利用固件密文、第二密钥和随机数明文进行消息认证码运算,得到第二消息认证码。
[0079] 在得到云端发送的固件密文与第一消息认证码之后,为了保证车载控制器的安全,需要对数据传输的安全性进行确定,于是便需要确定第一消息认证码是否安全。第一消息验证码是根据随机数明文、固件密文和第二密钥生成的,而随机数明文是车载控制器加密后发送至云端的,第二密钥则是根据车载存储器唯一的身份标识得到的,因此,得到的第一消息验证码更加安全可靠。
[0080] 在得到云端发送的第一消息认证码之后,车载控制器自身根据随机数明文、第二密钥和固件密文生成第二消息认证码。为了保证数据的完整性和使用权;防止未经授权的云端将固件数据发送给车载控制器的Bootloader,而bootloader将不合法的固件数据下载到ECU中的存储器中,导致的设备故障。若要避免这个问题,需要使用消息码认证(MAC)。
[0081] 因此,云端和车载控制器分别根据随机数明文、固件密文和第二密钥生成了对应的消息认证码,即第一消息认证码和第二消息认证码,然后便可以对第一消息认证码和第二消息认证码进行比对。若是两者不一致,表明随机数或者是第二密钥不同,传输的固件密文便不是安全的固件密文。因此,通过对第一消息认证码与第二消息认证码的比较,能够更好地保证数据传输的安全。
[0082] 其中,如图3所示,为MAC值即第一消息认证码与第二消息认证码的生成过程,均是基于随机数、密文数据和第二密钥进行运算得到的。MAC运算模块用于产生消息认证码,是用来保证数据的完整性,和数据所有权的一种方法。是防止数据被假冒或者篡改的重要手段;目前基于分组加密的消息认证码CMAC(cipher‑based message authentication code)和HMAC(hash‑based message authentication code)使用较为广泛,CMAC用的是基于AES的分组加密;而HMAC用的是hash算法;对于云端加密;将AES加密后的固件数据、随机数、和第二密钥进行MAC算法处理,后得到第一消息认证码;然后将第一消息认证码与加密后的固件数据一起发给bootloader,Bootloader在获得固件密文和第一消息认证码后,将固件密文与之前保存的第二密钥和随机数一起进行MAC算法处理,同样得到一个第二消息认证码;通过将运算得到的第二消息认证码与接收到的第一消息认证码进行对比,Bootloader从而判断接收的数据是否是有效的。
[0083] 104、当第一消息认证码与第二消息认证码相同时,利用第一密钥解密固件密文,得到固件数据。
[0084] 具体的,在对第一消息认证码与第二消息认证码进行比对之后,只有当第一消息认证码与第二消息认证码相同时,才能够表明此时的固件密文为合法安全的数据。此时便可以是通过第一密钥对固件密文进行解密,得到固件数据,然后下载到车载控制器的存储器内,从而完成固件的升级。
[0085] 只有当第一消息认证码与第二消息认证码相同时,才能够说明该发送固件密文的云端获得了授权,传输数据才有效。否则,固件密文被视为无效,就不会下载到ECU的存储器中,保证了车载控制器的安全。由于控制器ID信息存储在控制器MCU中,在车辆出厂时,由云端HOST进行记录,保证双方获得的信息一致。因此,当云端HOST需要对某个车辆升级程序时,只需要根据相应车辆的控制器ID进行升级即可,这样可以提供定制化服务。
[0086] 本实施例中的固件数据传输过程,通过AES进行数据加密,确保固件数据文件不被随意获取,即使被获取,也是加密后的固件文件。通过消息认证码MAC确保了数据的授权的有效性;通过随机数的加入,确保了数据不被重复攻击,更好地保证了车载通讯安全。
[0087] 本实施例提供的一种应用于车载控制器端的方法,通过发送随机数密文至云端,随机数密文为利用第一密钥对随机数明文加密得到的,随机数明文为接收到云端发送的固件开始更新指令后随机生成的;接收云端发送的固件密文和第一消息认证码,固件密文为云端通过第一密钥对固件数据进行加密后得到的,第一消息认证码为云端对随机数明文、固件密文和第二密钥运算生成的,生成第一消息认证码采用的随机数明文为云端利用第一密钥对随机数密文解密得到的;利用固件密文、第二密钥和随机数明文进行消息认证码运算,得到第二消息认证码;当第一消息认证码与第二消息认证码相同时,利用第一密钥解密固件密文,得到固件数据;其中,第一密钥和第二密钥均是基于车载控制器的标识信息生成的,第一密钥与第二密钥不同,由于整个的传输过程中增加了加解密的过程,且第一密钥实现数据加解密,第二密钥实现消息认证码验证,从而更好地保证了数据传输的安全,提高了对于车载控制器的安全管理。
[0088] 进一步的,在上述实施例的基础上,本实施例中在发送随机数密文至云端之前,还可以包括:接收云端发送的固件开始更新指令;基于固件开始更新指令,返回固件更新应答指令至云端。
[0089] 具体的,首先云端远程发送固件升级指令至车载控制器端,即告知车载控制器要要进行固件升级,然后车载控制器端接收到固件开始更新指令之后,根据自身情况,确定当前是否能够进行更新,当能够进行固件更新时,便生成固件更新应答指令,并返回固件更新应答指令至云端,以开始进行固件更新。
[0090] 进一步的,在上述实施例的基础上,本实施例中的利用第一密钥解密固件密文,得到固件数据之后,还可以包括:发送数据接收成功应答指令至云端,并更新随机数密文,直至固件的所有数据传输完成。
[0091] 具体的,在本次确保数据安全完成数据传输之后,车载控制器便发送一次数据接收成功信息至云端,以使云端可以及时的了解到当前的数据传输状态。
[0092] 在当次传输完成之后,车载控制器的随机数模块便会重新生成一个随机数并加密后,发送给云端。如果攻击者获得了相同的固件,为了防止攻击者反复对Bootloader发送这个固件,那Bootloader将进入无休止的固件升级中,从而造成ECU故障的发生。因此,在每次传输之前Bootloader都事先发送一个AES加密的随机数给云端;从而保证每次传输双方的随机数是同一个数;在传输完成后,Bootloader又将发送新的随机数给HOST,这样保证了每次传输用的是新的随机数。随机数生成模块由TRNG和PRNG组成;便保护了Bootloader不受重复攻击。
[0093] 进一步的,在上述实施例的基础上,本实施例中的车载控制器还包括非易失存储器;第一密钥和第二密钥存储于非易失存储器内。
[0094] 具体的,为了防止非易失存储器中密钥数据(第一密钥和第二密钥)被破解,密钥数据在存入的时候,由微控制器(MCU)的密钥管理模块对ID数据进行编码;而在读取密钥的时候,由密钥管理模块对数据进行解码,并与MCU存储的ID比较后;来确认密钥的可靠性,这样即使某一台被破解,也不会影响其他控制器的密钥安全。其中,MCU与非易失存储之间可以通过串行总线(IIC、SPI)进行通讯。
[0095] 由于选择外部的非易失存储器,而非MCU内部存储,可以有效解决MCU在对内部存储频繁读写时意外操作导致的数据丢失。控制器ID信息保存在MCU中,通过密钥管理模块对ID信息进行编码生成第一密钥和第二密钥;密钥管理模块支持解码,存储在非易失存储器中的第一密钥和第二密钥可通过Bootloader中的密钥管理模块解码逆向生成ID,当ID信息一致时,说明控制器及车辆状态安全可控,防止非易失存储器或者MCU被非法更换。
[0096] 并且,车载控制器采用唯一的ID信息进行身份识别,可与具体车辆进行绑定,ID是通过Bootloader存储在控制器中,当控制器安装到具体车辆时,在车辆出厂时,可以通过云端HOST读取ID信息并车辆其他信息关联,并存储到云端。
[0097] 进一步的,在上述实施例的基础上,本实施例中还可以包括:接收云端对第一密钥和/或第二密钥的修改信号;当修改信号为预设信号时,对第一密钥和/或第二密钥进行修改,否则仅读取第一密钥和/或第二密钥。
[0098] 图4是本发明提供的ID更新过程的结构示意图。
[0099] 在车载控制器的硬件电路中加入非易失存储器,如图4所示,用于存储控制器的密钥信息。ECU#1每次上电都会读取非易失存储器中的密钥信息,和MCU的ID信息对比后,告知云端自身的身份信息。为了防止意外操作非易失存储器,在ECU#1工作过程中,对非易失存储器进行了写保护,例如可以设定只有在修改信号为有效时才会对ID信息进行修改,比如只设定一种特定情况,用于修改非易失存储器中的信息。这种特定情况是通过Wake信号(修改信号)实现的,当wake信号为高时,将非易失存储器的写保护功能禁用;并使能ECU#1的电源模块,给MCU供电,MCU上电后,采集wake信号,当确定wake信号为特定修改信号后,才可以修改非易失存储器中的密钥信息;其他情况下只能读取非易失存储器中的密钥信息。其中,ECU#1表示车载控制器的车载控制单元,ECU#2表示远端控制器的控制单元,可以理解为远端控制器的控制单元ECU#2通过云端实现与车载控制单元ECU#1的数据传输交互。例如,电脑通过云端将固件升级数据发送至车载控制器ECU#1端,以完成固件更新。
[0100] 由于对非易失存储器的写保护禁用功能,保证密钥数据的读写可靠性,仅在修改信号即wake信号有效时,才能对非易失存储器进行写操作;密钥数据采用写保护,避免了意外操作对非易失存储中数据的修改;另外非易失存储器中存储的是密钥数据,假如非易失存储器被非法更换,MCU也可以判断出来。也能够保证MCU端即使信息被破解、或者泄密,也可以通过云端通过控制修改信号更新ID,而HOST端即使ID数据丢失,也不至于影响密钥的丢失。
[0101] 基于同一总的发明构思,本发明还保护一种数据传输装置,下面对本发明提供的数据传输装置进行描述,下文描述的数据传输装置与上文描述的数据传输方法可相互对应参照。
[0102] 图5是本发明提供的数据处理装置的结构示意图之一。
[0103] 如图5所示,本发明实施例提供的一种数据处理装置,应用于车载控制器,包括:
[0104] 第一发送模块501,用于发送随机数密文至云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;
[0105] 第一接收模块502,用于接收所述云端发送的固件密文和第一消息认证码,所述固件密文为所述云端通过所述第一密钥对固件数据进行加密后得到的,所述第一消息认证码为所述云端对所述随机数明文、所述固件密文和第二密钥运算生成的,生成第一消息认证码采用的随机数明文为云端利用第一密钥对随机数密文解密得到的;
[0106] 第一验证模块503,用于利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;当所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;
[0107] 其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0108] 本发明提供的一种数据处理装置,通过发送随机数密文至云端,随机数密文为利用第一密钥对随机数明文加密得到的,随机数明文为接收到云端发送的固件开始更新指令后随机生成的;接收云端发送的固件密文和第一消息认证码,固件密文为云端通过第一密钥对固件数据进行加密后得到的,第一消息认证码为云端对随机数明文、固件密文和第二密钥运算生成的,生成第一消息认证码采用的随机数明文为云端利用第一密钥对随机数密文解密得到的;利用固件密文、第二密钥和随机数明文进行消息认证码运算,得到第二消息认证码;当第一消息认证码与第二消息认证码相同时,利用第一密钥解密固件密文,得到固件数据;其中,第一密钥和第二密钥均是基于车载控制器的标识信息生成的,第一密钥与第二密钥不同,由于整个的传输过程中增加了加解密的过程,且第一密钥实现数据加解密,第二密钥实现消息认证码验证,从而更好地保证了数据传输的安全,提高了对于车载控制器的安全管理。
[0109] 进一步的,在上述实施例的基础上,本实施例中还包括:第一应答模块,用于:
[0110] 接收云端发送的固件开始更新指令;
[0111] 基于固件开始更新指令,返回固件更新应答指令至云端。
[0112] 进一步的,在上述实施例的基础上,本实施例中还包括:第二应答模块,用于:
[0113] 发送数据接收成功应答指令至云端,并更新随机数密文,直至固件的所有数据传输完成。
[0114] 进一步的,在上述实施例的基础上,本实施例中的车载控制器还包括非易失存储器;
[0115] 第一密钥和第二密钥存储于非易失存储器内。
[0116] 进一步的,在上述实施例的基础上,本实施例中还包括修改模块,用于:
[0117] 接收云端对第一密钥和/或第二密钥的修改信号;
[0118] 当修改信号为预设信号时,对第一密钥和/或第二密钥进行修改,否则仅读取第一密钥和/或第二密钥。
[0119] 图6是本实施例提供的数据处理方法的流程示意图之二。
[0120] 如图6所示,本实施提供的一种数据处理方法,应用于云端,即执行主体为云端,本实施例与应用于车载控制器端的数据处理方法,为相互对应的方法,即车载控制器与云端两者进行的数据交互过程,主要包括以下步骤:
[0121] 601、接收车载控制器发送的随机数密文。
[0122] 具体的,随机数密文的生成过程在上述实施例中已经进行了说明,本实施例中不再进行具体阐述。在进行数据传输前,首先接收车载控制器发送的随机数密文,随机数密文是通过第一密钥对随机数进行加密得到的。
[0123] 602、利用第一密钥对随机数密文进行解密,得到随机数明文,并利用第一密钥加密固件数据,得到固件密文。
[0124] 在得到随机数密文之后,对随机数密文进行解密,得到随机数明文,由于第一密钥是预先存储在云端和MCU中的,因此,云端可以成功的完成对随机数密文的解密。
[0125] 云端还要利用第一密钥对车载固件升级用到的固件数据进行加密,得到固件密文。需指出的是,云端对随机数密文进行解密与对固件数据进行加密的过程,不区分具体的先后顺序。
[0126] 603、利用随机数明文、固件密文和第二密钥进行消息认证码运算,得到第一消息认证码。
[0127] 然后再通过上述实施例中提到的MAC算法,利用随机数明文、固件密文和第二密钥进行消息认证码运算,得到第一消息认证码。
[0128] 604、发送固件密文和第一消息认证码至车载控制器。
[0129] 在得到第一消息认证码之后,发送第一消息认证码至车载控制器,以使车载控制器根据第一消息验证码确定发送固件数据的云端是否为合法云端。确定是否合法的具体过程,便是将接收到的第一消息认证码与自己生成的第二消息认证码进行比较,只有当两者一致时,才能确定得到是固件密文为有效数据。
[0130] 其中,对随机数、固件等进行加解密的过程用到的为第一密钥,生成消息认证码的过程用到的为第二密钥。第一密钥和第二密钥均是基于车载控制器的标识信息生成的,第一密钥与第二密钥不同。
[0131] 进一步的,在上述实施例的基础上,本实施例中还可以包括:确定第一密钥和/或第二密钥的修改信号;发送修改信号至车载控制器,对第一密钥和/或第二密钥进行修改。
[0132] 具体的,当发生意外情况时,还可以对第一密钥或第二密钥进行修改,发送修改信号给车载控制器。而修改信号为特定的预设信号,只有当确定修改信号为预设信号时,才会进行密钥的修改,其他情况只允许读取ID信息,不能修改,从而更好地保证了数据传输安全。
[0133] 基于同一总的发明构思,本发明还保护一种数据传输装置,下面对本发明提供的数据传输装置进行描述,下文描述的数据传输装置与上文描述的数据传输方法可相互对应参照。
[0134] 图7是本发明提供的数据处理装置的结构示意图之二。
[0135] 如图7所示,本实施例提供的一种数据处理装置,应用于云端,包括:
[0136] 第二接收模块701,用于接收车载控制器发送的随机数密文;
[0137] 加解密模块702,用于利用第一密钥对随机数密文进行解密,得到随机数明文,并利用第一密钥加密固件数据,得到固件密文;
[0138] 第二验证模块703,利用随机数明文、固件密文和第二密钥进行消息认证码运算,得到第一消息认证码;
[0139] 第二发送模块704,用于发送固件密文和第一消息认证码至车载控制器;
[0140] 其中,第一密钥和第二密钥均是基于车载控制器的标识信息生成的,第一密钥与第二密钥不同。
[0141] 进一步的,本实施例中还包括:修改模块,用于:
[0142] 确定所述第一密钥和/或所述第二密钥的修改信号;
[0143] 发送所述修改信号至所述车载控制器,对所述第一密钥和/或所述第二密钥进行修改。
[0144] 图8是本发明提供的数据处理系统的结构示意图。
[0145] 如图8所示,本发明实施例提供的一种数据处理系统,包括:车载控制器801和云端802;
[0146] 车载控制器发送随机数密文至云端,随机数密文为利用第一密钥对随机数明文加密得到的,随机数明文为接收到云端发送的固件开始更新指令后随机生成的;
[0147] 云端接收车载控制器发送的随机数密文,利用第一密钥对随机数密文进行解密,得到随机数明文,并利用第一密钥加密固件数据,得到固件密文;
[0148] 云端利用随机数明文、固件密文和第二密钥进行消息认证码运算,得到第一消息认证码;
[0149] 云端发送固件密文和第一消息认证码至车载控制器;
[0150] 车载控制器接收云端发送的固件密文和第一消息认证码,并利用固件密文、第二密钥和随机数明文进行消息认证码运算,得到第二消息认证码;
[0151] 当车载控制器确定第一消息认证码与第二消息认证码相同时,利用第一密钥解密固件密文,得到固件数据;
[0152] 其中,第一密钥和第二密钥均是基于车载控制器的标识信息生成的,第一密钥与第二密钥不同。
[0153] 如图8所示,HOST与车载控制的Bootloader之间通过总线进行通讯,HOST与Bootloader有相同的结构,均由密钥管理模块、AES加/解密模块、MAC运算模块、随机数生成模块,及存储ID的模块组成。通讯处理模块用于支持各种通讯协议,如:CAN、CANFD或者车载以太网。
[0154] 密钥管理模块:由于HOST与Bootloader双方采用对称加密,因此密钥的管理是非在线的,第一密钥和第二密钥在出厂时也就是早应用程序下载之前就存储于Bootloader和HOST中。以通过第一密钥进行加解密,通过第二密钥进行消息码认证。
[0155] 基于同一总的发明构思,本发明还保护一种作业机械,作业机械包括上述的数据处理系统,或作业机械用于执行如上述任一实施例的应用于车载控制器的数据处理方法,作业机械包括汽车、挖掘机、起重机等等。
[0156] 图9是本发明提供的电子设备的结构示意图。
[0157] 如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行数据处理方法,应用于车载控制器该方法包括:发送随机数密文至云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;接收所述云端发送的固件密文和第一消息认证码,所述固件密文为所述云端通过所述第一密钥对固件数据进行加密后得到的,所述第一消息认证码为所述云端对所述随机数明文、所述固件密文和第二密钥运算生成的,生成第一消息认证码采用的随机数明文为云端利用第一密钥对随机数密文解密得到的;利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;当所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0158] 此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0159] 另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的数据处理方法,应用于车载控制器该方法包括:发送随机数密文至云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;接收所述云端发送的固件密文和第一消息认证码,所述固件密文为所述云端通过所述第一密钥对固件数据进行加密后得到的,所述第一消息认证码为所述云端对所述随机数明文、所述固件密文和第二密钥运算生成的,生成第一消息认证码采用的随机数明文为云端利用第一密钥对随机数密文解密得到的;利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;当所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0160] 又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的数据处理方法,应用于车载控制器该方法包括:发送随机数密文至云端,所述随机数密文为利用第一密钥对随机数明文加密得到的,所述随机数明文为接收到所述云端发送的固件开始更新指令后随机生成的;接收所述云端发送的固件密文和第一消息认证码,所述固件密文为所述云端通过所述第一密钥对固件数据进行加密后得到的,所述第一消息认证码为所述云端对所述随机数明文、所述固件密文和第二密钥运算生成的,生成第一消息认证码采用的随机数明文为云端利用第一密钥对随机数密文解密得到的;利用所述固件密文、所述第二密钥和所述随机数明文进行消息认证码运算,得到第二消息认证码;当所述第一消息认证码与所述第二消息认证码相同时,利用所述第一密钥解密所述固件密文,得到固件数据;其中,所述第一密钥和所述第二密钥均是基于车载控制器的标识信息生成的,所述第一密钥与所述第二密钥不同。
[0161] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0162] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0163] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。