CN111814139B - 汽车电机控制器程序安全加载***及方法 - Google Patents

汽车电机控制器程序安全加载***及方法 Download PDF

Info

Publication number
CN111814139B
CN111814139B CN202010624439.7A CN202010624439A CN111814139B CN 111814139 B CN111814139 B CN 111814139B CN 202010624439 A CN202010624439 A CN 202010624439A CN 111814139 B CN111814139 B CN 111814139B
Authority
CN
China
Prior art keywords
data
burning
self
verification
motor controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010624439.7A
Other languages
English (en)
Other versions
CN111814139A (zh
Inventor
张伟
李�浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Faraday Electric Drive Co ltd
Original Assignee
Shenzhen Faraday Electric Drive Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Faraday Electric Drive Co ltd filed Critical Shenzhen Faraday Electric Drive Co ltd
Priority to CN202010624439.7A priority Critical patent/CN111814139B/zh
Publication of CN111814139A publication Critical patent/CN111814139A/zh
Application granted granted Critical
Publication of CN111814139B publication Critical patent/CN111814139B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种汽车电机控制器程序安全加载***及方法,所述***包括烧录上位机、汽车电机控制器和CAN网络,所述电机控制器包含FLASH,烧录上位机发出烧录申请,所述电机控制器收到申请后按照安全验证逻辑进行交互,若握手失败,放弃此次升级;若握手成功,则烧录上位机分批次把目标程序加密后传输给所述电机控制器;所述电机控制器中加载逻辑进行处理,若数据帧解析正确,则加密后存入FLASH;若解析失败,则请求上位机重发。本发明保障了程序加载时的数据安全,加载过程确保数据不被截获分析,有效防止加载过程中被***第三方安全威胁性代码。

Description

汽车电机控制器程序安全加载***及方法
技术领域
本发明涉及新能源汽车技术领域,尤其涉及一种汽车电机控制器程序安全加载***及方法。
背景技术
近几年,汽车市场正逐步由传统燃油车转向新能源电动汽车,动力核心则与发动机改为“电机+电控”。其中,电控(全称电机控制器)是典型的嵌入式***,由嵌入式硬件和嵌入式软件组成。电机和嵌入式硬件是“死物”,一般没有损坏即可按照设计正常工作;而嵌入式软件可能在生产完成之后遭到破解,或者后期升级时植入后门程序,从而诱发汽车安全问题。
为解决汽车电机控制器程序安全性问题,常规做法有以下几点:
1、开启嵌入式硬件中主控芯片的安全功能,可以降低非相关技术人员直接通过JTAG/串口/CAN口等途径直接读取/修改内置程序风险;
2、独自开发芯片辅助加载程序(又称BootLoader),利用自有辅助加载程序可以按需求添加一些安全策略,如握手认证,数据校验等。可以解决非安全状态下直接开始烧录和数据链路层出错等问题;
3、引入芯片唯一识别码,用于程序加载、存储时数据加密,增大破解难度。
开启芯片自带的密码锁,可以一定程度上防止破解人员直接通过芯片自带的JTAG口等手段读取控制器程序,但芯片自带加密规则通用,应用范围广,已有大量专业人员/公司成功破解,仅需支付一点报酬即可获取可生产或分析的目标相关文件。
芯片识别码虽然唯一,但是固定,通过公有技术可以直接读取,如果简单用于程序加载和存储时加密,意味着密钥公开,破解难度较低。用“公开的”密钥用于程序的保护,专业人员可以直接在程序升级时,替换或增加某些危险性代码,也可以完全解析已破解获得的目标相关文件,得到所有技术细节。
发明内容
本发明实施例所要解决的技术问题在于,提供一种汽车电机控制器程序安全加载***及方法,以使保障程序加载时数据安全。
为了解决上述技术问题,本发明实施例提出了一种汽车电机控制器程序安全加载***,包括烧录上位机、汽车电机控制器和CAN网络,所述电机控制器包含FLASH,
烧录上位机发出烧录申请,所述电机控制器收到申请后按照安全验证逻辑进行交互,若握手失败,放弃此次升级;若握手成功,则烧录上位机分批次把目标程序加密后传输给所述电机控制器;
所述电机控制器中加载逻辑进行处理,若数据帧解析正确,则加密后存入FLASH;若解析失败,则请求上位机重发。
进一步地,烧录上位机发起烧录申请后,首先与电机控制器通过预设的应用场景B进行安全验证,通过后,再进行烧录操作,然后读取并分析烧录目标程序,将目标程序分为固定长度128位的多个片断,按照预设的应用场景BC计算目标程序校验;每次仅发送一个片断,发送前按照预设的应用场景BA对片断数据进行加密,然后组装为符合加载逻辑的完整数据帧,按照预设的应用场景BB对此完整数据帧进行校验计算;当前片断的发送包括完整数据帧和数据帧校验,发送完成后等待电机控制器回复;若回复成功,则进行下一片断发送;若回复失败,则再次触发当前片断发送;所有片断发送完成后,进行预设的应用场景BC校验,电机控制器回复校验成功,烧录完成;回复失败,则提示是否再次触发烧录申请。
进一步地,所述电机控制器接收到烧录上位机的烧录申请后,首先生成128位密钥和64位种子,然后按照预设的应用场景B进行安全验证;若验证通过,进入片断帧数据接收等待状态;验证不通过,清除相关数据退出此次升级;在正常升级过程时,完成当前片断帧数据接收后,判断是否为预设的应用场景BC校验帧,若不是则按照预设的应用场景BB进行当前帧数据校验;若是最后一帧,则按照预设的应用场景BC进行所有应用数据校验;若预设的应用场景BB校验不通过,则请求烧录上位机重发当前片断帧;校验通过,按照预设的应用场景BA进行数据解密,并按照预设的应用场景A对数据进行加密,之后存储到FLASH指定位置,当前片断帧处理完成,继续等待下一片断帧数据;预设的应用场景BC校验不通过,清除当前缓存数据,退出烧录,此次烧录失败;校验通过,此次烧录请求处理完成,置相应标志位,退出烧录。
进一步地,所述应用场景A:采用唯一码和自增码,再加其他固定元素组成总长为128位密钥,用于烧录到芯片内部FLASH存储时加密,采用预设的加密算法A;
所述应用场景B:采用唯一码Ⅱ、自增码Ⅱ和随机数组成的64位的种子,用于程序加载前的安全验证,采用预设的验证对接算法A和预设的验证对接算法B;
所述应用场景BA:唯一码Ⅱ连同随机数用于程序加载过程中单次传输数据中应用数据的加密,采用预设的加密算法B;
所述应用场景BB:唯一码Ⅱ连同自增码Ⅱ用于单次传输数据的整体校验,采用预设的数据校验算法A;
应用场景BC:自增码Ⅱ用于加载过程中所有传输数据的完整性校验,采用预设的数据校验算法B;
其中,自增码存放于电机控制器FALSH中,自增码在进行当次烧录前进行赋值,其赋值结果随机,且遵循以下公式k(t)=k(t-1)+A(random),其中,k(t)为自增码当次烧录时值,k(t-1)为自增码上次烧录时值,A(random)为随机整数,范围在1~10之间;
自增码Ⅱ为自增码进行伪装得到,且k2(t)=f(k(t)),其中,k2(t)为自增码Ⅱ当次值,f(k(t))为映射函数;
唯一码Ⅱ通过唯一码处理得到,SN2=f2(SN),其中SN为唯一码,SN2为唯一码Ⅱ,f2(SN)为映射函数。
进一步地,控制器收到烧录上位机烧录申请后,从FLASH中读取当前自增码k(t-1),按照k(t)=k(t-1)+A(random)公式生成当次自增码,并把当次自增码k(t)随同大量随机数写入到FLASH指定区域;按照公式k2(t)=f(k(t))生成自增码Ⅱ;生成随机数B(random),读取唯一码SN,按照公式SN2=f2(SN)生成唯一码Ⅱ;最后组装出128位密钥和64位种子,其中,128位密钥由SN+ k(t)+固定数据组成,64位种子由SN2+ k2(t)+ B(random)组成。
相应地,本发明实施例还提供了一种汽车电机控制器程序安全加载方法,包括:
步骤1:烧录上位机发出烧录申请,所述电机控制器收到申请后按照安全验证逻辑进行交互,若握手失败,放弃此次升级;若握手成功,则烧录上位机分批次把目标程序加密后传输给所述电机控制器;
步骤2:所述电机控制器中加载逻辑进行处理,若数据帧解析正确,则加密后存入FLASH;若解析失败,则请求上位机重发。
进一步地,步骤1中,烧录上位机发起烧录申请后,首先与电机控制器通过预设的应用场景B进行安全验证,通过后,再进行烧录操作,然后读取并分析烧录目标程序,将目标程序分为固定长度128位的多个片断,按照预设的应用场景BC计算目标程序校验;每次仅发送一个片断,发送前按照预设的应用场景BA对片断数据进行加密,然后组装为符合加载逻辑的完整数据帧,按照预设的应用场景BB对此完整数据帧进行校验计算;当前片断的发送包括完整数据帧和数据帧校验,发送完成后等待电机控制器回复;若回复成功,则进行下一片断发送;若回复失败,则再次触发当前片断发送;所有片断发送完成后,进行预设的应用场景BC校验,电机控制器回复校验成功,烧录完成;回复失败,则提示是否再次触发烧录申请。
进一步地,步骤2中,所述电机控制器接收到烧录上位机的烧录申请后,首先生成128位密钥和64位种子,然后按照预设的应用场景B进行安全验证;若验证通过,进入片断帧数据接收等待状态;验证不通过,清除相关数据退出此次升级;在正常升级过程时,完成当前片断帧数据接收后,判断是否为预设的应用场景BC校验帧,若不是则按照预设的应用场景BB进行当前帧数据校验;若是最后一帧,则按照预设的应用场景BC进行所有应用数据校验;若预设的应用场景BB校验不通过,则请求烧录上位机重发当前片断帧;校验通过,按照预设的应用场景BA进行数据解密,并按照预设的应用场景A对数据进行加密,之后存储到FLASH指定位置,当前片断帧处理完成,继续等待下一片断帧数据;预设的应用场景BC校验不通过,清除当前缓存数据,退出烧录,此次烧录失败;校验通过,此次烧录请求处理完成,置相应标志位,退出烧录。
进一步地,所述应用场景A:采用唯一码和自增码,再加其他固定元素组成总长为128位密钥,用于烧录到芯片内部FLASH存储时加密,采用预设的加密算法A;
所述应用场景B:采用唯一码Ⅱ、自增码Ⅱ和随机数组成的64位的种子,用于程序加载前的安全验证,采用预设的验证对接算法A和预设的验证对接算法B;
所述应用场景BA:唯一码Ⅱ连同随机数用于程序加载过程中单次传输数据中应用数据的加密,采用预设的加密算法B;
所述应用场景BB:唯一码Ⅱ连同自增码Ⅱ用于单次传输数据的整体校验,采用预设的数据校验算法A;
应用场景BC:自增码Ⅱ用于加载过程中所有传输数据的完整性校验,采用预设的数据校验算法B;
其中,自增码存放于电机控制器FALSH中,自增码在进行当次烧录前进行赋值,其赋值结果随机,且遵循以下公式k(t)=k(t-1)+A(random),其中,k(t)为自增码当次烧录时值,k(t-1)为自增码上次烧录时值,A(random)为随机整数,范围在1~10之间;
自增码Ⅱ为自增码进行伪装得到,且k2(t)=f(k(t)),其中,k2(t)为自增码Ⅱ当次值,f(k(t))为映射函数;
唯一码Ⅱ通过唯一码处理得到,SN2=f2(SN),其中SN为唯一码,SN2为唯一码Ⅱ,f2(SN)为映射函数。
进一步地,步骤2中,控制器收到烧录上位机烧录申请后,从FLASH中读取当前自增码k(t-1),按照k(t)=k(t-1)+A(random)公式生成当次自增码,并把当次自增码k(t)随同大量随机数写入到FLASH指定区域;按照公式k2(t)=f(k(t))生成自增码Ⅱ;生成随机数B(random),读取唯一码SN,按照公式SN2=f2(SN)生成唯一码Ⅱ;最后组装出128位密钥和64位种子,其中,128位密钥由SN+ k(t)+固定数据组成,64位种子由SN2+ k2(t)+ B(random)组成。
本发明的有益效果为:本发明保障了程序加载时的数据安全,加载过程确保数据不被截获分析,有效防止加载过程中被***第三方安全威胁性代码;本发明还保障了程序加载后的存储安全,避免出现专业人员可能直接绕过芯片逻辑读出FLASH内容,还原出程序内容的情况。
附图说明
图1是本发明实施例的汽车电机控制器程序加载***的结构示意图。
图2是本发明实施例的汽车电机控制器程序加载方法的流程图。
图3是本发明实施例加载操作时的烧录上位机逻辑流程图。
图4是本发明实施例加载操作时的烧录上位机安全场景示意图。
图5是本发明实施例加载操作时的电机控制器逻辑流程图。
图6是本发明实施例加载操作时的电机控制器安全场景示意图。
图7是本发明实施例加载操作时的密钥生成流程图。
图8是本发明实施例加载操作时的应用场景B的安全验证流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本发明作进一步详细说明。
本发明实施例中若有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,在本发明中若涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。
请参照图1,本发明实施例的汽车电机控制器程序加载***包括烧录上位机、汽车电机控制器和CAN网络。
其中,电机控制器重要特征为包含FLASH,本发明实施例把FLASH划分为辅助加载功能区和应用控制功能区,其中应用控制功能区又细分为一般存储区和加密存储区。部分电机控制器的芯片没有内置FALSH,程序需保存在外挂FLASH中,为实现本安全加载方法需要配合安全芯片使用。芯片从FLASH读取和向FALSH写入均通过安全芯片转接,最终存放到FLASH的数据均为加密处理后数据。
本发明实施例提到的自增码保存在辅助加载功能区的某个位置,整个区域为不可擦除区域。为防止破解对比方式提取自增码,每次更新写入时,会同时写入大量随机数。
本发明实施例的控制程序加载一般指应用控制功能区的更新。为了权衡快速性和安全性,加密存储只对约定存入加密存储区的数据进行,以下说明不再特意区分。
本发明实施例涉及的安全加载基本流程图如图2所示,电机控制器上电后,烧录上位机发出烧录申请,控制器收到申请后按照安全验证逻辑进行交互。若握手失败,放弃此次升级。若握手成功,则烧录上位机分批次把目标程序加密后传输给控制器,控制器中加载逻辑(即boot逻辑)进行处理。数据帧解析正确,则加密后存入FLASH;解析失败,则请求上位机重发。
下面分别从烧录上位机和电机控制器角度详细说明加载方案。
图3所示为加载过程中上位机侧逻辑流程图,首先上位机发起烧录申请,与控制器通过应用场景B进行安全验证,通过后,方可进行烧录操作。然后读取并分析烧录目标程序,将目标程序分为固定长度128位的多个片断,按照应用场景BC计算目标程序校验。每次仅发送一个片断,发送前需要按照应用场景BA对片断数据进行加密,然后组装为符合加载逻辑的完整数据帧,按照应用场景BB对此完整数据帧进行校验计算。当前片断的发送包括完整数据帧和数据帧校验,发送完成后等待控制器回复。若回复成功,则进行下一片断发送;若回复失败,则再次触发当前片断发送。所有片断发送完成后,进行应用场景BC校验,控制器回复校验成功,烧录完成;回复失败,则提示是否再次触发烧录申请。
图5所示为加载过程中控制器侧逻辑流程图,接收到上位机烧录申请后,首先生成128位密钥和64位种子(即seed),然后按照应用场景B进行安全验证。验证通过,进入片断帧数据接收等待状态;验证不通过,清除相关数据退出此次升级。正常升级过程时,完成当前片断帧数据接收后,判断是否为应用场景BC校验帧,即是否为最后一帧,不是则按照应用场景BB进行当前帧数据校验;是最后一帧,则按照场景23进行所有应用数据校验。应用场景BB校验不通过,请求烧录上位机重发当前片断帧;校验通过,按照应用场景BA进行数据解密,并按照应用场景A对数据进行加密,之后存储到FLASH指定位置,当前片断帧处理完成,继续等待下一片断帧数据。应用场景BC校验不通过,清除当前缓存数据,退出烧录,此次烧录失败;校验通过,此次烧录请求处理完成,置相应标志位,退出烧录。
图4和图6为加载操作时上位机侧和控制器侧的安全场景示意图,提炼了本方法在安全方面的关键点,确保安全状态进入加载、过程数据安全和已保存数据安全。其中所用加密算法可根据实际需求,权衡安全与效率,做出合适选择。以下仅作推荐,应用场景A可使用AES-128加密算法,应用场景B和应用场景BA可使用字节轮换且位混合简单加密算法,应用场景BB和应用场景BC可使用MD5校验算法。
本发明实施例的加载过程中密钥的产生的主要流程如图7所示。控制器收到上位机烧录申请后,从FLASH中读取当前自增码k(t-1),按照k(t)=k(t-1)+A(random)公式生成当次自增码,并把当次自增码k(t)随同大量随机数写入到FLASH指定区域。按照公式k2(t)=f(k(t))生成自增码Ⅱ。生成随机数B(random)。读取芯片唯一码SN,按照公式SN2=f2(SN)生成唯一码Ⅱ。此时所有密钥源码均已获得,最后组装出128位密钥和64位种子。128位密钥由“SN+ k(t)+固定数据”组成,64位种子由“SN2+ k2(t)+ B(random)”组成,先后顺序及组装完成后是否需要变异,具体工程时按需选择。需要强调的是,只要收到上位机烧录申请即进行密钥生成步骤,即使中途请求退出烧录或最终烧录失败,下次烧录均生成新的密钥。固定数据为任何128位常量均可,例0x2643 3832 7950 2884。
本发明实施例的应用场景B的安全验证逻辑主要流程如图8所示。上位机发起烧录后,会收到包括种子的数据,之后根据种子按照对接算法1和对接算法2进行双重验证。对接算法1为种子Key验证算法实施过程,即根据种子计算出对应key,发给控制器核对,以确认烧录上位机与电机控制器包含的加载逻辑一致。对接算法2步骤为发送随机数据X按照应用场景BA加密后数据,控制器收到后,按照“应用场景BA解密->应用场景A加密->应用场景A解密->应用场景BA加密”顺序处理后回发给上位机,上位机再按照应用场景BA进行解密得到数据Y,通过比较Y是否与X一致验证数据经过多次加密解密后是否还能保证其正确性。
本发明实施例为加强安全,增加破译难度,加密算法密钥组合引入芯片唯一识别码(简称“唯一码”或SN),烧录自增识别码(简称“自增码”),烧录握手随机数(简称“随机数”)三种元素。
其中唯一码为芯片固有属性,具有不可重复性,但可利用芯片公有技术直接读取。
其中自增码存放在芯片FALSH中不可擦除区域的某个位置,在嵌入式***生命周期唯一,但是不同控制器此值可能相同。自增码在进行当次烧录前进行赋值,其赋值结果随机,但遵循以下公式k(t)=k(t-1)+A(random)(k(t)为自增码当次烧录时值,k(t-1)为自增码上次烧录时值,A(random)为随机整数,范围在1~10之间)。
为避免自增码被从FLASH中破解对比读出,每次写入时会加入大量随机数。因为自增码有FLASH数据加密和加载时数据验证两种应用场景,故对自增码进行伪装得到自增码Ⅱ以满足应用需要,公式具体为k2(t)=f(k(t))(k2(t)为自增码Ⅱ当次值,f()为映射函数)。唯一码同理处理为唯一码Ⅱ,SN2=f2(SN)。
其中随机数B(random)为软件随机,每次发起软件烧录时随机生成,无法预测,但是大概率仍可出现相同数值。
以上三种码都有各自优点和缺陷,单独使用均无法确保安全可靠,本发明实施例根据不同应用场景可以通过搭配使用方式,堵住破解漏洞。
应用场景A,唯一码和自增码,再加其他固定元素组成总长为128位密钥,用于烧录到芯片内部FLASH存储时加密,采用加密算法A。加密算法A优选为AES128加密算法,为标准算法。
应用场景B,唯一码Ⅱ、自增码Ⅱ和随机数组成的64位的种子,用于程序加载前的安全验证,采用验证对接算法A和验证对接算法B。验证对接算法A:简单异或,如数据D^常量C;验证对接算法B:简单异或,如种子种子^常量C。
应用场景BA,唯一码Ⅱ连同随机数用于程序加载过程中单次传输数据中应用数据的加密,采用加密算法B。加密算法B采用简单替代密码。
应用场景BB,唯一码Ⅱ连同自增码Ⅱ用于单次传输数据的整体校验,采用数据校验算法A。数据校验算法A优选为CRC16校验算法。
应用场景BC,自增码Ⅱ用于加载过程中所有传输数据的完整性校验,采用数据校验算法B。数据校验算法B优选为CRC8校验算法。
应用场景A中用总长为128位密钥进行FALSH储存数据的加密,首先此密钥具备唯一性和不可预知性,甚至连开发人员都不知道当前具体值,完整密钥在之后的升级过程中也不会出现,其值在内部不断迭代。其次专业人员破解芯片FALSH,只能得到的加密后的数据,无法得到可用于具备同型号芯片其他硬件上的文件,暴力破解已无意义。
应用场景B,采用种子key方式进行安全验证,可以确保控制器当前是处于安全状态,可进行升级操作。通过对接算法1和对接算法2的双重验证,可以做到控制器与升级软件的匹配验证,防止烧录错误程序,及其他不合法途径的升级申请。
应用场景BA,可以确保烧录过程数据的多样性,即使烧录相同程序,每次数据链路上的数据也不同,避免被外挂监控设备通过获取升级数据流形式破解。
应用场景BB和23,可以确保过程传输数据的一致性,没有被中途修改,也没有因为硬件干扰造成数据错位。应用场景BB更能及时的让双方知道错误已发生,能及时重发错误数据。
请参照图2,本发明实施例的汽车电机控制器程序加载方法由以下步骤1和步骤2组成。
步骤1:烧录上位机发出烧录申请,所述电机控制器收到申请后按照安全验证逻辑进行交互,若握手失败,放弃此次升级;若握手成功,则烧录上位机分批次把目标程序加密后传输给所述电机控制器。
步骤2:所述电机控制器中加载逻辑进行处理,若数据帧解析正确,则加密后存入FLASH;若解析失败,则请求上位机重发。
请参照图3,作为一种实施方式,步骤1中,烧录上位机发起烧录申请后,首先与电机控制器通过预设的应用场景B进行安全验证,通过后,再进行烧录操作,然后读取并分析烧录目标程序,将目标程序分为固定长度128位的多个片断,按照预设的应用场景BC计算目标程序校验;每次仅发送一个片断,发送前按照预设的应用场景BA对片断数据进行加密,然后组装为符合加载逻辑的完整数据帧,按照预设的应用场景BB对此完整数据帧进行校验计算;当前片断的发送包括完整数据帧和数据帧校验,发送完成后等待电机控制器回复;若回复成功,则进行下一片断发送;若回复失败,则再次触发当前片断发送;所有片断发送完成后,进行预设的应用场景BC校验,电机控制器回复校验成功,烧录完成;回复失败,则提示是否再次触发烧录申请。
请参照图5,作为一种实施方式,步骤2中,所述电机控制器接收到烧录上位机的烧录申请后,首先生成128位密钥和64位种子,然后按照预设的应用场景B进行安全验证;若验证通过,进入片断帧数据接收等待状态;验证不通过,清除相关数据退出此次升级;在正常升级过程时,完成当前片断帧数据接收后,判断是否为预设的应用场景BC校验帧,若不是则按照预设的应用场景BB进行当前帧数据校验;若是最后一帧,则按照预设的应用场景BC进行所有应用数据校验;若预设的应用场景BB校验不通过,则请求烧录上位机重发当前片断帧;校验通过,按照预设的应用场景BA进行数据解密,并按照预设的应用场景A对数据进行加密,之后存储到FLASH指定位置,当前片断帧处理完成,继续等待下一片断帧数据;预设的应用场景BC校验不通过,清除当前缓存数据,退出烧录,此次烧录失败;校验通过,此次烧录请求处理完成,置相应标志位,退出烧录。
作为一种实施方式,所述应用场景A:唯一码和自增码,再加其他固定元素组成总长为128位密钥,用于烧录到芯片内部FLASH存储时加密,采用加密算法A;
所述应用场景B:唯一码Ⅱ、自增码Ⅱ和随机数组成的64位的种子,用于程序加载前的安全验证,采用验证对接算法A和验证对接算法B;
所述应用场景BA:唯一码Ⅱ连同随机数用于程序加载过程中单次传输数据中应用数据的加密,采用加密算法B;
所述应用场景BB:唯一码Ⅱ连同自增码Ⅱ用于单次传输数据的整体校验,采用数据校验算法A;
应用场景BC:自增码Ⅱ用于加载过程中所有传输数据的完整性校验,采用数据校验算法B;
其中,自增码存放于电机控制器FALSH中,自增码在进行当次烧录前进行赋值,其赋值结果随机,且遵循以下公式k(t)=k(t-1)+A(random),其中,k(t)为自增码当次烧录时值,k(t-1)为自增码上次烧录时值,A(random)为随机整数,范围在1~10之间;
自增码Ⅱ为自增码进行伪装得到,且k2(t)=f(k(t)),其中,k2(t)为自增码Ⅱ当次值,f()为映射函数;
唯一码Ⅱ通过唯一码处理得到,SN2=f2(SN),其中SN为唯一码,SN2为唯一码Ⅱ,f2()为映射函数。
作为一种实施方式,步骤2中,控制器收到烧录上位机烧录申请后,从FLASH中读取当前自增码k(t-1),按照k(t)=k(t-1)+A(random)公式生成当次自增码,并把当次自增码k(t)随同大量随机数写入到FLASH指定区域;按照公式k2(t)=f(k(t))生成自增码Ⅱ;生成随机数B(random),读取唯一码SN,按照公式SN2=f2(SN)生成唯一码Ⅱ;最后组装出128位密钥和64位种子,其中,128位密钥由SN+ k(t)+固定数据组成,64位种子由SN2+ k2(t)+ B(random)组成。固定数据为任何128位常量均可,例0x2643 3832 7950 2884。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。

Claims (4)

1.一种汽车电机控制器程序安全加载***,包括烧录上位机、汽车电机控制器和CAN网络,其特征在于,所述电机控制器包含FLASH,
烧录上位机发出烧录申请,所述电机控制器收到申请后按照安全验证逻辑进行交互,若握手失败,放弃此次升级;若握手成功,则烧录上位机分批次把目标程序加密后传输给所述电机控制器;
所述电机控制器中加载逻辑进行处理,若数据帧解析正确,则加密后存入FLASH;若解析失败,则请求上位机重发;
烧录上位机发起烧录申请后,首先与电机控制器通过预设的应用场景B进行安全验证,通过后,再进行烧录操作,然后读取并分析烧录目标程序,将目标程序分为固定长度128位的多个片断,按照预设的应用场景BC计算目标程序校验;每次仅发送一个片断,发送前按照预设的应用场景BA对片断数据进行加密,然后组装为符合加载逻辑的完整数据帧,按照预设的应用场景BB对此完整数据帧进行校验计算;当前片断的发送包括完整数据帧和数据帧校验,发送完成后等待电机控制器回复;若回复成功,则进行下一片断发送;若回复失败,则再次触发当前片断发送;所有片断发送完成后,进行预设的应用场景BC校验,电机控制器回复校验成功,烧录完成;回复失败,则提示是否再次触发烧录申请;
所述电机控制器接收到烧录上位机的烧录申请后,首先生成128位密钥和64位种子,然后按照预设的应用场景B进行安全验证;若验证通过,进入片断帧数据接收等待状态;验证不通过,清除相关数据退出此次升级;在正常升级过程时,完成当前片断帧数据接收后,判断是否为预设的应用场景BC校验帧,若不是则按照预设的应用场景BB进行当前帧数据校验;若是最后一帧,则按照预设的应用场景BC进行所有应用数据校验;若预设的应用场景BB校验不通过,则请求烧录上位机重发当前片断帧;校验通过,按照预设的应用场景BA进行数据解密,并按照预设的应用场景A对数据进行加密,之后存储到FLASH指定位置,当前片断帧处理完成,继续等待下一片断帧数据;预设的应用场景BC校验不通过,清除当前缓存数据,退出烧录,此次烧录失败;校验通过,此次烧录请求处理完成,置相应标志位,退出烧录;
所述应用场景A:采用唯一码和自增码,再加其他固定元素组成总长为128位密钥,用于烧录到芯片内部FLASH存储时加密,采用预设的加密算法A;
所述应用场景B:采用唯一码Ⅱ、自增码Ⅱ和随机数组成的64位的种子,用于程序加载前的安全验证,采用预设的验证对接算法A和预设的验证对接算法B;
所述应用场景BA:唯一码Ⅱ连同随机数用于程序加载过程中单次传输数据中应用数据的加密,采用预设的加密算法B;
所述应用场景BB:唯一码Ⅱ连同自增码Ⅱ用于单次传输数据的整体校验,采用预设的数据校验算法A;
应用场景BC:自增码Ⅱ用于加载过程中所有传输数据的完整性校验,采用预设的数据校验算法B;
其中,自增码存放于电机控制器FALSH中,自增码在进行当次烧录前进行赋值,其赋值结果随机,且遵循以下公式k(t)=k(t-1)+A(random),其中,k(t)为自增码当次烧录时值,k(t-1)为自增码上次烧录时值,A(random)为随机整数,范围在1~10之间;
自增码Ⅱ为自增码进行伪装得到,且k2(t)=f(k(t)),其中,k2(t)为自增码Ⅱ当次值,f(k(t))为映射函数;
唯一码Ⅱ通过唯一码处理得到,SN2=f2(SN),其中SN为唯一码,SN2为唯一码Ⅱ,f2(SN)为映射函数。
2.如权利要求1所述的汽车电机控制器程序安全加载***,其特征在于,控制器收到烧录上位机烧录申请后,从FLASH中读取当前自增码k(t-1),按照k(t)=k(t-1)+A(random)公式生成当次自增码,并把当次自增码k(t)随同大量随机数写入到FLASH指定区域;按照公式k2(t)=f(k(t))生成自增码Ⅱ;生成随机数B(random),读取唯一码SN,按照公式SN2=f2(SN)生成唯一码Ⅱ;最后组装出128位密钥和64位种子,其中,128位密钥由SN+k(t)+固定数据组成,64位种子由SN2+k2(t)+B(random)组成。
3.一种汽车电机控制器程序安全加载方法,其特征在于,包括:
步骤1:烧录上位机发出烧录申请,所述电机控制器收到申请后按照安全验证逻辑进行交互,若握手失败,放弃此次升级;若握手成功,则烧录上位机分批次把目标程序加密后传输给所述电机控制器;
步骤2:所述电机控制器中加载逻辑进行处理,若数据帧解析正确,则加密后存入FLASH;若解析失败,则请求上位机重发;
步骤1中,烧录上位机发起烧录申请后,首先与电机控制器通过预设的应用场景B进行安全验证,通过后,再进行烧录操作,然后读取并分析烧录目标程序,将目标程序分为固定长度128位的多个片断,按照预设的应用场景BC计算目标程序校验;每次仅发送一个片断,发送前按照预设的应用场景BA对片断数据进行加密,然后组装为符合加载逻辑的完整数据帧,按照预设的应用场景BB对此完整数据帧进行校验计算;当前片断的发送包括完整数据帧和数据帧校验,发送完成后等待电机控制器回复;若回复成功,则进行下一片断发送;若回复失败,则再次触发当前片断发送;所有片断发送完成后,进行预设的应用场景BC校验,电机控制器回复校验成功,烧录完成;回复失败,则提示是否再次触发烧录申请;
步骤2中,所述电机控制器接收到烧录上位机的烧录申请后,首先生成128位密钥和64位种子,然后按照预设的应用场景B进行安全验证;若验证通过,进入片断帧数据接收等待状态;验证不通过,清除相关数据退出此次升级;在正常升级过程时,完成当前片断帧数据接收后,判断是否为预设的应用场景BC校验帧,若不是则按照预设的应用场景BB进行当前帧数据校验;若是最后一帧,则按照预设的应用场景BC进行所有应用数据校验;若预设的应用场景BB校验不通过,则请求烧录上位机重发当前片断帧;校验通过,按照预设的应用场景BA进行数据解密,并按照预设的应用场景A对数据进行加密,之后存储到FLASH指定位置,当前片断帧处理完成,继续等待下一片断帧数据;预设的应用场景BC校验不通过,清除当前缓存数据,退出烧录,此次烧录失败;校验通过,此次烧录请求处理完成,置相应标志位,退出烧录;
所述应用场景A:采用唯一码和自增码,再加其他固定元素组成总长为128位密钥,用于烧录到芯片内部FLASH存储时加密,采用预设的加密算法A;
所述应用场景B:采用唯一码Ⅱ、自增码Ⅱ和随机数组成的64位的种子,用于程序加载前的安全验证,采用预设的验证对接算法A和预设的验证对接算法B;
所述应用场景BA:唯一码Ⅱ连同随机数用于程序加载过程中单次传输数据中应用数据的加密,采用预设的加密算法B;
所述应用场景BB:唯一码Ⅱ连同自增码Ⅱ用于单次传输数据的整体校验,采用预设的数据校验算法A;
应用场景BC:自增码Ⅱ用于加载过程中所有传输数据的完整性校验,采用预设的数据校验算法B;
其中,自增码存放于电机控制器FALSH中,自增码在进行当次烧录前进行赋值,其赋值结果随机,且遵循以下公式k(t)=k(t-1)+A(random),其中,k(t)为自增码当次烧录时值,k(t-1)为自增码上次烧录时值,A(random)为随机整数,范围在1~10之间;
自增码Ⅱ为自增码进行伪装得到,且k2(t)=f(k(t)),其中,k2(t)为自增码Ⅱ当次值,f(k(t))为映射函数;
唯一码Ⅱ通过唯一码处理得到,SN2=f2(SN),其中SN为唯一码,SN2为唯一码Ⅱ,f2(SN)为映射函数。
4.如权利要求3所述的汽车电机控制器程序安全加载方法,其特征在于,步骤2中,控制器收到烧录上位机烧录申请后,从FLASH中读取当前自增码k(t-1),按照k(t)=k(t-1)+A(random)公式生成当次自增码,并把当次自增码k(t)随同大量随机数写入到FLASH指定区域;按照公式k2(t)=f(k(t))生成自增码Ⅱ;生成随机数B(random),读取唯一码SN,按照公式SN2=f2(SN)生成唯一码Ⅱ;最后组装出128位密钥和64位种子,其中,128位密钥由SN+k(t)+固定数据组成,64位种子由SN2+k2(t)+B(random)组成。
CN202010624439.7A 2020-07-02 2020-07-02 汽车电机控制器程序安全加载***及方法 Active CN111814139B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010624439.7A CN111814139B (zh) 2020-07-02 2020-07-02 汽车电机控制器程序安全加载***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010624439.7A CN111814139B (zh) 2020-07-02 2020-07-02 汽车电机控制器程序安全加载***及方法

Publications (2)

Publication Number Publication Date
CN111814139A CN111814139A (zh) 2020-10-23
CN111814139B true CN111814139B (zh) 2023-05-09

Family

ID=72855972

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010624439.7A Active CN111814139B (zh) 2020-07-02 2020-07-02 汽车电机控制器程序安全加载***及方法

Country Status (1)

Country Link
CN (1) CN111814139B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112965726B (zh) * 2021-02-03 2023-12-26 深圳市法拉第电驱动有限公司 芯片的嵌入式程序烧录方法及***
CN113806774B (zh) * 2021-09-15 2024-02-13 惠州市德赛电池有限公司 加密方法、解密方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407814A (zh) * 2016-08-31 2017-02-15 福建联迪商用设备有限公司 烧片镜像签名认证方法与终端以及烧录方法与***
CN109828763A (zh) * 2018-12-24 2019-05-31 惠州市蓝微电子有限公司 一种闭环烧录校准的方法
CN109918933A (zh) * 2019-03-15 2019-06-21 广州市星翼电子科技有限公司 一种通过加密烧录端口来防止烧录数据被盗听盗取的方法
CN110414216A (zh) * 2019-07-29 2019-11-05 武汉光庭信息技术股份有限公司 一种车载T-Box程序代码的安全加载方法及***
CN110829903A (zh) * 2019-11-06 2020-02-21 深圳市法拉第电驱动有限公司 抑制永磁同步电机电流谐波的控制***及方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6332970B2 (ja) * 2011-02-11 2018-05-30 シーメンス・ヘルスケア・ダイアグノスティックス・インコーポレーテッドSiemens Healthcare Diagnostics Inc. 安全なソフトウェアの更新のためのシステム及び方法
CN102280133A (zh) * 2011-08-16 2011-12-14 杭州晟元芯片技术有限公司 一种抗截获的代码加密烧录方式
CN104765632A (zh) * 2015-04-15 2015-07-08 南京汽车集团有限公司 一种BootLoader的管理方法
CN105069350B (zh) * 2015-08-24 2023-05-16 上海繁易信息科技股份有限公司 嵌入式操作***的加密方法和装置
CN105302612B (zh) * 2015-11-18 2018-05-08 西南技术物理研究所 快速升级电子***机箱内单片机软件程序的方法
CN107193567A (zh) * 2017-05-25 2017-09-22 湖北航天技术研究院总体设计所 弹载dsp软件安全启动更新模式及其实现***、***制作方法
CN109800565A (zh) * 2017-11-16 2019-05-24 深圳市优必选科技有限公司 软件升级方法及终端设备
CN108279910B (zh) * 2018-01-17 2021-04-13 珠海市杰理科技股份有限公司 程序代码烧写方法、装置、计算机设备和存储介质
CN110351314B (zh) * 2018-04-03 2023-11-21 厦门雅迅网络股份有限公司 汽车控制器的远程升级方法及计算机可读存储介质
CN108762791B (zh) * 2018-06-07 2022-09-16 深圳市元征科技股份有限公司 固件升级方法及装置
CN110909366A (zh) * 2018-09-18 2020-03-24 珠海格力电器股份有限公司 一种基于软件端加密的防刷机方法及***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106407814A (zh) * 2016-08-31 2017-02-15 福建联迪商用设备有限公司 烧片镜像签名认证方法与终端以及烧录方法与***
CN109828763A (zh) * 2018-12-24 2019-05-31 惠州市蓝微电子有限公司 一种闭环烧录校准的方法
CN109918933A (zh) * 2019-03-15 2019-06-21 广州市星翼电子科技有限公司 一种通过加密烧录端口来防止烧录数据被盗听盗取的方法
CN110414216A (zh) * 2019-07-29 2019-11-05 武汉光庭信息技术股份有限公司 一种车载T-Box程序代码的安全加载方法及***
CN110829903A (zh) * 2019-11-06 2020-02-21 深圳市法拉第电驱动有限公司 抑制永磁同步电机电流谐波的控制***及方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于OR1200的SoC无线程序加载***设计与验证;黄诚;《基于OR1200的SoC无线程序加载***设计与验证》;全文 *
无纸记录仪验证平台引导加载程序的设计与实现;李猛;《无纸记录仪验证平台引导加载程序的设计与实现》;全文 *

Also Published As

Publication number Publication date
CN111814139A (zh) 2020-10-23

Similar Documents

Publication Publication Date Title
US10013365B2 (en) Method for programming a control unit of a motor vehicle
US9158924B2 (en) Information processing apparatus and information processing method
CN103679005B (zh) 启用安全电子控制单元的开发模式的方法
CN111814139B (zh) 汽车电机控制器程序安全加载***及方法
CN107430658B (zh) 安全软件认证及验证
CN112231647A (zh) 一种软件授权验证方法
US20140052994A1 (en) Object Signing Within a Cloud-based Architecture
JP2004265026A (ja) アプリケーション認証システムと装置
CN110276198B (zh) 一种基于概率预测的嵌入式可变粒度控制流验证方法及***
CN103577745A (zh) 辅助处理器的安全烧录编程
CN108304698A (zh) 产品授权使用方法、装置、计算机设备和存储介质
CN112486607B (zh) 一种基于软硬件结合的虚拟桌面授权许可方法
WO2006075355A1 (ja) プログラマブルロジックコントローラの周辺装置
CN105308610A (zh) 用于设备上的平台和用户应用安全性的方法和***
CN105827388A (zh) 用于用密码处理数据的方法
CN105357012A (zh) 不依赖于本地密钥的对移动应用程序的认证方法
KR101675223B1 (ko) 워치독 장치, 워치독 보안 시스템 및 그 보안 방법
CN104281415A (zh) 用于空调的数据处理方法和装置
CN106557682A (zh) 加密狗的授权验证方法及装置
CN112861137A (zh) 安全固件
US20200342141A1 (en) Checking the Integrity of an Electronic Device
CN111385083B (zh) 密钥保护方法及密钥保护***
CN113595731A (zh) 一种分享链接的防护方法、装置及计算机可读存储介质
CN113946841A (zh) 软件安全保护的方法、衣物处理设备及可读存储介质
CN114239000A (zh) 密码处理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant