1.一种基于云端的车辆ECU身份认证方法,其特征在于,包括以下步骤:
S1,车辆V、内部ECU、外接ECU通过线下的安全渠道向云端进行注册,云端生成注册消息并返回至对应的车辆V、内部ECU、外接ECU中,同时云端将各车辆V、内部ECU、外接ECU的注册信息存储在云端数据库内,各车辆V、内部ECU、外接ECU完成注册;
内部ECU分为普通ECU和网关ECU两种;
S2,车辆V上电时或车辆V上新增外接ECU时或车辆V中更换内部ECU时,车辆V进行第一轮ECU身份认证:第一轮ECU身份认证包括车内身份认证和车外身份认证两个阶段,车辆V上所有的内部ECU、外接ECU都在当前车辆V的网关ECU处进行车内身份认证,若车内身份认证失败,则网关ECU向车辆V发送ECU异常的报文信息,若车内身份认证成功,则网关ECU向云端请求进行车外身份认证;若车外身份认证成功,即为第一轮ECU身份认证成功,则车辆V进行第二轮ECU身份认证,反之,第一轮ECU身份认证失败;
S3,车辆V进行第二轮ECU身份认证:车辆V的网关ECU生成包含当前车辆V上所有的内部ECU、外接ECU注册信息的第二轮身份认证消息,并将第二轮身份认证消息发送至云端进行验证,若验证失败,则云端向网关ECU发送ECU身份认证失败的报文信息;若验证通过,即为第二轮ECU身份认证成功,也即当前车辆V上所有的内部ECU、外接ECU身份认证成功;当车辆V再次上电时或车辆V上新增外接ECU时或车辆V中更换内部ECU时,则回到S2。
2.根据权利要求1所述的一种基于云端的车辆ECU身份认证方法,其特征在于,S1中还包括以下子步骤:
S11,车厂厂商在车辆V的安全存储介质、车辆V中的所有内部ECU的存储介质、云端数据库中都预置了哈希函数H;
车辆V通过车厂厂商向云端进行注册,即向云端发送第一注册请求A1:
A1={MT(A1)||VIN},
其中,VIN表示车辆V的车辆识别码,||为连接运算符,MT(A1)表示第一注册请求A1的消息类型标识符;
同时,车辆V中的所有内部ECU也通过车厂厂商向云端进行注册,即向云端发送第二注册请求A2:A2={MT(A2)||ID(in)||S(in)||VIN},其中,MT(A2)表示第二注册请求A2的消息类型标识符,ID(in)表示当前内部ECU的真名,S(in)表示当前ECU的类型为内部ECU;
外接ECU先向车厂厂商请求注册,若车厂厂商同意,则在外接ECU的存储介质中预置哈希函数H,外接ECU再通过车厂厂商向云端进行注册,即向云端发送第三注册请求A3:A3={MT(A3)||ID(out)||S(out)},其中,MT(A3)表示第三注册请求A3的消息类型标识符,ID(out)表示当前外接ECU的真名,S(out)表示当前ECU的类型为外接ECU;
S12,当云端收到第一注册请求A1后,从第一注册请求A1中提取出车辆识别码VIN、消息类型标识符MT(A1),将当前车辆识别码VIN与云端数据库内已有的信息进行比对,若云端数据库内已存在当前车辆识别码,则云端拒绝车辆V的注册,并向车辆V返回重复注册的报文信息;若云端数据库内不存在当前车辆识别码VIN,则云平台将当前车辆识别码VIN存储于云端数据库内,并向车辆V返回注册成功的报文信息,当前车辆V完成注册;
当云端收到第二注册请求A2后,先从第二注册请求A2中提取出当前内部ECU的真名ID(in)、当前ECU的类型S(in),将当前内部ECU的真名ID(in)与云端数据库内已有的信息进行比对,若云端数据库内已存在当前内部ECU的真名,则云端从第二注册请求A2中提取出当前内部ECU被安装车辆的车辆识别码VIN,与云端数据库内已存在的内部ECU真名所绑定的车辆识别码VIN*进行比对,若VIN与VIN*相同,则云端拒绝当前内部ECU的注册,并向当前内部ECU返回重复注册的报文信息;若VIN与VIN*不同,则云端拒绝当前内部ECU的注册,并向当前内部ECU返回注册异常的报文信息;若云端数据库内不存在当前内部ECU的真名ID(in),则云端生成第一验证码Q1、第二验证码Q2,并通过哈希函数H对ID(in)与Q2的连接运算结果进行计算得到对应的假名PID(in):PID(in)=H[ID(in)||Q2];
当云端收到第三注册请求A3后,从第三注册请求A3中提取出当前外接ECU的真名ID(out)、当前ECU的类型S(out),将当前外接ECU的真名ID(out)与云端数据库内已有的信息进行比对,若云端数据库内已存在当前外接ECU的真名,则云端向当前外接ECU返回重复注册的报文信息;若云端数据库内不存在当前外接ECU的真名ID(out),则云端生成第三验证码Q3、第四验证码Q4,并通过哈希函数H对ID(out)与Q4的连接运算结果进行计算得到对应的假名PID(out):PID(out)=H[ID(out)||Q4];
S13,云端将当前内部ECU的真名ID(in)、类型S(in)、第一验证码Q1、第二验证码Q2、对应的假名PID(in)与当前内部ECU被安装车辆的车辆识别码VIN绑定在一起后作为内部ECU的注册信息存储于云端数据库内,同时云端生成第一注册消息M1并返回当前内部ECU内:M1={MT(M1)||ID(in)||PID(in)||Q1},当前内部ECU完成注册,其中,MT(M1)表示第一注册消息M1的消息类型标识符;
云端将当前外接ECU的真名ID(out)、类型S(out)、第三验证码Q3、第四验证码Q4、对应的假名PID(out)绑定在一起后作为外接ECU的注册信息存储于云端数据库内,同时云端生成第二注册消息M2并返回当前外接ECU中:M2={MT(M2)||ID(out)||PID(out)||Q3},当前外接ECU完成注册,其中,MT(M2)表示第二注册消息M2的消息类型标识符;
若当前内部ECU为网关ECU时,则云端还会将与当前网关ECU被安装的车辆识别码VIN所绑定的所有内部ECU注册信息以及当前云端数据库内所有的外接ECU注册信息都打包发送至当前网关ECU内,网关ECU将各种注册信息存储于自身的安全存储介质中。
3.根据权利要求2所述的一种基于云端的车辆ECU身份认证方法,其特征在于,在S1中,还包括以下内容:当云端数据库内,当已完成注册的车辆V新增内部ECU的注册信息时,云端实时地将新增内部ECU的注册信息加密后发送至当前新增内部ECU所对应的车辆V的网关ECU内;当云端数据库内新增外接ECU的注册信息时,云端实时地将新增外接ECU的注册信息加密后发送至当前云端数据库中所存储的所有网关ECU内,即网关ECU拥有当前网关ECU被安装车辆中所有内部ECU的注册信息以及所有外接ECU的注册信息。
4.根据权利要求3所述的一种基于云端的车辆ECU身份认证方法,其特征在于,在S13后中还包括步骤S14:
S14,在云端数据库内,若已完成注册的车辆V新增内部ECU的注册信息时,将新增内部ECU的注册信息记为R1,云端在云端数据库内找到当前已完成注册的车辆识别码VIN所绑定网关ECU的注册信息,再从该网关ECU的注册信息中调取第一验证码Q1来生成第三注册消息M3并通过无线网络发送至对应的网关ECU中:M3={MT(M3)||Q1(R1)},其中,MT(M3)表示第三注册消息M3的消息类型标识符,Q1(R1)表示使用对应网关ECU的第一验证码Q1来对称加密新增内部ECU的注册信息R1;
当云端数据库内新增外接ECU的注册信息时,将新增外接ECU的注册信息记为R2,云端在云端数据库内找到当前所存储的所有的网关ECU的注册信息,再从各网关ECU的注册信息中调取第一验证码Q1来生成第四注册消息M4并通过无线网络发送至各对应的网关ECU中:M4={MT(M4)||Q1(R2)},
其中,MT(M4)表示第四注册消息M4的消息类型标识符,Q1(R2)表示使用对应网关ECU的第一验证码Q1来对称加密新增外接ECU的注册信息R2。
5.根据权利要求4所述的一种基于云端的车辆ECU身份认证方法,其特征在于,S2中还包括以下子步骤:
S21,车辆V上电时或车辆V上新增外接ECU时或车辆V中更换内部ECU时,车辆V上所有的普通ECU和外接ECU都先向网关ECU发送身份认证消息来进行车内身份认证:M5={MT(M5)||PID(in)||H(Q1)},M6={MT(M6)||PID(out)||H(Q3)},其中,M5表示车辆V内各普通ECU通过CAN总线向网关ECU所发的送身份认证消息,MT(M5)表示身份认证消息M5的消息类型标识符,H(Q1)表示通过哈希函数H对当前普通ECU中所存储的第一验证码Q1进行计算;M6表示车辆V内各外接ECU通过CAN总线向网关ECU所发送的身份认证消息,MT(M6)表示身份认证消息M6的消息类型标识符,H(Q3)表示通过哈希函数H对当前外接ECU中所存储的第三验证码Q3进行计算;
S22,网关ECU从接收到的身份认证消息M5中提取出各内部ECU对应的假名PID(in),网关ECU从接收到的身份认证消息M6中提取出各外接ECU对应的假名PID(out),网关ECU再在自身安全存储介质中调取与各内部ECU的假名PID(in)所绑定的第一验证码Q1*、与各外接ECU的假名PID(out)所绑定的第三验证码Q3*进行验证,若各内部ECU均满足H(Q1*)=H(Q1),且各外接ECU也均满足H(Q3*)=H(Q3),则车内身份认证成功,反之,车内身份认证失败,网关ECU向车辆V发送ECU异常的报文信息;
车内身份认证成功后,网关ECU生成车外身份认证消息M7并发送至云端:M7={MT(M7)||PIDg(in)||H(Q1g)},其中,MT(M7)表示车外身份认证消息M7的消息类型标识符,PIDg(in)表示当前网关ECU的假名,各个内部ECU的假名PID(in)中包含当前网关ECU的假名PIDg(in),Q1g表示当前网关ECU的第一验证码,各个内部ECU的第一验证码Q1中包含当前网关ECU的第一验证码Q1g,H(Q1g)表示通过哈希函数H对当前网关ECU的第一验证码Q1g进行计算;
S23,云端接收到的车外身份认证消息M7后,从车外身份认证消息M7中抽取当前网关ECU假名PIDg(in)和H(Q1g),并在云端数据库内查找当前网关ECU假名PIDg(in)是否存在,若存在,则找到与当前网关ECU假名PIDg(in)相绑定的第一验证码副本Q1g*,并计算H(Q1g*)与H(Q1g)是否相同,若H(Q1g*)与H(Q1g)相同,则云端向对应的网关ECU发送车外身份认证成功的报文信息,对应的网关ECU接收车外认证成功的报文信息后,车辆V的第一轮ECU身份认证成功;
若云端未在云端数据库内查找到当前网关ECU假名PIDg(in),或是计算出的H(Q1g*)与H(Q1g)不相同,则云端向对应的网关ECU发送车外认证失败的报文信息。
6.根据权利要求5所述的一种基于云端的车辆ECU身份认证方法,其特征在于:若网关ECU在发送车外身份认证消息M7后的第一时间阈值Δt1内未接收到云端返回的报文信息,则当前网关ECU重新发送车外身份认证消息M7。
7.根据权利要求5所述的一种基于云端的车辆ECU身份认证方法,其特征在于,S3中还包括以下子步骤:
S31,第一轮ECU身份认证成功后,车辆V的网关ECU将安全存储介质内存储的所有的内部ECU、外接ECU的假名按照从大到小进行降序排列后,再按照当前各假名的排列顺序,从安全存储介质内调取与各假名所对应的第一验证码Q1或第三验证码Q3进行验证码排列;
S32,网关ECU按当前验证码排列的顺序,分别从各验证码中取两端的字节并从左至右顺序连接成随机数N,并生成第二轮身份认证消息M8发送至云端:M8={MT(M8)||PIDg(in)||H(N)},其中,MT(M8)表示第二轮身份认证消息M8的消息类型标识符,PIDg(in)表示当前网关ECU的假名,H(N)表示通过哈希函数H对随机数N进行计算;
S33,云端收到第二轮身份认证消息M8后,对第二轮身份认证消息M8进行验证:
云端从第二轮身份认证消息M8中提取出网关ECU的假名PIDg(in),并在云端数据库内调取与当前网关ECU假名PIDg(in)所绑定的、包括当前网关ECU在内的所有内部ECU的假名PID´(in)以及对应的第一验证码Q1´,同时云端从当前云端数据库内调取所有外接ECU的假名PID´(out)以及对应的第三验证码Q3´;云端将提取出的假名PID´(in)、PID´(out)按照从大到小进行降序排列后,再按照当前各假名的排列顺序,来排列各假名所对应的第一验证码Q1´或第三验证码Q3´,再从各验证码中取各验证码两端的字节并从左至右顺序连接成随机数N´后,计算H(N´),并判断H(N´)与云端从第二轮身份认证消息M8中提取出的H(N)是否相同,若不相同,则验证失败,云端向网关ECU发送ECU身份认证失败的报文信息,若相同,即验证通过,第二轮ECU身份认证成功,当前车辆V上所有的内部ECU、外接ECU都通过了身份认证。
8.一种基于云端的车辆ECU通信方法,其特征在于,包括以下步骤:
步骤1,车辆V启动上电,或车辆V上新增外接ECU,或车辆V中更换内部ECU,当前车辆V上所有的ECU进行身份认证,本步骤中的身份认证方法为如权利要求7所述的一种基于云端的车辆ECU身份认证方法;
步骤2,当前车辆V上所有的ECU通过身份认证后,车辆V进行车内网通信和车外网通信,车内网通信:车载中央处理系统和当前车辆V上所有的ECU之间均通过CAN总线进行以明文的消息形式进行通信交互;
车外网通信:当前车辆V上的普通ECU和外接ECU采集行车数据,并通过CAN总线进行以明文的消息形式发送至网关ECU,或通过CAN总线进行以明文的消息形式传送至车载中央处理系统内,车载中央处理系统对行车数据进行处理后再通过CAN总线以明文的消息形式发送至网关ECU处,网关ECU与云端之间进行加密通信;
步骤3,车辆V断电,当前车辆V的车内网通信和车外网通信均停止,直至下次车辆V上电,或车辆V上新增外接ECU,或车辆V中更换内部ECU时,回到步骤1。
9.根据权利要求8所述的一种基于云端的车辆ECU通信方法,其特征在于,在步骤2中,网关ECU与云端之间进行加密通信具体包括以内容:当网关ECU向云端发送消息时:
步骤2a,网关ECU接收当前车辆V上的各ECU和车载中央处理系统传送来的数据,并将这些数据记为D1,网关ECU将收到数据D1的时刻记为第一时间戳t1,生成第一通信消息M9后发送至云端:M9={MT(M9)||PIDg(in)||Q1g(D1)||t1},其中,MT(M9)表示第一通信消息M9的消息类型标识符,PIDg(in)表示当前网关ECU的假名,Q1g表示当前网关ECU的第一验证码,Q1g(D1)表示使用Q1g来对称加密数据D1;
步骤2b,云端将接收第一通信消息M9的时刻记为第二时间戳t2,并从第一通信消息M9中提取出第一时间戳t1,若第二时间戳t2和第一时间戳t1之间的时间差大于设定的第二时间阈值Δt2,则云端判定第一通信消息M9无效,将第一通信消息M9丢弃;
若第二时间戳t2和第一时间戳t1之间的时间差小于等于设定的第二时间阈值Δt2,则判定第一通信消息M9有效;云端再从第一通信消息M9内提取出网关ECU的假名PIDg(in)和Q1g(D1),若当前云端数据库内不存在当前网关ECU的假名PIDg(in),则云端判定第一通信消息M9不合法,将第一通信消息M9丢弃,否则,云端根据当前网关ECU的假名PIDg(in)在当前云端数据库内调取对应绑定的第一验证码,并使用当前第一验证码对称解密Q1g(D1)后得到数据D1;
当云端向网关ECU发送消息时:
步骤2a’,云端向网关ECU发送第二通信消息M10至网关ECU:M10={MT(M10)||PIDg(in)||Q1g(D2)||t3},其中,MT(M10)表示第二通信消息M10的消息类型标识符,PIDg(in)表示网关ECU的假名,D2表示云端生成的数据内容,第三时间戳t3表示云端生成数据D2的时刻,Q1g表示假名为PIDg(in)的网关ECU所对应的第一验证码,Q1g(D2)表示使用Q1g来对称加密数据D2;
步骤2b’,网关ECU将接收第二通信消息M10的时刻记为第四时间戳t4,并从第二通信消息M10中提取出第三时间戳t3,若第四时间戳t4和第三时间戳t3之间的时间差大于设定的第三时间阈值Δt3,则判定第二通信消息M10有效;网关ECU再从第二通信消息M10内提取出假名PIDg(in)并判断是为自身的假名,若假名PIDg(in)为当前网关ECU自身的假名,则网关ECU再从第二通信消息M10中提取Q1g(D2)并使用自身的第一验证码进行对称解密后得到数据D2;
步骤2c’,网关ECU将数据D2通过CAN总线传送至当前车辆V上的对应ECU内或是通过CAN总线传送至车载中央处理系统内。
10.一种基于云端的车辆ECU通信系统,其特征在于,包括:
车辆上安装的普通ECU;
通过车辆外接接口挂载在CAN总线上的外接ECU;
车辆通信模块,包括网关ECU、CAN总线,用来接收普通ECU的数据或车辆处理模块的数据后,向云端通信模块发送信息,或是接收传输至车辆的信息;
车辆处理模块,搭载了车载中央处理系统,用来加解密车辆通信模块的信息,计算处理行车数据;
云端通信模块,用来将云端处理模块的信息发送出去,或是接收传输至云端的信息;
云端数据库,用来存储云端的信息和各种车辆、ECU的注册信息;
云端量子随机数发生器,用来生成第一验证码、第二验证码、第三验证码、第四验证码供云端处理模块调用;
云端处理模块,用来加解密云端通信模块的信息,计算处理云端的数据;
各模块、库被编程或配置以执行如权利要求9所述的一种基于云端的车辆ECU通信方法。