CN111832012B - 一种ecu及其启动方法 - Google Patents
一种ecu及其启动方法 Download PDFInfo
- Publication number
- CN111832012B CN111832012B CN202010681055.9A CN202010681055A CN111832012B CN 111832012 B CN111832012 B CN 111832012B CN 202010681055 A CN202010681055 A CN 202010681055A CN 111832012 B CN111832012 B CN 111832012B
- Authority
- CN
- China
- Prior art keywords
- check value
- code segment
- standard
- application program
- target code
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种ECU及其启动方法。该方法包括:MCU上电后启动HSM;HSM对引导程序进行验证,以确定引导程序的完整性和合法性;如果引导程序通过验证,则MCU执行引导程序对应用程序进行验证,以确定应用程序的完整性和合法性;如果应用程序通过验证,则MCU执行应用程序对常量数据进行验证,以确定常量数据的完整性和合法性;如果常量数据通过验证,则MCU执行初始化操作。基于本申请提供的技术方案,能够提高ECU启动过程的安全性,使得ECU抵抗网络攻击的能力得到有效提高。
Description
技术领域
本申请涉及ECU技术领域,更具体地说,涉及一种ECU及其启动方法。
背景技术
电子控制单元ECU在车辆的发动机控制系统、防抱死制动系统、安全气囊系统等中起到重要的作用,被称为“车辆的大脑”。
目前,ECU在启动时,直接加载引导程序,引导程序确认应用程序有效时,会直接加载应用程序,ECU进行初始化,完成启动。在传统的整车网络架构(如图1所示)中,整车内的ECU和互联网是隔离、相互独立的。随着车联网的发展,在新型的整车网络架构(如图2所示)中,整车系统通过无线(4G网络、WIFI、蓝牙等)和互联网连接,能够以OTA(在线更新)的方式对ECU中的程序(引导程序或应用程序)进行更新,互联网上的攻击者可以接触到车上的全部ECU。这导致非法用户对ECU中的程序进行篡改的可能性较高。
基于现有的ECU启动方式,当非法用户对ECU中的程序进行篡改后,ECU仍然会启动,这给车辆的安全运行造成极大的隐患。
发明内容
有鉴于此,本申请的目的在于提供一种ECU及其启动方法,使得ECU能够安全启动。
为实现上述目的,本申请提供如下技术方案:
一方面,本申请提供一种ECU的启动方法,所述ECU存储有引导程序和应用程序,所述ECU包括微控制单元MCU和硬件安全模块HSM,所述启动方法包括:
所述MCU上电后启动所述HSM;
所述HSM对所述引导程序进行验证,以确定所述引导程序的完整性和合法性;
如果所述引导程序通过验证,则所述MCU执行所述引导程序对所述应用程序进行验证,以确定所述应用程序的完整性和合法性;
如果所述应用程序通过验证,则所述MCU执行所述应用程序对常量数据进行验证,以确定所述常量数据的完整性和合法性;
如果所述常量数据通过验证,则所述MCU执行初始化操作。
可选的,所述HSM对所述引导程序进行验证,包括:
所述HSM计算所述引导程序中至少一个目标代码段的第一校验值;
所述HSM获得所述引导程序中每个目标代码段对应的第一标准校验值;其中,所述引导程序中任意一个目标代码段对应的第一标准校验值为:标准引导程序中与所述引导程序中目标代码段的地址空间一致的标准引导程序代码段的校验值;所述第一标准校验值存储于所述ECU的只读存储器;
所述HSM对所述引导程序中每个目标代码段的第一校验值与对应的第一标准校验值进行比对;
所述HSM在所述引导程序中每个目标代码段的第一校验值与对应的第一标准校验值均相同的情况下,确定所述引导程序通过验证。
可选的,所述HSM对所述引导程序进行验证,包括:
所述HSM计算所述引导程序中至少一个目标代码段的第一校验值;
所述HSM利用预设的第一加密算法对所述引导程序中每个目标代码段的第一校验值进行加密处理,得到每个目标代码段的第一加密校验值;
所述HSM获得所述引导程序中每个目标代码段对应的第一标准加密校验值;其中,所述引导程序中任意一个目标代码段对应的第一标准加密校验值为:预先计算标准引导程序中与所述引导程序中目标代码段的地址空间一致的标准引导程序代码段的第一标准校验值,利用所述第一加密算法对所述第一标准校验值进行加密处理得到;所述第一标准加密校验值存储于所述ECU的只读存储器;
所述HSM对所述引导程序中每个目标代码段的第一加密校验值与对应的第一标准加密校验值进行比对;
所述HSM在所述引导程序中每个目标代码段的第一加密校验值与对应的第一标准加密校验值均相同的情况下,确定所述引导程序通过验证。
可选的,所述MCU执行所述引导程序对所述应用程序进行验证,包括:
所述MCU获得所述应用程序中至少一个目标代码段;
所述MCU获得所述应用程序中每个目标代码段的第二加密校验值,其中,所述应用程序中任意一个目标代码段的第二加密校验值为:利用预设的第二加密算法对所述应用程序中目标代码段的第二校验值进行加密处理,得到所述应用程序中目标代码段的第二加密校验值;
所述MCU获得所述应用程序中每个目标代码段对应的第二标准加密校验值;其中,所述应用程序中任意一个目标代码段对应的第二标准加密校验值为:预先计算标准应用程序中与所述应用程序中目标代码段的地址空间一致的标准应用程序代码段的第二标准校验值,利用所述第二加密算法对所述第二标准校验值进行加密处理得到;所述第二标准加密校验值存储于所述ECU的只读存储器;
所述MCU对所述应用程序中每个目标代码段的第二加密校验值与对应的第二标准加密校验值进行比对;
所述MCU在所述应用程序中每个目标代码段的第二加密校验值与对应的第二标准加密校验值均相同的情况下,确定所述应用程序通过验证。
可选的,所述MCU获得所述应用程序中每个目标代码段的第二加密校验值,包括:
所述MCU向所述HSM传输所述应用程序中每个目标代码段;
所述MCU接收所述HSM传输的所述应用程序中每个目标代码段的第二加密校验值;其中,所述HSM分别计算所述应用程序中每个目标代码段的第二校验值,利用所述第二加密算法对所述应用程序中每个目标代码段的第二校验值进行加密处理,得到所述应用程序中每个目标代码段的第二加密校验值。
可选的,所述MCU获得所述应用程序中至少一个目标代码段,包括:
所述MCU获得所述应用程序中目标代码段的参数;其中,所述目标代码段的参数存储于所述ECU的只读存储器;
所述MCU根据所述参数确定目标代码段的地址空间;
所述MCU基于所述地址空间获取目标代码段。
可选的,在确定所述应用程序通过验证后,还包括:
所述MCU生成所述应用程序中目标代码段的新的参数;
将生成的所述目标代码段的新的参数存储于所述ECU的只读存储器,以便所述MCU在下次执行所述引导程序对所述应用程序进行验证的过程中,基于所述目标代码段的新的参数获得目标代码段。
可选的,所述MCU执行所述应用程序对常量数据进行验证,包括:
所述MCU获得所述常量数据的第三加密校验值,其中,所述常量数据的第三加密校验值为:利用预设的第三加密算法对所述常量数据的第三校验值进行加密处理,得到所述常量数据的第三加密校验值;
所述MCU获得所述常量数据对应的第三标准加密校验值;其中,所述常量数据对应的第三标准加密校验值为:预先计算标准常量数据的第三标准校验值,利用所述第三加密算法对所述第三标准校验值进行加密处理得到;所述第三标准加密校验值存储于所述ECU的只读存储器;
所述MCU对所述常量数据的第三加密校验值与对应的第三标准加密校验值进行比对;
所述MCU在所述常量数据的第三加密校验值与对应的第三标准加密校验值相同的情况下,确定所述常量数据通过验证。
可选的,所述MCU获得所述常量数据的第三加密校验值,包括:
所述MCU向所述HSM传输所述常量数据;
所述MCU接收所述HSM传输的所述常量数据的第三加密校验值;其中,所述HSM计算所述常量数据的第三校验值,利用所述第三加密算法对所述第三校验值进行加密处理,得到所述常量数据的第三加密校验值。
另一方面,本申请提供一种ECU,包括:微控制单元MCU、硬件安全模块HSM和只读存储器;
所述只读存储器存储有引导程序、应用程序、常量数据和所述HSM的安全固件;
所述MCU上电后启动所述HSM,所述HSM用于:对所述引导程序进行验证,以确定所述引导程序的合法性和完整性;
所述MCU用于:如果所述引导程序通过验证,则执行所述引导程序对所述应用程序进行验证,以确定所述应用程序的完整性和合法性,如果所述应用程序通过验证,则执行所述应用程序对常量数据进行验证,以确定所述常量数据的完整性和合法性,如果所述常量数据通过验证,则执行初始化操作。
本申请提供的ECU的启动方法,MCU上电后启动HSM,由HSM对引导程序进行完整性和合法性验证,当引导程序通过完整性和合法性验证时,由MCU执行引导程序对应用程序进行完整性和合法性验证,当应用程序通过完整性和合法性验证时,由MCU执行应用程序对常量数据进行完整性和合法性验证,当常量数据通过完整性和合法性验证时,由MCU执行初始化操作。本申请提供的ECU的启动方法,逐层“把关”监控,在前一步通过验证时才执行下一步,即引导程序、应用程序、常量数据依次通过完整性和合法性验证时,再启动ECU,如果ECU中的引导程序、应用程序或者常量数据被篡改,那么ECU无法启动,因而提高了ECU启动过程的安全性,使得ECU抵抗网络攻击的能力得到有效提高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中传统的整车网络架构图;
图2为现有技术中新型的整车网络架构图;
图3为本申请实施例公开的一种ECU的启动方法的流程图;
图4为本申请实施例公开的ECU的系统架构图;
图5为本申请实施例公开的ECU的内存分布图;
图6为本申请实施例公开的一种HSM对引导程序进行验证的方法的流程图;
图7为本申请实施例公开的另一种HSM对引导程序进行验证的方法的流程图;
图8为本申请实施例公开的一种MCU执行引导程序对应用程序进行验证的方法的流程图;
图9为本申请实施例公开的另一种MCU执行引导程序对应用程序进行验证的方法的流程图;
图10为本申请实施例公开的一种MCU执行应用程序对常量数据进行验证的方法的流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
由背景技术我们知道,ECU中的程序可能被篡改,而基于现有的ECU启动方式,当非法用户对ECU中的程序进行篡改后,ECU仍然会启动,从而给车辆的安全运行造成极大的隐患。因此,本申请提供一种ECU的启动方法,使得ECU能够安全启动。
下面对本申请中出现的技术术语进行说明。
ECU:Electronic Control Unit,电子控制单元;
MCU:Microcontroller Unit,微控制单元;
HSM:Hardware Security Module,硬件安全模块;
ROM:Read-Only Memory,只读存储器;
RAM:Random Access Memory,随机存取存储器;
BT:Bootloader,引导程序;
APPL:Application,应用程序;
T-Box:远程信息处理器。
请参见图3,图3为本申请实施例公开的一种ECU的启动方法的流程图。
该ECU存储有BT引导程序和APPL应用程序,该ECU包括MCU和HSM。需要说明的是,本申请实施例所述的ECU可以是机动车辆的ECU,也可以是其他设备的ECU,比如飞机的ECU、轮船的ECU等。该启动方法包括:
S301:MCU上电后启动HSM。
HSM的安全固件和密钥存储在ECU内存的受保护空间,不可被其他计算机硬件更改和读取。
S302:HSM对引导程序进行验证,以确定引导程序的完整性和合法性。
这里需要说明的是,程序的合法性是指:程序的发布者是经过授权的。程序的完整性是指:ECU中程序的文件与该程序的源文件的内容一致。在将程序的源文件下载到ECU的过程中,可能出现文件内容被改变的问题。例如,因为信号干扰或者恶意攻击,导致下载到ECU中程序的文件内容被改变。在将程序的文件下载到ECU之后,也可能因为电子电气环境的原因或者恶意攻击,导致ECU中程序的文件与该程序的源文件的内容不一致。因此,需要验证程序的完整性。
S303:如果引导程序通过验证,那么MCU执行引导程序对应用程序进行验证,以确定应用程序的完整性和合法性。
引导程序具有对应用程序进行完整性和合法性验证的功能。MCU执行引导程序,就可以对应用程序进行完整性和合法性验证。
S304:如果应用程序通过验证,那么MCU执行应用程序对常量数据进行验证,以确定常量数据的完整性和合法性。
应用程序具有对常量数据进行完整性和合法性验证的功能。MCU执行应用程序,就可以对常量数据进行完整性和合法性验证。
其中,常量数据是指:在ECU运行过程中其值固定不变的数据。
S305:如果常量数据通过验证,那么MCU执行初始化操作。
本申请提供的ECU的启动方法,MCU上电后启动HSM,由HSM对引导程序进行完整性和合法性验证,当引导程序通过完整性和合法性验证时,由MCU执行引导程序对应用程序进行完整性和合法性验证,当应用程序通过完整性和合法性验证时,由MCU执行应用程序对常量数据进行完整性和合法性验证,当常量数据通过完整性和合法性验证时,由MCU执行初始化操作。本申请提供的ECU的启动方法,逐层“把关”监控,在前一步通过验证时才执行下一步,即引导程序、应用程序、常量数据依次通过完整性和合法性验证时,再启动ECU,如果ECU中的引导程序、应用程序或者常量数据被篡改,那么ECU无法安全启动,因而提高了ECU启动过程的安全性,使得ECU抵抗网络攻击的能力得到有效提高。
本申请实施例提供一种ECU的系统架构图(如图4所示)及ECU的内存分布图(如图5所示),需要说明的是,图4、图5仅用于举例说明,本申请实施例所述的ECU的系统架构图及ECU的内存分布图还可以有其他的形式。
图4中,ECU包括:MCU、HSM、ROM、RAM、Clock System(时钟系统)和Peripheral(外围设备接口)。
其中,MCU有多个内核处理器,即图4中所示的Core 0、Core1......;ROM为只读存储器,是代码和常量数据的存储介质,失电情况下,存储的数据不会丢失,需要说明的是,本申请实施例中的ROM可以为EPROM;RAM为随机存取存储器,失电情况下,存储的数据随着丢失;时钟系统包括Clock(时钟)和Interrupt(中断器);外围设备接口包括CAN总线和SPI总线。
如图5所示,HSM的安全固件、引导程序、应用程序、常量数据、以及进行验证过程中所使用的标准校验数据均存储在ROM中。
上述提及的HSM对引导程序进行验证,以确定引导程序的完整性和合法性,这里进行具体介绍。
在一种可能的实施方式中,HSM对引导程序的全部代码进行校验,以确定引导程序的完整性和合法性。
在另一种可能的实施方式中,HSM对引导程序的部分代码进行校验,以确定引导程序的完整性和合法性。基于该实施方式,能够缩短HSM对引导程序进行完整性和合法性验证所需的时间。下面结合图6和图7进行说明。
参见图6所示,图6为本申请实施例公开的一种HSM对引导程序进行验证的方法的流程图,该方法包括:
S601:HSM计算引导程序中至少一个目标代码段的第一校验值。
HSM获取引导程序中一个或多个目标代码段,计算前述各个目标代码段的校验值。为了便于描述,将引导程序中各个目标代码段的校验值均称为第一校验值。需要说明的是,前述的一个或多个目标代码段仅是引导程序的一部分。
实施中,HSM可以使用CRC算法(Cyclic Redundancy Check,循环冗余校验码)、RSA算法(RSA algorithm)或其他校验算法来计算引导程序中各个目标代码段的第一校验值。
S602:HSM获得引导程序中每个目标代码段对应的第一标准校验值。
该第一标准校验值是:标准引导程序中与引导程序中目标代码段的地址空间一致的标准引导程序代码段的校验值,该第一标准校验值存储于ECU的只读存储器的指定空间。
引导程序中目标代码段的地址空间是相对地址空间,是指:该目标代码段相对于引导程序的标记地址(如起始地址或者结束地址)的地址空间。标准引导程序代码段的地址空间是相对地址空间,是指:该标准引导程序代码段相对于标准引导程序的标记地址(如起始地址或者结束地址)的地址空间。
例如,引导程序的目标代码段为:从引导程序的起始地址开始、大小为N1KB(千字节)的空间存储的代码段。与该目标代码段对应的第一标准校验值为:从标准引导程序的起始地址开始、大小为N1KB(千字节)的空间存储的代码段的校验值。
需要说明的是,计算该第一标准校验值所用的校验算法与计算第一校验值所用的校验算法是一样的。还需要说明的是,标准引导程序是原始的引导程序。在ECU存储的程序未被非法用户篡改的情况下,ECU存储的引导程序应与标准引导程序一致。
S603:HSM对引导程序中每个目标代码段的第一校验值与对应的第一标准校验值进行比对。
S604:如果每个目标代码段的第一校验值与对应的第一标准校验值均相同,确定引导程序通过验证。
这里结合一个实例进行说明。
HSM计算引导程序中一个目标代码段的第一校验值,例如,该目标代码段为:从引导程序的起始地址开始、大小为8KB的空间存储的代码段。HSM从只读存储器获得该目标代码段对应的第一标准校验值,即:从标准引导程序的起始地址开始、大小为8KB的空间存储的代码段的校验值。HSM比较该目标代码段的第一校验值和第一标准校验值,如果两者一致,则继续执行后续步骤,如果两者不一致,则确定引导程序未通过完整性和合法性验证,结束启动流程。
HSM计算引导程序中另一个目标代码段的第一校验值,例如,该目标代码段为:从引导程序的第24KB开始、大小为8KB的空间存储的代码段。HSM从只读存储器获得该目标代码段对应的第一标准校验值,即:从标准引导程序的第24KB开始、大小为8KB的空间存储的代码段的校验值。HSM比较该目标代码段的第一校验值和第一标准校验值,如果两者一致,则确定引导程序通过完整性和合法性验证,如果两者不一致,则确定引导程序未通过完整性和合法性验证,结束启动流程。
本申请图6所示的方案,HSM计算引导程序中一个或多个目标代码段的第一校验值,并从只读存储器中获得每个目标代码段对应的第一标准校验值,如果每个目标代码段的第一校验值与对应的第一标准校验值均相同,那么确定引导程序通过完整性和合法性验证,否则确定引导程序未通过完整性和合法性验证。基于该方案,能够缩短HSM对引导程序进行完整性和合法性验证所需的时间,并且不会降低验证结果的准确性。
参见图7,图7为本申请实施例公开的另一种HSM对引导程序进行验证的方法的流程图,该方法包括:
S701:HSM计算引导程序中至少一个目标代码段的第一校验值。
具体实现步骤S701的过程及执行原理可以参考步骤S601的相关描述,这里不再赘述。
S702:HSM利用预设的第一加密算法对引导程序中每个目标代码段的第一校验值进行加密处理,得到每个目标代码段的第一加密校验值。
实施中,第一加密算法可以采用对称密钥算法,当然也可以采用其他加密算法。加密过程使用的密钥存储于只读存储器中与HSM对应的受保护空间,需要说明的是,只有HSM可以访问其对应的受保护空间。
S703:HSM获得引导程序中每个目标代码段对应的第一标准加密校验值。
该第一标准加密校验值是:预先计算标准引导程序中与引导程序中目标代码段的地址空间一致的标准引导程序代码段的第一标准校验值,利用预设的第一加密算法对第一标准校验值进行加密处理,得到第一标准加密校验值。该第一标准加密校验值存储于ECU的只读存储器。
例如,引导程序的目标代码段为:从引导程序的起始地址开始、大小为N2KB(千字节)的空间存储的代码段。与该目标代码段对应的第一标准加密校验值为:计算从标准引导程序的起始地址开始、大小为N2KB(千字节)的空间存储的标准引导程序代码段的第一标准校验值,利用预设的第一加密算法对第一标准校验值进行加密处理得到第一标准加密校验值。
需要说明的是,计算该第一标准加密校验值与计算第一加密校验值所用的校验算法和加密算法是相同的。还需要说明的是,标准引导程序是原始的引导程序。在ECU存储的程序未被非法用户篡改的情况下,ECU存储的引导程序应与标准引导程序一致。
S704:HSM对引导程序中每个目标代码段的第一加密校验值与对应的第一标准加密校验值进行比对。
S705:如果每个目标代码段的第一加密校验值与对应的第一标准加密校验值均相同,确定引导程序通过验证。
本申请图7所示的方案中,HSM计算引导程序中一个或多个目标代码段的第一校验值,并利用预设的第一加密算法对第一校验值进行加密处理,得到第一加密校验值;HSM从只读存储器获得每个目标代码段对应的第一标准加密校验值,其中,预先计算标准引导程序中与引导程序中目标代码段的地址空间一致的标准引导程序的第一标准校验值,利用预设的第一加密算法对第一标准校验值进行加密处理,得到第一标准加密校验值;再对每个目标代码段的第一加密校验值与第一标准加密校验值进行比对,如果每个目标代码段的第一加密校验值与对应的第一标准加密校验值均相同,那么确定引导程序通过完整性和合法性验证,否则确定引导程序未通过完整性和合法性验证。本申请图7所示的方案,利用引导程序中目标代码段的第一加密校验值和第一标准加密校验值对引导程序的完整性和合法性进行验证,如果加密端没有正确的密钥(也就是身份不合法),那么目标代码段的第一加密校验值和第一标准加密校验值必然是不同的,引导程序不能通过完整性和合法性验证,ECU不会启动,进一步提高了ECU启动过程的安全性。
MCU执行引导程序对应用程序进行验证,下面进行详细阐释。实施中,MCU可以对应用程序的全部代码进行校验,也可以对应用程序的部分代码进行校验,以确定应用程序的完整性和合法性。
参见图8,图8为本申请实施例公开的一种MCU执行引导程序对应用程序进行验证的方法的流程图,该方法包括:
S801:MCU获得应用程序中至少一个目标代码段。
S802:MCU获得应用程序中每个目标代码段的第二校验值。
MCU获得应用程序中一个或多个目标代码段,并获得前述应用程序中各个目标代码段的校验值。为了便于描述,将应用程序中各个目标代码段的校验值均称为第二校验值。需要说明的是,前述的一个或多个目标代码段仅是应用程序的一部分。
在一种可能的实现方式中,MCU获得应用程序中每个目标代码段的第二校验值具体为:MCU计算应用程序中每个目标代码段的第二校验值。
在另一种可能的实现方式中,MCU获得应用程序中每个目标代码段的第二校验值,包括:MCU向HSM传输应用程序中每个目标代码段,之后,MCU接收HSM传输的应用程序中每个目标代码段的第二校验值。其中,HSM计算应用程序中的每个目标代码段的第二校验值。
也就是说,在第二种实现方式中,MCU获得应用程序中一个或多个目标代码段后,将获得的目标代码段向HSM传输,由HSM计算应用程序中每个目标代码段的第二校验值,并将计算得到的每个目标代码段的第二校验值向MCU传输。由于HSM的运算速度很高,因此由HSM计算应用程序中每个目标代码段的第二校验值,与由MCU计算应用程序中每个目标代码段的第二校验值相比,能够缩短处理时间。
实施中,MCU和HSM可以使用CRC算法、RSA算法或者其他校验算法来计算应用程序中各个目标代码段的第二校验值。
在一种可能的实现方式中,步骤S801具体包括:MCU获得应用程序中目标代码段的参数,根据该参数确定目标代码段的地址空间,基于该地址空间获取目标代码段。其中,该参数存储于ECU的只读存储器。
可选的,MCU获取应用程序中目标代码段的参数后,利用HSM提供的算法(例如CRC算法或者RSA算法)对该参数进行校验,得到目标代码段的地址空间。
S803:MCU获得应用程序中每个目标代码段对应的第二标准校验值。
该第二标准校验值是:标准应用程序中与应用程序中目标代码段的地址空间一致的标准应用程序代码段的校验值,该第二标准校验值存储于ECU的只读存储器。
应用程序中目标代码段的地址空间是相对地址空间,是指:该目标代码段相对于应用程序的标记地址(如起始地址或者结束地址)的地址空间。标准应用程序代码段的地址空间是相对地址空间,是指:该标准应用程序代码段相对于标准应用程序的标记地址(如起始地址或者结束地址)的地址空间。
例如,应用程序的目标代码段为:从应用程序的起始地址开始、大小为N3KB(千字节)的空间存储的代码段。与该目标代码段对应的第二标准校验值为:从标准应用程序的起始地址开始、大小为N3KB(千字节)的空间存储的代码段的校验值。
需要说明的是,计算该第二标准校验值所用的校验算法与计算第二校验值所用的校验算法是一样的。还需要说明的是,标准应用程序是原始的应用程序。在ECU存储的程序未被非法用户篡改的情况下,ECU存储的应用程序应与标准应用程序一致。
S804:MCU对应用程序中每个目标代码段的第二校验值与对应的第二标准校验值进行比对。
S805:如果每个目标代码段的第二校验值与对应的第二标准校验值均相同,确定应用程序通过验证。
下面结合一个例子进行说明。
MCU获得应用程序中一个目标代码段的第二校验值,例如,该目标代码段为:从应用程序的第15KB开始、大小为8KB的空间存储的代码段。MCU从只读存储器获得该目标代码段对应的第二标准校验值,即:从标准应用程序的第15KB开始、大小为8KB的空间存储的代码段的校验值。MCU比较该目标代码段的第二校验值和第二标准校验值,若二者一致,则继续执行后续步骤,若两者不一致,则确定应用程序未通过完整性和合法性验证,结束启动流程。
MCU获得应用程序中另一个目标代码段的第二校验值,例如,该目标代码段为:从应用程序的第27KB开始、大小为8KB的空间存储的代码段。MCU从只读存储器获得该目标代码段对应的第二标准校验值,即:从标准应用程序的第27KB开始、大小为8KB的空间存储的代码段的校验值。MCU比较该目标代码段的第二校验值和第二标准校验值,若二者一致,则确定应用程序通过完整性和合法性验证,若两者不一致,则确定应用程序未通过完整性和合法性验证,结束启动流程。
本申请图8所示的方案,MCU获得应用程序中一个或多个目标代码段的第二校验值,并从只读存储器中获得每个目标代码段对应的第二标准校验值,如果每个目标代码段的第二校验值与对应的第二标准校验值均相同,那么确定应用程序通过完整性和合法性验证,否则确定应用程序未通过完整性和合法性验证。基于该方案,能够缩短MCU对应用程序进行完整性和合法性验证所需的时间,并且不会降低验证结果的准确性。
参见图9,图9为本申请实施例公开的另一种MCU执行引导程序对应用程序进行验证的方法的流程图,该方法包括:
S901:MCU获得应用程序中至少一个目标代码段。
具体实现可以参见步骤S801的描述。
S902:MCU获得应用程序中每个目标代码段的第二加密校验值。
其中,应用程序中任意一个目标代码段的第二加密校验值为:利用预设的第二加密算法对应用程序中目标代码段的第二校验值进行加密处理,得到应用程序中目标代码段的第二加密校验值。
在一种可能的实现方式中,MCU获得应用程序中每个目标代码段的第二加密校验值,包括:MCU计算应用程序中每个目标代码段的第二校验值,再利用预设的第二加密算法对应用程序中每个目标代码段的第二校验值进行加密处理,得到应用程序中每个目标代码段的第二加密校验值。
在另一种可能的实现方式中,MCU获得应用程序中每个目标代码段的第二加密校验值,包括:MCU向HSM传输应用程序中每个目标代码段,之后,MCU接收HSM传输的应用程序中每个目标代码段的第二加密校验值。其中,HSM分别计算应用程序中每个目标代码段的第二校验值,利用预设的第二加密算法对应用程序中每个目标代码段的第二校验值进行加密处理,得到应用程序中每个目标代码段的第二加密校验值。
也就是说,在第二种实现方式中,MCU获得应用程序中一个或多个目标代码段后,将获得的目标代码段向HSM传输,由HSM计算应用程序中每个目标代码段的第二校验值,再利用预设的第二加密算法对应用程序中每个目标代码段的第二校验值进行加密处理,得到应用程序中每个目标代码段的第二加密校验值,并将计算得到的每个目标代码段的第二加密校验值向MCU传输。需要说明的是,加密过程使用的密钥存储于只读存储器中与HSM对应的受保护空间。由于HSM的运算速度很高,因此由HSM计算应用程序中每个目标代码段的第二校验值,再利用预设的第二加密算法对应用程序中每个目标代码段的第二校验值进行加密处理,与由MCU计算应用程序中每个目标代码段的第二校验值,再利用预设的第二加密算法对应用程序中每个目标代码段的第二校验值进行加密处理相比,能够缩短处理时间。
实施中,第二加密算法可以采用对称密钥算法,当然,也可以采用其他加密算法。
S903:MCU获得应用程序中每个目标代码段的对应的第二标准加密校验值。
该第二标准加密校验值是:预先计算标准应用程序中与应用程序中目标代码段的地址空间一致的标准应用程序代码段的第二标准校验值,利用预设的第二加密算法对第二标准校验值进行加密处理,得到第二标准加密校验值。该第二标准加密校验值存储于ECU的只读存储器。
例如,应用程序的目标代码段为:从应用程序的起始地址开始、大小为N4KB(千字节)的空间存储的代码段。与该目标代码段对应的第二标准加密校验值为:计算从标准应用程序的起始地址开始、大小为N4KB(千字节)的空间存储的标准应用程序代码段的第二标准校验值,利用预设的第二加密算法对第二标准校验值进行加密处理,得到第二标准加密校验值。
需要说明的是,计算该第二标准加密校验值与计算第二加密校验值所用的校验算法和加密算法是相同的。还需要说明的是,标准应用程序是原始的应用程序。在ECU存储的程序未被非法用户篡改的情况下,ECU存储的应用程序应与标准应用程序一致。
S904:MCU对应用程序中每个目标代码段的第二加密校验值与对应的第二标准加密校验值进行比对。
S905:如果每个目标代码段的第二加密校验值与对应的第二标准加密校验值均相同,确定应用程序通过验证。
本申请图9所示的方案中,MCU获得应用程序中一个或多个目标代码段的第二加密校验值;MCU从只读存储器获得每个目标代码段对应的第二标准加密校验值,其中,预先计算标准应用程序中与应用程序中目标代码段的地址空间一致的标准应用程序代码段的第二标准校验值,利用预设的第二加密算法对第二标准校验值进行加密处理,得到第二标准加密校验值;再对每个目标代码段的第二加密校验值与第二标准加密校验值进行比对,如果每个目标代码段的第二加密校验值与对应的第二标准加密校验值均相同,那么确定应用程序通过完整性和合法性验证,否则确定应用程序未通过完整性和合法性验证。本申请图9所示的方案,利用应用程序中目标代码段的第二加密校验值和第二标准加密校验值对应用程序的完整性和合法性进行验证,如果加密端没有正确的密钥(也就是身份不合法),那么目标代码段的第二加密校验值和第二标准加密校验值必然是不同的,应用程序不能通过完整性和合法性验证,ECU不会启动,进一步提高了ECU启动过程的安全性。
可选的,在图8和图9所示实施例中,MCU获得应用程序中至少一个目标代码段的过程中,所使用的目标代码段的参数是固定的,也就是说,每次启动ECU的过程中,从应用程序的相同地址空间获得目标代码段,根据该目标代码段确定应用程序的完整性和合法性。
可选的,在图8和图9所示实施例的基础上,在确定应用程序通过完整性和合法性验证后,还包括:
MCU生成该应用程序中目标代码段的新的参数,并将生成的目标代码段的新的参数存储于ECU的只读存储器,以便MCU在下次执行引导程序对应用程序进行验证的过程中,基于该新的参数获得目标代码段。
在本方案中,MCU每次依据新的参数获得应用程序中的一个或多个目标代码段,在ECU的多次启动过程中,应用程序中的不同代码段都能被验证,能够保证验证目标代码段的可靠性,因而提高ECU启动过程的安全性。
例如,ECU第一次启动时,对从应用程序的起始地址开始、大小为8KB的空间存储的代码段进行验证,ECU第二次启动时,对从应用程序的第9KB开始、大小为8KB的空间存储的代码段进行验证,以此类推,直至应用程序中的代码段均被验证,ECU在下一次启动时,又对从应用程序的起始地址开始、大小为8KB的空存储的代码段进行验证。应当明确的是,本例仅用于举例阐释,具体实现中不限于本例示出的方式,还可以有其他的方式。
参见图10,图10为本申请实施例公开的一种MCU执行应用程序对常量数据进行验证的方法的流程图。该方法包括:
S1001:MCU获得常量数据的第三校验值。
需要说明的是,这里的第三校验值指的是所有常量数据的校验值,为了便于描述,将所有常量数据的校验值称为第三校验值。
在一种可能的实现方式中,MCU获得常量数据的第三校验值,具体为:MCU计算常量数据的第三校验值。
在另一种可能的实现方式中,MCU获得常量数据的第三校验值,包括:MCU向HSM传输常量数据,之后,MCU接收HSM传输的常量数据的第三校验值。
也就是说,在第二种实现方式中,MCU获得常量数据,并将常量数据向HSM传输,由HSM计算常量数据的第三校验值,并将计算得到的常量数据的第三校验值向MCU传输。由于HSM的运算速度很高,因此由HSM计算常量数据的第三校验值,与由MCU计算常量数据的第三校验值相比,能够缩短处理时间。
实施中,MCU和HSM可以使用CRC算法、RSA算法或者其他校验算法来计算常量数据的第三校验值。
S1002:MCU获得常量数据对应的第三标准校验值。
该第三标准校验值是:标准常量数据对应的校验值。该第三标准校验值存储于ECU的只读存储器。
需要说明的是,计算该第三标准校验值所用的校验算法与计算第三校验值所用的校验算法是相同的。还需要说明的是,标准常量数据是原始的常量数据。在ECU存储的程序未被非法用户篡改的情况下,ECU存储的常量数据应与标准常量数据一致。
S1003:MCU对常量数据的第三校验值与对应的第三标准校验值进行比对。
S1004:如果常量数据的第三校验值与对应的第三标准校验值相同,确定常量数据通过验证。
本申请图10所示的方案,MCU获得常量数据的第三校验值,并从只读存储器中获得常量数据对应的第三标准校验值,如果常量数据的第三校验值与对应的第三标准校验值相同,那么确定常量数据通过完整性和合法性验证,MCU执行初始化操作,完成启动流程,否则确定常量数据未通过完整性和合法性验证,结束启动流程。因此,能够提高对ECU启动的安全性。
另一个可能的实施例中,MCU执行应用程序对常量数据进行完整性和合法性验证,包括:
MCU获得常量数据的第三加密校验值;其中,常量数据的第三加密校验值为:利用预设的第三加密算法对常量数据的第三校验值进行加密处理,得到常量数据的第三加密校验值;
MCU获得常量数据对应的第三标准加密校验值,该第三标准加密校验值是:预先计算标准常量数据对应的第三标准校验值,利用预设的第三加密算法对第三标准校验值进行加密处理得到第三标准加密校验值,该第三标准加密校验值存储于ECU的只读存储器;
MCU对常量数据的第三加密校验值与对应的第三标准加密校验值进行比对;
MCU在所述常量数据的第三加密校验值与对应的第三标准加密校验值相同的情况下,确定所述常量数据通过验证。
在一种可能的实现方式中,MCU获得常量数据的第三加密校验值,包括:MCU计算常量数据的第三校验值,利用预设的第三加密算法对第三校验值进行加密处理,得到常量数据的第三加密校验值。
在另一种可能的实现方式中,MCU获得常量数据的第三加密校验值,包括:MCU向HSM传输常量数据;MCU接收HSM传输的常量数据的第三加密校验值。其中,HSM计算常量数据的第三校验值,利用预设的第三加密算法对该第三校验值进行加密处理,得到常量数据的第三加密校验值。
也就是说,在第二种实现方式中,MCU将常量数据向HSM传输,由HSM计算常量数据的第三校验值,利用预设的第三加密算法对第三校验值进行加密处理,得到常量数据的第三加密校验值,并将计算得到的常量数据的第三加密校验值向MCU传输。由于HSM的运算速度很高,因此由HSM计算常量数据的第三校验值,再利用预设的第三加密算法对第三校验值进行加密处理,与由MCU计算常量数据的第三校验值,再利用预设的第三加密算法对第三校验值进行加密处理相比,能够缩短处理时间。
在本实施例中,MCU获得常量数据的第三加密校验值;MCU从只读存储器获得常量数据对应的第三标准加密校验值,其中,预先计算标准常量数据的第三标准校验值,利用预设的第三加密算法对第三标准校验值进行加密处理,得到第三标准加密校验值;再对常量数据的第三加密校验值和第三标准加密校验值进行比对,如果常量数据的第三加密校验值和对应的第三标准加密校验值相同,那么确定常量数据通过完整性和合法性验证,否则确定常量数据未通过完整性和合法性验证。本实施例中,利用常量数据的第三加密校验值和第三标准加密校验值对常量数据的完整性和合法性进行验证,如果加密端没有正确的密钥(也就是身份不合法),那么常量数据的第三加密校验值和第三标准加密校验值必然是不同的,常量数据不能通过完整性和合法性验证,ECU不会启动,进一步提高了ECU启动过程的安全性。
需要说明的是,本申请中的第一加密算法、第二加密算法和第三加密算法可以为相同的加密算法,也可以为不同的加密算法。
本申请还公开一种ECU,可以参见图4。该ECU包括MCU、HSM和ROM。其中:
ROM存储有引导程序、应用程序、常量数据和HSM的安全固件。
MCU上电后启动HSM,HSM用于:对引导程序进行验证,以确定引导程序的合法性和完整性。
MCU用于:如果引导程序通过验证,则执行引导程序对应用程序进行验证,以确定应用程序的完整性和合法性,如果应用程序通过验证,则执行应用程序对常量数据进行验证,以确定常量数据的完整性和合法性,如果常量数据通过验证,则执行初始化操作。
需要说明的是,ECU还可以包括其他部件,如图4中所示的其他部件。
另外,HSM对引导程序进行验证的方案,可以参见前文中的描述。MCU执行引导程序对应用程序进行验证的方案,MCU执行应用程序对常量数据进行验证的方案,均可以参见前文中的描述。
可以理解的是,ECU的只读存储器中设置标准校验数据区用于存储各项验证过程中所需的标准校验数据。也就是说,本申请实施过程中所需的第一标准校验值、第一标准加密校验值、第二标准校验值、第二标准加密校验值、第三标准校验值和第三标准加密校验值存储于标准校验数据区的指定位置。
另外,本申请实施过程中所需的第一标准校验值、第一标准加密校验值、第二标准校验值、第二标准加密校验值、第三标准校验值和第三标准加密校验值,由合法用户预先写入ECU的只读存储器中的标准校验数据区,以便在启动ECU的过程中对引导程序、应用程序和常量数据进行验证。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种ECU的启动方法,所述ECU存储有引导程序和应用程序,其特征在于,所述ECU包括微控制单元MCU和硬件安全模块HSM,所述启动方法包括:
所述MCU上电后启动所述HSM;
所述HSM对所述引导程序进行验证,以确定所述引导程序的完整性和合法性;
如果所述引导程序通过验证,则所述MCU执行所述引导程序对所述应用程序进行验证,以确定所述应用程序的完整性和合法性;
如果所述应用程序通过验证,则所述MCU执行所述应用程序对常量数据进行验证,以确定所述常量数据的完整性和合法性;
如果所述常量数据通过验证,则所述MCU执行初始化操作;
其中,所述MCU执行所述引导程序对所述应用程序进行验证,包括:
MCU获得应用程序中至少一个目标代码段;MCU获得应用程序中每个目标代码段的第二校验值;MCU获得应用程序中每个目标代码段对应的第二标准校验值;MCU对应用程序中每个目标代码段的第二校验值与对应的第二标准校验值进行比对;如果每个目标代码段的第二校验值与对应的第二标准校验值均相同,确定应用程序通过验证;
或者,
MCU获得应用程序中至少一个目标代码段;MCU获得应用程序中每个目标代码段的第二加密校验值;MCU获得应用程序中每个目标代码段的对应的第二标准加密校验值;MCU对应用程序中每个目标代码段的第二加密校验值与对应的第二标准加密校验值进行比对;如果每个目标代码段的第二加密校验值与对应的第二标准加密校验值均相同,确定应用程序通过验证;
其中,所述MCU执行所述应用程序对常量数据进行验证,包括:
所述MCU获得所述常量数据的第三加密校验值;所述MCU获得所述常量数据对应的第三标准加密校验值;所述MCU对所述常量数据的第三加密校验值与对应的第三标准加密校验值进行比对;所述MCU在所述常量数据的第三加密校验值与对应的第三标准加密校验值相同的情况下,确定所述常量数据通过验证。
2.根据权利要求1所述的方法,其特征在于,所述HSM对所述引导程序进行验证,包括:
所述HSM计算所述引导程序中至少一个目标代码段的第一校验值;
所述HSM获得所述引导程序中每个目标代码段对应的第一标准校验值;其中,所述引导程序中任意一个目标代码段对应的第一标准校验值为:标准引导程序中与所述引导程序中目标代码段的地址空间一致的标准引导程序代码段的校验值;所述第一标准校验值存储于所述ECU的只读存储器;
所述HSM对所述引导程序中每个目标代码段的第一校验值与对应的第一标准校验值进行比对;
所述HSM在所述引导程序中每个目标代码段的第一校验值与对应的第一标准校验值均相同的情况下,确定所述引导程序通过验证。
3.根据权利要求1所述的方法,其特征在于,所述HSM对所述引导程序进行验证,包括:
所述HSM计算所述引导程序中至少一个目标代码段的第一校验值;
所述HSM利用预设的第一加密算法对所述引导程序中每个目标代码段的第一校验值进行加密处理,得到每个目标代码段的第一加密校验值;
所述HSM获得所述引导程序中每个目标代码段对应的第一标准加密校验值;其中,所述引导程序中任意一个目标代码段对应的第一标准加密校验值为:预先计算标准引导程序中与所述引导程序中目标代码段的地址空间一致的标准引导程序代码段的第一标准校验值,利用所述第一加密算法对所述第一标准校验值进行加密处理得到;所述第一标准加密校验值存储于所述ECU的只读存储器;
所述HSM对所述引导程序中每个目标代码段的第一加密校验值与对应的第一标准加密校验值进行比对;
所述HSM在所述引导程序中每个目标代码段的第一加密校验值与对应的第一标准加密校验值均相同的情况下,确定所述引导程序通过验证。
4.根据权利要求1所述的方法,其特征在于,所述应用程序中任意一个目标代码段的第二加密校验值为:利用预设的第二加密算法对所述应用程序中目标代码段的第二校验值进行加密处理,得到所述应用程序中目标代码段的第二加密校验值;
所述应用程序中任意一个目标代码段对应的第二标准加密校验值为:预先计算标准应用程序中与所述应用程序中目标代码段的地址空间一致的标准应用程序代码段的第二标准校验值,利用所述第二加密算法对所述第二标准校验值进行加密处理得到;所述第二标准加密校验值存储于所述ECU的只读存储器。
5.根据权利要求4所述的方法,其特征在于,所述MCU获得所述应用程序中每个目标代码段的第二加密校验值,包括:
所述MCU向所述HSM传输所述应用程序中每个目标代码段;
所述MCU接收所述HSM传输的所述应用程序中每个目标代码段的第二加密校验值;其中,所述HSM分别计算所述应用程序中每个目标代码段的第二校验值,利用所述第二加密算法对所述应用程序中每个目标代码段的第二校验值进行加密处理,得到所述应用程序中每个目标代码段的第二加密校验值。
6.根据权利要求4或5所述的方法,其特征在于,所述MCU获得所述应用程序中至少一个目标代码段,包括:
所述MCU获得所述应用程序中目标代码段的参数;其中,所述目标代码段的参数存储于所述ECU的只读存储器;
所述MCU根据所述参数确定目标代码段的地址空间;
所述MCU基于所述地址空间获取目标代码段。
7.根据权利要求6所述的方法,其特征在于,在确定所述应用程序通过验证后,还包括:
所述MCU生成所述应用程序中目标代码段的新的参数;
将生成的所述目标代码段的新的参数存储于所述ECU的只读存储器,以便所述MCU在下次执行所述引导程序对所述应用程序进行验证的过程中,基于所述目标代码段的新的参数获得目标代码段。
8.根据权利要求1所述的方法,其特征在于,所述常量数据的第三加密校验值为:利用预设的第三加密算法对所述常量数据的第三校验值进行加密处理,得到所述常量数据的第三加密校验值;
所述常量数据对应的第三标准加密校验值为:预先计算标准常量数据的第三标准校验值,利用所述第三加密算法对所述第三标准校验值进行加密处理得到;所述第三标准加密校验值存储于所述ECU的只读存储器。
9.根据权利要求8所述的方法,其特征在于,所述MCU获得所述常量数据的第三加密校验值,包括:
所述MCU向所述HSM传输所述常量数据;
所述MCU接收所述HSM传输的所述常量数据的第三加密校验值;其中,所述HSM计算所述常量数据的第三校验值,利用所述第三加密算法对所述第三校验值进行加密处理,得到所述常量数据的第三加密校验值。
10.一种ECU,其特征在于,包括:微控制单元MCU、硬件安全模块HSM和只读存储器;
所述只读存储器存储有引导程序、应用程序、常量数据和所述HSM的安全固件;
所述MCU上电后启动所述HSM,所述HSM用于:对所述引导程序进行验证,以确定所述引导程序的合法性和完整性;
所述MCU用于:如果所述引导程序通过验证,则执行所述引导程序对所述应用程序进行验证,以确定所述应用程序的完整性和合法性,如果所述应用程序通过验证,则执行所述应用程序对常量数据进行验证,以确定所述常量数据的完整性和合法性,如果所述常量数据通过验证,则执行初始化操作;
其中,所述MCU执行所述引导程序对所述应用程序进行验证,包括:
MCU获得应用程序中至少一个目标代码段;MCU获得应用程序中每个目标代码段的第二校验值;MCU获得应用程序中每个目标代码段对应的第二标准校验值;MCU对应用程序中每个目标代码段的第二校验值与对应的第二标准校验值进行比对;如果每个目标代码段的第二校验值与对应的第二标准校验值均相同,确定应用程序通过验证;
或者,
MCU获得应用程序中至少一个目标代码段;MCU获得应用程序中每个目标代码段的第二加密校验值;MCU获得应用程序中每个目标代码段的对应的第二标准加密校验值;MCU对应用程序中每个目标代码段的第二加密校验值与对应的第二标准加密校验值进行比对;如果每个目标代码段的第二加密校验值与对应的第二标准加密校验值均相同,确定应用程序通过验证;
其中,所述MCU执行所述应用程序对常量数据进行验证,包括:
所述MCU获得所述常量数据的第三加密校验值;所述MCU获得所述常量数据对应的第三标准加密校验值;所述MCU对所述常量数据的第三加密校验值与对应的第三标准加密校验值进行比对;所述MCU在所述常量数据的第三加密校验值与对应的第三标准加密校验值相同的情况下,确定所述常量数据通过验证。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010681055.9A CN111832012B (zh) | 2020-07-15 | 2020-07-15 | 一种ecu及其启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010681055.9A CN111832012B (zh) | 2020-07-15 | 2020-07-15 | 一种ecu及其启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111832012A CN111832012A (zh) | 2020-10-27 |
CN111832012B true CN111832012B (zh) | 2024-04-05 |
Family
ID=72924195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010681055.9A Active CN111832012B (zh) | 2020-07-15 | 2020-07-15 | 一种ecu及其启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111832012B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114491504A (zh) * | 2021-12-31 | 2022-05-13 | 海尔数字科技(青岛)有限公司 | 安全验收方法、装置、设备及存储介质 |
CN114780111A (zh) * | 2022-04-01 | 2022-07-22 | 连云港杰瑞电子有限公司 | 一种微控制器的高可靠程序升级实现方法 |
CN114764347B (zh) * | 2022-04-14 | 2024-09-27 | 重庆长安汽车股份有限公司 | 一种多核控制器的程序校验系统、校验方法及存储介质 |
CN117034297B (zh) * | 2023-09-11 | 2024-08-20 | 深圳市航顺芯片技术研发有限公司 | 一种基于mcu的安全启动实施方法及相关设备 |
CN117235740B (zh) * | 2023-11-10 | 2024-03-22 | 万帮数字能源股份有限公司 | 固件的启动方法、启动装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102509049A (zh) * | 2011-11-14 | 2012-06-20 | 任子行网络技术股份有限公司 | 一种程序合法性验证方法和系统 |
WO2016107082A1 (zh) * | 2014-12-30 | 2016-07-07 | 中国人民解放军装备学院 | 一种程序运行时处理器指令校验方法 |
WO2016173267A1 (zh) * | 2015-04-29 | 2016-11-03 | 华为技术有限公司 | 一种完整性校验方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6508067B2 (ja) * | 2016-01-14 | 2019-05-08 | 株式会社デンソー | 車両用データ通信システム |
-
2020
- 2020-07-15 CN CN202010681055.9A patent/CN111832012B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102509049A (zh) * | 2011-11-14 | 2012-06-20 | 任子行网络技术股份有限公司 | 一种程序合法性验证方法和系统 |
WO2016107082A1 (zh) * | 2014-12-30 | 2016-07-07 | 中国人民解放军装备学院 | 一种程序运行时处理器指令校验方法 |
WO2016173267A1 (zh) * | 2015-04-29 | 2016-11-03 | 华为技术有限公司 | 一种完整性校验方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于完整性验证的软件防篡改方案;马巧梅;胡沙沙;陈够喜;;计算机应用与软件(08);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111832012A (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111832012B (zh) | 一种ecu及其启动方法 | |
US10244394B2 (en) | Method and update gateway for updating an embedded control unit | |
US7197637B2 (en) | Authorization process using a certificate | |
CN111666564B (zh) | 应用程序安全启动方法、装置、计算机设备和存储介质 | |
TW201732669A (zh) | 受控的安全碼鑑認 | |
CN112257086B (zh) | 一种用户隐私数据保护方法及电子设备 | |
CN103679005A (zh) | 启用安全电子控制单元的开发模式的方法 | |
US20070067635A1 (en) | Authentication of a vehicle-external device | |
CN115643564A (zh) | 汽车安全的fota升级方法、装置、设备及存储介质 | |
CN112148314B (zh) | 一种嵌入式系统的镜像验证方法、装置、设备及存储介质 | |
CN111095200A (zh) | 嵌入式程序的安全升级方法、装置、设备及存储介质 | |
JP2011003020A (ja) | コンピューターシステムおよびプログラム起動方法 | |
CN112511306A (zh) | 一种基于混合信任模型的安全运行环境构建方法 | |
CN105308610A (zh) | 用于设备上的平台和用户应用安全性的方法和系统 | |
WO2019059148A1 (ja) | Bios管理装置、bios管理システム、bios管理方法、及び、bios管理プログラムが格納された記録媒体 | |
CN116707758A (zh) | 可信计算设备的认证方法、设备和服务器 | |
KR20190118894A (ko) | 안전한 usb 장치를 보장하는 부트 방법 | |
CN114143197B (zh) | 物联网设备ota升级方法、装置、设备及可读存储介质 | |
CN109743283B (zh) | 一种信息传输方法及设备 | |
CN117874784B (zh) | 一种车辆加密系统和方法 | |
CN116032484B (zh) | 一种通信设备安全启动的方法、装置和电子设备 | |
CN115935318B (zh) | 一种信息处理方法、装置、服务器、客户端及存储介质 | |
CN112347481A (zh) | 安全启动方法、控制器和控制系统 | |
CN115495123A (zh) | 硬件安全模块的刷写方法及系统 | |
WO2013161371A1 (ja) | プログラム提供装置、システム、プログラム提供方法およびプログラム |
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 | ||
CB02 | Change of applicant information |
Address after: 4 / F, building 1, No.14 Jiuxianqiao Road, Chaoyang District, Beijing 100020 Applicant after: Beijing Jingwei Hirain Technologies Co.,Inc. Address before: 8 / F, block B, No. 11, Anxiang Beili, Chaoyang District, Beijing 100101 Applicant before: Beijing Jingwei HiRain Technologies Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |