本发明属于乘用车的安全访问技术领域,涉及一种应用于外部诊断设备与乘用车内控制器安全进入的乘用车的两级安全访问系统及其访问方法。
背景技术:
目前,大多数乘用车的安全访问机制是外部诊断设备与乘用车通过一层安全访问,车内ecu通过比对外部诊断设备计算出来的密钥与自身计算的密钥,来判定外部诊断设备的合法性,进而决定是否执行安全解除的操作。这种只包含一层安全访问机制,存在很大安全风险,若安全算法或参数被破解,则乘用车ecu内部数据很容易被恶意修改。
技术实现要素:
本发明要解决的技术问题是提供一种乘用车的两级安全访问系统及其访问方法,该系统包括两个层级的安全访问,采用一级安全访问和二级安全访问联合使用的方法来保护乘用车内控制器的重要数据,可防止乘用车ecu内部数据被恶意修改。
为了解决上述技术问题,本发明的乘用车的两级安全访问系统包括车内ecu1的安全访问系统和外部诊断设备2的安全访问系统;所述车内ecu1的安全访问系统包括车内h(seed,mask)函数1-5和车内g(outcode,sc)函数1-7;车内ecu1在接收到外部诊断设备2的“解除第一级安全访问命令”时,车内h(seed,mask)函数1-5根据掩码mask和随机种子seed计算第一级安全访问密钥key-1;接收到外部诊断设备2的“解除第二级安全访问命令”时,车内g(outcode,sc)函数1-7根据输出密码outcode和外部诊断设备2发送的安全码sc计算第二级安全访问的输入密码incode-1;所述的外部诊断设备2包括设备h(seed,mask)函数2-2,sc=f(vin)函数2-4,设备g(outcode,sc)函数2-5;设备h(seed,mask)函数2-2根据掩码mask和随机种子seed计算第一级安全访问的密钥key-2;sc=f(vin)函数2-4根据车辆识别代码vin计算安全码sc;设备g(outcode,sc)函数2-5根据输出密码outcode1-6和安全码sc计算第二级安全访问的输入密码incode-2;车内ecu1将外部诊断设备2发送的第一级安全访问密钥key-2与车内h(seed,mask)函数1-5计算的第一级安全访问密钥key-1进行比对;若key-1=key-2,则判定第一级安全访问成功;若key-1≠key-2,则判定第一级安全访问失败;在判定第一级安全访问成功后,车内ecu1将外部诊断设备2发送的第二级安全访问的输入密码incode-2与车内ecu1的车内g(outcode,sc)函数2-5计算的第二级安全访问的输入密码incode-1进行比对;若incode-1=incode-2,则判定第二级安全访问成功;若incode-1≠incode-2,则判定第二级安全访问失败。
所述的车内ecu1还包括一级安全访问模块1-1,用于接收外部诊断设备2的“解除第一级安全访问命令”并给出随机种子seed。
所述的车内ecu1还包括二级安全访问模块1-2,用于接收外部诊断设备2的“解除第二级安全访问命令”并给出输出密码outcode。
所述的车内ecu1还包括车内第一级安全访问掩码mask存储模块1-3,用于存储掩码mask。
所述的外部诊断设备2还包括设备第一级安全访问掩码mask存储模块2-1,用于存储掩码mask。
所述的外部诊断设备2还包括车辆识别代码vin存储模块2-3,用于存储车辆识别代码vin。
所述的车内ecu1为车身控制系统(bcm)、发动机管理系统(ems)或者无钥匙进入/启动系统(peps)。
一种利用上述乘用车的两级安全访问系统进行两级安全访问的方法,包括下述步骤:
1)外部诊断设备2向车内ecu1发送“解除第一级安全访问”命令,请求随机种子seed;
2)车内ecu1的一级安全访问模块1-1在接收到“解除第一级安全访问命令”时,给出随机种子seed,将随机种子seed输入车内h(seed,mask)函数模块1-5,同时将随机种子seed返回给外部诊断设备;
3)外部诊断设备2的设备h(seed,mask)函数2-2将设备第一级安全访问掩码mask存储模块2-1给出的掩码mask和随机种子seed作为自变量,计算出第一级安全访问的密钥key-2,发送给车内ecu1;
4)车内ecu1将接收到的外部诊断设备2发送的第一级安全访问密钥key-2,与车内h(seed,mask)函数1-5计算的第一级安全访问密钥key-1进行比对;若key-1=key-2,则判定第一级安全访问进入成功,进入步骤5);若key-1≠key-2,则判定第一级安全访问失败,进入步骤13);两级安全访问结束;
5)外部诊断设备2的车辆识别代码vin存储模块2-3向车内ecu1发送车辆识别代码vin;
6)车内ecu1存储车辆识别号码vin;
7)外部诊断设备2通过sc=f(vin)函数2-4计算出安全码sc,并将安全码sc发送到车内ecu1的车内g(outcode,sc)函数2-5;
8)车内ecu1存储安全码sc;
9)外部诊断设备2向车内ecu1发送“解除第二级安全访问”命令,请求输出密码outcode;
10)车内ecu1将输出密码outcode返回给外部诊断设备2;
11)外部诊断设备2通过设备g(outcode,sc)函数2-5计算出第二级安全访问的输入密码incode-2并将其发送给车内ecu1;
12)车内ecu1接收到外部诊断设备2发送的第二级安全访问的输入密码incode-2,将其与车内ecu1的车内g(outcode,sc)函数2-5计算的第二级安全访问的输入密码incode-1进行比对。若incode-1=incode-2,则判定第二级安全访问进入成功;若incode-1≠incode-2,则判定第二级安全访问失败;
13)安全访问结束。
本发明的有益效果:
本发明采用一级安全访问和二级安全访问联合使用的方法来保护乘用车内控制器的重要数据,可防止乘用车ecu内部数据被恶意修改。
附图说明:
下面结合附图和具体实施方式对本发明作进一步详细说明。
图1为本发明的系统连接组成图。
图2为乘用车的两次安全访问方法流程图。
图中:
1、车内ecu;1-1.一级安全访问模块;1-2.二级安全访问模块;1-3.车内第一级安全访问掩码mask存储模块;1-4.随机种子seed;1-5.车内h(seed,mask)函数;1-6.车内输出密码outcode;1-7.车内g(outcode,sc)函数;
2.外部诊断设备;2-1.设备第一级安全访问掩码mask存储模块;2-2.设备h(seed,mask)函数;2-3.车辆识别代码vin存储模块;2-4.sc=f(vin)函数;2-5.设备g(outcode,sc)函数。
具体实施方式
如图1所示,本发明的乘用车的两级安全访问系统包括车内ecu1的安全访问系统和外部诊断设备2的安全访问系统;外部诊断设备2与车内ecu1物理连接;外部诊断设备2与车内ecu1通过诊断命令,解除第一级安全访问后,才可以进行第二级安全访问,进而可以对车内ecu1数据进行修改。该方案不支持直接进行第二级安全访问。
所述车内ecu1的安全访问系统包括一级安全访问模块1-1,二级安全访问模块1-2,车内第一级安全访问掩码mask存储模块1-3,车内h(seed,mask)函数1-5,车内g(outcode,sc)函数1-7;一级安全访问模块1-1在接收到外部诊断设备2的“解除第一级安全访问命令”时,可以给出随机种子seed1-4;车内h(seed,mask)函数1-5将掩码mask和随机种子seed1-4作为自变量,计算第一级安全访问密钥key-1;二级安全访问模块1-2接收到“解除第二级安全访问命令”时,可以给出输出密码outcode1-6;车内g(outcode,sc)函数1-7将输出密码outcode1-6和外部诊断设备2发送的安全码sc作为自变量,计算第二级安全访问的输入密码incode-1。
所述的外部诊断设备2包括设备第一级安全访问掩码mask存储模块2-1,设备h(seed,mask)函数2-2,车辆识别代码vin存储模块2-3,sc=f(vin)函数2-4,设备g(outcode,sc)函数2-5;设备h(seed,mask)函数2-2将掩码mask和随机种子seed1-4作为自变量,计算第一级安全访问的密钥key-2;sc=f(vin)函数2-4将车辆识别代码vin作为自变量计算安全码sc;设备g(outcode,sc)函数2-5将输出密码outcode1-6和安全码sc作为自变量,计算第二级安全访问的输入密码incode-2。
如图2所示,本发明的乘用车的两级安全访问方法具体如下:
1)外部诊断设备2向车内ecu1发送“解除第一级安全访问”命令,请求随机种子seed1-4;
2)车内ecu1的一级安全访问模块1-1在接收到“解除第一级安全访问命令”时,给出随机种子seed1-4,将随机种子seed1-4输入车内h(seed,mask)函数模块1-5,同时将随机种子seed1-4返回给外部诊断设备;
3)外部诊断设备2的设备h(seed,mask)函数2-2将设备第一级安全访问掩码mask存储模块2-1给出的掩码mask和随机种子seed1-4作为自变量,计算出第一级安全访问的密钥key-2,发送给车内ecu1;
4)车内ecu1接收到外部诊断设备2发送的第一级安全访问密钥key-2,与车内h(seed,mask)函数1-5计算的第一级安全访问密钥key-1进行比对;若key-1=key-2,则第一级安全访问进入成功,进入步骤5);若key-1≠key-2,则判定第一级安全访问失败,进入步骤;两级安全访问结束;
5)外部诊断设备2的车辆识别代码vin存储模块2-3向车内ecu1发送车辆识别代码vin;
6)车内ecu1存储车辆识别号码vin;
7)外部诊断设备2通过sc=f(vin)函数2-4计算出安全码sc,并将安全码sc发送到车内ecu1的车内g(outcode,sc)函数2-5;
8)车内ecu1存储安全码sc;
9)外部诊断设备2向车内ecu1发送“解除第二级安全访问”命令,请求输出密码outcode;
10)车内ecu1将输出密码outcode返回给外部诊断设备2;
11)外部诊断设备2通过设备g(outcode,sc)函数2-5计算出第二级安全访问的输入密码incode-2并将其发送给车内ecu1;
12)车内ecu1接收到外部诊断设备2发送的第二级安全访问的输入密码incode-2,与车内ecu1的车内g(outcode,sc)函数2-5计算的第二级安全访问的输入密码incode-1进行比对。若incode-1=incode-2,则判定第二级安全访问进入成功;若incode-1≠incode-2,则判定第二级安全访问失败;
13)安全访问结束。
实施例1
结合图1和图2,本发明的乘用车的两次安全访问方法在某车型上应用如下:
外部诊断设备2与车内ecu1物理连接,车内ecu1为车身控制系统(bcm)。两级安全访问成功实施例。方法具体如下:
1)外部诊断设备2向bcm发送“解除第一级安全访问”命令,请求随机种子seed;
2)bcm返回随机种子seed给外部诊断设备2;
3)外部诊断设备2通过设备h(seed,mask)函数计算出第一级安全访问的密钥key-2,发送给bcm;
4)bcm接收到外部诊断设备2发送的第一级安全访问的密钥key-2,与bcm内部车内h(seed,mask)函数计算的第一级安全访问密钥key-1进行比对,若key-1=key-2,则第一级安全访问进入成功;
5)外部诊断设备2向bcm发送车辆识别号码vin;
6)bcm存储车辆识别号码vin;
7)外部诊断设备2通过sc=f(vin)函数计算出安全码sc。外部诊断设备2向bcm发送安全码sc;
8)bcm存储安全码sc;
9)外部诊断设备2向bcm发送“解除第二级安全访问”命令,请求输出密码outcode;
10)bcm返回输出密码outcode给外部诊断设备2;
11)外部诊断设备2通过设备g(outcode,sc)函数计算出第二级安全访问的输入密码incode-2并将其发送给bcm;
12)bcm接收到外部诊断设备2发送的第二级安全访问的输入密码incode-2,与bcm内部的车内g(outcode,sc)函数计算的第二级安全访问的输入密码incode-1进行比对;若incode1=incode2,第二级安全访问进入成功。
两级安全访问成功,可以修改bcm内部数据。
实施例2
结合图1和图2,一种乘用车的两次安全访问方法在某车型上应用如下:外部诊断设备2与车内ecu1物理连接,车内ecu1为发动机管理系统(ems)。两级安全访问失败实施例(第一级安全访问失败)。方法具体如下:
1)外部诊断设备2向ems发送“解除第一级安全访问”命令,请求随机种子seed;
2)ems返回随机种子seed给外部诊断设备2;
3)外部诊断设备2通过h(seed,mask)函数计算出第一级安全访问的密钥key-2,发送给ems;
4)ems接收到外部诊断设备2发送的第一级安全访问的密钥key-2,与ems内部的车内h(seed,mask)函数计算的第一级安全访问密钥key-1进行比对。key-1不等于key-2,则密钥不匹配,一级安全访问失败。不能再进行二级安全访问,两级安全访问失败,不能修改ems内部数据。
实施例3
结合图1和图2,一种乘用车的两次安全访问方法在某车型上应用如下:外部诊断设备2与车内ecu1物理连接,车内ecu1为无钥匙进入/启动系统(peps)。两级安全访问失败实施例(第二级安全访问失败)。方法具体如下:
1)外部诊断设备2向peps发送“解除第一级安全访问”命令,请求随机种子seed;
2)peps返回随机种子seed给外部诊断设备2;
3)外部诊断设备2通过设备h(seed,mask)函数计算出第一级安全访问的密钥key-2,发送给peps;
4)peps接收到外部诊断设备2发送的一级安全访问的密钥key-2,与peps的车内h(seed,mask)函数计算的第一级安全访问密钥key-1进行比对。若key1=key2,则第一级安全访问进入成功;
5)外部诊断设备2向peps发送车辆识别号码vin;
6)peps存储车辆识别号码vin;
7)外部诊断设备2通过sc=f(vin)函数计算出安全码sc。外部诊断设备2向peps发送安全码sc;
8)peps存储安全码sc;
9)外部诊断设备2向peps发送“解除第二级安全访问”命令,请求输出密码outcode;
10)peps返回输出密码outcode给外部诊断设备2;
11)外部诊断设备2通过设备g(outcode,sc)函数计算出第二级安全访问的输入密码incode-2并将其发送给peps;
12)peps接收到外部诊断设备2发送的第二级安全访问的输入密码incode-2,与peps内部的车内g(outcode,sc)函数计算的第二级安全访问的输入密码incode-1进行比对。若incode-1不等于incode-2,第二级安全访问失败。两级安全访问失败,不能修改peps内部数据。