本申请属于车辆信息安全技术领域,具体地,涉及一种用于车内ecu的安全访问方法、系统及存储介质。
背景技术:
随着网络技术的快速发展,汽车行业也随着出现越来越多的网络安全问题,例如,通过车载诊断系统obd(onboarddiagnostics)接口非法篡改车内电控单元ecu(electroniccontrolunit)。传统ecu安全访问使用的seed-key算法容易出现暴力撞库破解隐患,黑客通过监听样本、统计特性从而破解安全算法,进而篡改攻击车内ecu。
目前,传统车内ecu安全访问算法根据iso14229-27服务要求,虽然黑客无法获取seed-key算法,但并没有限制获取seed次数,并且由于seed是可重复使用的,采用固定时间循环碰撞获取访问seed和key,获得统计特性,破解算法的可能性和成功率非常高。
另外,高性能安全防护系统一般建立在完善的服务器部署网基础之上,部分离线ecu或者不具备与服务器建立通讯能力的ecu,对于这类数字签名安全策略适应性基本为0,更容易被黑客篡改车内ecu。
因此,亟需一种用于车内ecu的安全访问方法,解决传统ecu安全访问策略存在的安全漏洞隐患。
技术实现要素:
本发明提出了一种用于车内ecu的安全访问方法、系统及存储介质,旨在解决现有ecu安全访问策略存在的安全漏洞隐患的问题。
根据本申请实施例的第一个方面,提供了一种用于车内ecu的安全访问方法,具体包括以下步骤:
接收上位机发送的密钥种子第n次请求指令;n为大于等于1的整数;
通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;
接收上位机根据密钥种子得到的第一消息认证码;
根据密钥种子得到第二消息认证码;
对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
在本申请一些实施方式中,上位机根据密钥种子得到的第一消息认证码,具体为:上位机消息认证码模块根据密钥种子,提取上位机密钥数组中相对应的第一密钥,根据第一密钥以及密钥种子,得到第一消息认证码;
根据密钥种子得到第二消息认证码,具体为:ecu消息认证码模块根据密钥种子,提取ecu密钥数组中相对应的第二密钥,根据第二密钥以及密钥种子,得到第二消息认证码。
在本申请一些实施方式中,上位机密钥数组与ecu密钥数组为预先存储的相同数字序列;
其中,上位机消息认证码模块根据密钥种子,提取上位机密钥数组中相对应的第一密钥,根据第一密钥以及密钥种子,得到第一消息认证码,具体包括:
上位机消息认证码模块根据密钥种子中访问次数,搜索上位机密钥数组相应位置的数字或数组,将数字或数组作为第一密钥;根据第一密钥以及密钥种子,通过cmac算法得到第一消息认证码;
其中,ecu消息认证码模块根据密钥种子,提取ecu密钥数组中相对应的第二密钥,根据第二密钥以及密钥种子,得到第二消息认证码,具体包括:
ecu消息认证码模块根据密钥种子中访问次数,搜索ecu密钥数组相应位置的数字或数组,将数字或数组作为第二密钥;根据第二密钥以及密钥种子,通过cmac算法得到第二消息认证码。
在本申请一些实施方式中,上位机根据密钥种子得到的第一消息认证码,还包括:根据第一密钥,通过密钥衍生算法,得到第一衍生子密钥;
根据密钥种子得到第二消息认证码,还包括:根据第二密钥,通过密钥衍生算法,得到第二衍生子密钥。
在本申请一些实施方式中,对比第一消息认证码以及第二消息认证码之后,若两个消息认证码不一致,则重复之前步骤,若第n 1次得到的两个消息认证码仍不一致,则判定访问拒绝。
在本申请一些实施方式中,对比第一消息认证码以及第二消息认证码之后,若两个消息认证码不一致,则具体进行以下步骤:
接收上位机发送的密钥种子第n 1次请求指令;
通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;
接收上位机根据密钥种子以及第一衍生子密钥得到的第三消息认证码;
根据密钥种子以及第二衍生子密钥得到第四消息认证码;
对比第三消息认证码以及第四消息认证码,若两个消息认证码一致,则判定访问通过。
在本申请一些实施方式中,根据第一密钥以及密钥种子,通过cmac算法得到第一消息认证码,具体包括:
根据第一密钥以及密钥种子,通过cmac算法得到128比特mac码;
将128比特mac码顺序平均分为第一mac子码、第二mac子码、第三mac子码、以及第四mac子码;每一个mac子码又顺序平均分为第一字节、第二字节、第三字节以及第四字节;
提取第一mac子码的第一字节作为第一消息认证码的第一字节,提取第二mac子码的第二字节作为第一消息认证码的第二字节,提取第三mac子码的第三字节作为第一消息认证码的第三字节,提取第四mac子码的第四字节作为第一消息认证码的第四字节。
根据本申请实施例的第二个方面,提供了一种用于车内ecu的安全访问系统,具体包括:
上位机访问指令模块:用于发送密钥种子请求指令;
ecu硬件加密模块:通过真实随机数发生器生成一组随机数,将随机数结合访问时的次数,作为密钥种子;
上位机消息认证码模块:用于根据密钥种子,提取上位机密钥数组中相对应的第一密钥,根据第一密钥以及密钥种子,得到第一消息认证码;
ecu消息认证码模块:用于根据密钥种子,提取ecu密钥数组中相对应的第二密钥,根据第二密钥以及密钥种子,得到第二消息认证码;
ecu访问判定模块:用于对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
根据本申请实施例的第三个方面,提供了一种用于车内ecu的安全访问设备,包括:
存储器:用于存储可执行指令;以及
处理器:用于与存储器连接以执行可执行指令从而完成用于车内ecu的安全访问方法。
根据本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序;计算机程序被处理器执行以实现用于车内ecu的安全访问方法。
采用本申请实施例中的用于车内ecu的安全访问方法、系统及存储介质,接收上位机发送的密钥种子第n次请求指令;通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;接收上位机根据密钥种子得到的第一消息认证码;根据密钥种子得到第二消息认证码;对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。本申请上位机与ecu分别基于真实随机数,并将访问次数结合真实随机数作为密钥种子,然后获得两个消息认证码进行认证对比,使访问机制更加安全,保证了ecu与其他设备通讯访问机制的完整性、时效性和真实性。解决了现有ecu安全访问策略存在的安全漏洞隐患的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1中示出了根据本申请实施例的用于车内ecu的安全访问方法的步骤示意图;
图2中示出了根据本申请另一实施例的用于车内ecu的安全访问方法的步骤示意图;
图3中示出了根据本申请实施例中mac消息认证码通过iso14229协议进行传输的提取拼接原理图;
图4中示出了根据本申请实施例的用于车内ecu的安全访问方法的原理流程图;
图5中示出了根据本申请实施例的用于车内ecu的安全访问系统的结构示意图;
图6中示出了根据本申请实施例的用于车内ecu的安全访问设备的结构示意图。
具体实施方式
在实现本申请的过程中,发明人发现传统车内ecu安全访问算法根据iso14229-27服务要求,虽然黑客无法获取seed-key算法,但并没有限制获取seed次数,并且由于seed是可重复使用的伪随机数,因此采用固定时间循环碰撞获取访问seed和key,便可以获得统计特性,进而破解算法的可能性和成功率非常高。因此,现有的车内ecu处于很大的安全隐患中。
因此,为满足在车联网环境中汽车电子系统的一系列网络安全要求,构建车辆信息安全网络架构,加固ecu信息安全体系,解决传统ecu安全访问策略存在的漏洞隐患,本申请提出一种用于ecu安全访问的短消息动态解锁机制,运用有效的安全机制提供ecu数据防护。
具体的,本发明的用于车内ecu的安全访问方法、系统及存储介质,接收上位机发送的密钥种子第n次请求指令;通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;接收上位机根据密钥种子得到的第一消息认证码;根据密钥种子得到第二消息认证码;对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
本申请上位机与ecu分别基于真实随机数,并将访问次数结合真实随机数作为密钥种子,然后获得两个消息认证码进行认证对比,使访问机制更加安全,保证了ecu与其他设备通讯访问机制的完整性、时效性和真实性,运用有效的安全机制和限制措施提供ecu访问防护。解决了现有ecu安全访问策略存在的安全漏洞隐患的问题。
本申请替代传统静态安全访问算法,实现基于分组加密认证消息码的短消息安全访问机制和动态解锁方式,同时采取措施限制了安全访问总次数,提高了安全防护能力。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例1
图1中示出了根据本申请实施例的用于车内ecu的安全访问方法的步骤示意图。
如图1所示,本申请实施例的用于车内ecu的安全访问方法,具体包括以下步骤:
s101:接收上位机发送的密钥种子第n次请求指令;n为大于等于1的整数。
s102:通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机。
s103:接收上位机根据密钥种子得到的第一消息认证码。
具体的,上位机消息认证码模块根据密钥种子,提取上位机密钥数组中相对应的第一密钥,根据第一密钥以及密钥种子,得到第一消息认证码。
s104:根据密钥种子得到第二消息认证码。
具体的,ecu消息认证码模块根据密钥种子,提取ecu密钥数组中相对应的第二密钥,根据第二密钥以及密钥种子,得到第二消息认证码。
在本申请实施方式中,s103和s104步骤中分别提到的上位机密钥数组与ecu密钥数组为预先存储的相同数字序列。
相应的,
s103中,具体包括:上位机消息认证码模块根据密钥种子中访问次数,搜索上位机密钥数组相应位置的数字或数组,将数字或数组作为第一密钥;根据第一密钥以及密钥种子,通过cmac算法得到第一消息认证码;
s104中,具体包括:ecu消息认证码模块根据密钥种子中访问次数,搜索ecu密钥数组相应位置的数字或数组,将数字或数组作为第二密钥;根据第二密钥以及密钥种子,通过cmac算法得到第二消息认证码。
最后通过s105将s103和s104步骤中的两个消息认证码的对比。具体的,对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
在本申请一些实施方式中,上位机根据密钥种子得到的第一消息认证码,还包括:根据第一密钥,通过密钥衍生算法,得到第一衍生子密钥;根据密钥种子得到第二消息认证码,还包括:根据第二密钥,通过密钥衍生算法,得到第二衍生子密钥。
以上的第一衍生子密钥与第二衍生子密钥用于下次第n 1次访问时,分别替代第一密钥以及第二密钥,用于分别计算第一消息认证码以及第二消息认证码。
即,对比第一消息认证码以及第二消息认证码之后,若两个消息认证码不一致,则重复之前步骤,若第n 1次得到的两个消息认证码仍不一致,则判定访问拒绝。
具体的,如图2所示,对比第一消息认证码以及第二消息认证码之后,若两个消息认证码不一致,则具体进行以下步骤:
s106:接收上位机发送的密钥种子第n 1次请求指令;
s107:通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;
s108:接收上位机根据密钥种子以及第一衍生子密钥得到的第三消息认证码;
s109:根据密钥种子以及第二衍生子密钥得到第四消息认证码;
s110:对比第三消息认证码以及第四消息认证码,若两个消息认证码一致,则判定访问通过。
图3中示出了根据本申请实施例中mac消息认证码通过iso14229协议进行传输的提取拼接原理图。
由于iso14229协议数据格式字节格式要求,128比特长度mac无法完全通过协议发送,本实施例通过截取mac部分信息为作为短消息发送以满足协议要求,如图3所示,具体的:
在根据第一密钥以及密钥种子,通过cmac算法得到第一消息认证码,具体包括以下提取拼接步骤:
1)根据第一密钥以及密钥种子,通过cmac算法得到128比特mac码;
2)将128比特mac码顺序平均分为第一mac子码、第二mac子码、第三mac子码、以及第四mac子码;每一个mac子码又顺序平均分为第一字节、第二字节、第三字节以及第四字节;
3)提取第一mac子码的第一字节作为第一消息认证码的第一字节,提取第二mac子码的第二字节作为第一消息认证码的第二字节,提取第三mac子码的第三字节作为第一消息认证码的第三字节,提取第四mac子码的第四字节作为第一消息认证码的第四字节。最后形成满足iso14229协议格式要求的32比特mac消息认证码,并将32比特消息认证码作为第一消息认证码从上位机传输至ecu。
图4中示出了根据本申请实施例的用于车内ecu的安全访问方法的原理流程图。
进一步说明本申请实施例的用于车内ecu的安全访问方法,如图4所示,本实施例限定总访问次数为两次,当第二次访问时,对比上位机的消息认证码与ecu的消息认证码,仍然不一致时,则拒绝访问。
具体步骤如下:
一、当ecu与上位机进行安全访问服务时,上位机向ecu发送第一次访问请求,即密钥种子seed请求命令。
二、ecu端调用硬件加密模块hsm(hardwaresecuritymodule)模块,利用真实随机数发生器生成一组随机数联合当前驾驶循环访问次数n,作为seed[n]发送给上位机,此时n为1。并且在可擦可编程只读存储器eeprom中存储安全访问次数n(从1开始存储),跳转到下一步骤。
三、上位机根据访问次数1,从上位机密钥数组的第一个位置选取一个或多个数字作为上位机的第一密钥k*,根据第一密钥k*与接收的密钥种子seed[n],通过cmac算法进行计算得到第一消息认证码mac1*,并发送给ecu。同时,根据密钥衍生算法由第一密钥k*生成衍生子密钥k1*、k2*,跳转到下一步骤。
四、ecu根据访问等级不同,根据访问次数1,从硬件加密模块密钥内存,即从ecu密钥数组的第一个位置选取一个或多个数字作为上位机的第二密钥k;然后,根据第二密钥k与密钥种子seed[n],通过cmac算法计算得到第二消息认证码mac1。同时,根据密钥衍生算法由k生成衍生子密钥k1、k2,然后跳转到下一步骤。
五、ecu负责仲裁对比mac1和mac1*,若一致,则判定访问通过,跳转到结束。反之,对比不一致,要求安全访问时则进入二次计算,跳转至下一步骤,执行图4中的虚线框部分。
六、此时mac1和mac1*不一致,安全访问次数为n 1,即2,ecu端调用随机数seed[n 1]作为第二次密钥种子发送给上位机,跳转下一步骤。
七、当访问次数为n 1时,ecu端根据衍生子密钥k1以及密钥种子seed[n 1],通过cmac算法计算mac2;
同时,上位机应与ecu计算保持一致,上位机根据衍生子密钥k1*以及密钥种子seed[n 1],通过cmac算法计算mac2*,发送给ecu,跳转下一步骤。
八、ecu负责仲裁对比mac2和mac2*,对比一致判定访问通过,跳转到结束。反之,拒绝上位机服务。
本申请实施例限制当前驾驶循环只允许连续访问2次,启动访问延时机制,回复负响应。
采用本申请实施例中的用于车内ecu的安全访问方法,接收上位机发送的密钥种子第n次请求指令;通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;接收上位机根据密钥种子得到的第一消息认证码;根据密钥种子得到第二消息认证码;对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
本申请上位机与ecu分别基于真实随机数,并将访问次数结合真实随机数作为密钥种子,然后获得两个消息认证码进行认证对比,使访问机制更加安全,保证了ecu与其他设备通讯访问机制的完整性、时效性和真实性,缩短黑客随机碰撞seed次数,防御重放攻击和篡改攻击。解决了现有ecu安全访问策略存在的安全漏洞隐患的问题。
本申请可应用于所有具备硬件加密模块和数据安全需求的ecu,即使是不具备与服务器建立通讯能力的ecu,也能够通过本方案实现安全访问机制,提高ecu信息安全,降低黑客恶意访问和篡改攻击成功可能性。
具体的,本申请具有以下有益效果:
(1)本申请相比传统ecu的seed-key值静态属性的破解隐患,即一定采样时间范围内呈现时间规律性一一对应属性,本申请每次解锁ecu的seed-key值都是动态变化的不同值,实现安全访问动态解锁方式。
(2)本申请采用的mac密钥是双方共享,外部设备无法确认mac来源是发送方或是接收方,本方案实施单向mac验证过程,ecu计算结果只作为仲裁者去验证接收数据,ecu结果不向外发送,因此,解决了cmac算法存在的来源不确定性问题;
(3)本申请同样适用离线ecu或者不具备与服务器建立通讯能力的ecu且短消息适用于iso14229协议流程不需要更改。同时,数据传输过程中,秘钥和安全访问算法不会向外发送,保证密钥安全存储且物理空间独立,防止第三方监听盗用。
4)相比对称加解密算法的可逆性,本申请采用cmac算法不要求可逆性,因此无法根据已知消息数据推算对应密钥,逆向破解难度很大,大大提高了访问安全性。
5)本申请的密钥种子结合了当前驾驶循环访问次数,保证上位机与ecu运算因子实时一致,解决意外工况下的单方掉线导致上位机与ecu运算过程不同步问题。
6)通过限制当前驾驶循环访问总次数并且记录始终存储,访问次数累加参与算法,从而实现动态解锁方式。
实施例2
本实施例提供了一种用于车内ecu的安全访问系统,对于本实施例的用于车内ecu的安全访问系统中未披露的细节,请参照其它实施例中的用于车内ecu的安全访问方法的具体实施内容。
图5中示出了根据本申请实施例的用于车内ecu的安全访问系统的结构示意图。
如图5所示,本申请实施例的用于车内ecu的安全访问系统,具体包括上位机访问指令模块10、ecu硬件加密模块20、上位机消息认证码模块30、ecu消息认证码模块40以及ecu访问判定模块50。
具体的,
上位机访问指令模块10:用于发送密钥种子请求指令。
ecu硬件加密模块20:通过真实随机数发生器生成一组随机数,将随机数结合访问时的次数,作为密钥种子。
上位机消息认证码模块30:用于根据密钥种子,提取上位机密钥数组中相对应的第一密钥,根据第一密钥以及密钥种子,得到第一消息认证码。
具体的,上位机消息认证码模块根据密钥种子,提取上位机密钥数组中相对应的第一密钥,根据第一密钥以及密钥种子,得到第一消息认证码。
ecu消息认证码模块40:用于根据密钥种子,提取ecu密钥数组中相对应的第二密钥,根据第二密钥以及密钥种子,得到第二消息认证码。
具体的,ecu消息认证码模块40根据密钥种子,提取ecu密钥数组中相对应的第二密钥,根据第二密钥以及密钥种子,得到第二消息认证码。
在本申请实施方式中,上位机消息认证码模块30和ecu消息认证码模块40中分别提到的上位机密钥数组与ecu密钥数组为预先存储的相同数字序列。
相应的,
上位机消息认证码模块30中,具体用于:上位机消息认证码模块根据密钥种子中访问次数,搜索上位机密钥数组相应位置的数字或数组,将数字或数组作为第一密钥;根据第一密钥以及密钥种子,通过cmac算法得到第一消息认证码;
ecu消息认证码模块40中,具体用于:ecu消息认证码模块根据密钥种子中访问次数,搜索ecu密钥数组相应位置的数字或数组,将数字或数组作为第二密钥;根据第二密钥以及密钥种子,通过cmac算法得到第二消息认证码。
ecu访问判定模块50:用于对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
在本申请一些实施方式中,上位机根据密钥种子得到的第一消息认证码,还包括:根据第一密钥,通过密钥衍生算法,得到第一衍生子密钥;根据密钥种子得到第二消息认证码,还包括:根据第二密钥,通过密钥衍生算法,得到第二衍生子密钥。
以上的第一衍生子密钥与第二衍生子密钥用于下次第n 1次访问时,分别替代第一密钥以及第二密钥,用于分别计算第一消息认证码以及第二消息认证码。
即,对比第一消息认证码以及第二消息认证码之后,若两个消息认证码不一致,则重复访问步骤,若第n 1次得到的两个消息认证码仍不一致,则判定访问拒绝。
采用本申请实施例中的用于车内ecu的安全访问系统,上位机访问指令模块10接收上位机发送的密钥种子第n次请求指令;ecu硬件加密模块20通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;上位机消息认证码模块30根据密钥种子得到的第一消息认证码,并发送至ecu;ecu消息认证码模块40根据密钥种子得到第二消息认证码;ecu访问判定模块50对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
本申请上位机与ecu分别基于真实随机数,并将访问次数结合真实随机数作为密钥种子,然后获得两个消息认证码进行认证对比,使访问机制更加安全,保证了ecu与其他设备通讯访问机制的完整性、时效性和真实性,缩短黑客随机碰撞seed次数,防御重放攻击和篡改攻击。解决了现有ecu安全访问策略存在的安全漏洞隐患的问题。
本申请可应用于所有具备硬件加密模块和数据安全需求的ecu,即使是不具备与服务器建立通讯能力的ecu,也能够通过本方案实现安全访问机制,提高ecu信息安全,降低黑客恶意访问和篡改攻击成功可能性。
具体的,本申请具有以下有益效果:
(1)本申请相比传统ecu的seed-key值静态属性的破解隐患,即一定采样时间范围内呈现时间规律性一一对应属性,本申请每次解锁ecu的seed-key值都是动态变化的不同值,实现安全访问动态解锁方式。
(2)本申请采用的mac密钥是双方共享,外部设备无法确认mac来源是发送方或是接收方,本方案实施单向mac验证过程,ecu计算结果只作为仲裁者去验证接收数据,ecu结果不向外发送,因此,解决了cmac算法存在的来源不确定性问题;
(3)本申请同样适用离线ecu或者不具备与服务器建立通讯能力的ecu且短消息适用于iso14229协议流程不需要更改。同时,数据传输过程中,秘钥和安全访问算法不会向外发送,保证密钥安全存储且物理空间独立,防止第三方监听盗用。
4)相比对称加解密算法的可逆性,本申请采用cmac算法不要求可逆性,因此无法根据已知消息数据推算对应密钥,逆向破解难度很大,大大提高了访问安全性。
5)本申请的密钥种子结合了当前驾驶循环访问次数,保证上位机与ecu运算因子实时一致,解决意外工况下的单方掉线导致上位机与ecu运算过程不同步问题。
6)通过限制当前驾驶循环访问总次数并且记录始终存储,访问次数累加参与算法,从而实现动态解锁方式。
实施例3
本实施例提供了一种用于车内ecu的安全访问设备,对于本实施例的用于车内ecu的安全访问设备中未披露的细节,请参照其它实施例中的用于车内ecu的安全访问方法或系统具体的实施内容。
图6中示出了根据本申请实施例的用于车内ecu的安全访问设备400的结构示意图。
如图6所示,用于车内ecu的安全访问设备400,包括:
存储器402:用于存储可执行指令;以及
处理器401:用于与存储器402连接以执行可执行指令从而完成运动矢量预测方法。
本领域技术人员可以理解,示意图6仅仅是用于车内ecu的安全访问设备400的示例,并不构成对用于车内ecu的安全访问设备400的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如用于车内ecu的安全访问设备400还可以包括输入输出设备、网络接入设备、总线等。
所称处理器401(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器401也可以是任何常规的处理器等,处理器401是用于车内ecu的安全访问设备400的控制中心,利用各种接口和线路连接整个用于车内ecu的安全访问设备400的各个部分。
存储器402可用于存储计算机可读指令,处理器401通过运行或执行存储在存储器402内的计算机可读指令或模块,以及调用存储在存储器402内的数据,实现用于车内ecu的安全访问设备400的各种功能。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据用于车内ecu的安全访问设备400使用所创建的数据等。此外,存储器402可以包括硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)或其他非易失性/易失性存储器件。
用于车内ecu的安全访问设备400集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机可读指令来指令相关的硬件来完成,的计算机可读指令可存储于一计算机可读存储介质中,该计算机可读指令在被处理器执行时,可实现上述各个方法实施例的步骤。
实施例4
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序;计算机程序被处理器执行以实现其他实施例中的用于车内ecu的安全访问方法。
本申请实施例中的用于车内ecu的安全访问设备及计算机存储介质,接收上位机发送的密钥种子第n次请求指令;通过真实随机数发生器生成一组随机数,将随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;接收上位机根据密钥种子得到的第一消息认证码;根据密钥种子得到第二消息认证码;对比第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
本申请上位机与ecu分别基于真实随机数,并将访问次数结合真实随机数作为密钥种子,然后获得两个消息认证码进行认证对比,使访问机制更加安全,保证了ecu与其他设备通讯访问机制的完整性、时效性和真实性,缩短黑客随机碰撞seed次数,防御重放攻击和篡改攻击。解决了现有ecu安全访问策略存在的安全漏洞隐患的问题。
本申请可应用于所有具备硬件加密模块和数据安全需求的ecu,即使是不具备与服务器建立通讯能力的ecu,也能够通过本方案实现安全访问机制,提高ecu信息安全,降低黑客恶意访问和篡改攻击成功可能性。
具体的,本申请具有以下有益效果:
(1)本申请相比传统ecu的seed-key值静态属性的破解隐患,即一定采样时间范围内呈现时间规律性一一对应属性,本申请每次解锁ecu的seed-key值都是动态变化的不同值,实现安全访问动态解锁方式。
(2)本申请采用的mac密钥是双方共享,外部设备无法确认mac来源是发送方或是接收方,本方案实施单向mac验证过程,ecu计算结果只作为仲裁者去验证接收数据,ecu结果不向外发送,因此,解决了cmac算法存在的来源不确定性问题;
(3)本申请同样适用离线ecu或者不具备与服务器建立通讯能力的ecu且短消息适用于iso14229协议流程不需要更改。同时,数据传输过程中,秘钥和安全访问算法不会向外发送,保证密钥安全存储且物理空间独立,防止第三方监听盗用。
4)相比对称加解密算法的可逆性,本申请采用cmac算法不要求可逆性,因此无法根据已知消息数据推算对应密钥,逆向破解难度很大,大大提高了访问安全性。
5)本申请的密钥种子结合了当前驾驶循环访问次数,保证上位机与ecu运算因子实时一致,解决意外工况下的单方掉线导致上位机与ecu运算过程不同步问题。
6)通过限制当前驾驶循环访问总次数并且记录始终存储,访问次数累加参与算法,从而实现动态解锁方式。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
1.一种用于车内ecu的安全访问方法,具体包括以下步骤:
接收上位机发送的密钥种子第n次请求指令;n为大于等于1的整数;
通过真实随机数发生器生成一组随机数,将所述随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;
接收所述上位机根据所述密钥种子得到的第一消息认证码;
根据所述密钥种子得到第二消息认证码;
对比所述第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
2.根据权利要求1所述的用于车内ecu的安全访问方法,其特征在于,所述上位机根据所述密钥种子得到的第一消息认证码,具体为:上位机消息认证码模块根据所述密钥种子,提取上位机密钥数组中相对应的第一密钥,根据所述第一密钥以及密钥种子,得到第一消息认证码;
所述根据所述密钥种子得到第二消息认证码,具体为:ecu消息认证码模块根据所述密钥种子,提取ecu密钥数组中相对应的第二密钥,根据所述第二密钥以及密钥种子,得到第二消息认证码。
3.根据权利要求2所述的用于车内ecu的安全访问方法,其特征在于,所述上位机密钥数组与ecu密钥数组为预先存储的相同数字序列;
其中,所述上位机消息认证码模块根据所述密钥种子,提取上位机密钥数组中相对应的第一密钥,根据所述第一密钥以及密钥种子,得到第一消息认证码,具体包括:
上位机消息认证码模块根据所述密钥种子中访问次数,搜索上位机密钥数组相应位置的数字或数组,将所述数字或数组作为第一密钥;根据所述第一密钥以及密钥种子,通过cmac算法得到第一消息认证码;
其中,ecu消息认证码模块根据所述密钥种子,提取ecu密钥数组中相对应的第二密钥,根据所述第二密钥以及密钥种子,得到第二消息认证码,具体包括:
ecu消息认证码模块根据所述密钥种子中访问次数,搜索ecu密钥数组相应位置的数字或数组,将所述数字或数组作为第二密钥;根据所述第二密钥以及密钥种子,通过cmac算法得到第二消息认证码。
4.根据权利要求2所述的用于车内ecu的安全访问方法,其特征在于,所述上位机根据所述密钥种子得到的第一消息认证码,还包括:根据所述第一密钥,通过密钥衍生算法,得到第一衍生子密钥;
所述根据所述密钥种子得到第二消息认证码,还包括:根据所述第二密钥,通过密钥衍生算法,得到第二衍生子密钥。
5.根据权利要求4所述的用于车内ecu的安全访问方法,其特征在于,所述对比所述第一消息认证码以及第二消息认证码之后,若两个消息认证码不一致,则重复之前步骤,若第n 1次得到的两个消息认证码仍不一致,则判定访问拒绝。
6.根据权利要求5所述的用于车内ecu的安全访问方法,其特征在于,所述对比所述第一消息认证码以及第二消息认证码之后,若两个消息认证码不一致,则具体进行以下步骤:
接收上位机发送的密钥种子第n 1次请求指令;
通过真实随机数发生器生成一组随机数,将所述随机数结合访问时的访问次数,作为密钥种子,并发送至上位机;
接收所述上位机根据所述密钥种子以及第一衍生子密钥得到的第三消息认证码;
根据所述密钥种子以及第二衍生子密钥得到第四消息认证码;
对比所述第三消息认证码以及第四消息认证码,若两个消息认证码一致,则判定访问通过。
7.根据权利要求3所述的用于车内ecu的安全访问方法,其特征在于,所述根据所述第一密钥以及密钥种子,通过cmac算法得到第一消息认证码,具体包括:
根据所述第一密钥以及密钥种子,通过cmac算法得到128比特mac码;
将所述128比特mac码顺序平均分为第一mac子码、第二mac子码、第三mac子码、以及第四mac子码;每一个mac子码又顺序平均分为第一字节、第二字节、第三字节以及第四字节;
提取第一mac子码的第一字节作为第一消息认证码的第一字节,提取第二mac子码的第二字节作为第一消息认证码的第二字节,提取第三mac子码的第三字节作为第一消息认证码的第三字节,提取第四mac子码的第四字节作为第一消息认证码的第四字节。
8.一种用于车内ecu的安全访问系统,其特征在于,具体包括:
上位机访问指令模块:用于发送密钥种子请求指令;
ecu硬件加密模块:通过真实随机数发生器生成一组随机数,将所述随机数结合访问时的次数,作为密钥种子;
上位机消息认证码模块:用于根据所述密钥种子,提取上位机密钥数组中相对应的第一密钥,根据所述第一密钥以及密钥种子,得到第一消息认证码;
ecu消息认证码模块:用于根据所述密钥种子,提取ecu密钥数组中相对应的第二密钥,根据所述第二密钥以及密钥种子,得到第二消息认证码;
ecu访问判定模块:用于对比所述第一消息认证码以及第二消息认证码,若两个消息认证码一致,则判定访问通过。
9.一种用于车内ecu的安全访问设备,其特征在于,包括:
存储器:用于存储可执行指令;以及
处理器:用于与所述存储器连接以执行所述可执行指令从而完成权利要求1-7任一项所述的用于车内ecu的安全访问方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序;计算机程序被处理器执行以实现如权利要求1-7任一项所述的用于车内ecu的安全访问方法。
技术总结