CN101373440B - 一种固件升级数据处理方法和装置 - Google Patents

一种固件升级数据处理方法和装置 Download PDF

Info

Publication number
CN101373440B
CN101373440B CN2008102237177A CN200810223717A CN101373440B CN 101373440 B CN101373440 B CN 101373440B CN 2008102237177 A CN2008102237177 A CN 2008102237177A CN 200810223717 A CN200810223717 A CN 200810223717A CN 101373440 B CN101373440 B CN 101373440B
Authority
CN
China
Prior art keywords
data block
data
upgrade
byte length
numbering
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
CN2008102237177A
Other languages
English (en)
Other versions
CN101373440A (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.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies 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 Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN2008102237177A priority Critical patent/CN101373440B/zh
Publication of CN101373440A publication Critical patent/CN101373440A/zh
Application granted granted Critical
Publication of CN101373440B publication Critical patent/CN101373440B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种固件升级数据处理方法,属于计算机应用技术领域。所述方法包括:接收升级数据;将所述升级数据拆分为多个数据块,验证所述多个数据块中指定个数的数据块是否均有效,如果是,从所述升级数据中提取固件数据,用所述固件数据对设备进行固件升级,否则,发出升级数据错误信息,结束。本发明还公开了一种固件升级数据处理装置,所述装置包括:接收模块、验证模块和升级模块。本发明提高了升级数据和硬件设备的安全性。

Description

一种固件升级数据处理方法和装置
技术领域
本发明涉及计算机应用技术领域,特别涉及一种固件升级数据处理方法和装置。
背景技术
固件,简单的说,是一种运行在设备上的程序。早期的固件一般都是保存在EROM或EPROM等存储器中,这些固件程序是禁止被用户直接读取或修改的,终端用户很难或是不可能改变固件,一旦固件发生错误必须由专业人员用写好程序的EROM或EPROM把原来的EROM或EPROM更换下来,操作复杂、不方便。
如今,随着信息技术的发展,固件已经有了新的意义。多数情况下,它指一个系统最基础、最底层的软件。现有技术中,这些固件大多采用闪存作为载体。闪存(Flash Memory)是一种在断电情况下仍能保持所存储的数据信息的存储器,它具有引导装入程序的功能,支持固件的系统升级,使得固件升级变得越来越简单。
然而即使如此,固件升级仍然面临着一些难以解决的技术问题,比如:在设备固件升级的过程中,如果下载的升级文件数据不是设备固件升级所需要的升级文件数据,则升级后的设备不但不能够完成升级,还同时丧失了它原有的功能,破坏了设备,此外还有设备固件升级的权限,不同权限的设备来完成不同等级的固件升级,也一直没有得到很好的解决。
发明内容
为了解决现有技术中下载的固件升级数据可能破坏硬件设备的问题,本发明提供了一种固件升级数据处理方法和系统。
一种固件升级数据处理方法,所述方法包括:
接收升级数据;
将所述升级数据以X字节长度进行拆分,得到多个数据块,并对所述多个数据块依次从预设的初始值开始编号;所述预设的初始值为0;
判断经过编号的多个数据块中,编号最大的数据块是否满足X字节长度,如果否,发送升级数据错误信息,结束;如果是,在多个数据块中指定要验证的数据块的个数,并将验证计数器值设为所述初始值;
在所述指定要验证的数据块中,对编号与所述验证计数器值相同的X字节长度的数据块按预设的算法进行运算,得到Y字节长度数据块,所述Y字节长度数据块的编号与所述X字节长度数据块的编号相同;
将所述Y字节长度数据块按预设的长度拆分为第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度的数据块的编号相同;
对所述第一数据块进行处理,验证处理过的第一数据块与所述第二数据块是否相等;
如果否,发送升级数据错误信息,结束;
如果是,所述验证计数器值加1,并判断加1后的验证计数器值是否等于所述指定要验证的数据块的个数,如果是,发送升级数据有效的信息,从所述升级数据中提取固件数据,用所述固件数据对设备进行固件升级;否则,按照与验证编号为初始值的数据块相同的方法对指定要验证的数据块继续验证,直到验证计数器值为所述指定要验证的数据块的个数。
其中,所述接收升级数据,具体包括:
接收二进制bin文件,从所述二进制bin文件中获取所述升级数据。
其中,对所述第一数据块进行处理,具体包括:
对所述第一数据块采用求或、求和或加密的方法进行处理。
其中,对编号与所述验证计数器值相同的X字节长度的数据块按预设的算法进行运算,具体包括:
用DES、3DES、RC4、AES、RSA、ECC或TEA算法将编号和所述验证计数器值相同的X字节长度数据块进行运算。
其中,用所述固件数据对设备进行固件升级,具体包括:
将所述升级数据以X字节长度进行拆分,得到多个数据块,并对所述多个数据块依次从预设的初始值开始编号;
将升级计数器设为所述初始值;
在所述多个数据块中,对编号与所述升级计数器值相同的X字节长度数据块按预设的算法进行运算,得到Y字节长度数据块,所述Y字节长度数据块的编号与所述X字节长度数据块的编号相同;
将所述Y字节长度数据块按预设的长度拆分为第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度数据块的编号相同;
将所述第一数据块作为固件数据对设备进行固件升级;
所述升级计数器值加1,并判断加1后的升级计数器值是否等于所述将升级数据拆分得到的数据块的个数,如果是,升级完成,结束;否则,按照与升级编号为初始值的数据块相同的方法继续升级,直到升级计数器值为所述将升级数据按X字节长度拆分得到的数据块的个数。
其中,对编号与所述升级计数器值相同的X字节长度数据块按预设的算法进行运算,具体包括:
用DES、3DES、RC4、AES、RSA、ECC或TEA算法将编号和所述升级计数器值相同的X字节长度固件升级数据块进行运算。
一种固件升级数据处理装置,所述装置包括:接收模块、验证模块和升级模块;
所述接收模块用于接收升级软件发送的升级数据;
所述验证模块具体包括:
第一拆分单元,用于将接收模块接收到的升级数据以X字节长度进行拆分,得到多个数据块,并对所述多个数据块依次从预设的初始值开始编号;所述预设的初始值为0;
第一判断单元,用于判断所述第一拆分单元得到的编号的数据块中,编号最大的数据块是否满足X字节长度,如果否,发送升级数据错误信息,结束;如果是,将验证计数器值设为所述初始值;
指定单元,用于在多个数据块中指定要验证的数据块的个数;
运算单元,用于在所述第一拆分单元得到的多个数据块中,对编号与所述验证计数器值相同的X字节长度数据块进行运算,得到Y字节长度数据块,所述Y字节长度数据块的编号与所述X字节长度数据块的编号相同;
第二拆分单元,用于将所述运算单元得到的Y字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度数据块的编号相同;
验证单元,用于对所述第二拆分单元得到的第一数据块进行处理,并验证处理过的第一数据块与所述第二数据块是否相等,如果否,发送升级数据错误信息,结束;如果是,所述验证计数器值加1;
第二判断单元,用于判断所述验证单元得到的加1后的验证计数器值是否等于所述指定单元指定要验证的数据块的个数,如果是,发送升级数据有效的信息;否则,按照与验证编号为初始值的数据块相同的方法对所述指定单元指定要验证的数据块继续验证,直到验证计数器值为所述指定单元指定要验证的数据块的个数;
发送单元,用于发送所述第一判断单元和所述验证单元得到的升级数据错误信息和所述第二判断单元的得到的升级数据有效的信息;
所述升级模块用于在所述第二判断单元发送升级数据有效的信息后,从所述升级数据中提取出固件数据,用所述固件数据对设备进行固件升级。
其中,所述接收模块具体包括:
接收单元,用于接收二进制bin文件;
获取单元,用于从所述接收单元接收到的二进制bin文件中获取升级数据。
其中,所述运算单元对编号与所述验证计数器值相同的X字节长度数据块,采用DES、3DES、RC4、AES、RSA、ECC或TEA算法进行运算。
其中,所述验证单元对所述第二拆分单元得到的第一数据块采用求或、求和或加密的方法进行处理。
其中,所述升级模块具体包括:
第一拆分单元,用于将所述接收模块接收到的升级数据以X字节长度进行拆分,得到多个数据块,并对所述多个数据块依次从预设的初始值开始编号;
设置单元,用于将升级计数器值设为所述初始值;
运算单元,用于对所述第一拆分单元得到的多个数据块中,对编号与所述升级计数器值相同的X字节长度数据块按预设的算法进行运算,得到Y字节长度数据块,所述Y字节长度数据块的编号与所述X字节长度数据块的编号相同;
第二拆分单元,用于对所述运算单元得到的Y字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度数据块的编号相同;
升级单元,用于将所述第二拆分单元得到的第一数据块作为固件数据对设备进行固件升级,并将升级计数器值加1;
判断单元,用于判断所述升级单元得到的加1后的升级计数器值是否等于所述第一拆分单元拆分得到的数据块的个数,如果是,则升级完成,结束;否则,按照与升级编号为初始值的数据块相同的方法继续升级,直到升级计数器值为所述第一拆分单元拆分得到的数据块的个数。
其中,所述运算单元对编号与所述升级计数器值相同的X字节长度数据块,采用DES、3DES、RC4、AES、RSA、ECC或TEA算法进行运算。
与现有技术相比,本发明的有益效果在于:通过将升级软件发送的升级数据拆分,验证该升级数据正确后,提取固件数据,用该固件数据对硬件设备进行固件升级,确保了固件数据的唯一性,大大提高了硬件设备的安全性。
附图说明
图1是本发明实施例1提供的一种固件升级数据处理方法流程图;
图2是本发明实施例1提供的一种对固件升级数据进行验证的方法流程图;
图3是本发明实施例1提供的一种应用固件升级数据对固件升级的方法流程图;
图4是本发明实施例2提供的一种固件升级数据处理系统结构图;
图5是本发明实施例2提供的一种对固件升级数据进行验证的结构图;
图6是本发明实施例2提供的一种应用固件升级数据对固件升级的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本发明实施例提供了一种固件升级数据处理方法,应用于硬件设备的升级,硬件设备可以是读卡器、mp3、mp4等内有cpu的设备,该方法具体包括:
步骤101:接收升级软件发送的升级数据。
步骤102:将接收到的升级数据按照预设的长度拆分为多个数据块,并按预设的算法验证该多个数据块中指定个数的数据块是否均有效,如果是,执行步骤103,否则,执行步骤104。
步骤103:从接收到的升级数据中提取出用于升级的固件数据,用该固件数据对设备进行固件升级。
步骤104:发出升级数据错误信息,结束。
其中,接收升级软件发送的升级数据,具体包括:
接收二进制bin文件,从该二进制bin文件中获取升级数据。
其中,将升级数据按照预设的长度拆分为多个数据块,并按预设的算法验证所述多个数据块中指定个数的数据块是否均有效,参见图2,该验证过程具体包括:
步骤201:将接收到的升级数据以X字节长度进行拆分,得到多个数据块,并对得到的多个数据块依次从预设的初始值开始编号。
其中,升级数据可以是以用户ID作为密钥,通过DES、3DES、RC4、AES、RSA、ECC或TEA等算法加密的。
其中,X字节可以取16字节、32字节、64字节等,优选地,本实施例中,X字节取64字节。
本实施例中,预设初始值为0,对拆分得到的数据块可以按照0,1,2,3......进行编号。
步骤202:判断经过编号的多个数据块中,编号最大的数据块是否满足X字节长度,如果否,执行步骤203;如果是,执行步骤204。
步骤203:发送升级数据错误信息,结束。
步骤204:在多个数据块中指定要验证的数据块的个数,并将验证计数器值设为与步骤201中相同的初始值。
其中,由于将接收的升级数据进行拆分后得到的数据块很多,所以只需验证指定个数的数据块,若该指定个数的数据块均有效,则认为拆分得到的多个数据块均有效。
本实施例中,将验证计数器初始值设为0。
步骤205:在指定要验证的数据块中,对编号与验证计数器值相同的X字节长度数据块按预设的算法进行运算,得到Y字节长度数据块,Y字节长度数据块的编号与X字节长度数据块的编号相同。
此处以编号为0的数据块为例进行说明,验证计数器初始值设为0,则对编号为0的数据块进行运算,得到编号为0的Y字节长度数据块。
其中,预设的算法可以是解密算法,该解密算法与升级数据的加密算法相同,可以是:TEA、DES、3DES、RC4、AES、RSA、ECC等算法,密钥为用户ID,这样,加密后的升级数据能被待升级硬件设备解密且唯一匹配。对数据块进行运算后,其长度变化与否,与使用的算法有关。本发明实施例中,所使用的算法具体为上述的3DES算法,则长度不变,得到Y等于X,即X、Y都是64字节。
步骤206:将Y字节长度的数据块按预设的长度进行拆分,得到第一数据块和第二数据块,第一数据块和第二数据块的编号都与Y字节长度数据块的编号相同。
仍以编号为0的数据块为例进行说明,将编号为0的64字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,第一数据块的编号为0、字节长度为m=62,第二数据块的编号为0、字节长度为n=2。
其中,m、n还可以取其它数值进行拆分,只要m与n的和为Y。
步骤207:对拆分得到的第一数据块进行处理,验证处理过的第一数据块与第二数据块是否相等,如果否,执行步骤208,否则,执行步骤209。
其中,对第一数据块进行处理的方法可以是求或、求和或加密,求或具体为求逻辑和,求和具体为求数学和,包括单字节求和与双字节求和。
以编号为0的第一数据块和第二数据块为例进行说明如何验证,编号为0的第一数据块的字节长度为62,可以采用单字节求和的方法对第一数据块进行处理,62字节数据依次为0x01、0x02、0x03...0x3e,则62字节单字节的数学和2字节结果为0x07、0xA1;然后验证得到的0x07、0xA1与编号为0、字节长度为2的第二数据块是否相等。
也可以采用双字节求和的方法对第一数据块进行处理,例如,62字节数据依次为0x01、0x01、0x01、0x02、0x01、0x03、0x01、0x04、...0x01、0x1F,则62字节双字节的数学和2字节结果=0x20、0xF0;然后验证得到的0x20、0xF0与编号为0、字节长度为2的第二数据块是否相等。
步骤208:发送升级数据错误信息,结束。
步骤209:将验证计数器值加1。
步骤210:判断加1后的验证计数器值是否等于在多个数据块中指定的要验证的数据块的个数,如果是,执行步骤211;否则,返回步骤205,按照与验证编号为初始值的数据块相同的方法对指定要验证的数据块继续验证,直到验证计数器值为所述指定要验证的数据块的个数。
步骤211:发送升级数据有效的信息。
其中,从接收到的升级数据中提取出用于升级的固件数据,用该固件数据对设备进行固件升级,参见图3,该过程具体包括:
步骤301:收到升级数据有效地消息后,将收到的升级数据以和验证过程中相同的X字节长度进行拆分,得到多个数据块,并对得到的多个数据块依次从预设的初始值开始编号。
其中,升级数据可以是以用户ID作为密钥,通过DES、3DES、RC4、AES、RSA、ECC或TEA等算法加密得到的。
其中,X字节可以取16字节、32字节、64字节等,优选地,本实施例中,X字节取64字节。
本实施例中,预设初始值为0,对拆分得到的数据块可以按照0,1,2,3......进行编号。
步骤302:将升级计数器值设为步骤301中相同的初始值。
本实施例中,将升级计数器初始值设为0。
步骤303:在拆分得到的多个数据块中,将编号与升级计数器值相同的X字节长度数据块按预设的算法进行运算,得到Y字节长度数据块,Y字节长度数据块的编号与X字节长度数据块的编号相同。
此处以编号为0的数据块为例进行说明,升级计数器初始值设为0,则对编号为0的数据块进行运算,得到编号为0的Y字节长度数据块。
其中,预设的算法可以是解密算法,该解密算法与升级数据的加密算法相同,可以是:TEA、DES、3DES、RC4、AES、RSA、ECC等算法,密钥为用户ID,这样加密后的升级数据能被待升级设备解密且唯一匹配。对数据块进行运算后,其长度变化与否,与使用的算法有关。本实施例中,对数据块采用3DES算法,解密后长度不变,得到Y等于X,即X、Y都是64字节。
步骤304:将Y字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度数据块的编号相同。
仍以编号为0的数据块为例进行说明,将编号为0的64字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,第一数据块的编号为0、字节长度为m=62,第二数据块的编号为0、字节长度为n=2。
其中,m、n还可以取其它数值进行拆分,只要m与n的和为Y。
步骤305:用上述第一数据块作为固件数据对设备进行固件升级。
步骤306:将升级计数器值加1。
步骤307:判断加1后的升级计数器值是否等于步骤301中拆分得到的数据块的个数,如果是,执行步骤308,否则,返回步骤303,按照与升级编号为初始值的数据块相同的方法继续升级,直到升级计数器值为所述将升级数据按X字节长度拆分得到的数据块的个数。
步骤308:升级完成,结束。
其中,可以升级硬件设备中的所有固件,也可以有针对性的根据需要升级硬件设备中的部分固件,例如,当上述升级数据用于升级硬件设备的主控程序时,该硬件设备可以利用获取的升级数据中的固件数据进行相应升级。
实际应用中,还可以由主机接收、验证固件升级数据,并在验证通过后发送给硬件设备进行固件升级。
本发明实施例的有益效果在于:通过将升级软件发送的升级数据拆分,在验证拆分后的升级数据块正确后,提取出固件数据,用该固件数据对设备进行固件升级,这样,确保了固件数据的唯一性,大大提高了硬件设备的安全性。本发明可以升级硬件设备中的所有固件,也可以有针对性的根据实际需要,升级硬件设备中的部分固件。
实施例2
参见图4,本发明实施例提供了一种固件升级数据处理装置,应用于硬件设备的升级,硬件设备可以是读卡器、mp3、mp4等内有cpu的设备,该装置包括:接收模块200、验证模块300、升级模块400。
接收模块200用于接收升级软件发送的升级数据。
验证模块300用于将接收模块200接收到的升级数据按照预设的长度拆分为多个数据块,并验证多个数据块中指定个数的数据块是否均有效;如果是,向升级模块400发送升级数有效的信息,升级模块400收到验证模块300发送的升级数据有效的信息后,从升级数据中提取固件数据,用固件数据对设备进行固件升级;否则,发出升级数据错误信息,结束。
其中,接收模块200具体包括;
接收单元,用于接收二进制bin文件。
获取单元,用于从接收单元接收的二进制bin文件中获取升级数据。
参见图5,验证模块300具体包括:
第一拆分单元301,用于将接收模块200接收到的升级数据以X字节长度进行拆分,得到多个数据块,并对该多个数据块依次从预设的初始值开始编号。
其中,升级数据可以是以用户ID作为密钥,通过DES、3DES、RC4、AES、RSA、ECC或TEA等算法加密得到的。
其中,X字节可以取16字节、32字节、64字节等,优选地,本实施例中,X字节取64字节。
本实施例中,预设初始值为0,对拆分得到的数据块可以按照0,1,2,3......进行编号。
第一判断单元302,用于判断经过第一拆分单元301拆分的数据块中,编号最大的数据块是否满足X字节长度,如果否,发送升级数据错误信息,结束;如果是,将验证计数器值设为与第一拆分单元301中相同的初始值。
本实施例中,将验证计数器初始值设为0。
发送单元303,用于发送第一判断单元302和验证单元307得到升级数据错误信息和第二判断单元308得到的升级数据有效的信息。
指定单元304,用于在多个数据块中指定要验证的数据块的个数。
其中,由于拆分得到的数据块很多,所以只需验证指定个数的数据块,若该指定个数的数据块均有效,则认为该多个数据块均有效。
运算单元305,用于在第一拆分单元301得到的多个数据块中,对编号与验证计数器值相同的X字节长度数据块按照预设的算法进行运算,得到Y字节长度数据块,第一数据块和第二数据块的编号都与Y字节长度数据块的编号相同。
此处以编号为0的数据块为例进行说明,验证计数器初始值设为0,则对编号为0的数据块进行运算,得到编号为0的Y字节长度数据块。
其中,预设的算法可以是解密算法,该解密算法与原始升级数据的加密算法相同,可以是:TEA、DES、3DES、RC4、AES、RSA、ECC等算法,密钥为用户ID,这样加密后的升级数据才能被待升级硬件设备解密且唯一匹配。对数据块进行运算后,其长度变化与否,与使用的算法有关。本发明实施例中,对数据块采用3DES算法,解密后长度不变,得到Y等于X,即X、Y都是64字节。
第二拆分单元306,用于将运算单元305得到的Y字节长度数据块进行拆分,得到第一数据块和第二数据块,第一数据块和第二数据块的编号都与Y字节长度数据块的编号相同。
仍以编号为0的数据块为例进行说明,将编号为0的64字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,第一数据块的编号为0、字节长度为m=62,第二数据块的编号为0、字节长度为n=2。
其中,m、n还可以取其它数值进行拆分,只要m与n的和为Y。
验证单元307,用于对第二拆分单元306得到的第一数据块进行处理,并验证处理过的第一数据块与第二拆分单元306拆分得到的第二数据块是否相等,如果否,发送升级数据错误信息,结束;否则,将验证计数器值加1。
其中,对第一数据块进行处理的方法可以是求或、求和或加密,求或具体为求逻辑和,求和具体为求数学和,包括单字节求和与双字节求和。
以编号为0的第一数据块和第二数据块为例进行说明如何验证,编号为0的第一数据块的字节长度为62。可以采用单字节求和的方法对第一数据块进行处理,62字节数据依次为0x01、0x02、0x03...0x3e,则62字节单字节的数学和2字节结果为0x07、0xA1;然后验证得到的0x07、0xA1与编号为0、字节长度为2的第二数据块是否相等。
也可以采用双字节求和的方法对第一数据块进行处理,例如,62字节数据依次为0x01、0x01,0x01、0x02,0x01、0x03,0x01、0x04,...0x01、0x1F,则62字节双字节的数学和2字节结果=0x20、0xF0;然后验证得到的0x20、0xF0与编号为0、字节长度为2的第二数据块是否相等。
第二判断单元308,用于判断验证单元307得到的加1后的验证计数器值是否等于指定单元304指定的要验证的数据块的个数,如果是,则发送升级数据有效的信息;否则,按照与验证编号为初始值的数据块相同的方法对所述指定单元304指定要验证的数据块继续验证,直到验证计数器值为指定单元304指定要验证的数据块的个数。
其中,参见图6,升级模块400具体包括:
接收单元401,用于接收验证模块300发送的升级数据有效的消息。
第一拆分单元402,用于将接收单元401收到的升级数据以X字节长度进行拆分,得到多个数据块,并对该多个数据块依次从预设的初始值开始编号。
其中,升级数据可以是以用户ID作为密钥,通过DES、3DES、RC4、AES、RSA、ECC或TEA等算法加密得到的。
其中,X字节可以取16字节、32字节、64字节等,优选地,本实施例中,X字节取64字节。
本实施例中,预设初始值为0,对拆分得到的数据块可以按照0,1,2,3......进行编号。
设置单元403,用于将升级计数器值设为与第一拆分单元402中相同的初始值。
本实施例中,将升级计数器初始值也设置为0。
运算单元404,用于在第一拆分单元402得到的多个数据块中,对编号与升级计数器值相同的X字节长度数据块按照预设的算法进行运算,得到Y字节长度数据块,Y字节长度数据块的编号与X字节长度数据块的编号相同。
此处以编号为0的数据块为例进行说明,升级计数器初始值设为0,则对编号为0的数据块进行运算,得到编号为0的Y字节长度数据块。
其中,预设的算法可以是解密算法,该解密算法与原始升级数据的加密算法相同,可以是:TEA、DES、3DES、RC4、AES、RSA、ECC等算法,密钥为用户ID,这样加密后的升级数据才能被待升级设备解密且唯一匹配。对数据块进行运算后,其长度变化与否,与使用的算法有关。本实施例中,对数据块采用3DES算法,解密后长度不变,得到Y等于X,即X、Y都是64字节。
第二拆分单元405,用于将运算单元404得到的Y字节长度的数据块按预设的长度进行拆分,得到第一数据块和第二数据块,第一数据块和第二数据块的编号都与Y字节长度的数据块的编号相同。
仍以编号为0的数据块为例进行说明,将编号为0的64字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,第一数据块的编号为0、字节长度为m=62,第二数据块的编号为0、字节长度为n=2。
其中,m、n还可以取其它数值进行拆分,只要m与n的和为Y。
升级单元406,用于应用第二拆分单元405得到的第一数据块作为固件数据对设备进行固件升级,并将升级计数器值加1。
判断单元407,用于判断升级单元406得到的加1后的升级计数器值是否等于第一拆分单元402拆分得到的数据块的个数,如果是,则升级完成,结束;否则,按照与升级编号为初始值的数据块相同的方法继续升级,直到升级计数器值为第一拆分单元拆分得到的数据块的个数。
其中,可以升级硬件设备中的所有固件,也可以有针对性的根据需要升级硬件设备中的部分固件,例如,当上述升级数据用于升级硬件设备的主控程序时,该硬件设备可以利用获取的升级数据的固件数据进行相应升级。
实际应用中,接收模块、验证模块可以运行于主机,升级模块运行于硬件设备,硬件设备收到主机发送的升级数据和该升级数据有效的消息后,从该升级数据中提取出用于升级的固件数据,用该固件数据对设备进行固件升级。
本发明实施例的有益效果在于:通过将升级软件发送的升级数据拆分,在验证拆分后的数据块正确后,提取出固件数据,用该固件数据对设备进行固件升级,这样,确保了固件数据的唯一性,大大提高了硬件设备的安全性。本发明可以升级硬件设备中的所有固件,也可以有针对性的根据实际需要,升级硬件设备中的部分固件。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种固件升级数据处理方法,其特征在于,所述方法包括:
接收升级数据;
将所述升级数据以X字节长度进行拆分,得到多个数据块,并对所述多个数据块依次从预设的初始值开始编号;所述预设的初始值为0;
判断经过编号的多个数据块中,编号最大的数据块是否满足X字节长度,如果否,发送升级数据错误信息,结束;如果是,在多个数据块中指定要验证的数据块的个数,并将验证计数器值设为所述初始值;
在所述指定要验证的数据块中,对编号与所述验证计数器值相同的X字节长度的数据块按预设的算法进行运算,得到Y字节长度数据块,所述Y字节长度数据块的编号与所述X字节长度数据块的编号相同;
将所述Y字节长度数据块按预设的长度拆分为第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度的数据块的编号相同;
对所述第一数据块进行处理,验证处理过的第一数据块与所述第二数据块是否相等;
如果否,发送升级数据错误信息,结束;
如果是,所述验证计数器值加1,并判断加1后的验证计数器值是否等于所述指定要验证的数据块的个数,如果是,发送升级数据有效的信息,从所述升级数据中提取固件数据,用所述固件数据对设备进行固件升级;否则,按照与验证编号为初始值的数据块相同的方法对指定要验证的数据块继续验证,直到验证计数器值为所述指定要验证的数据块的个数。
2.根据权利要求1所述的固件升级数据处理方法,其特征在于,所述接收升级数据,具体包括:
接收二进制bin文件,从所述二进制bin文件中获取所述升级数据。
3.根据权利要求1所述的固件升级数据处理方法,其特征在于,对所述第一数据块进行处理,具体包括:
对所述第一数据块采用求或、求和或加密的方法进行处理。
4.根据权利要求1所述的固件升级数据处理方法,其特征在于,对编号与所述验证计数器值相同的X字节长度的数据块按预设的算法进行运算,具体包括:
用DES、3DES、RC4、AES、RSA、ECC或TEA算法将编号和所述验证计数器值相同的X字节长度数据块进行运算。
5.根据权利要求1所述的固件升级数据处理方法,其特征在于,用所述固件数据对设备进行固件升级,具体包括:
将所述升级数据以X字节长度进行拆分,得到多个数据块,并对所述多个数据块依次从预设的初始值开始编号;
将升级计数器设为所述初始值;
在所述多个数据块中,对编号与所述升级计数器值相同的X字节长度数据块按预设的算法进行运算,得到Y字节长度数据块,所述Y字节长度数据块的编号与所述X字节长度数据块的编号相同;
将所述Y字节长度数据块按预设的长度拆分为第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度数据块的编号相同;
将所述第一数据块作为固件数据对设备进行固件升级;
所述升级计数器值加1,并判断加1后的升级计数器值是否等于所述将升级数据拆分得到的数据块的个数,如果是,升级完成,结束;否则,按照与升级编号为初始值的数据块相同的方法继续升级,直到升级计数器值为所述将升级数据按X字节长度拆分得到的数据块的个数。
6.根据权利要求5所述的固件升级数据处理方法,其特征在于,对编号与所述升级计数器值相同的X字节长度数据块按预设的算法进行运算,具体包括:
用DES、3DES、RC4、AES、RSA、ECC或TEA算法将编号和所述升级计数器值相同的X字节长度固件升级数据块进行运算。
7.一种固件升级数据处理装置,其特征在于,所述装置包括:接收模块、验证模块和升级模块;
所述接收模块用于接收升级软件发送的升级数据;
所述验证模块具体包括:
第一拆分单元,用于将接收模块接收到的升级数据以X字节长度进行拆分,得到多个数据块,并对所述多个数据块依次从预设的初始值开始编号;所述预设的初始值为0;
第一判断单元,用于判断所述第一拆分单元得到的编号的数据块中,编号最大的数据块是否满足X字节长度,如果否,发送升级数据错误信息,结束;如果是,将验证计数器值设为所述初始值;
指定单元,用于在多个数据块中指定要验证的数据块的个数;
运算单元,用于在所述第一拆分单元得到的多个数据块中,对编号与所述验证计数器值相同的X字节长度数据块进行运算,得到Y字节长度数据块,所述Y字节长度数据块的编号与所述X字节长度数据块的编号相同;
第二拆分单元,用于将所述运算单元得到的Y字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度数据块的编号相同;
验证单元,用于对所述第二拆分单元得到的第一数据块进行处理,并验证处理过的第一数据块与所述第二数据块是否相等,如果否,发送升级数据错误信息,结束;如果是,所述验证计数器值加1;
第二判断单元,用于判断所述验证单元得到的加1后的验证计数器值是否等于所述指定单元指定要验证的数据块的个数,如果是,发送升级数据有效的信息;否则,按照与验证编号为初始值的数据块相同的方法对所述指定单元指定要验证的数据块继续验证,直到验证计数器值为所述指定单元指定要验证的数据块的个数;
发送单元,用于发送所述第一判断单元和所述验证单元得到的升级数据错误信息和所述第二判断单元的得到的升级数据有效的信息;
所述升级模块用于在所述第二判断单元发送升级数据有效的信息后,从所述升级数据中提取出固件数据,用所述固件数据对设备进行固件升级。
8.根据权利要求7所述的固件升级数据处理装置,其特征在于,所述接收模块具体包括:
接收单元,用于接收二进制bin文件;
获取单元,用于从所述接收单元接收到的二进制bin文件中获取升级数据。
9.根据权利要求7所述的固件升级数据处理装置,其特征在于,所述运算单元对编号与所述验证计数器值相同的X字节长度数据块,采用DES、3DES、RC4、AES、RSA、ECC或TEA算法进行运算。
10.根据权利要求7所述的固件升级数据处理装置,其特征在于,所述验证单元对所述第二拆分单元得到的第一数据块采用求或、求和或加密的方法进行处理。
11.根据权利要求7所述的固件升级数据处理装置,其特征在于,所述升级模块具体包括:
第一拆分单元,用于将所述接收模块接收到的升级数据以X字节长度进行拆分,得到多个数据块,并对所述多个数据块依次从预设的初始值开始编号;
设置单元,用于将升级计数器值设为所述初始值;
运算单元,用于对所述第一拆分单元得到的多个数据块中,对编号与所述升级计数器值相同的X字节长度数据块按预设的算法进行运算,得到Y字节长度数据块,所述Y字节长度数据块的编号与所述X字节长度数据块的编号相同;
第二拆分单元,用于对所述运算单元得到的Y字节长度数据块按预设的长度进行拆分,得到第一数据块和第二数据块,所述第一数据块和第二数据块的编号都与所述Y字节长度数据块的编号相同;
升级单元,用于将所述第二拆分单元得到的第一数据块作为固件数据对设备进行固件升级,并将升级计数器值加1;
判断单元,用于判断所述升级单元得到的加1后的升级计数器值是否等于所述第一拆分单元拆分得到的数据块的个数,如果是,则升级完成,结束;否则,按照与升级编号为初始值的数据块相同的方法继续升级,直到升级计数器值为所述第一拆分单元拆分得到的数据块的个数。
12.根据权利要求11所述的固件升级数据处理装置,其特征在于,所述运算单元对编号与所述升级计数器值相同的X字节长度数据块,采用DES、3DES、RC4、AES、RSA、ECC或TEA算法进行运算。
CN2008102237177A 2008-10-09 2008-10-09 一种固件升级数据处理方法和装置 Active CN101373440B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008102237177A CN101373440B (zh) 2008-10-09 2008-10-09 一种固件升级数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008102237177A CN101373440B (zh) 2008-10-09 2008-10-09 一种固件升级数据处理方法和装置

Publications (2)

Publication Number Publication Date
CN101373440A CN101373440A (zh) 2009-02-25
CN101373440B true CN101373440B (zh) 2011-12-28

Family

ID=40447615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008102237177A Active CN101373440B (zh) 2008-10-09 2008-10-09 一种固件升级数据处理方法和装置

Country Status (1)

Country Link
CN (1) CN101373440B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101695162A (zh) * 2009-10-22 2010-04-14 中兴通讯股份有限公司 一种移动终端空中固件升级方法及装置
CN102083069B (zh) * 2009-11-26 2015-09-16 中兴通讯股份有限公司 一种检测移动终端存储器数据完整性的方法和装置
CN103500151B (zh) * 2013-09-27 2016-06-08 深圳钱盒信息技术有限公司 一种更改外部设备固件的方法和装置
CN105989293A (zh) * 2015-02-13 2016-10-05 中兴通讯股份有限公司 一种实现软件版本升级的方法和装置
CN111279310B (zh) * 2017-10-24 2023-09-12 华为国际有限公司 一种车载设备升级方法及相关设备
CN108920962B (zh) * 2018-06-26 2020-06-26 百富计算机技术(深圳)有限公司 固件下载验签方法、固件发布方法、移动终端及服务器
CN110134424B (zh) * 2019-05-16 2023-06-06 上海东软载波微电子有限公司 固件升级方法及系统、服务器、智能设备、可读存储介质
CN110784386B (zh) * 2019-09-27 2021-12-07 深圳市火乐科技发展有限公司 固件更新方法及相关设备
CN110727454A (zh) * 2019-10-24 2020-01-24 北京云迹科技有限公司 智能设备的更新方法及装置、电子设备、存储介质
CN111414169B (zh) * 2020-02-21 2022-07-08 苏州浪潮智能科技有限公司 Bmc镜像升级方法及相关组件

Also Published As

Publication number Publication date
CN101373440A (zh) 2009-02-25

Similar Documents

Publication Publication Date Title
CN101373440B (zh) 一种固件升级数据处理方法和装置
US7366916B2 (en) Method and apparatus for an encrypting keyboard
US10152579B2 (en) Network information system with license registration and method of operation thereof
TW413988B (en) Cryptographic system
CN107659632A (zh) 一种文件加解密方法、装置及计算机可读存储介质
US8435310B2 (en) Anti-counterfeiting electronic device and method thereof
CN104486355A (zh) 防止代码被恶意篡改的方法和装置
CN104123199A (zh) 应用程序的恢复方法、装置和移动终端
CN101419557A (zh) 一种程序下载控制方法
CN103873440A (zh) 一种应用程序的升级方法和系统
CN107480513B (zh) 一种认证实现方法及装置、计算机装置、可读存储介质
US20140223523A1 (en) System and method for nfc peer-to-peer authentication and secure data transfer
CN109658545A (zh) 一种网络锁的密码设置方法及网络门禁系统
CN104915240A (zh) 一种atm设备软件升级的方法
CN113343245B (zh) 芯片安全启动方法、安全芯片及其接收机
KR20140048094A (ko) 이동 단말 장치 칩 프로그래밍을 위한 방법
CN112688942B (zh) 基于esam的电能表固件程序升级方法、装置、介质及设备
CN107133539B (zh) 智能卡个人化方法及相关装置与系统
CN107798256A (zh) 一种基于密码算法分离存储的智能卡及设计方法
CN201387612Y (zh) 一种农畜产品流通监管装置
CN108173845B (zh) 具有核心芯片的计量仪表及信息安全交互系统
CN102012978A (zh) Iso文件安全升级的方法及系统
CN107330318A (zh) 一种数字信号处理板卡及其调试系统的绑定加密方法
CN104361290B (zh) 一种程序加密下载器及其工作方法
CN103544011B (zh) 一种动态创建并使用功能对象的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085

Patentee after: Feitian Technologies Co.,Ltd.

Country or region after: Zhong Guo

Address before: 100085 17th floor, block B, Huizhi building, No.9 Xueqing Road, Haidian District, Beijing

Patentee before: Feitian Technologies Co.,Ltd.

Country or region before: Zhong Guo