背景技术
现有的电子设备,比如手机、便携播放器、刻录机等,内部都可设置固件。
固件(Firmware)保存在电子设备内部,是驱动电子设备运行的程序。固件通常存储在电子设备的ROM(Read Only Memory,只读存储器)、PROM(Programmable Read-Only Memory,可编程只读存储器)、EPROM(ErasableProgrammable Read-Only Memory,可擦可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、Flash(闪存)等存储介质中。
现有电子设备中的固件通常都可以更新,以便为固件增加更多的功能或改进固件的性能,但固件可以更新也带来了安全问题,比如:1)某个电子设备厂商的电子设备软件可能会被黑客改写,造成电子设备厂商的商业损失;2)为某个运营商定制的电子设备软件可能会被黑客改写为另一个运营商的电子设备软件,造成运营商的商业损失;3)黑客通过改写电子设备软件达到一些非法的目的,比如窃取用户账号等。
面临这些安全问题,一个很重要的解决思路就是要求电子设备上的固件不被非法改写,并且一旦被非法改写,电子设备就不再可用。按照这个解决思路,现有技术通常通过不对称加密算法(如RSA)对固件进行签名和验证。这一技术方案通常包括下列几个部分:
一、对固件进行签名
对固件进行签名的过程为:对固件进行Hash运算,并用不对称加密算法的私钥对Hash运算的结果进行加密,形成固件签名。
之后,将固件、固件签名、不对称加密算法的公钥、不对称加密算法的签名验证算法存储到电子设备的存储器中,不再变更。较佳地,将固件和固件签名写入到电子设备的FLASH中,将不对称加密算法的公钥写入电子设备的一次性写入寄存器中(使不对称加密算法的公钥不会被非法修改),将不对称加密算法的签名验证算法写入到电子设备的ROM中。
二、电子设备接收到开机信号时,对固件进行验证
现有技术中,对固件进行验证通常在电子设备接收到开机信号时进行,如果验证结果为固件正确,说明固件没有被非法改写,则电子设备进入服务状态(正常开机);如果验证结果为固件错误,说明固件可能已经被非法改写,则电子设备进入非服务状态(关机、重启或者不可用状态),这样便实现了固件一旦被非法改写电子设备就不再可用的目的。
如图1所示,以不对称加密算法为RSA为例,电子设备接收到开机信号时,对固件进行验证的过程包括如下步骤:
S101、获取存储器中的固件,运行存储器中RSA的签名验证算法对固件进行Hash运算,得到一个Hash运算的结果。
S102、获取存储器中的固件签名、RSA的公钥,用RSA的公钥对固件签名进行解密,得到一个Hash运算的结果(该结果等同于对固件进行签名过程中得到的Hash运算的结果)。
S103、确定步骤S101得到的Hash运算的结果,与步骤S102得到的Hash运算的结果运算结果是否相同,如果是则说明固件正确;否则说明固件错误。
但是,由于现有的不对称加密算法通常建立在512位到1024位的大数运算之上,使得在电子设备开机时对固件进行验证的时间较长,从而大大增加了电子设备的开机时间,影响了用户的使用体验。
具体实施方式
为了解决现有技术存在的问题,本发明实施例提供了一种电子设备和电子设备中固件的验证方法。
参阅图2所示,本发明实施例提供的电子设备中固件的验证方法,包括下列步骤:
S201、电子设备接收到关机信号。
S202、验证电子设备中的固件是否正确,产生一验证结果。
其中,验证结果包括固件正确、固件错误两种,可以用一段明文字符来表示。验证电子设备中的固件是否正确的方法包括如下步骤:
A、获取电子设备中的固件,运行电子设备中RSA的签名验证算法对固件进行Hash运算,得到一个Hash运算的结果;
B、获取电子设备中的固件签名、RSA的公钥,用RSA的公钥对固件签名进行解密,得到一个Hash运算的结果。
C、确定步骤A得到的Hash运算的结果,与步骤B得到的Hash运算的结果运算结果是否相同,如果是则说明固件正确;否则说明固件错误。
S203、将步骤S202得到的验证结果存储到电子设备的存储器中。
其中,存储验证结果的方式有两种,一种是将验证结果直接存储到电子设备的存储器中;另一种是对验证结果进行加密,产生加密验证结果,将加密验证结果存储到电子设备的存储器中。在加密时,可以利用电子设备主芯片中的硬件密钥,采用对称加密算法对验证结果进行加密,比如:用电子设备主芯片中的硬件密钥对验证结果进行3DES加密。
对验证结果进行加密,可以降低验证结果被改写和复制的可能性,保证电子设备中存储的验证结果的真实性;尤其用电子设备主芯片中的硬件密钥对验证结果进行对称加密时效果更好,这是因为电子设备主芯片中的硬件密钥只有电子设备可以得到,其它电子设备无法得到,这样,即使黑客利用其它电子设备得到了加密验证结果,其也无法通过对加密验证结果进行解密来得到验证结果,进而无法改写或者复制验证结果。
较佳地,可以将验证结果存储到电子设备的FLASH中。
S204、电子设备接收到开机信号。
S205、获取存储器中的验证结果。
其中,如果验证结果是被直接存储到存储器中的,则在电子设备接收到开机信号时,可以直接读取存储器中存储的验证结果,得到验证结果。
如果验证结果是加密后才被存储到存储器中的,则在电子设备接收到开机信号时,可以通过对存储器中的加密验证结果进行解密来得到验证结果。
另外,获取存储器中的验证结果之后,还可以删除存储器中存储的验证结果(具体为加密验证结果或者被直接存储到存储器中的验证结果),这样便可保证存储器中存储的验证结果是电子设备最后一次关机时产生的验证结果,进而保证了电子设备在开机时所依据的验证结果是电子设备最后一次关机时产生的验证结果。
S206、当验证结果为固件正确时,控制电子设备进入服务状态(正常开机);当验证结果为固件错误时,控制电子设备进入非服务状态(关机、重启或者不可用状态)。
本发明实施例的技术方案在电子设备接收到关机信号之后对固件进行验证,在电子设备接收到开机信号时,利用关机时得到的验证结果控制电子设备进入服务状态或者非服务状态,相比现有技术,本发明实施例技术方案极大地缩短了电子设备的开机时间,极大地提高了用户使用电子设备的体验。
下面以一具体实施例来说明本发明实施例提供的方法:
以手机为例,如图3所示,手机的FLASH中设置三个区域,分别是固件存储区域、固件签名存储区域、验证结果存储区域,其中,固件签名的形成方法是:对固件进行Hash运算,并用RSA的私钥对Hash运算的结果进行加密后形成;手机的一次性写入寄存器中存储有RSA的公钥;手机的ROM中存储有RSA的签名验证算法;手机主芯片的某一寄存器中存储有硬件密钥HEK,该寄存器只能被手机中的ROM访问。
如图4所示,本发明具体实施例包括下列步骤:
S401、手机接收到关机信号。
S402、通过触发中断或直接调用,控制处理器验证手机中的固件是否正确,产生一验证结果。
其中,验证结果包括固件正确、固件错误两种,可以用一段明文字符来表示。验证电子设备中的固件是否正确的方法包括如下步骤:
A、获取电子设备中的固件,运行电子设备中RSA的签名验证算法对固件进行Hash运算,得到一个Hash运算的结果;
B、获取电子设备中的固件签名、RSA的公钥,用RSA的公钥对固件签名进行解密,得到一个Hash运算的结果。
C、确定步骤A得到的Hash运算的结果,与步骤B得到的Hash运算的结果运算结果是否相同,如果是则说明固件正确;否则说明固件错误。
S403、获取主芯片某一寄存器中的硬件密钥HEK,利用HEK对验证结果进行3DES加密得到加密验证结果,并将加密验证结果存储到验证结果存储区域。
S404、手机接收到开机信号。
S405、获取验证结果存储区域中的加密验证结果,获取主芯片某一寄存器中的硬件密钥HEK,并删除验证结果存储区域中的加密验证结果。
S406、利用HEK对加密验证结果进行解密,得到验证结果。
硬件密钥HEK的存储区域如果只能被手机中的ROM访问,会产生一个好处:防止HEK被其它电子设备获取到,进而避免了其它电子设备得到验证结果。
S407、当验证结果为固件正确时,控制电子设备进入服务状态;当验证结果为固件错误时,控制电子设备进入非服务状态。
当然,在步骤S403中,也可以直接将验证结果存储到验证结果存储区域,相应地,在执行步骤S404之后,直接读取验证结果存储区域中的验证结果并删除验证结果存储区域中的验证结果,接着执行步骤S407即可。
相比现有技术,本发明具体实施例极大地缩短了电子设备的开机时间,极大地提高了用户使用电子设备的体验。
如图5所示,本发明实施例还提供了一种电子设备,包括固件、信号接收模块501,信号接收模块501用于接收关机信号或开机信号,还包括:
获取模块502,用于在信号接收模块501接收到开机信号时,获取在信号接收模块501接收到关机信号时对固件的验证结果;
控制模块503,用于在获取模块502获取的验证结果为固件正确时,控制电子设备进入服务状态;在获取模块502获取的验证结果为固件错误时,控制电子设备进入非服务状态。
图5所示的电子设备相比现有电子设备,极大地缩短了电子设备的开机时间,极大地提高了用户使用电子设备的体验。
另外,如图6所示,图5所示的电子设备还可以包括:
验证模块601,用于在信号接收模块501接收到上述关机信号时,验证固件是否正确,产生一验证结果;
存储器602,用于存储验证结果,并在信号接收模块501接收到开机信号时,将验证结果发送给获取模块502。
再如图6所示,上述电子设备还可以包括:
删除模块603,用于在获取模块502获取验证结果之后,删除存储器602中的验证结果。
删除模块603可保证存储器602中存储的验证结果是验证模块601在电子设备最后一次关机时产生的验证结果,进而保证了控制模块503所依据的验证结果是验证模块601在电子设备最后一次关机时产生的验证结果。
进一步地,上述电子设备还可以包括:
加密模块,用于对验证模块601产生的验证结果进行加密,产生加密验证结果;
此时,存储器602还用于存储加密验证结果;
此时,获取模块502具体可以为:
获取子模块,用于在信号接收模块501接收到开机信号时,对存储器602中的加密验证结果进行解密,得到验证结果。
其中,加密模块对验证结果进行加密,可以降低验证结果被改写和复制的可能性。
另外,加密模块具体可以为:
加密子模块,用于利用电子设备主芯片中的硬件密钥,采用对称加密算法对验证结果进行加密,产生加密验证结果。加密子模块可更好地降低验证结果被改写和复制的可能性。
本发明实施例提供的电子设备相比现有电子设备,极大地缩短了电子设备的开机时间,极大地提高了用户使用电子设备的体验。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如上述方法实施例的步骤),所述的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。