APP下载

一种电控单元安全访问的策略设计

2020-10-24钱亚容刘浩锐

汽车电器 2020年10期
关键词:密钥服务器实体

钱亚容, 刘浩锐, 韦 建

(1.东风商用车有限公司技术中心, 湖北 武汉 430056;2.东风汽车集团有限公司技术中心, 湖北 武汉 430058)

1 引言

随着现代汽车电子技术不断发展和进步,汽车变得更加智能和高效。充当汽车大脑的电控单元其硬件和软件设计越来越通用化和模块化,从而导致其软件的复杂度提高和迭代周期缩短,进而对ECU软件线下再编程和刷写有了更多的需求。如何保证ECU刷写安全和防止非法或恶意编程,其安全访问机制就显得尤为重要。

现有ECU安全访问技术中,一般遵循ECU向访问实体或者诊断工具发送密钥种子,访问实体或者诊断工具对密钥种子进行逻辑运算并得到密钥,并将其发送ECU,ECU将获得的密钥与对自己发送的密钥种子计算进行逻辑运算获得的密钥进行对比,相同则响应通过ECU安全访问,进入刷写步骤。其又分为固定询问和可变询问,固定询问是每次ECU发送的密钥种子是固定一样的,需要返回的密钥每次也是一样的,这种方式的缺点是太过于简单,非常容易被破解。可变询问就是ECU每次发送的密钥种子是不一样的,ECU和访问实体或者诊断工具通过相同的算法计算密钥,ECU得到访问实体或者诊断工具发送的密钥和自己计算的密钥进行比较,这种方法的缺点就是太过依赖算法的保密性,如果非法者通过创建模拟器模拟ECU的方法获得多组密钥种子和密钥用来破解该算法,就有可能被破解成功,给非法访问和恶意攻击留下了可能。

2 系统硬件组成

本文介绍的ECU安全访问系统包括:安全服务器unlock-Srv、访问实体client和电控单元ECU。其中unlockSrv和client通过Internet安全链路连接,client和ECU直接通过物理连接和使用符合DoIP/UDS/KWP2000等诊断协议数据流进行数据交互。系统组成示意图如图1所示。

安全服务器unlockSrv,用于解锁ECU,可以是售后安全服务器或者是OTA安全服务器,只有被unlockSrv认证过的client在安全的通信链路下可以访问其数据并进行交互,unlockSrv具备进行访问实体身份验证、数据验证和计算解锁数据。

图1 系统组成示意图

访问实体client,用于进行解锁ECU,可以为通过OBD接口和ECU进行连接的诊断工具,也可以是T-BOX或者其它车载电脑充当访问实体的通过车载总线和ECU连接,再通过4G/5G网络和unlockSrv进行交互,总之client需拥有访问unlockSrv的权限并且能够与之通过安全链路进行信息交互,能够向ECU发送请求指令来进行信息获取和软件刷写。

电控单元ECU具备两种状态,virgin状态和security状态,virgin状态下client可以跳过安全访问直接对ECU进行刷写,表现为ECU存储器用于存储零件号Ref字段、VIN字段、刷写计数器ProCntr等字段使用默认字节0xFF进行填充。security状态下client必须经过安全访问解锁ECU,才可以进行后续的刷写动作,例如车辆生产装配时在线上对ECU进行刷写后,ECU就从virgin状态被置为security状态,这时ECU存储器用于存储的Ref被置为真实零件号代码,VIN被置为对应的车辆VIN值,ProCntr被置为设计定义的值。ECU当然可以具备不同等级的安全访问,如level1=SIDLev1,level2=SIDLev2。相同ECU内置有一个初始安全种子矩阵发生器,用来产生初始安全种子IntSecSeed16。

3 安全访问豁免策略设计

考虑车辆装配生产过程中,对于ECU安全访问的特殊要求,首先主机厂可以在流程上要求供应商供给工厂使用的ECU零件必须为virgin状态,而供给售后使用的ECU必须为security状态。车辆在装配生产线上,需要对ECU进行刷写时,访问实体或者诊断工具首先需要检测ECU状 态, 若 为virgin状态,则直接跳过安全访问步骤执行ECU刷写,并在车辆终检之前,置ECU为security状态并执行写VIN操作,否则退出刷写,警告ECU状态非法。安全访问豁免流程图如图2所示。

图2 安全访问豁免流程图

当工厂对ECU进行下线刷写时,client需要检查刷写计数器字段,如若为默认值0xFF时,则ECU是virgin状态,client直接跳过安全访问步骤对ECU进行刷写,车辆到终检时,client置ECU刷写计数器为相应的值,如0x00,ECU进入security状态,并置最大刷写次数ProCntrMax标定参数为 0x7F,表示可以最多可以使用诊断工具刷写127次,就完成了车辆下线刷写程序。

4 安全访问整体策略设计

当车辆销售给用户后,需要对ECU软件进行升级或者需要更换新的ECU零件时,显然再刷写的ECU肯定是security状态,而更换的新零件通过管理流程要求供应商把ECU设置为security状态。这样售后车辆的ECU刷写就必须进行安全访问,从而可以用来防止非法访问和恶意刷写。

4.1 安全访问准备策略

如图3所示,首先,client和ECU及unlockSrv建立连接,client请求ECU进入默认会话,再请求进入编程会话;然后读取ECU零件号,如使用SID+DID=$22+$F187,并存储到client内存中;再读ProCntr,如使用SID=$22,DID=$0100,只有当ProCntr! =0xFF且ProCntr<=ProCntrMax进行下一步;读取VIN号,如使用SID=$22,DID=$F190,当VIN为空时说明ECU为新零件,进一步写VIN如使用SID=$2E,DID=$F190;再执行安全访问步骤和刷写ECU;最后置位ECU完成刷写。

设计上可以要求ProCntr==0xFF表示ECU状态为virgin,不符合OEM流程定义,诊断工具识别后警告或提醒操作员此ECU为非法零件。为保证ECU刷写寿命可靠定义标定参数ProCntrMax,如图3所示ProCntr>ProCntrMax,表示ECU刷写超过了刷写次数,不能进行刷写,需要更换零件。

图3 安全访问前状态检查流程

4.2 安全访问数据流设计

本文阐述的安全访问数据流向如下,unlockSrv、client和ECU在进行安全访问过程中,数据请求和响应的传递关系,如图4所示。client发起安全访问请求,首先请求种子SID=27+Lev;ECU收到后进行计算,计算步骤如图5所示,响应反馈种子67+Lev+Seed;client接收到种子后,对数据进行打包向unlockSrv请求解锁数据;unlockSrv接收到请求,通过计算获得解锁数据,计算过程如图6 所示,然后发送给client;client接收到解锁数据进行解包,将密钥发送给ECU,SID= 27+(Lev+1)+key;ECU接收到密钥和自己计算得到的密钥进行比对如果一致, 进 行 解锁,并写client指纹信息到存储器,给出肯定应答 67 +(Lev +1), 密钥核对过程如图7所示。

图4 安全访问数据流

图5 ECU生成种子的策略

图6 安全服务器计算秘钥的策略

图7 密钥核对策略

client接收到种子结合client的硬件信息 (如将其作为指纹信息FingerPrint) 对 其 进 行 打包,并对打包数据进行证书签名,如RqstData=SigA[Seed||FingerPrint] || CertA为打包签名后的请求数据,然 后 向unlockSrv 请 求unlockKey。 client 接 收 到RspdData,首先进行证书验证,再进行服务器检查;进一步,进行解包得到密钥;然后按照相应的诊断协议封装发送给ECU。

安全访问ECU端生成种子如下,ECU通过OEM定义的一种策略算法从SEED16提取IntSecSeed16,如循环差分算法IntSecSeed16 =DifCycAlg (SEED16),然后结合ECU的Ref和SIDLev得到安全种子数据,如SecSeedData= IntSecSeed16||Ref||SIDLev;再对SecSeedData进行静态加密获得种子Seed=F(SecSeedData) 并响应发送Seed给client;最后ECU按照加密算法计算出相应安全访问等级的安全密钥,如使用定义的哈希算法,SecKey=HASH (SecSeedData)。

安全服务器计算密钥的流程为:unlockSrv接收到Rqst-Data后,首先进行证书验证;然后进行指纹信息验证(client指纹信息必须在进行安全访问之前,unlockSrv已经对其进行了身份验证,也就是client指纹之前早已经录入到了unlockSrv中);再进行静态解密得到SecSeedData=F-1(Seed);最后unlockSrv从SecSeedData获取Ref信息和SIDLev后,明确安全算法和安全访问等级计算得到SecKey==HASH (SecSeedData),进一步,SecKey结合FingerPrint通过静态加密得到密钥Key=Q(SecKey||FingerPrint),并结合服务器地址unlockSrvMAC打包响应发送给client,RspdData= SigA [Key||unlockSrvMAC] ||CertA为响应数据。

密钥核对的过程为ECU接收到Key,对其进行静态解密得到SecKey和FingerPrint,再与在第2 步ECU 计算得到的SecKey进行比较,如果相等则说明安全访问成功,并向ECU存储器flash中写入FingerPrint,给出client肯定响应,否则给出否定响应。完成安全访问步骤,进行下一步刷写动作。

区别于早期的ECU安全访问机制和策略,本文描述的一种适用于车载电控单元的动态网络安全访问机制,对ECU解锁升级过程可以提供更加安全有效的方式来防止和避免通过破解用于ECU本地解锁算法而非法刷写ECU攻击车辆的行为。使用本策略密钥的获取提供了安全服务器对访问实体的鉴权,同时在不同安全等级下生成动态不唯一的种子和密钥,而且密钥的获取除了提供正确的种子还需要结合其它参数如签名信息、指纹信息,甚至还可以增加车辆信息、令牌信息等作为因子参与安全访问验证。

5 总结

本文提出一种电控单元安全访问的策略很好的解决了车辆生产过程中ECU安全访问步骤多、效率低的问题,同时强化了车辆售后过程中ECU安全访问策略容易被破解或实时性不强导致的整车安全性得不到充分保障的问题。整个策略兼容性强,实施方便,且可以根据OEM自身需要及时调整或者切换证书验证和算法变更。

猜你喜欢

密钥服务器实体
幻中邂逅之金色密钥
幻中邂逅之金色密钥
知识图谱的候选实体搜索与排序①
实体书店步入复兴期?
2018年全球服务器市场将保持温和增长
Android密钥库简析
2017实体经济领军者
关于推动实体书店经营发展的几点思考
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵