固件加密方法与流程

文档序号:11406862阅读:883来源:国知局

本发明涉及计算机技术领域,尤其涉及一种固件加密方法。



背景技术:

固件(firmware),又叫韧件,是一种嵌入在硬件装置中的软件。通常它是位于快闪存储器中,而且可以让使用者更新。随着移动技术的发展,移动终端,如智能手机,不断增加功能,其固件复杂度也随之增加。

升级固件一般可以针对手机功能做出一些增强,修正一些小错误,让手机程序运行更流畅,通话质量提高等等。

固件升级是指通过专门的升级程序,将硬件中的工作程序或源代码进行改进,使其得到兼容性、性能或者功能上的提高。它与升级驱动程序等不同的是从机器底层进行更新,因而更直接、更有效,性能提高也更明显。这种升级可将机器的性能不断提高,进行将主机的潜力不断发挥出来不过,固件升级会有一定的风险,因而需要对固件升级进行有效管控,往往采用固件加密的方式来实现。而现有的技术都是通过公钥,私钥这种方式对固件进行加密,如果在需要将公钥,私钥对外释放的业务需求下,这种加密方式就无法满足业务需要的要求,达不到有效加密的效果。



技术实现要素:

本发明的目的是提供一种固件加密方法,通过在升级前将升级包对应的md5值写入misc分区来进行数据有效性的验证,即便公钥、私钥对外开放,也能够保证系统不会被随意刷机,可防止第三方替换固件,有效地保障了开发者对系统版本的控制。

为实现上述目的,本发明提供了一种固件加密方法,包括:

用户终端通过空中接口ota向服务器发送升级包检测请求;

接收所述服务器反馈的检测结果信息,根据所述检测结果信息确定所述服务器具有所述升级包;

所述用户终端通过所述ota向所述服务器发送升级包下载请求;

接收所述服务器下发的升级数据包;所述升级数据包包括所述升级包和所述升级包对应的md5值;

对所述升级数据包进行解析,得到所述升级包和所述md5值;

将所述md5值写入所述用户终端的misc分区并存储为第一md5值,并将所述升级包进行存储;

检测所述用户终端的系统启动状态,当所述系统重新启动时,所述用户终端对所述升级包进行检测,并根据检测结果生成升级提示信息;

接收用户根据所述升级提示信息输入的确认升级操作指令;

根据所述确认升级操作指令进入工程recovery模式;

计算所述升级包的md5值,并从misc分区获取所述第一md5值,确定所述计算得到的md5值与所述第一md5值是否一致;

当确定为一致时,根据所述升级包对所述用户终端的系统进行升级。

优选的,所述根据所述确认升级操作指令进入工程recovery模式之前,所述方法还包括:

对所述升级包进行数据校验。

进一步优选的,在所述数据校验通过后,所述方法还包括:

向所述用户终端内存储的cache/recovery/command文件中写入特定信息,并且向所述misc分区的指定位置写入特定字段。

进一步优选的,在所述根据所述确认升级操作指令进入工程recovery模式之后并且在所述计算所述升级包的md5值之前,所述方法还包括:

读取所述misc分区的所述指定位置,获取所述指定位置的字段的信息;

确定所述字段与所述特定字段相一致。

进一步优选的,所述方法还包括:当确定所述字段与所述特定字段不一致时,生成第一错误提示信息并显示。

优选的,当所述计算得到的md5值与所述第一md5值不一致时,所述方法还包括:生成第二错误提示信息并显示。

优选的,在所述将所述md5值写入所述用户终端的misc分区并存储为第一md5值,并将所述升级包进行存储之后,所述方法还包括:

生成并输出重启操作提示信息。

本发明实施例提供的固件加密方法,通过在升级前将升级包对应的md5值写入misc分区来进行数据有效性的验证,即便公钥、私钥对外开放,也能够保证系统不会被随意刷机,可防止第三方替换固件,有效地保障了开发者对系统版本的控制。

附图说明

图1为本发明实施例提供的固件加密方法的流程图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

本发明实施例提供的固件加密方法,主要应用于智能移动终端设备中,尤其是应用与智能手机中。

图1为本发明实施例提供的固件加密方法的流程图,如图1所示,主要包括如下步骤:

步骤101,用户终端通过空中接口(ota)向服务器发送升级包检测请求;

具体的,空中接口(over-the-air,ota)是通过移动通信网(gsm或cdma)的空中接口对sim卡数据及应用进行远程管理的技术。空中接口可以采用sms、wap、gprs、cdma1x等技术。而基于短消息的ota空中下载技术是ota技术中最为简单可靠手段。

用户终端通过ota向服务器发送检测请求,在检测请求中携带有用户终端的信息,其中可以具体包括当前固件的版本信息,从而用以检测服务器中是否具有适用于用户终端的固件升级包。

步骤102,接收服务器反馈的检测结果信息,根据检测结果信息确定服务器是否具有升级包;

具体的,可以根据版本信息来确定服务器中是否具有升级包。比如当版本信息为更新的版本时,确定该固件升级包为所需的升级包。

如果不具有升级包,则直接结束该流程。

在本例中仅对检测到有升级包的情况进行讨论。

步骤103,用户终端通过ota向服务器发送升级包下载请求;

具体的,用户终端在确定服务器中具有所需的升级包时,生成升级包下载请求,通过ota发送到服务器。升级包下载请求中携带有升级包的信息,以及用户终端的信息。

步骤104,接收服务器下发的升级数据包;

具体的,服务器在根据升级包下载请求向用户终端下发升级数据包。升级数据包包括升级包和升级包对应的md5值。

md5即message-digestalgorithm5,也称为信息-摘要算法5,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,确保信息传输完整一致。

md5值就像是一个文件的“数字指纹”。每个文件的md5值是不同的,如果任何人对文件做了任何改动,其md5值也就是对应的“数字指纹”就会发生变化。比如下载服务器针对一个文件预先提供一个md5值,用户下载完该文件后,用这个算法重新计算下载文件的md5值,通过比较这两个值是否相同,就能判断下载的文件是否出错,或者说下载的文件是否被篡改了。

步骤105,对升级数据包进行解析,得到升级包和md5值;

具体的,用户终端对服务器下发的升级数据包进行解析,得到升级包和md5值。

步骤106,将md5值写入用户终端的misc分区并存储为第一md5值,并将升级包进行存储;

具体的,android上主要有六个分区:cache,misc,recovery,boot,system,data。

其中,boot分区上有android的引导程序,包括内核和内存操作程序。没有这个分区设备就不能被引导。恢复系统的时候会擦除这个分区,并且必须重新安装引导程序和rom才能重启系统。

system分区上是除了内核和内存操作之外的整个操作系统,里面包含了android用户接口和预先安装的系统应用。

recovery分区被认为是另一个启动分区,启动设备进入recovery控制台可以去执行高级的系统恢复和管理操作。

data分区保存着用户数据。通讯录、短信、设置和安装的apps都在这个分区上。擦除这个分区相当于恢复出厂设置,当第一次启动设备的时候或者在安装了官方或者客户的rom之后系统会自动重建这个分区。当执行恢复出厂设置时,就是在擦除这个分区。

cache分区是android系统存储频繁访问的数据和app的地方。cache是缓存空间,程序和系统用到的缓存数据和指令就存放在这里。擦除这个分区不会影响个人数据,当你继续使用设备时,被擦除的数据就会自动被创建。

misc分区包含各种复杂的类似于on/off的系统设置。这些设置可能是usb配置和某些硬件配置信息。该分区中有启动加载控制模块(bootloadercontrolblock,bcb),主要是用于存放recovery引导信息。

用户终端将服务器下发的升级数据包的md5值存储到misc分区。为了便于区分,将存储的值称为第一md5值。

步骤107,检测用户终端的系统启动状态,当系统重新启动时,用户终端对升级包进行检测,并根据检测结果生成升级提示信息;具体的,升级包在下载之后,优选的,系统会生成并输出重启操作提示信息,以提示用户进行系统重启。重启后系统检测升级包。

进一步的,检测得到的检测结果可以包括升级包对应的固件名称、版本信息等等。根据这些信息可以确定是否与当前系统的固件版本相同,从而确认是否需要进行升级。在确定需要进行升级的情况下,生成升级提示信息。

在生成升级提示信息之后,用户终端将升级提示信息对用户进行显示。

步骤108,接收用户根据升级提示信息输入的确认升级操作指令;

具体的,在用户终端对升级提示信息进行显示后,检测用户输入,当接收到用户输入的操作指令时,对操作指令进行解析,确定是否是确认升级的操作指令。

步骤109,对升级包进行数据校验;

具体的,在升级包下载过程中,运营商网络可能会对升级包数据做劫持,从而导致最终下载的升级包文件内容损坏,最终无法验证通过。如果发生升级报数据校验失败的情况,可以清除已下载的数据包,并再次向服务器发送升级包下载请求。

在升级包数据校验通过之后,继续执行下述步骤。

步骤110,向用户终端内存储的cache/recovery/command文件中写入特定信息,并且向misc分区的指定位置写入特定字段。

具体的,特定信息可以是update.zip文件。

步骤111,根据确认升级操作指令进入工程(recovery)模式;

其中,recovery模式主要指的是安卓的恢复刷机模式,这相当于windows系统的dos模式,因此也可以称之为安卓的工程模式,在这个工程模式下,可以进行若干操作,包括并不限于重启手机,刷入系统补丁,刷入一个新的手机刷机包,格式化手机资料和缓存等。

步骤112,读取misc分区的指定位置,获取指定位置的字段的信息;

步骤113,确定字段与特定字段是否相一致;

由此可以避免在进入到recovery模式时系统出现故障或数据丢时损坏等。

当字段不一致时,执行步骤114,生成第一错误提示信息并显示。

具体的,第一错误提示信息可以是用以提示升级包错误的提示信息。

当字段一致时,执行步骤115,计算升级包的md5值,并从misc分区获取第一md5值;

具体的,可以适用文件校验和完整性验证程序(fciv)计算md5文件,计算得到一个md5值。在misc分区中还存储有之前接收服务器下发的第一md5值,对二者进行比较。

步骤116,确定计算得到的md5值与第一md5值是否一致;

当确定为一致时,执行步骤117,根据升级包对用户终端的系统进行升级。

此外,当计算得到的md5值与第一md5值不一致时,执行步骤118,生成第二错误提示信息并显示。具体的,第二错误提示信息可以是用以提示升级失败的提示信息。

本发明实施例提供的固件加密方法,提供了固件升级管控的全流程,通过在升级前将升级包对应的md5值写入misc分区来进行数据有效性的验证,即便公钥、私钥对外开放,也能够保证系统不会被随意刷机,可防止第三方替换固件,有效地保障了开发者对系统版本的控制。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1