CN107609403B - 一种嵌入式设备的安全启动方法、装置、设备及介质 - Google Patents
一种嵌入式设备的安全启动方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN107609403B CN107609403B CN201710848459.0A CN201710848459A CN107609403B CN 107609403 B CN107609403 B CN 107609403B CN 201710848459 A CN201710848459 A CN 201710848459A CN 107609403 B CN107609403 B CN 107609403B
- Authority
- CN
- China
- Prior art keywords
- digital certificate
- bootloader
- flash
- latest version
- resistor
- 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
Images
Landscapes
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种嵌入式设备的安全启动方法、装置、设备及介质,用以解决现有嵌入式设备安全启动方法中数字证书除返厂外不可更新的问题。该安全启动方法中,处理器启动,获取最新版本的数字证书;将FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定该FLASH写保护区;采用该FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动该嵌入式设备。由于本发明实施例中在处理器启动后获取最新版本的数字证书,解决了数字证书除返厂外不可更新的问题;利用自锁电路锁定FLASH写保护区,达到了数字证书可升级和防篡改兼顾的目的,提高了嵌入式设备启动的安全性。
Description
技术领域
本发明涉及安全启动技术领域,特别涉及一种嵌入式设备的安全启动方法、装置、设备及介质。
背景技术
现有技术中,涉及到嵌入式设备的安全启动的方案包括:
方案一:如图1所示,处理器(System-on-a-chip,SOC)中包含处理器核心和安全子模块,外置FLASH芯片中存储有设备启动代码(Bootloader)、操作系统内核和根文件系统。其安全启动流程为:当处理器上电时,不直接由处理器核心执行FLASH芯片上的Bootloader,而是先运行安全子模块;由安全子模块作为可信根,通过数字签名算法验证根文件系统和操作系统内核;当验证通过后由处理器核心执行Bootloader启动嵌入式设备,否则拒绝启动嵌入式设备。
方案二:采用两个闪存FLASH,如图2所示,其中,非易失存储器用来存放主启动程序,外置启动只读存储器(ROM)用来存放只读的校验程序,即安全校验代码;现场可编程门阵列(Field-Programmable Gate Array,FPGA)作为地址译码器切换FLASH;通过本地总线完成存储器和处理器的数据连接。其安全启动流程为:嵌入式设备上电时,处理器通过FPGA译码,执行外置启动ROM中存放的安全校验代码;利用外置启动ROM中的安全代码验证非易失性存储器中的主启动程序;主启动程序验证通过后,处理器执行主启动程序,安全启动系统。
方案三:使用FLASH写保护功能实现对启动代码的保护,软件构架如图3所示,烧片将第一启动代码(First Boot)、嵌入式实时操作系统镜像(u/COS-IIImage)、第二启动代码(Second Boot)和数字签名1写入FLASH,并使能写保护区,写保护后这部分镜像不可更改;而写入的Linux内核、Linux应用系统以及它们的数字签名2没有进行写保护,以便后续对其进行固件更新操作。其安全启动流程为:嵌入式设备上电后,先从First Boot启动,利用数字签名技术依次验证并执行写保护区的u/COS-II Image、Second Boot镜像;写保护区镜像利用数字签名技术验证linux内核以及上层应用;完成验证后,linux内核获得控制权,并继续完成启动,实现安全启动。
对于上述方案一,由于市面上很多处理器没有集成该安全子模块,无法实现安全启动,故而存在局限性;集成安全子模块后烧录到处理器中的数字证书、公钥Public Key等参数无法更改,一旦出现签名私钥Private Key泄露,除返厂外不可更换,否则将会影响嵌入式设备的安全性。对于上述方案二,额外增加的FPGA地址译码器需要编写逻辑程序,增加了复杂度,增加系统不稳定因素。对于上述方案三,写保护区中包含的First Boot、u/COS-II、Second Boot以及数字签名1不可更改,一旦出现签名Private Key泄露,除返厂外不可更换,否则将会影响嵌入式设备的安全性。
因此,现有技术中存在嵌入式设备安全启动方法的适用范围存在局限性、嵌入式设备不稳定、并且当数字证书泄漏时,除返厂外不可更新的缺陷。
发明内容
本发明提供一种嵌入式设备的安全启动方法、装置及设备,用以解决现有技术中存在嵌入式设备安全启动方法的适用范围存在局限性、嵌入式设备不稳定、数字证书除返厂外不可更新的问题。
本发明实施例提供了一种嵌入式设备安全启动的方法,包括:
处理器启动,获取最新版本的数字证书;
将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;
采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;
如均完整,则启动所述嵌入式设备。
进一步地,所述将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区之前,还包括:
获取最新版本的设备启动代码Bootloader。
进一步地,所述获取最新版本的数字证书和Bootloader包括:
判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader;
若第一数字证书和/或第一Bootloader非最新版本的数字证书和Bootloader,则将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader;
若均是最新版本,则将当前存储在FLASH中的第一数字证书和第一Bootloader作为最新版本的数字证书和Bootloader。
进一步地,所述将所述第一Bootloader更新为最新版本的Bootloader之后,还包括:
所述处理器重新启动。
进一步地,所述判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader包括:
根据预先保存的数字证书和Bootloader的更新地址,识别所述更新地址保存的第二数字证书的版本是否与所述第一数字证书的版本一致,并判断所述更新地址保存的第二Bootloader的版本是否与所述第一Bootloader的版本一致;
如果均是,确定所述FLASH中当前存储的第一数字证书和第一Bootloader均为最新版本的数字证书和Bootloader;
若第一数字证书的版本和/或第一Bootloader的版本,与所述第二数字证书的版本和/或第二Bootloader的版本不同,则确定所述FLASH中当前存储的第一数字证书和/或第一Bootloader非最新版本的数字证书和/或Bootloader。
进一步地,所述将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader之前,还包括:
验证所述最新版本的数字证书和/或Bootloader是否合法;
如果是,进行后续步骤。
进一步地,所述自锁电路包括:第一电阻、第二电阻、第四电阻、第五电阻、第一电容、第二电容、第一三极管、第三三极管和第五三极管;
其中,第五电阻的第一端用于与处理器的输出引脚连接,第五电阻的第二端连接嵌入式设备的电源端,第五三极管的基极与所述第五电阻的第一端与处理器的输出引脚的第一串接点连接,第五三极管的发射极连接嵌入式设备的电源端,第五三极管的集电极连接第四电阻的第一端,第四电阻的第二端接地,第三三极管的发射极连接嵌入式设备的电源端,第三三极管的基极与所述FLASH的写保护输入引脚连接,第三三极管的集电极与第一电阻的第一端连接,第一电阻的第二端接地,所述第五三极管的集电极与第四电阻的第一端的第一串接点与所述第三三极管的集电极与第一电阻的第一端的第二串接点连接,第一三极管的集电极与所述第三三极管的基极与所述FLASH的写保护输入引脚的第三串接点连接,第一三极管的基极与所述第二串接点连接,第一三极管的发射极接地,第二电阻的第一端与所述第三串接点连接,第二电阻的第二端与嵌入式设备的电源端连接,第一电容与第一电阻并联,第二电容与第二电阻并联。
进一步地,所述触发自锁电路锁定所述FLASH写保护区包括:
所述处理器向所述自锁电路发送第一控制信号,第一控制信号为触发锁定信号,触发所述自锁电路保持在锁定状态,锁定所述FLASH写保护区。
进一步地,所述处理器启动后,触发自锁电路锁定所述FLASH写保护区之前,还包括:
所述处理器向所述自锁电路发送第二控制信号,第二控制信号为非锁定信号,所述第二控制信号使得自锁电路在触发锁定信号到来之前保持非锁定状态。
本发明实施例提供了一种嵌入式设备安全启动的装置,包括:
启动获取模块,用于处理器启动,获取最新版本的数字证书;
触发锁定模块,用于将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;
验证模块,用于采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动所述嵌入式设备。
进一步地,所述启动获取模块,还用于获取最新版本的设备启动代码Bootloader。
进一步地,所述启动获取模块,具体用于判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader;若第一数字证书和/或第一Bootloader非最新版本的数字证书和Bootloader,则将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader;若均是,则将当前存储的第一数字证书和第一Bootloader作为最新版本的数字证书和Bootloader。
进一步地,所述启动获取模块,具体用于在所述将所述第一Bootloader更新为最新版本的Bootloader之后,重新启动所述处理器。
进一步地,所述启动获取模块,具体用于根据预先保存的数字证书和Bootloader的更新地址,识别所述更新地址保存的第二数字证书的版本是否与所述第一数字证书的版本一致,并判断所述更新地址保存的第二Bootloader的版本是否与所述第一Bootloader的版本一致;如果均是,确定所述FLASH中当前存储的第一数字证书和第一Bootloader均为最新版本的数字证书和Bootloader;若第一数字证书的版本和/或第一Bootloader的版本,与所述第二数字证书的版本和/或第二Bootloader的版本不同,则确定所述FLASH中当前存储的第一数字证书和/或第一Bootloader非最新版本的数字证书和/或Bootloader。
进一步地,所述启动获取模块,具体用于在所述将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader之前,验证所述最新版本的数字证书和/或Bootloader是否合法,如果是,将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader。
进一步地,所述触发锁定模块,具体用于向所述自锁电路发送第一控制信号,第一控制信号为触发锁定信号,触发所述自锁电路保持在锁定状态,锁定所述FLASH写保护区。
进一步地,所述触发锁定模块,具体用于在所述启动处理器后,触发自锁电路锁定所述FLASH写保护区之前,所述处理器向所述自锁电路发送第二控制信号,第二控制信号为非锁定信号,所述第二控制信号使得自锁电路在触发锁定信号到来之前保持非锁定状态。
本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现如上述任一项所述的方法步骤。
本发明提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法步骤。
本发明实施例提供了一种嵌入式设备安全启动的方法、装置、设备及介质,该安全启动方法中,处理器启动,获取最新版本的数字证书;将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动所述嵌入式设备。由于本发明实施例中在处理器启动后获取最新版本的数字证书,将数字证书更新为最新版本,保证了嵌入式设备启动的安全性;解决了数字证书除返厂外不可更新的问题。利用自锁电路锁定FLASH写保护区,使FLASH写保护区的只读状态在本次嵌入式设备上电启动到嵌入式设备断电关闭期间保持始终有效,能够有效防止数字证书被篡改攻击,达到了数字证书可升级和防篡改兼顾的目的,提高了嵌入式设备启动的安全性。
附图说明
图1为本现有技术方案一提供的系统示意图;
图2为本现有技术方案二提供的系统示意图;
图3为本现有技术方案三提供的FLASH存储区结构图;
图4为本发明实施例提出的嵌入式设备安全启动的流程图;
图5为本发明实施例提供的嵌入式设备硬件设计图;
图6为本发明实施例提供的FLASH布局图;
图7为本发明实施例提供的嵌入式设备安全启动的详细实施流程图;
图8为本发明实施例提供的数字证书和Bootloader更新流程图;
图9为本发明实施例提供的一种自锁电路的电路图;
图10为本发明实施例提供一种嵌入式设备安全启动的装置示意图;
图11为本发明实施例提供一种嵌入式设备示意图。
具体实施方式
为了扩大嵌入式设备安全启动方法的适用范围,保证数字证书的安全性,本发明实施例提供了一种嵌入式设备的安全启动方法、装置、设备及介质。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
图4为本发明实施例提出的嵌入式设备安全启动的流程图,其具体处理过程如下:
S401:处理器启动,获取最新版本的数字证书。
嵌入式设备包括处理器和FLASH,其中FLASH中设置有设备启动代码(Bootloader)的存储区域和数字证书的存储区域,设备启动代码的存储区域存储有设备启动代码,数字证书的存储区域存储有数字证书。
本发明实施例在嵌入式设备上电后,处理器启动,处理器执行Bootloader,进入更新流程。其中该更新流程中包括:获取最新版本的数字证书。另外,该更新流程还可以包括:获取最新版本的Bootloader。
具体地,获取最新版本的数字证书的目的是在利用FLASH中存储的数字证书进行数字签名验证操作时,保证FLASH中存储的数字证书是最新版本的数字证书,否则可能使嵌入式设备启动的安全性得不到保证,甚至无法启动操作系统内核。其中,最新版本的数字证书可以存储在包括硬盘、U盘、光盘、ROM、RAM和网络服务器等存储媒介上。数字证书的具体更新地址可以预先保存在处理器中,在获取最新版本的数字证书时,根据最新版本的数字证书的更新地址进行获取。根据最新版本的数字证书的存储媒介不同,可以通过不同的通道获取最新版本的数字证书。
较佳地,本发明实施例中最新版本的数字证书存储在网络服务器上。
具体地,在获取最新版本的数字证书的同时,还可以获取最新版本的Bootloader,实现对数字证书和Bootloader的更新。其中最新版本的Bootloader和最新版本的数字证书的更新地址可以相同,也可以不同,只要处理器中预先保存了最新版本的Bootloader和最新版本的数字证书的更新地址,即可获取最新版本的Bootloader和最新版本的数字证书。
因此处理器中保存有最新版本的数字证书和最新版本的Bootloader的更新地址,从该更新地址获取对应的数字证书和Bootloader,将获取的数字证书和Bootloader作为最新版本的数字证书和最新版本的Bootloader。
S402:将FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区。
FLASH中设置有数字证书的存储区域,处理器在获取了最新版本的数字证书后,将该最新版本的数字证书更新到FLASH的数字证书的存储区域中。如果处理器也获取了最新版本的Bootloader,也可以将该最新版本的Bootloader更新到FLASH的Bootloader的存储区域中。
处理器将FLASH中数字证书的存储区域和Bootloader的存储区域作为FLASH写保护区,处理器根据该数字证书的存储区域和Bootloader的存储区域,动态计算FLASH写保护区的区域大小。确定了FLASH中的FLASH写保护区大小后,处理器触发自锁电路锁定所述FLASH写保护区。
具体地,自锁电路是一种能够自我锁定输出状态的电路,自锁电路具有以下特点:1、自锁电路上电时,自锁电路能够保持第一稳定输出状态,在本发明实施例中该输出状态为非FLASH写保护状态;2、当给予自锁电路一个特定的输入时,自锁电路将转变并保持为第二稳定输出状态,在本发明实施例中该输出状态为FLASH写保护状态;3、在2的基础上,即使自锁电路的输入信号发生任意的状态的变化,自锁电路始终保持为第二稳定输出状态。即,当自锁电路接收到一个特定的输入信号后会将其输出信号锁定在一个稳定的状态,一旦到达该稳定状态后之后就不再受输入信号的变化而变化;同时,这种稳定的输出状态在本次上电至断电期间始终保持不变。
在本发明实施例中当嵌入式设备启动后,该自锁电路上电,保持在第一稳定输出状态,当处理器确定了FLASH写保护区后,向自锁电路输出控制信号,触发自锁电路转变并保持为锁定状态,该锁定状态将一直保持下去,在该锁定状态下,无论处理器再向自锁电路输出什么控制信号,该锁定状态都不会发生变化。
具体地,自锁电路可由处理器片上通用输入/输出(General Purpose InputOutput,GPIO)模块的电平锁定(Lock-down)功能、D触发器、JK触发器或者使用分立元件等实现,由于自锁电路是比较成熟的数字电路,故而本发明实施例中对此不再进行赘述。
S403:采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动所述嵌入式设备。
为了实现嵌入式设备的安全启动,在FLASH中还设置有操作系统内核的存储区域、应用的存储区域以及数据配置区的存储区域等,操作系统内核的存储区域存储有操作系统内核,应用的存储区域存储有文件系统,数据配置区的存储区域存储有各种数据。该FLASH的存储区域中存储的操作系统内核以及应用均带有数字签名。
具体地,当FLASH写保护区被锁定后,此时该FLASH写保护区处于只读状态,处理器可以读取该FLASH写保护区内的数字证书,利用该数字证书验证操作系统内核是否完整,若验证通过,则启动操作系统内核;操作系统内核运行,并再次读取FLASH写保护区内的数字证书,利用数字证书验证应用,若验证通过,则启动应用,从而完成嵌入式设备的安全启动;若操作系统内核或应用没有通过验证,则拒绝启动嵌入式设备。
由于本发明实施例中在处理器启动后获取最新版本的数字证书,将数字证书更新为最新版本,保证了嵌入式设备启动的安全性;解决了数字证书除返厂外不可更新的问题。利用自锁电路锁定FLASH写保护区,使FLASH写保护区的只读状态在本次嵌入式设备上电启动到嵌入式设备断电关闭期间保持始终有效,能够有效防止数字证书被篡改攻击,达到了数字证书可升级和防篡改兼顾的目的,提高了嵌入式设备启动的安全性。
下面以一个具体的实施例对上述过程进行详细说明。
图5为本发明实施例提供的嵌入式设备的内部结构图,该嵌入式设备中包括处理器、FLASH和自锁电路,其中处理器与FLASH之间通过控制总线、地址总线和数据总线连接,并且自锁电路分别连接处理器和FLASH。图6为本发明实施例中FLASH中各存储区域的结构示意图,其中该FLASH中设置有数字证书的存储区域、Bootloader的存储区域、操作系统内核的存储区域、应用的存储区域以及数据配置区的存储区域等,数字证书的存储区域存储有数字证书,Bootloader的存储区域存储有Bootloader,操作系统内核的存储区域存储有操作系统内核,应用的存储区域存储有应用,数据配置区的存储区域存储有各种数据,该FLASH的存储区域中存储的操作系统内核以及应用均带有数字签名。
具体地,当处理器向该自锁电路输出一个写保护信号时,自锁电路会根据该信号转变为锁定状态,并输出稳定的写保护信号到FLASH的写保护输入引脚,将该FLASH的FLASH写保护区设定为只读状态。此时,即使处理器向自锁电路输出的写保护信号消失或改变为其他信号,自锁电路的输出信号也不会发生改变,从而将该FLASH的FLASH写保护区锁定为只读状态。
图7为本发明实施例提供的嵌入式设备安全启动的详细实施过程:
S701:嵌入式设备上电。
S702:处理器执行Bootloader。
S703:处理器获取最新版本的数字证书和/或Bootloader,并更新到对应的FLASH数字证书和/或Bootloader的存储区域中。
S704:将数字证书和Bootloader的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区。
S705:处理器读取数字证书并利用该数字证书验证操作系统内核。
S706:验证通过后操作系统内核运行。
S707:操作系统内核验证应用。
S708:验证通过后应用启动。
S709:嵌入式设备安全启动结束。
实施例2:
在上述实施例的基础上,在本发明实施例中:
所述获取最新版本的数字证书和Bootloader包括:
判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader;
若第一数字证书和/或第一Bootloader非最新版本的数字证书和Bootloader,则将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader;
若均是最新版本,则将当前存储在FLASH中的第一数字证书和第一Bootloader作为最新版本的数字证书和Bootloader。
具体地,处理器启动时,执行FLASH中当前存储的Bootloader,进入更新流程,嵌入式设备的FLASH中存储有第一数字证书,在获取最新版本的数字证书时,首先判断FLASH中当前存储的第一数字证书是否为最新版本的数字证书,若是,则不需要对该第一数字证书进行更新,可以将该第一数字证书作为最新版本的数字证书,并跳出更新流程;若不是,则第一数字证书需要更新,将FLASH中当前存储的第一数字证书更新为最新版本的数字证书。由于FLASH中当前存储的第一数字证书可能就是最新版本的数字证书,通过判断的方法,可以判定是否需要对第一数字证书进行更新,在不需要更新的情况下可以直接跳出更新流程,直接将第一数字证书作为最新版本的数字证书,简化了安全启动流程,使嵌入式设备安全启动更快速。
在不同的时期,Bootloader所要实现的功能可能不同,这就需要对Bootloader进行更新,而且,当Bootloader代码出现漏洞时,可以通过更新Bootloader来进行漏洞修复,从而实现对Bootloader进行功能扩充或漏洞修复,使嵌入式设备的安全启动得到更充分的保障。
具体地,在获取最新版本数字证书的同时,也可以采用同样的方法获取最新版本的Bootloader。具体地,处理器启动时,运行FLASH中当前存储的Bootloader,进入更新流程,嵌入式设备的FLASH中存储有第一Bootloader,在获取最新版本的Bootloader时,首先判断FLASH中当前存储的第一Bootloader是否为最新版本的Bootloader,若是,则不需要对该第一Bootloader进行更新,且将该第一Bootloader作为最新版本的Bootloader,并跳出更新流程;若不是,则当前第一Bootloader需要更新,将FLASH中当前存储的第一Bootloader更新为最新版本的Bootloader。
所述判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader包括:
根据预先保存的数字证书和Bootloader的更新地址,识别所述更新地址保存的第二数字证书的版本是否与所述第一数字证书的版本一致,并判断所述更新地址保存的第二Bootloader的版本是否与所述第一Bootloader的版本一致;
如果均是,确定所述FLASH中当前存储的第一数字证书和第一Bootloader均为最新版本的数字证书和Bootloader;
若第一数字证书的版本和/或第一Bootloader的版本,与所述第二数字证书的版本和/或第二Bootloader的版本不同,则确定所述FLASH中当前存储的第一数字证书和/或第一Bootloader非最新版本的数字证书和/或Bootloader。
因为在处理器中保存有最新版本的数字证书的更新地址,该更新地址中存储的第二数字证书一定是最新版本的数字证书。并且处理器可以获取FLASH中当前存储的第一数字证书的版本,因此通过比较该更新地址存储的第二数字证书的版本和FLASH中存储的第一数字证书的版本,即可判断FLASH中存储的第一数字证书是否为最新版本的数字证书。若第一数字证书的版本与第二数字证书的版本不一致,则获取该第二数字证书,并将该FLASH中存储的第一数字证书更新为第二数字证书。若一致,则FLASH中当前存储的第一数字证书即为最新版本数字证书,此时跳出更新流程。
同样的,判断FLASH中当前存储的第一Bootloader是否为最新版本的Bootloader的过程与上述过程类似,因为在处理器中保存有最新版本的Bootloader的更新地址,该更新地址中存储的第二Bootloader一定是最新版本的Bootloader。并且处理器可以获取FLASH中当前保存的第一Bootloader的版本,因此通过比较该更新地址存储的第二Bootloader的版本和FLASH中保存的第一Bootloader的版本,即可判断FLASH中保存的第一Bootloader是否为最新版本的Bootloader。若第一Bootloader的版本与第二Bootloader的版本不一致,则获取该第二Bootloader,并将该FLASH中存储的第一Bootloader更新为第二Bootloader。若一致,则FLASH中当前存储的第一Bootloader即为最新版本Bootloader,此时跳出更新流程。
在确定FLASH中当前存储的第一数字证书和/或第一Bootloader需要更新的情况下,将第一数字证书更新为第二数字证书和/或将第一Bootloader更新为第二Bootloader后,为了保证启动过程的安全性,在本发明实施例中:
所述将所述第一Bootloader更新为最新版本的Bootloader之后,所述方法还包括:所述处理器重新启动。
具体地,若FLASH中当前存储的第一数字证书不是最新版本的数字证书时,则需要对数字证书进行更新,更新完成后,跳出更新流程,无需重启处理器。若确定FLASH中当前存储的第一数字证书为最新版本的数字证书时,不进行更新操作,直接跳出更新流程,无需重启处理器。在完成对FLASH中数字证书的更新操作后,使后续采用数字证书对操作系统内核和应用的验证操作均利用最新版本的数字证书,避免了利用旧版本的数字证书验证操作系统内核和应用而导致的嵌入式设备启动不安全的后果;从而提高嵌入式设备启动的安全性。
另外,若FLASH中当前存储的第一Bootloader不是最新版本的Bootloader时,则需要对Bootloader进行更新,更新完成后,重新启动处理器。若确定FLASH中当前存储的第一Bootloader为最新版本的Bootloader时,不进行更新操作,直接跳出更新流程,从而无需重启处理器。在完成对FLASH中Bootloader的更新操作后,通过重启处理器,运行最新版本的Bootloader,使系统运行更加可靠、安全;并且,通过处理器重启后再次执行Bootloader并进入更新流程,可以验证本次更新是否完成,若出现更新故障导致更新失败,能够再次进行更新操作。保证了Bootloader更新完成的可靠性,从而提高嵌入式设备启动的安全性。
实施例3:
为了进一步保证嵌入式设备的安全启动,在上述各实施例的基础上,在本发明实施例中,所述将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader之前,所述方法还包括:
验证所述最新版本的数字证书和/或Bootloader是否合法,如果是,进行后续步骤。
如果处理器确定FLASH中保存的第一数字证书非最新版本的数字证书,在获取最新版本的数字证书时,例如上述实施例中的第二数字证书,为了进一步保证安全启动,处理器可以对该最新版本的数字证书进行验证,验证该最新版本的数字证书是否合法,只有合法时,才获取该最新版本的数字证书。
因此,此时最新版本的数字证书是带有数字签名的数字证书,处理器中保存有对该最新版本的数字证书进行验证的数字证书,采用保存的该数字证书对该最新版本的数字证书进行验证。具体的该数字证书可以是FLASH中当前存储的第一数字证书,若该最新版本的数字证书不合法,则处理器拒绝更新,此时将FLASH中当前存储的第一数字证书作为最新版本数字证书,并跳出更新流程;若该最新版本的数字证书合法,则将所述FLASH中存储的第一数字证书更新为最新版本的数字证书。
同样的,如果处理器确定FLASH中保存的第一Bootloader非最新版本的Bootloader,在获取最新版本的Bootloader时,例如上述实施例中的第二Bootloader,为了进一步保证安全启动,处理器可以对该最新版本的Bootloader进行验证,验证该最新版本的Bootloader是否合法,只有合法时,才获取该最新版本的Bootloader。
因此,此时最新版本的Bootloader是带有数字签名的Bootloader,处理器中保存有对该最新版本的Bootloader进行验证的数字证书,采用保存的该数字证书对该最新版本的Bootloader进行验证。具体的该数字证书可以是FLASH中当前存储的第一数字证书,若该最新版本的Bootloader不合法,则处理器拒绝更新,此时将FLASH中当前存储的第一Bootloader作为最新版本Bootloader,并跳出更新流程;若该最新版本的Bootloader合法,则将所述FLASH中存储的第一Bootloader更新为最新版本的Bootloader。
图8为本发明实施例提供的嵌入式设备安全启动的过程流程图,该过程包括以下步骤:
S801:嵌入式设备上电,处理器启动。
S802:处理器根据预先保存的数字证书和Bootloader的更新地址,识别所述更新地址保存的第二数字证书和第二Bootloader。
S803:处理器判断FLASH中当前存储的第一数字证书和第一Bootloader的版本是否与第二数字证书和第二Bootloader的版本对应相同,如果均为是,进行S806,如果否,进行S804。
S804:如果第一数字证书与第二数字证书的版本不同,则处理器验证第二数字证书是否合法,如果是,进行S805,否则,进行S806;如果第一Bootloader与第二Bootloader的版本不同,则处理器验证第二Bootloader是否合法,如果是,进行S805,否则,进行S806。
如果第一数字证书与第二数字证书的版本不同,且第一Bootloader与第二Bootloader的版本不同,则处理器分别针对第二数字证书和第二Bootloader,采用上述方式进行验证。
S805:处理器根据第二数字证书和/或第二Bootloader,对FLASH中当前存储的第一数字证书和/或第一Bootloader进行更新,如果仅对第一数字证书进行更新,则进行S806;如果完成了对第一Bootloader进行更新,则处理器重新启动,之后进行S802。
S806:将FLASH中数字证书和Bootloader的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区。
S807:采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动所述嵌入式设备,如不完整,则拒绝启动嵌入式设备。
本发明实施例中当处理器获取的第二数字证书和/或第二Bootloader与FLASH中当前存储的第一数字证书和/或第一Bootloader的版本不一致时,在将第一数字证书和/或第一Bootloader更新为第二数字证书和/或第二Bootloader之前,可以利用FLASH中当前存储的第一数字证书验证该第二数字证书和/或第二Bootloader的合法性,仅当第二数字证书和/或第二Bootloader均合法时才进行更新操作,使FLASH中存储的数字证书和Bootloader均是合法、可信的。从而更进一步的提高了嵌入式设备启动的安全性。
实施例4:
为了实现FLASH写保护区的锁定和初始时的非锁定状态,在上述实施例的基础上,在本发明实施例中:
所述自锁电路包括:第一电阻、第二电阻、第四电阻、第五电阻、第一电容、第二电容、第一三极管、第三三极管和第五三极管;
其中,第五电阻的第一端用于与处理器的输出引脚连接,第五电阻的第二端连接嵌入式设备的电源端,第五三极管的基极与所述第五电阻的第一端与处理器的输出引脚的第一串接点连接,第五三极管的发射极连接嵌入式设备的电源端,第五三极管的集电极连接第四电阻的第一端,第四电阻的第二端接地,第三三极管的发射极连接嵌入式设备的电源端,第三三极管的基极与所述FLASH的写保护输入引脚连接,第三三极管的集电极与第一电阻的第一端连接,第一电阻的第二端接地,所述第五三极管的集电极与第四电阻的第一端的第一串接点与所述第三三极管的集电极与第一电阻的第一端的第二串接点连接,第一三极管的集电极与所述第三三极管的基极与所述FLASH的写保护输入引脚的第三串接点连接,第一三极管的基极与所述第二串接点连接,第一三极管的发射极接地,第二电阻的第一端与所述第三串接点连接,第二电阻的第二端与嵌入式设备的电源端连接,第一电容与第一电阻并联,第二电容与第二电阻并联。
图9为本发明实施例提供的一种自锁电路的电路结构示意图,该自锁电路包括三极管,电阻和电容。针对该自锁电路,FLASH与该自锁电路连接的FLASH写保护输入引脚为低电平有效,与该自锁电路连接的处理器的输出引脚在嵌入式设备上电时,该处理器的输出引脚为高电平。
所述触发自锁电路锁定所述FLASH写保护区包括:
所述处理器向所述自锁电路发送第一控制信号,第一控制信号为触发锁定信号,触发所述自锁电路保持在锁定状态,锁定所述FLASH写保护区。
针对本发明实施例提出的如图9所示的自锁电路,处理器向该自锁电路发送第一控制信号,即处理器控制其与自锁电路连接的输出引脚输出低电平信号,使自锁电路接收到该低电平信号后,自锁电路会根据该低电平信号转变为锁定状态,并输出稳定的低电平信号到FLASH的写保护输入引脚,使该低电平信号在本次嵌入式设备上电开机到断电关机期间始终有效。
具体地,如图9所示,嵌入式设备上电时自锁电路与处理器的输出引脚连接的输入端B1为高电平或者悬浮输入,自锁电路中三极管Q5、三极管Q3以及三极管Q1均处于截止状态,此时,自锁电路与FLASH写保护输入引脚连接的输出端B2为高电平,由于FLASH写保护输入引脚为低电平有效,故而无法使能FLASH写保护区,此时FLASH中所有内容为可读写状态。
当处理器与自锁电路连接的输出引脚由高电平转变为低电平时,自锁电路的输入端B1为低电平,三极管Q5导通,三极管Q5驱动三极管Q1导通,三极管Q1驱动三极管Q3导通,同时三极管Q3会驱动三极管Q1导通,从而实现自锁功能,即三极管Q1在不断电的情况下会保持导通状态不变。此时,自锁电路的输出端B2保持低电平不变。
此时,即使自锁电路输入端B1的状态再次由低电平转变为高电平,由于三极管Q1的导通,驱动三极管Q3导通,又由于三极管Q3的导通,使得三极管Q1持续导通,使得自锁电路不再受输入端B1电平信号的影响,其输出端B2持续保持低电平,从而使能FLASH写保护区的写保护状态。
当嵌入式设备断电后,由于不再有电源输入,三极管Q5、三极管Q3和三极管Q1均处于截止状态,则自锁电路的输入和输出都将处于低电平状态,即FLASH写保护区依然被锁定为只读状态。
由于该自锁电路的存在,将FLASH写保护区的写保护状态锁定,即使处理器输入输出引脚上的电平信号发生变化,也不影响FLASH写保护区的写保护状态,使FLASH写保护区中存储的数字证书和Bootloader不易被篡改,更加安全可靠。
具体地,对于不同的嵌入式设备,可以选择相应的自锁电路来实现由处理器发出信号锁定FLASH写保护区的功能。由于自锁电路是比较成熟的数字电路,为公知的现有技术,故而此处不再对其进行赘述。
所述处理器启动后,触发自锁电路锁定所述FLASH写保护区之前,所述方法还包括:
所述处理器向所述自锁电路发送第二控制信号,第二控制信号为非锁定信号,所述第二控制信号使得自锁电路在触发锁定信号到来之前保持非锁定状态。
针对本发明实施例提出的如图9所示的自锁电路,嵌入式处理器在上电启动后,触发自锁电路锁定FLASH写保护区之前,向自锁电路发送第二控制信号,即嵌入式设备上电后,处理器与该自锁电路相连接的输出引脚默认发出的信号,例如该信号为高电平信号,使自锁电路接收到该高电平信号后,输出该高电平信号,也就是说自锁电路在触发锁定信号到来之前保持非锁定状态。
具体地,由于嵌入式设备断电时,三极管Q5、三极管Q3和三极管Q1均处于截止状态,则自锁电路的输出端B2将处于低电平状态,即FLASH写保护区依然处于被锁定为只读状态;当嵌入式设备上电时,该自锁电路与嵌入式设备同时上电,处理器启动,与处理器输出引脚相连接的自锁电路的输入端B1为高电平,且此时电路中所有三极管均处于截止状态,故而自锁电路的输出端B2为高电平,而FLASH的写保护输入引脚为低电平有效,从而FLASH写保护区的写保护状态失效,此时,FLASH内的所有内容均为可读写状态。
所以在嵌入式设备上电,处理器启动后,触发自锁电路锁定所述FLASH写保护区之前,处理器向自锁电路发送第二控制信号,保持自锁电路在上电时的非锁定状态,从而FLASH中的所有内容均处于可读写状态,使该处理器能够在设备上电开机时对FLASH中的数字证书和Bootloader进行更新。
本发明实施例提供的实现FLASH写保护区的锁定和保持非锁定的方法中将FLASH写保护区的写保护状态利用自锁电路锁定,能够有效避免当处理器出现故障或者攻击者获得操作系统权限,通过改变处理器的输出信号,使FLASH写保护区的写保护功能失效,进而篡改FLASH写保护区内的数字证书和Bootloader。保证了嵌入式设备启动的安全性。同时,嵌入式设备在本次断电关机后,下次上电开机时,自锁电路能够恢复非锁定状态,解锁FLASH写保护区,从而完成数字证书和Bootloader的更新,提高了嵌入式设备启动的安全性。
实施例5:
图10为本发明实施例提供的一种嵌入式设备安全启动装置的结构示意图,所述装置包括:
启动获取模块101,用于处理器启动,获取最新版本的数字证书;
触发锁定模块102,用于将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;
验证模块103,用于采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动所述嵌入式设备。
具体地,所述启动获取模块101,具体用于在所述将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区之前,获取最新版本的设备启动代码Bootloader。
具体地,所述启动获取模块101,具体用于判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader;若第一数字证书和/或第一Bootloader非最新版本的数字证书和Bootloader,则将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader;若均是最新版本,则将当前存储在FLASH中的第一数字证书和第一Bootloader作为最新版本的数字证书和Bootloader。
具体地,所述启动获取模块101,具体用于在所述将所述第一Bootloader更新为最新版本的Bootloader之后,所述处理器重新启动。
具体地,所述启动获取模块101,具体用于根据预先保存的数字证书和Bootloader的更新地址,识别所述更新地址保存的第二数字证书的版本是否与所述第一数字证书的版本一致,并判断所述更新地址保存的第二Bootloader的版本是否与所述第一Bootloader的版本一致;如果均是,确定所述FLASH中当前存储的第一数字证书和第一Bootloader均为最新版本的数字证书和Bootloader;若第一数字证书的版本和/或第一Bootloader的版本,与所述第二数字证书的版本和/或第二Bootloader的版本不同,则确定所述FLASH中当前存储的第一数字证书和/或第一Bootloader非最新版本的数字证书和/或Bootloader。
具体地,所述启动获取模块101,具体用于在所述将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader之前,验证所述最新版本的数字证书和/或Bootloader是否合法,如果是,将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader。
具体地,所述触发锁定模块102,具体用于所述处理器向所述自锁电路发送第一控制信号,第一控制信号为触发锁定信号,触发所述自锁电路保持在锁定状态,锁定所述FLASH写保护区。
具体地,所述触发锁定模块102,具体用于在所述处理器启动后,触发自锁电路锁定所述FLASH写保护区之前,所述处理器向所述自锁电路发送第二控制信号,第二控制信号为非锁定信号,所述第二控制信号使得自锁电路在触发锁定信号到来之前保持非锁定状态。
本发明实施例中在处理器启动后获取最新版本的数字证书,将数字证书更新为最新版本,保证了嵌入式设备启动的安全性;解决了数字证书除返厂外不可更新的问题。利用自锁电路锁定FLASH写保护区,使FLASH写保护区的只读状态在本次嵌入式设备上电启动到嵌入式设备断电关闭期间保持始终有效,能够有效防止数字证书被篡改攻击,达到了数字证书可升级和防篡改兼顾的目的,提高了嵌入式设备启动的安全性。
实施例6:
在上述各实施例的基础上,本发明实施例中还提供了一种电子设备,如图11所示,包括:处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信;
所述存储器113中存储有计算机程序,当所述程序被所述处理器111执行时,使得所述处理器111执行如下步骤:
处理器启动,获取最新版本的数字证书;
将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;
采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;
如均完整,则启动所述嵌入式设备。
基于同一发明构思,本发明实施例中还提供了一种电子设备,由于上述电子设备解决问题的原理与嵌入式设备安全启动的方法相似,因此上述电子设备的实施可以参见方法的实施,重复之处不再赘述。
本发明实施例提供的电子设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、网络侧设备等。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口112用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
在本发明实施例中处理器执行存储器上所存放的程序时,实现将处理器启动,获取最新版本的数字证书;将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动所述嵌入式设备。由于本发明实施例中在处理器启动后获取最新版本的数字证书,将数字证书更新为最新版本,保证了嵌入式设备启动的安全性;解决了数字证书除返厂外不可更新的问题。利用自锁电路锁定FLASH写保护区,使FLASH写保护区的只读状态在本次嵌入式设备上电启动到嵌入式设备断电关闭期间保持始终有效,能够有效防止数字证书被篡改攻击,达到了数字证书可升级和防篡改兼顾的目的,提高了嵌入式设备启动的安全性。
实施例7:
在上述各实施例的基础上,本发明实施例还提供了一种计算机存储可读存储介质,所述计算机可读存储介质内存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行时实现如下步骤:
处理器启动,获取最新版本的数字证书;
将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;
采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;
如均完整,则启动所述嵌入式设备。
基于同一发明构思,本发明实施例中还提供了一种计算机可读存储介质,由于处理器在执行上述计算机可读存储介质上存储的计算机程序时解决问题的原理与嵌入式设备安全启动的方法相似,因此处理器在执行上述计算机可读存储介质存储的计算机程序的实施可以参见方法的实施,重复之处不再赘述。
上述计算机可读存储介质可以是电子设备中的处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器如软盘、硬盘、磁带、磁光盘(MO)等、光学存储器如CD、DVD、BD、HVD等、以及半导体存储器如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD)等。
在本发明实施例中提供的计算机可读存储介质内存储计算机程序,计算机程序被处理器执行时实现处理器启动,获取最新版本的数字证书;将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动所述嵌入式设备。由于本发明实施例中在处理器启动后获取最新版本的数字证书,将数字证书更新为最新版本,保证了嵌入式设备启动的安全性;解决了数字证书除返厂外不可更新的问题。利用自锁电路锁定FLASH写保护区,使FLASH写保护区的只读状态在本次嵌入式设备上电启动到嵌入式设备断电关闭期间保持始终有效,能够有效防止数字证书被篡改攻击,达到了数字证书可升级和防篡改兼顾的目的,提高了嵌入式设备启动的安全性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者一个操作与另一个实体或者另一个操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (18)
1.一种嵌入式设备安全启动的方法,其特征在于,包括:
处理器启动,获取最新版本的数字证书;
将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;
采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;
如均完整,则启动所述嵌入式设备;
所述自锁电路包括三极管,电阻和电容,FLASH与所述自锁电路连接的FLASH写保护输入引脚为低电平有效,与所述自锁电路连接的处理器的输出引脚在嵌入式设备上电时,该处理器的输出引脚为高电平;
所述自锁电路包括:第一电阻、第二电阻、第四电阻、第五电阻、第一电容、第二电容、第一三极管、第三三极管和第五三极管;其中,
第五电阻的第一端用于与处理器的输出引脚连接,第五电阻的第二端连接嵌入式设备的电源端,第五三极管的基极与所述第五电阻的第一端与处理器的输出引脚的第一串接点连接,第五三极管的发射极连接嵌入式设备的电源端,第五三极管的集电极连接第四电阻的第一端,第四电阻的第二端接地,第三三极管的发射极连接嵌入式设备的电源端,第三三极管的基极与所述FLASH的写保护输入引脚连接,第三三极管的集电极与第一电阻的第一端连接,第一电阻的第二端接地,所述第五三极管的集电极与第四电阻的第一端的第一串接点与所述第三三极管的集电极与第一电阻的第一端的第二串接点连接,第一三极管的集电极与所述第三三极管的基极与所述FLASH的写保护输入引脚的第三串接点连接,第一三极管的基极与所述第二串接点连接,第一三极管的发射极接地,第二电阻的第一端与所述第三串接点连接,第二电阻的第二端与嵌入式设备的电源端连接,第一电容与第一电阻并联,第二电容与第二电阻并联。
2.如权利要求1所述的方法,其特征在于,所述将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区之前,所述方法还包括:
获取最新版本的设备启动代码Bootloader。
3.如权利要求2所述的方法,其特征在于,所述获取最新版本的数字证书和Bootloader包括:
判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader;
若第一数字证书和/或第一Bootloader非最新版本的数字证书和Bootloader,则将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader;
若均是最新版本,则将当前存储在FLASH中的第一数字证书和第一Bootloader作为最新版本的数字证书和Bootloader。
4.如权利要求3所述的方法,其特征在于,所述将所述第一Bootloader更新为最新版本的Bootloader之后,所述方法还包括:
所述处理器重新启动。
5.如权利要求3所述的方法,其特征在于,所述判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader包括:
根据预先保存的数字证书和Bootloader的更新地址,识别所述更新地址保存的第二数字证书的版本是否与所述第一数字证书的版本一致,并判断所述更新地址保存的第二Bootloader的版本是否与所述第一Bootloader的版本一致;
如果均是,确定所述FLASH中当前存储的第一数字证书和第一Bootloader均为最新版本的数字证书和Bootloader;
若第一数字证书的版本和/或第一Bootloader的版本,与所述第二数字证书的版本和/或第二Bootloader的版本不同,则确定所述FLASH中当前存储的第一数字证书和/或第一Bootloader非最新版本的数字证书和/或Bootloader。
6.如权利要求3-5任一项所述的方法,其特征在于,所述将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader之前,所述方法还包括:
验证所述最新版本的数字证书和/或Bootloader是否合法,
如果是,进行后续步骤。
7.如权利要求1所述的方法,其特征在于,所述触发自锁电路锁定所述FLASH写保护区包括:
所述处理器向所述自锁电路发送第一控制信号,第一控制信号为触发锁定信号,触发所述自锁电路保持在锁定状态,锁定所述FLASH写保护区。
8.如权利要求7所述的方法,其特征在于,所述处理器启动后,触发自锁电路锁定所述FLASH写保护区之前,所述方法还包括:
所述处理器向所述自锁电路发送第二控制信号,第二控制信号为非锁定信号,所述第二控制信号使得自锁电路在触发锁定信号到来之前保持非锁定状态。
9.一种嵌入式设备安全启动的装置,其特征在于,包括:
启动获取模块,用于启动处理器,获取最新版本的数字证书;
触发锁定模块,用于将闪存FLASH中数字证书和设备启动代码的存储区域作为FLASH写保护区,触发自锁电路锁定所述FLASH写保护区;
验证模块,用于采用所述FLASH写保护区中的数字证书,验证操作系统内核和应用是否完整;如均完整,则启动所述嵌入式设备;
所述自锁电路包括三极管,电阻和电容,FLASH与所述自锁电路连接的FLASH写保护输入引脚为低电平有效,与所述自锁电路连接的处理器的输出引脚在嵌入式设备上电时,该处理器的输出引脚为高电平;
所述自锁电路包括:第一电阻、第二电阻、第四电阻、第五电阻、第一电容、第二电容、第一三极管、第三三极管和第五三极管;其中,
第五电阻的第一端用于与处理器的输出引脚连接,第五电阻的第二端连接嵌入式设备的电源端,第五三极管的基极与所述第五电阻的第一端与处理器的输出引脚的第一串接点连接,第五三极管的发射极连接嵌入式设备的电源端,第五三极管的集电极连接第四电阻的第一端,第四电阻的第二端接地,第三三极管的发射极连接嵌入式设备的电源端,第三三极管的基极与所述FLASH的写保护输入引脚连接,第三三极管的集电极与第一电阻的第一端连接,第一电阻的第二端接地,所述第五三极管的集电极与第四电阻的第一端的第一串接点与所述第三三极管的集电极与第一电阻的第一端的第二串接点连接,第一三极管的集电极与所述第三三极管的基极与所述FLASH的写保护输入引脚的第三串接点连接,第一三极管的基极与所述第二串接点连接,第一三极管的发射极接地,第二电阻的第一端与所述第三串接点连接,第二电阻的第二端与嵌入式设备的电源端连接,第一电容与第一电阻并联,第二电容与第二电阻并联。
10.如权利要求9所述的装置,其特征在于,所述启动获取模块,还用于获取最新版本的设备启动代码Bootloader。
11.如权利要求10所述的装置,其特征在于,所述启动获取模块,具体用于判断所述FLASH中当前存储的第一数字证书和第一Bootloader是否为最新版本的数字证书和Bootloader;若第一数字证书和/或第一Bootloader非最新版本的数字证书和Bootloader,则将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader;若均是,则将当前存储的第一数字证书和第一Bootloader作为最新版本的数字证书和Bootloader。
12.如权利要求11所述的装置,其特征在于,所述启动获取模块,具体用于在所述将所述第一Bootloader更新为最新版本的Bootloader之后,重新启动所述处理器。
13.如权利要求11所述的装置,其特征在于,所述启动获取模块,具体用于根据预先保存的数字证书和Bootloader的更新地址,识别所述更新地址保存的第二数字证书的版本是否与所述第一数字证书的版本一致,并判断所述更新地址保存的第二Bootloader的版本是否与所述第一Bootloader的版本一致;如果均是,确定所述FLASH中当前存储的第一数字证书和第一Bootloader均为最新版本的数字证书和Bootloader;若第一数字证书的版本和/或第一Bootloader的版本,与所述第二数字证书的版本和/或第二Bootloader的版本不同,则确定所述FLASH中当前存储的第一数字证书和/或第一Bootloader非最新版本的数字证书和/或Bootloader。
14.如权利要求11-13中任一项所述的装置,其特征在于,所述启动获取模块,具体用于在所述将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader之前,验证所述最新版本的数字证书和/或Bootloader是否合法,如果是,将所述FLASH中存储的第一数字证书和/或第一Bootloader更新为最新版本的数字证书和/或Bootloader。
15.如权利要求9所述的装置,其特征在于,所述触发锁定模块,具体用于向所述自锁电路发送第一控制信号,第一控制信号为触发锁定信号,触发所述自锁电路保持在锁定状态,锁定所述FLASH写保护区。
16.如权利要求15所述的装置,其特征在于,所述触发锁定模块,具体用于在所述启动处理器后,触发自锁电路锁定所述FLASH写保护区之前,所述处理器向所述自锁电路发送第二控制信号,第二控制信号为非锁定信号,所述第二控制信号使得自锁电路在触发锁定信号到来之前保持非锁定状态。
17.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-8任一项所述的方法步骤。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710848459.0A CN107609403B (zh) | 2017-09-19 | 2017-09-19 | 一种嵌入式设备的安全启动方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710848459.0A CN107609403B (zh) | 2017-09-19 | 2017-09-19 | 一种嵌入式设备的安全启动方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107609403A CN107609403A (zh) | 2018-01-19 |
CN107609403B true CN107609403B (zh) | 2020-04-03 |
Family
ID=61060905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710848459.0A Active CN107609403B (zh) | 2017-09-19 | 2017-09-19 | 一种嵌入式设备的安全启动方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107609403B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110135130B (zh) * | 2019-04-25 | 2021-03-12 | 武汉虹信科技发展有限责任公司 | 一种嵌入式设备软件防改装方法及系统 |
CN110210210A (zh) * | 2019-05-27 | 2019-09-06 | 北京中电华大电子设计有限责任公司 | 一种终端设备的逻辑安全设计方法和物理安全设计结构 |
CN112394965B (zh) * | 2019-08-13 | 2022-08-09 | 比亚迪股份有限公司 | 电池管理系统升级和运行方法,控制器,电池管理系统及存储介质 |
CN111625295A (zh) * | 2020-05-22 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种嵌入式系统启动方法、装置、设备及存储介质 |
CN113051584B (zh) * | 2021-05-31 | 2023-05-02 | 武汉深之度科技有限公司 | 一种系统安全启动方法、装置、计算设备及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010087941A (ko) * | 2000-03-09 | 2001-09-26 | 윤종용 | 음의 고전압 비교 회로를 구비한 플래시 메모리 장치 |
CN101089997A (zh) * | 2006-06-12 | 2007-12-19 | 景曙光 | 存储器电路 |
CN101217366A (zh) * | 2007-01-04 | 2008-07-09 | 李代甫 | 一种带写保护的数字签名装置 |
WO2013147318A1 (en) * | 2012-03-30 | 2013-10-03 | Fujifilm Corporation | Recording head assembly, image recording apparatus and recording head adjustment method |
CN103888835A (zh) * | 2014-04-17 | 2014-06-25 | 江苏银河电子股份有限公司 | 一种智能机顶盒的安全认证方法 |
CN104426368A (zh) * | 2013-08-22 | 2015-03-18 | 中国长城计算机深圳股份有限公司 | 一种开关电路及电源 |
CN105718277A (zh) * | 2014-12-05 | 2016-06-29 | 中国长城计算机深圳股份有限公司 | 一种bios更新的保护方法、装置和系统 |
CN106971108A (zh) * | 2017-03-20 | 2017-07-21 | 郑州云海信息技术有限公司 | 一种在线更新bios的rom写保护的系统及方法 |
-
2017
- 2017-09-19 CN CN201710848459.0A patent/CN107609403B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010087941A (ko) * | 2000-03-09 | 2001-09-26 | 윤종용 | 음의 고전압 비교 회로를 구비한 플래시 메모리 장치 |
CN101089997A (zh) * | 2006-06-12 | 2007-12-19 | 景曙光 | 存储器电路 |
CN101217366A (zh) * | 2007-01-04 | 2008-07-09 | 李代甫 | 一种带写保护的数字签名装置 |
WO2013147318A1 (en) * | 2012-03-30 | 2013-10-03 | Fujifilm Corporation | Recording head assembly, image recording apparatus and recording head adjustment method |
CN104426368A (zh) * | 2013-08-22 | 2015-03-18 | 中国长城计算机深圳股份有限公司 | 一种开关电路及电源 |
CN103888835A (zh) * | 2014-04-17 | 2014-06-25 | 江苏银河电子股份有限公司 | 一种智能机顶盒的安全认证方法 |
CN105718277A (zh) * | 2014-12-05 | 2016-06-29 | 中国长城计算机深圳股份有限公司 | 一种bios更新的保护方法、装置和系统 |
CN106971108A (zh) * | 2017-03-20 | 2017-07-21 | 郑州云海信息技术有限公司 | 一种在线更新bios的rom写保护的系统及方法 |
Non-Patent Citations (1)
Title |
---|
高密度NAND Flash存取性能及其宿主控制器接口;陈晓风;《计算机工程》;20070531;第33卷(第9期);第255-257页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107609403A (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107609403B (zh) | 一种嵌入式设备的安全启动方法、装置、设备及介质 | |
JP5767751B2 (ja) | Biosを検証する方法、コンピューティングプラットフォーム、およびプログラム | |
EP3522059B1 (en) | Perform security action based on inventory comparison | |
US10733288B2 (en) | Verifying controller code and system boot code | |
US20170090909A1 (en) | Secure patch updates for programmable memories | |
US9710652B1 (en) | Verifying boot process of electronic device | |
CN107665308B (zh) | 用于构建和保持可信运行环境的tpcm系统以及相应方法 | |
CN106919859B (zh) | 基本输入输出系统保护方法和装置 | |
CN111625295A (zh) | 一种嵌入式系统启动方法、装置、设备及存储介质 | |
CN113168474A (zh) | 固件的安全验证 | |
TWI570591B (zh) | 允許測試金鑰用於bios安裝之技術 | |
WO2018024198A1 (zh) | 机顶盒的应用程序升级方法、系统及机顶盒 | |
CN113127011A (zh) | 电子设备及电子设备的操作方法 | |
CN111488589A (zh) | 基于硬件写保护的安全可信启动及固件升级系统和方法 | |
CN106919845B (zh) | 系统安全信任链构建装置和构建方法 | |
CN112613011B (zh) | U盘系统认证方法、装置、电子设备及存储介质 | |
CN111651769A (zh) | 获取安全启动的度量方法和装置 | |
CN113127879B (zh) | 一种固件可信启动方法、电子设备及可读存储介质 | |
KR20200070450A (ko) | 차량 제어기의 보안 강화 방법 및 장치 | |
CN113419905A (zh) | 一种实现可信验证的方法及装置和安全模块 | |
US20200410104A1 (en) | Secure boot process | |
CN114003915A (zh) | 基于芯片的安全启动方法及装置 | |
CN113626792B (zh) | PCIe Switch固件安全执行方法、装置、终端及存储介质 | |
US20200244461A1 (en) | Data Processing Method and Apparatus | |
CN114282205A (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 |