1.一种基于区块链技术的CAN总线报文的抗攻击方法,其特征在于,所述基于区块链技术的CAN总线报文的抗攻击方法对区块链中生成的账本进行改进,生成一个固定长度的密码本并对密码本实时更新;
所有ECU把每次监听到的仲裁域数据m1与密码本key进行加密处理得最新的密码本key,更新公式为:key=key⊕m1;在发送报文前,利用最新的密码本key进行填充到64bits得到key64;然后对数据域信息m进行加密,得到加密后的数据域Ek(m),最后再发送出去,加密公式为:Ek(m)=key64⊕m;
ECU根据仲裁域中的标识符进行过滤,得到需要的报文后,进行报文解析,解析出得到加密的数据域Ek(m),同样对密码本key进行填充到64bits得到key64,再用key64进行解密,解密公式为:m=key64⊕Ek(m);接着再对解密后得到的数据m进行合法判断;若合法则执行该数据,若不合法则丢弃该数据。
2.如权利要求1所述的基于区块链技术的CAN总线报文的抗攻击方法,其特征在于,所述基于区块链技术的CAN总线报文的抗攻击方法具体包括:步骤一,汽车生产商对每个ECU的密码本进行随机性的初始化;
步骤二,每个ECU将记录每次监听得到最新的仲裁域数据id_data存放在ECU存放表中的第一个字段中,然后再将所述第一个字段中记录的新数据id_data与密码本key进行异或得到新的密码本存放在第二个字符key=key⊕id_data中,完成密码本更新过程;
步骤三,ECU发送数据之前,先将数据域的数据与密码本进行加密,接着再与数据域的数据进行异或得到加密后的数据域数E(data);
步骤四,经过步骤三得到加密后的数据域后,ECU再按照CAN报文格式进行封装然后根据CAN总线发送机制将报文发送到CAN总线上,并且此时ECU记录自己发送报文中的仲裁域数据,然后将该数据存放在ECU存放表中第一字段中,接着再按照步骤2)中的方法更新密码本,把更新的密码本存放在ECU存放表中第二个字段中;
步骤五,CAN总线中其它ECU对总线进行监听,发现总线上有数据在进行传输,则ECU先分析该数据域仲裁域标识符,接着进行步骤2)更新第一个字段id_data和更新密码本key;
然后判断该标识符是否在该ECU接收范围内,若标识符在该ECU接收范围内,则进行下一步;
步骤六,ECU解析出该报文中的数据域数据,此时得到的是加密后的数据,然后对加密数据进行解密操作,然后再用旧密码本与加密的数据进行异或操作,得到解密后的数据;
步骤七,接着判断解密后的数据是否合法;
步骤八,若判断为合法则记录当前的数据域数据,并更新到ECU存放表中的第三个字段中,接着ECU执行该数据。
3.如权利要求2所述的基于区块链技术的CAN总线报文的抗攻击方法,其特征在于,步骤三中,加密方式为:数据域按64bits进行处理,若长度不够,则前面填0补齐,密码本
12bits重复扩展6次,得到长为72bits的数据,取前64bits。
4.如权利要求2所述的基于区块链技术的CAN总线报文的抗攻击方法,其特征在于,步骤六中,对加密数据进行解密操作,操作过程为:先用第一个字段中的数据id_data与密码本key进行异或,key=key⊕id_data。
5.如权利要求2所述的基于区块链技术的CAN总线报文的抗攻击方法,其特征在于,步骤七中,判断方法为:判断得到解密后的数据与第三个字段中的数据之差是否在误差值之内,若是,则认为合法,否则认为不合法,不合法则不执行,并把该数据记录在ECU存放表中的第二个表中。
6.一种如权利要求1所述基于区块链技术的CAN总线报文的抗攻击方法的基于区块链技术的CAN总线报文的抗攻击系统。