仿真技术在硬件加密技术的开发应用
2017-12-28徐伟卿裴飞飞LuYongXuWeiqingPeiFeifei
陆 泳,徐伟卿,裴飞飞 Lu Yong,Xu Weiqing,Pei Feifei
仿真技术在硬件加密技术的开发应用
陆 泳,徐伟卿,裴飞飞 Lu Yong,Xu Weiqing,Pei Feifei
(泛亚汽车技术中心有限公司,上海 200135)
采用与汽车诊断仪相配套的集成开发工具构建仿真运行模型,借助诊断仪软件提供的自动化脚本定义汽车ECU逻辑序列,从而实现对仿真模拟环境的精确构建。通过使用汽车ECU密钥仿真实现方法,可以获得由汽车诊断仪、仿真运行模型、加密单元等协同工作并最终由后者生成的密钥。
ECU;安全算法;仿真;接口程序
0 引 言
随着汽车工业迅猛发展,汽车上使用了大量ECU(Electronic Control Unit,电子控制模块),许多中高档轿车上采用了十几个甚至二十几个ECU。目前大多数ECU采用相互独立的硬件和软件组成的技术,不同软件匹配相应的硬件可适应不同要求的车辆系统,大大提高汽车的变型能力。为了避免对ECU数据软件的误更新和非授权数据访问及功能操作,通过CAN车辆总线网络层发送一系列指令序列即接口程序对ECU软件进行更新时,必须满足SAE J2186 车辆诊断数据连接安全性要求。也就是说,对应用于车辆上的电子模块,如果提供了数据软件刷新功能,那么数据安全性必须符合国家技术规范。
由于必须满足相关数据连接安全性的标准和规范,这在一定程度上给汽车ECU的功能开发带来不便。例如,在目前条件下实际搭建有待测类型ECU的真实测试环境,为开发人员完成各种测试工作(与ECU相关的诊断软件、维修软件中数据连结安全功能验证等);又如,由于用户权限问题致使部分工程技术人员在开发过程中无权对ECU进行访问、测试。这样不仅不便于快速定位并及时解决在ECU开发过程中面临的一些技术问题,而且容易成为研发、设计环节中的瓶颈,从而影响工作效率,延长开发周期,致使在人员、资金以及时间投入等方面造成相当大的浪费。
将电子模块仿真技术和软件刷新接口技术充分结合起来,使用汽车ECU密钥仿真实现方法,获得由汽车诊断仪、仿真运行模型、加密单元等协同工作并最终由后者生成的密钥。
1 ECU软件接口特性
1.1 ECU软件接口访问
在日常ECU数据刷新过程中,工程技术人员应用各个厂家提供的开发编程系统软件加载数据,通过运行接口软件,完成对ECU的程序更新。对于已售出的车辆,维修站技术人员采用厂家提供的维修编程软件,加载对应车型ECU的数据软件包进行数据刷新。两者的最大区别是,接口软件在开发编程系统中可以编辑和调试,而维修编程软件无法对接口软件进行任何编辑和调试。
与支持CAN总线的ECU刷新相关的操作指令基本都符合ISO 15752-2道路行驶车辆CAN总线诊断网络层规范的内容和要求,可以了解到ECU的数据软件刷新的步骤和指令。在对ECU数据软件更新其间,加密解锁操作是通过接口程序相关指令完成。这些指令操作必须遵循国家和汽车行业规范和标准。同时,只有对ECU解锁后,接口程序才能够顺利地将制定的数据文件刷新至ECU。
阐述一种ECM(Engine Control Module,发动机控制模块)加密原理:在加密控件中,选定具体算法号和种子号后,通过加密控件可以得到相对应的密匙。针对不同ECU供应商和不同功能应用情况,分配的安全算法号不一样。由安全算法号和内核程序可以生成足够多的种子号和密匙,从而在ECU制造时存储到特定的寄存器中,这是ECU设计开发的核心。当然,对于一般工程技术人员可以通过相关指令对ECU进行种子号请求,再通过加密控件将计算出的密匙发送给ECU,从而对ECU进行解锁。
相关程序接口如图1所示。
图1 接口程序访问原理
1.2 诊断仪的仿真技术
目前,工程开发用的汽车诊断仪基本功能包括集成诊断、节点/ECU仿真、数据获取、自动测试和车内通信网络监控等,同时支持CAN、LIN、K-line、J1850 VPW、ISO 9141、Keyword Protocol 2000等汽车行业普遍应用的协议。
诊断仪软件提供的脚本语言功能强大,简单易学。针对需要实现的自动化任务即仿真控制比较简单,可以选择脚本语言进行仿真控制编程。工程技术人员不需要具有任何编程语言基础也能完成自动化脚本的编写,只需要从列表中选择需要的语句。所编写的脚本运用诊断仪脚本模块定义ECU的逻辑序列,从而拥有一个可以工作的仿真ECU;因此,不需要编写C代码就能建立ECU模型和创建精确的仿真环境。
2 ECU接口仿真模型构造
汽车ECU密钥仿真实现方法步骤包括:
1)在计算机中构建并运行汽车ECU仿真模型;
2)将加密单元与计算机通讯连接,该加密单元与汽车ECU中用于生成密钥的加密控件具有相同的加密处理业务规则;
3)将汽车诊断仪与计算机和车载总线通讯连接,通过汽车诊断仪设定所需的安全算法号并向仿真模型发送信号请求种子号;
4)将安全算法号和从仿真模型反馈输出的种子号发送给加密单元,并由其生成与安全算法号和种子号相关联的密钥。
2.1 仿真系统硬件构造
仿真集成系统的硬件构造如图2所示。
图2 仿真集成系统架构
2.2 硬件设备联结
由图2可知,诊断仪A一端连接计算机USB接口,另一端按照具体技术接口特性,通常是计算机并行DB25的脚号进行定义。将电源脚和接地脚连接到开关电源正负极,CAN(Controller Area Network,控制器局域网络)总线脚通过双绞链线和符合J1962(Diagnostic Connector Standard,诊断连接器标准)的数据链路连接器DLC(Data Link Connector,数据链路接口)联结。
诊断仪B作为常规开发编程软件和测试对象的连接设备。由于针对的是支持CAN总线的ECU数据软件更新相关技术[1],根据目前普遍的要求,诊断仪必须支持SAE J2534-1编程应用程序接口规范要求,否则无法与开发编程软件进行正常的数据通讯。
2.3 接口程序软件流程
诊断仪软件主要用于仿真软件开发、调试和运行监控。在仿真软件开发前,首先需要明确仿真ECU的相关逻辑,应用诊断仪的数据获取和记录功能,对通过开发编程软件运行接口程序的正常ECU数据刷新进行信号和报文实时记录;接着对捕捉的报文进行解析,确定相关的程序流程图,明确需要模拟的ECU报文;最后利用诊断仪软件提供的图形化脚本环境,快速建立符合需求的逻辑指令集,从而模拟和仿真出ECU在数据软件更新中的报文。该方案应用诊断仪软件相应功能,通过报文记录,解析及脚本编辑,提供完整的ECU种子及进行相关通讯功能仿真。
接口程序开发编程软件用于接口软件的运行和监控,接口程序是符合诊断规范要求的一系列CAN总线指令,通过一般的文本编辑器可以对其进行编辑和修改;在对ECU进行数据软件刷新时,这些指令集将在开发编程软件或维修编程软件环境下自动运行。在数据传输过程中,对于运行接口程序的计算机和需要进行软件刷新的ECU而言,接口程序指令在发送后,根据指令接收方ECU反馈结果,接口程序进行相应程序跳转和执行。理论上,在符合国家和行业规范的要求下,接口程序相关数据处理流程和语法都有严格定义[2],通过文本编辑器打开接口程序,找到定义和调用安全算法号的语句,将相应的算法号修改为需要测试的数值即可。当实际运行接口程序时,开发编程软件对ECU的所有的指令操作和总线信息进行记录,同时也将相关ECU的种子号和调用新算法号产生的密匙记录下来。
ECU 仿真程序完全按照CAN总线软件刷新步骤进行仿真。开发编程软件指令发出是软件本身的设定,从仿真软件中得到正反馈,会进行下一步操作,反之,如果反馈信息不正确,会终止程序操作。根据这个特点,进行仿真软件流程设计和软件开发,具体流程如图3所示。总线唤醒和诊断设备在线步骤是保持上位机和ECU之间通讯,为确保上位机识别出被访问ECU的物理地址,需要反馈识别码;在进入ECU编程模式前,需要确保ECU状态正常,不受其他节点通讯干扰,需要清除ECU故障码和关闭CAN总线上其他所有节点的通讯,所以需要模拟清除ECU 内部故障码和关闭总线通讯节点使能的操作;接着反馈给上位机软件状态,确认ECU 是否刷新过;上位机会发送指令,让ECU进入编程模式后,请求ECU的种子号,然后工程技术人员输入种子号;最后上位机根据内部算法器和特定模块的算法号,计算出对应的密匙。
图3 接口程序仿真流程
3 仿真实现方法细则
汽车ECU密钥仿真实现方法包括如下步骤。
1)根据实际需要对ECU在计算机中构建仿真模型,用来模拟真实ECU的实际运行情形。
作为优选,可以采用与汽车诊断仪相配套的集成开发工具来构建仿真模型,集成开发工具通常功能强大、开发效率高并且运行稳定性好。通常,工程技术人员可以在不具备或者欠缺编程语言知识的背景下,借助例如诊断仪软件提供的自动化脚本来定义ECU的逻辑序列,从而实现对仿真模拟环境的精确构建。
2)将加密单元与计算机进行通讯连接。在现有技术中,通过设置在汽车ECU中的加密控件并根据所输入的安全算法号和种子号生成密钥,该加密处理过程由于涉及到电子模块设计开发的核心技术,所以对于一般工程技术人员完全不可见。加密单元被设置成与ECU中加密控件具有同样的加密处理业务规则实现与加密控件相同的密钥生成功能。加密单元为连接在计算机外设接口上的加密锁。
3)汽车诊断仪上的接口连接到计算机和车载总线上进行通讯。汽车诊断仪主要用于ECU仿真应用,通过USB接口连接到计算机上,并将车载总线接口通过双绞线连接到数据链路连接器上,通过并行接口DB25连接到供电装置上,接口连接如图1所示。
4)完成连接设置之后,由工程技术人员、测试人员或者维护人员等在内的使用者根据实际需要,通过汽车诊断仪设定所需的安全算法号,并与计算机进行通讯向已经在计算机上运行的ECU仿真模型请求种子号,等待接收反馈的相应种子号,通过仿真技术使得反馈输出过程与真实ECU的处理过程一致。
5)将安全算法号、反馈得到的种子号发送给加密单元,加密单元按照设定的加密处理规则并根据接收到的安全算法号、种子号生成相关联的密钥,这样通过与加密单元通讯,解析获得该密钥,如此便仿真实现汽车ECU密钥,不需要搭建真实ECU测试环境或者对ECU操作权限认定进行测试、验证等,可以非常方便地将解析获得的密钥应用到工作中,从而满足诸如SAE J2186等规范对于汽车诊断数据连接方面的安全性要求。
6)在汽车ECU密钥仿真实现中,在一个优选情形下,可以另外设置步骤记录得到的安全算法号、种子号和密钥中的一个或多个;或者显示得到的安全算法号、种子号和密钥中的一个或多个;又或者同时记录并显示得到的安全算法号、种子号和密钥中的一个或多个。通过以上步骤,能够更好地观测和使用这些数据。
4 结束语
针对工程技术人员所具备的技术背景和试验设备,利用诊断仪软件开发并运行仿真ECU脚本软件,通过ECU种子号,仿真ECU任意种子号;通过ECU接口程序中算法号,利用开发编程软件内部加密控件,直接运行仿真ECU接口程序,在开发编程软件的报文中,可以得到算法号和种子号所对应的密匙。本方案具备开发设计效率高、使用可靠、应用便捷、节省费用、降低调试工作量和难度等诸多优点。
[1] ENHANCED E/E DIAGNOSTIC TEST MODES:SAE J2190-1993[S].
[2]罗峰,孙泽昌. 汽车CAN总线系统原理、设计与应用[M]. 北京:电子工业出版社,2010.
2017-07-31
1002-4581(2017)06-0012-05
U467.2:TP311
A
10.14175/j.issn.1002-4581.2017.06.004