一种对无线网络设备升级程序及通讯数据加密的方法与流程

文档序号:17041775发布日期:2019-03-05 19:17阅读:218来源:国知局
一种对无线网络设备升级程序及通讯数据加密的方法与流程

本发明涉及数据加密技术领域,尤其是物联网、无线传感器网络、嵌入式系统领域,具体涉及一种对无线网络设备升级程序及通讯数据加密的方法。



背景技术:

在物联网、无线传感器网络和嵌入式系统中,每个设备都会内嵌一个嵌入式cpu处理器用来执行设计人员编写的嵌入式程序,用以实现设备和系统的自动化和智能化,然而在嵌入式程序编写的过程中难免会出现程序代码错误导致设备运行不正常、设备需要新增加功能等问题的出现,为了方便的解决这类问题,设计人员通常会设计一个在线升级机制,方便程序的升级更新,但是目前几乎所有的在线升级,都采用明文进行二进制程序的传递、存储、升级,非常容易被第三方获得和方向工程,从而导致产品设计人员花大量的人力、物力、时间研发出来的产品,刚一面市不久就被第三方恶意抄袭,造成产品设计厂商的巨大损失。

在物联网、无线传感器网络领域,由于无线通讯信号的开放性,通过无线信号传输明文通讯数据,非常容易被第三方将通讯数据截获并分析,从而导致无线网络中的关键性数据泄露,严重者会出现非法入侵者伪装入侵无线网络,导致无线网络通讯不正常,以达到恶意入侵者的不法目的。

虽然目前有少部分的产品对升级程序及通讯数据进行了加密处理,保证了设备的安全性,但在物联网、无线传感器网络和嵌入式系统中若采用国际通用的如des和aes等对称加密算法进行数据加密,但是受限于嵌入式cpu处理器的代码空间和处理器的运算速度,其加密解密效率非常低;若采用简单的单一加密技术,又容易被恶意的第三方破解,从而达不到加密的目的。



技术实现要素:

本发明的目的是提供一种对无线网络设备升级程序及通讯数据加密的方法,它是一种简单高效的加密方法,利用简单的移位、异或、插值算法,配合sha256加密硬件实现了物联网、无线传感器网络和嵌入式系统中设备升级程序和通讯数据的加密,该加密方法对嵌入式cpu处理器的代码空间占用较少,对处理器的运算速度要求较低,能够采用非常低廉的处理器实现升级程序和通讯数据的加密,同时还能够在数据通讯过程中实现签名的鉴定和数据完整性的验证,保证了设备通讯的安全性和数据的完整性。

为了解决背景技术所存在的问题,本发明是采用以下技术方案:本发明首先公开了一种对无线网络设备升级程序的方法,对无线网络设备进行程序升级有现场升级模式和远程升级模式,现场升级模式是通过手持升级终端对无线网络设备进行应用现场近距离升级,该模式通过pc计算机的有线通信接口将升级程序加密密文写入手持升级终端,手持升级终端通过无线信号将升级程序加密密文发送到待升级的设备中进行升级;远程升级模式是利用远程服务器通过无线网络通讯进行设备的远程升级,该模式通过远程服务器将升级程序加密密文通过无线网络通道发送到待升级的设备中进行升级;在这两种升级模式中,统一将发送升级程序加密密文的手持升级终端或者远程服务器命名为升级服务设备,将待进行程序升级的目标无线网络设备命名为升级终端设备。

作为本发明的进一步改进,所述的升级服务设备和升级终端设备包含嵌入式cpu处理器、sha256哈希加密芯片和无线通讯模块或者有线通讯接口,

嵌入式cpu处理器用于嵌入式代码程序的执行、加密文件的解密、网络设备通讯数据的加密解密;

sha256哈希加密芯片利用硬件加密芯片实现加解密密钥的安全存储及快速的哈希运算,提高程序和数据加密解密处理的速度、效率和安全性,同时能够进行通讯数据合法性鉴权;

无线通讯模块或者有线通讯接口用于接收和发送加密的密文升级程序,并进行通讯指令和数据的发送和接收;

若嵌入式cpu处理器内部的存储空间足够大,除了cpu自身执行代码外,还有足够的空间存储升级程序加密密文,则可以不用选择扩展flash存储器,若嵌入式cpu处理器内部的存储空间过小的话,可以外接一个大容量的扩展flash存储器,用于存储接收到的升级程序加密密文。

本发明还提供一种对无线网络设备升级程序通讯数据加密的方法,升级程序加密及升级流程如下:

(a)在pc计算机将升级程序代码编译测试并生成二进制升级程序明文文件;

(b)采用加密步骤对二进制升级程序文件进行加密处理,生成加密密文,并生成加密摘要数据;

(c)将加密密文传递、发送给设备管理人员;

(d)设备管理人员利用现场升级模式或远程升级模式将升级程序加密密文发送到升级终端设备中存储,并校验加密密文;

(e)远程服务器通过远程无线网络给升级终端设备发送升级解密指令和加密摘要数据;

(f)升级终端设备收到升级解密指令和加密摘要数据后,对存储的升级加密密文进行解密操作;

(g)升级程序加密密文解密完成后对升级程序明文进行校验;

(h)明文校验正确后,即可将解密后的程序明文做为升级程序代码写入嵌入式cpu处理器代码执行区,并启动执行新的升级程序。

该解密操作为加密操作的逆过程;为了保证程序升级程序解密及校验的可靠性,升级终端设备将代码执行区划分a、b共2存储区,用于交替存储当前执行的原程序代码和新的升级程序代码。

作为本发明的进一步改进,所述的加密步骤如下:

(1)数据分组预处理:将升级程序代码按照32字节进行分组,不足32字节的数据利用升级程序明文摘要进行数据插值补齐,插值补齐方法是将明文摘要第1、2两字节×补齐因子n%明文长度=补齐位置,明文摘要第2字节=补齐数据1进行数据插值补齐,明文摘要第2、3两字节×补齐因子n%明文长度=补齐位置,明文摘要第3字节=补齐数据2进行数据插值补齐,依次循环进行插值补齐,以完成32字节分组处理,记录8bit补齐因子n和8bit插值补齐个数为16bit补齐摘要,整个升级程序数据加密过程中,记录一个且只记录1个补齐摘要,对无需插值补齐的升级程序,补齐摘要采用0x00填充;

(2)数据异或加密处理:利用加密秘钥key1~16按照从小到大的序号,根据4bit随机异或起始序号选择起始密钥keyn,计算4bit随机异或移位位数×异或加密处理次数=移位位数m,并根据该移位位数m将密钥keyn向右循环移位后,再对第一个32字节分组数据进行异或加密处理;随后同样将keyn+1向右循环移位后对第二个32字节分组数据进行异或加密处理,依次循环使用key1~16对后面的每个32字节分组数据进行异或加密处理,一轮16个加密密钥使用完毕后,再次循环异或处理时依然根据4bit随机异或移位位数×异或加密处理次数=移位位数m,根据该移位位数m将每个密钥key向右循环移位后再与32字节分组数据进行异或加密处理,记录4bit随机异或起始序号和4bit随机异或移位位数为8bit异或摘要,每次进行一次异或加密处理时,都会记录一个异或摘要,进行多次异或加密处理时,会记录多个异或摘要,在选择4bit随机异或移位位数时尽量选择3位、5位、7位、11位、13位这几个质数作为异或移位位数,因为该质数在循环移位时能够保证每次移位后得到的异或数值各不相同,增加了加密的安全性;本发明进行异或加密处理按照从小到大的序号选择key时选择1~16个key密钥进行异或加密,也可以是全部16个key,也可以<16个的部分key密钥参与异或加密,并记录选择了那些key参与了异或加密,本发明首次异或加密处理选择全部16个key参与异或,后续异或加密处理选择key的个数根据后面步骤5中的随机插值个数确定,保证异或加密个数和插值加密个数及key序号相同;

(3)插值数据处理:进行异或加密处理完毕后,将4bit随机异或移位位数赋值为4bit插值密钥移位位数,利用该4bit插值密钥移位位数将步骤2记录的参与异或加密的每个加密密钥key向左循环移位,生成ins1~16插值数据用于后面的插值处理,未参与异或加密的key其对应的ins填充为0;

(4)数据同值预处理:加密数据进行了异或加密处理后得到的数据有一定的概率和ins1~16插值数据同值,在进行后续插值处理时会导致解密出现错误,所以该步骤进行数据同值预处理,遍历整个加密数据若某个32字节数据块和ins1~16插值数据相值,则将该32字节数据块根据随机同值移位位数循环左移,使得数据体不同于16个插值数据,记录27bit同值数据起始位置和5bit随机同值移位位数为同值摘要,每次在进行同值预处理过程可能会存在多个同值数据体,也可能没有同值数据体,对于没有同值数据体的情况采用0x00000000填充记录,保证每次进行同值预处理过程中记录1~n个同值摘要;

(5)、数据插值加密处理:进行完同值处理后对加密数据随机插入ins1~16插值数据,插入的位置为全部数据空间内的随机1~256字节对齐的随机位置插入,插入的个数为参与异或加密key的个数,插入的数据内容随机从16个ins1~16插值数据中选取,ins数据值为0的ins不进行插入,且保证同一个ins插值数据不要插入两次,避免采用匹配方式获取秘钥的概率;本发明为了保证加密的安全性,插值处理时插入ins数据的字节对齐数随机、插入位置随机、插入的ins数据内容选择随机、插入的ins数据个数随机4个因素影响每次插值加密的结果;加密密文在进行解密时随着随机字节对齐数从大到小且解密难度逐渐增加,对齐字节数为1时,升级程序密文解密难度最大,其安全程度将达到最高,本发明记录随机字节对齐数为插值摘要;

(6)、数据重复加密处理:在插入key密钥一次完成后,可重复步骤2~5进行下一轮加密处理,重复加密次数根据16bit随机重复次数确定,通过调整16bit随机重复次数和步骤5插值加密处理中的随机插值个数可以控制加密后的升级程序密文大小为一个预定义的值,本发明记录16bit随机加密重复次数为16bit重复摘要,整个升级程序数据加密过程中,记录一个且只记录1个重复摘要;

经过上述步骤(1)~(6)即可实现高安全性的升级程序二进制数据加密,升级程序加密完成后可以生成两个数据块,一个是升级程序的加密密文数据,一个是加密摘要数据,这两个加密数据通过不同的途径发送到升级设备终端中,进行升级程序解密。

本发明将升级程序加密过程中记录的补齐摘要、异或摘要、同值摘要、插值摘要、重复摘要和明文摘要合并为一个加密摘要数据块,该加密摘要数据块是升级程序解密的关键性数据,通过安全认证过的无线网络通道传输给无线网络设备;本发明的加密摘要数据块组织格式,按照排列顺序为:1、明文摘要,占用4字节256bit长度;2、补齐摘要,占用2字节16bit长度;3、重复摘要,占用2字节16bit长度;4、第一次循环加密异或摘要,占用1字节8bit长度;5、第一次循环加密插值摘要,占用1字节8bit长度;6、第一次循环加密同值摘要个数,占用2字节16bit长度;7、第一次循环加密同值摘要第一个值、第二个值、第n个值,每个值占用4字节32bit;8、第二次循环加密异或摘要,占用1字节8bit长度;9、第二次循环加密插值摘要,占用1字节8bit长度;10、第二次循环加密同值摘要个数,占用2字节16bit长度;11、第二次循环加密同值摘要第一个值、第二个值、第n个值,每个值占用4字节32bit;12、依次类推,第三次直到第n次循环加密摘要数据。

采用上述技术方案后,本发明具有以下有益效果:

1、用于对无线网络设备嵌入式cpu处理器的升级程序进行加密处理,用以保证升级程序的二进制代码在编译测试完成后,对外发布和传递的过程中的安全性和保密性,避免二进制代码被第三方恶意复制和拷贝,保证企业各项技术的安全性;

2、还对无线网络设备通讯过程中的数据进行加密处理,保证合法的无线网络设备能够可靠通讯,避免第三方恶意的设备和装置窃取无线网络通讯数据和非法入侵攻击无线通讯网络,保证无线网络通讯数据的保密性、防窃取性、无线网络的防攻击性,提高无线网络的健壮性和安全性、可靠性。

3、该方法描述的是无线网络设备升级程序的加密,由于升级程序也是一个二进制数据块,所有该加密方法可以用于任何二进制数据块的加密;

4、本加密方法中采用的256bit长度的sha256哈希加密芯片,加密密钥为32字节,加密过程中的分组也都是采用32字节分组,若采用512bit长度的sha哈希加密芯片,加密密钥长度为64字节,加密分组可以为64字节,所以该加密方法的加密密钥长度对应加密过程分组长度,而不仅仅局限于256bit长度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明中升级服务设备和升级终端设备的结构框图;

图2为本发明的升级程序加密及升级流程图;

图3为本发明的加密步骤图;

图4为本发明的加密摘要数据块组织格式图;

图5为本发明对升级程序进行加密时增强安全性的处理流程图;

图6为本发明基于加密芯片的sha256运算规则设计的key匹配提取步骤图;

图7为本发明升级终端设备加密摘要数据请求及解密的步骤图;

图8为本发明的具体实施例中无线网络设备的结构框图;

图9为本发明的具体实施例中cpu处理器内部的分区图;

图10为本发明的具体实施例中升级程序的传输步骤图;

图11为本发明的具体实施例中程序编译计算机、远程服务器、升级程序终端、无线通讯网络间的关系图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合具体实施方式,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅用以解释本发明,并不用于限定本发明。

请参阅图1-图7,本具体实施方式采用以下技术方案:首先公开了一种对无线网络设备升级程序的方法,对无线网络设备进行程序升级有现场升级模式和远程升级模式,现场升级模式是通过手持升级终端对无线网络设备进行应用现场近距离升级,该模式通过pc计算机的有线通信接口将升级程序加密密文写入手持升级终端,手持升级终端通过无线信号将升级程序加密密文发送到待升级的设备中进行升级;远程升级模式是利用远程服务器通过无线网络通讯进行设备的远程升级,该模式通过远程服务器将升级程序加密密文通过无线网络通道发送到待升级的设备中进行升级;在这两种升级模式中,统一将发送升级程序加密密文的手持升级终端或者远程服务器命名为升级服务设备,将待进行程序升级的目标无线网络设备命名为升级终端设备。

请参阅图1,所述的升级服务设备和升级终端设备包含嵌入式cpu处理器、sha256哈希加密芯片和无线通讯模块或者有线通讯接口,嵌入式cpu处理器用于嵌入式代码程序的执行、加密文件的解密、网络设备通讯数据的加密解密;sha256哈希加密芯片利用硬件加密芯片实现加解密密钥的安全存储及快速的哈希运算,提高程序和数据加密解密处理的速度、效率和安全性,同时能够进行通讯数据合法性鉴权;无线通讯模块或者有线通讯接口用于接收和发送加密的密文升级程序,并进行通讯指令和数据的发送和接收;若嵌入式cpu处理器内部的存储空间足够大,除了cpu自身执行代码外,还有足够的空间存储升级程序加密密文,则可以不用选择扩展flash存储器,若嵌入式cpu处理器内部的存储空间过小的话,可以外接一个大容量的扩展flash存储器,用于存储接收到的升级程序加密密文。

请参阅图2,本具体实施方式还提供一种对无线网络设备升级程序通讯数据加密的方法,升级程序加密及升级流程如下:

(a)在pc计算机将升级程序代码编译测试并生成二进制升级程序明文文件;

(b)采用加密步骤对二进制升级程序文件进行加密处理,生成加密密文,并生成加密摘要数据;

(c)将加密密文传递、发送给设备管理人员;

(d)设备管理人员利用现场升级模式或远程升级模式将升级程序加密密文发送到升级终端设备中存储,并校验加密密文;

(e)远程服务器通过远程无线网络给升级终端设备发送升级解密指令和加密摘要数据;

(f)升级终端设备收到升级解密指令和加密摘要数据后,对存储的升级加密密文进行解密操作;

(g)升级程序加密密文解密完成后对升级程序明文进行校验;

(h)明文校验正确后,即可将解密后的程序明文做为升级程序代码写入嵌入式cpu处理器代码执行区,并启动执行新的升级程序。

该解密操作为加密操作的逆过程;为了保证程序升级程序解密及校验的可靠性,升级终端设备将代码执行区划分a、b共2存储区,用于交替存储当前执行的原程序代码和新的升级程序代码。

对升级程序进行加密时,涉及三个关键性的数据,它们分别是:

1、加密密钥key1~16,这16个加密密钥可以选择16个不相同的32字节随机数据加密做密钥,也可以选择无线网络设备的程序代码中的某关键性二进制代码库中的16个不相同的32字节片段做加密密钥,这16个加密密钥全部通过硬件烧写工具烧写进sha256加密芯片中并进行熔断处理,保证了sha256加密芯片中的加密密钥不能被外部非法读取,另外随机挑选4个密钥做为初始密钥,这4个初始密钥字节固化到嵌入式cpu处理器中,用于升级程序的初始解密和数据通讯的初始认证,本发明将这4个随机挑选的密钥命名为初始固化密钥;

2、升级程序明文摘要,该数据为升级程序明文通过sha256哈希算法计算出的明文摘要,用于升级程序密文解密还原出明文后,对明文文件的校验和合法性判断,该明文摘要数据附加在加密摘要数据中发送给升级设备终端;

3、加密摘要数据,该数据为升级程序明文在进行加密操作过程中产生的加密关键性数据,只有通过该数据才能够有效解密出升级程序明文。

本发明在进行升级程序和关键性二进制代码库加密前,对整个升级程序和关键性二进制代码库的明文进行一次sha256运算,生成一个32字节的明文摘要,该明文摘要用于后续的升级程序和关键性二进制代码库的加密处理,并在解密后对解密的明文文件进行一致性验证。

本发明在选择某关键性二进制代码库做加密密钥时,将关键性代码库按照32字节进行分组,随机分组抽取16个不同的32字节代码片段做加密密钥,然后将被抽取的16个片段采用0xff进行填充,填充后的二进制代码库可以作为嵌入式程序的库文件烧写进cpu处理器中,也可以和升级程序一起进行加密处理;通过该方法可以将关键性二进制代码库的部分代码片段存储在加密芯片中,保证了关键性二进制代码的安全性和保密性;通过升级程序解密后,即可获得16个加密密钥key,然后通过对16个填充了0xff的片段进行替换即可还原出关键性二进制代码库,如此升级程序解密后即可正常调用该关键性二进制代码库。

本发明对升级程序加密仅利用了几个常见的简单的分组、异或、移位、插值运算和sha256加密芯片的哈希运算,实现了整个升级程序代码二进制数据的加密,其加密运算简单、加密安全性高;请参阅图3,本发明的升级程序加密步骤如下:

1、数据分组预处理:将升级程序代码按照32字节进行分组,不足32字节的数据利用升级程序明文摘要进行数据插值补齐,插值补齐方法是将明文摘要第1、2两字节×补齐因子n%明文长度=补齐位置,明文摘要第2字节=补齐数据1进行数据插值补齐,明文摘要第2、3两字节×补齐因子n%明文长度=补齐位置,明文摘要第3字节=补齐数据2进行数据插值补齐,依次循环进行插值补齐,以完成32字节分组处理,本发明记录8bit补齐因子n和8bit插值补齐个数为16bit补齐摘要,整个升级程序数据加密过程中,记录一个且只记录1个补齐摘要,对无需插值补齐的升级程序,补齐摘要采用0x00填充;

2、数据异或加密处理:利用加密秘钥key1~16按照从小到大的序号,根据4bit随机异或起始序号选择起始密钥keyn,计算4bit随机异或移位位数×异或加密处理次数=移位位数m,并根据该移位位数m将密钥keyn向右循环移位后,再对第一个32字节分组数据进行异或加密处理;随后同样将keyn+1向右循环移位后对第二个32字节分组数据进行异或加密处理,依次循环使用key1~16对后面的每个32字节分组数据进行异或加密处理,一轮16个加密密钥使用完毕后,再次循环异或处理时依然根据4bit随机异或移位位数×异或加密处理次数=移位位数m,根据该移位位数m将每个密钥key向右循环移位后再与32字节分组数据进行异或加密处理,本发明记录4bit随机异或起始序号和4bit随机异或移位位数为8bit异或摘要,每次进行一次异或加密处理时,都会记录一个异或摘要,进行多次异或加密处理时,会记录多个异或摘要,本发明在选择4bit随机异或移位位数时尽量选择3位、5位、7位、11位、13位这几个质数作为异或移位位数,因为该质数在循环移位时能够保证每次移位后得到的异或数值各不相同,增加了加密的安全性;本发明进行异或加密处理按照从小到大的序号选择key时选择1~16个key密钥进行异或加密,也可以是全部16个key,也可以<16个的部分key密钥参与异或加密,并记录选择了那些key参与了异或加密,本发明首次异或加密处理选择全部16个key参与异或,后续异或加密处理选择key的个数根据后面步骤5中的随机插值个数确定,保证异或加密个数和插值加密个数及key序号相同;

3、插值数据处理:进行异或加密处理完毕后,将4bit随机异或移位位数赋值为4bit插值密钥移位位数,利用该4bit插值密钥移位位数将步骤2记录的参与异或加密的每个加密密钥key向左循环移位,生成ins1~16插值数据用于后面的插值处理,未参与异或加密的key其对应的ins填充为0;

4、数据同值预处理:加密数据进行了异或加密处理后得到的数据有一定的概率和ins1~16插值数据同值,在进行后续插值处理时会导致解密出现错误,所以该步骤进行数据同值预处理,遍历整个加密数据若某个32字节数据块和ins1~16插值数据相值,则将该32字节数据块根据随机同值移位位数循环左移,使得数据体不同于16个插值数据,本发明记录27bit同值数据起始位置和5bit随机同值移位位数为同值摘要,每次在进行同值预处理过程可能会存在多个同值数据体,也可能没有同值数据体,对于没有同值数据体的情况采用0x00000000填充记录,保证每次进行同值预处理过程中记录1~n个同值摘要;

5、数据插值加密处理:进行完同值处理后对加密数据随机插入ins1~16插值数据,插入的位置为全部数据空间内的随机1~256字节对齐的随机位置插入,插入的个数为参与异或加密key的个数,插入的数据内容随机从16个ins1~16插值数据中选取,ins数据值为0的ins不进行插入,且保证同一个ins插值数据不要插入两次,避免采用匹配方式获取秘钥的概率;本发明为了保证加密的安全性,插值处理时插入ins数据的字节对齐数随机、插入位置随机、插入的ins数据内容选择随机、插入的ins数据个数随机4个因素影响每次插值加密的结果;加密密文在进行解密时随着随机字节对齐数从大到小且解密难度逐渐增加,对齐字节数为1时,升级程序密文解密难度最大,其安全程度将达到最高,本发明记录随机字节对齐数为插值摘要;

6、数据重复加密处理:在插入key密钥一次完成后,可重复步骤2~5进行下一轮加密处理,重复加密次数根据16bit随机重复次数确定,通过调整16bit随机重复次数和步骤5插值加密处理中的随机插值个数可以控制加密后的升级程序密文大小为一个预定义的值,本发明记录16bit随机加密重复次数为16bit重复摘要,整个升级程序数据加密过程中,记录一个且只记录1个重复摘要;

经过上述步骤1~6即可实现高安全性的升级程序二进制数据加密,升级程序加密完成后可以生成两个数据块,一个是升级程序的加密密文数据,一个是加密摘要数据,这两个加密数据通过不同的途径发送到升级设备终端中,进行升级程序解密。

本发明将升级程序加密过程中记录的补齐摘要、异或摘要、同值摘要、插值摘要、重复摘要和明文摘要合并为一个加密摘要数据块,该加密摘要数据块是升级程序解密的关键性数据,通过安全认证过的无线网络通道传输给无线网络设备;请参阅图4,本发明的加密摘要数据块组织格式,按照排列顺序为:1、明文摘要,占用4字节256bit长度;2、补齐摘要,占用2字节16bit长度;3、重复摘要,占用2字节16bit长度;4、第一次循环加密异或摘要,占用1字节8bit长度;5、第一次循环加密插值摘要,占用1字节8bit长度;6、第一次循环加密同值摘要个数,占用2字节16bit长度;7、第一次循环加密同值摘要第一个值、第二个值、第n个值,每个值占用4字节32bit;8、第二次循环加密异或摘要,占用1字节8bit长度;9、第二次循环加密插值摘要,占用1字节8bit长度;10、第二次循环加密同值摘要个数,占用2字节16bit长度;11、第二次循环加密同值摘要第一个值、第二个值、第n个值,每个值占用4字节32bit;12、依次类推,第三次直到第n次循环加密摘要数据。

请参阅图5,本发明对升级程序进行加密时为了提高加密密文的安全性、提高加密强度,进行了一系列的增强安全性的处理:

1、本发明的加密程序建立了一个加密密钥池,包含了数量众多的32字节的加密密钥,针对不同的客户、不同的无线网络设备进行升级程序加密时,选择不同的16个32字节的加密密钥对升级程序进行加密;

2、本发明将升级程序明文摘要、客户信息、加密处理装置硬件id、加密时间信息进行sha256哈希运算,将哈希结果作为随机数种子输入随机数发生器,生成9类各不相同的随机数用于升级程序加密操作,这9类随机数为:随机补齐因子n、随机异或起始序号、随机异或移位位数、随机同值移位位数、随机字节对齐数、随机随机插值位置、随机插值内容选择、随机插值个数、随机加密重复次数;

3、数据进行加密时采用32字节的key加密密钥对加密数据32字节分组进行异或加密,异或加密的密钥长度为32字节256bit长,且密钥长度和数据长度相同,保证了异加密的安全性;而且每个不同的32字节数据分组采用不同的key加密密钥移位后进行异或加密,每次4bit随机异或移位位数选择3位、5位、7位、11位、13位质数计算移位位数能够尽量保证每次移位出的异或加密密钥不相同,从而提高加密强度;

4、本发明在进行数据插值时,由于每次插入的ins插值数据是由key加密密钥移位得到,在不确定加密摘要数据中的插值密钥移位位数的情况下无法通过遍历的方式获得key加密密钥;

5、本发明由于重复多次进行了异或加密处理和插值加密处理,且每次异或密钥和插值数据都由key1~16加密密钥随机移位得来,且每次插值的数量不相同,重复加密过程中对原数据进行了交替覆盖,最后加密出来的在不知道加密过程中的随机数的情况下几乎不可能解出数据明文;

6、本发明在进行数据插值时,插入的ins数据为1~15个ins,而不是全部16个ins,保证了需要经过多次插值数据提取和反向解密异或后才能够全部完整提取出16个key加密密钥。

加密方法存储在加密芯片中的key加密密钥为16个,若增加无线网络设备中加密芯片的数量或者增加每个加密芯片存储key加密密钥的个数,使得每个设备中32字节的key加密密钥总数达到32个、64个、128个、256个甚至更多,其密钥bit位总长度为8192bit、16384bit、32768bit、65536bit甚至更多,采用该加密方法对升级程序或关键性二进制代码进行加密,其加密得到的密文的安全性将成级数增长,达到一个绝对安全的强度;且能够存储的关键性二进制代码库片段越大。

本发明对于需要存储更多个key加密密钥时,可以采用一个具有读保护熔断机制的cpu处理器进行sha哈希运算来承担硬件加密芯片的任务,该加密cpu处理器内部的flash存储空间越大,能够存储的key加密密钥越多,如一个128k字节的cpu处理器,将可以存储约4000个32字节的sha256加密密钥,且可以将sha256哈希算法升级为sha512算法后可以存储2000个64字节的sha512加密密钥;为了保证设备运行的cpu处理器和加密cpu处理器间的通讯效率和加密解密效率,两个cpu处理器可以采用高速的spi通讯或者usb通讯,届时加密强度和加密解密速度将得到极大的提升;在将哈希运算由sha256升级到sha512后,本发明加密的方法不变,只需要将加密过程中的分组预处理有32字节的分组升级为64字节的分组即可实现更高安全的加密。

本发明通过解密操作可以提取出全部的key加密密钥,提取完全部的key加密密钥后,若这些加密密钥是关键性二进制代码库片段,可以将这些关键性二进制代码库片段插入关键性代码库中,替换掉0xff填充值,则可以恢复关键性二进制代码库的完整性,并由升级程序调用该关键性二进行代码库。

本发明将升级程序加密过程中记录的补齐摘要、异或摘要、同值摘要、插值摘要、重复摘要和明文摘要合并为一个加密摘要数据块,该加密摘要数据块是升级程序解密的关键性数据,通过安全认证过的无线网络通道传输给无线网络设备。

对升级程序加密密文进行解密操作是加密操作的逆向操作过程,但在进行解密的逆向操作过程中,需要首先提取并剔除插值过程中的ins值,由于ins值是根据加密芯片中的key加密密钥移位得到,通过加密摘要数据可以获得移位位数,但是为了增强加密算法的强度,加密芯片设定为不允许直接从加密芯片中读取出key加密密钥,而必须通过sha256加密算法向加密芯片中输入一个32字节数据来匹配加密芯片中的key来验证和提取加密密钥,从而顺利剔除插值过程中的ins值;

请参阅图6,本发明基于加密芯片的sha256运算规则设计的key匹配提取步骤如下:

1、嵌入式cpu处理器获得一个待解密匹配的32字节数据data;

2、嵌入式cpu处理器向加密芯片发送指令a,让加密芯片内部生产一个随机数tmp,利用sha256硬件运算逻辑生成一个临时哈希值tmp_sha;

3、嵌入式cpu处理器读取这个临时哈希值tmp_sha,并和待解密匹配数据data进行sha256运算生产一个新的哈希值data_sha;

4、嵌入式cpu处理器向加密芯片发送指令b,让加密芯片利用sha256硬件运算逻辑将tmp_sha和key1进行运算,生成一个key1_sha,并输出给cpu;

5、嵌入式cpu处理比较data_sha和key1_sha,根据加密芯片内部的设计原理,只要data_sha和key1_sha两者相同则可以确定key1和data相同,即匹配到data为加密芯片中的key1秘钥;

6、若data_sha和key1_sha两者不相同,则循环步骤4对key2进行哈希运算,并匹配key2_sha和data_sha,一直匹配完毕加密芯片中的所有16个key,若匹配到合适的key则表明数据data为某个keyn,若没有匹配到则表明数据data不是加密密钥;本发明对全部16个加密密钥key1~16进行遍历时,cpu处理器和加密芯片通讯过程中采用了sha256算法并加入了随机数参与运算,且二者间通讯不直接用data和keyn交互,使用了随机数tmp与data和keyn进行哈希运算,使得每次交互的数据内容都不相同,避免了非法入侵者通过硬件捕获的方法获得data和key;但是通过该方法又能够证明data是其中那一个加密密钥keyn,从而实现了加密密钥keyn的匹配提取。

本发明在进行升级程序加密,由于每次进行插值加密处理时,不是插入所有全部的key加密密钥,但是在加密过程中会分多次插入全部的key加密密钥,且加密芯片中的key密钥不可直接读出,所以在进行解密操作时要提取出全部的加密密钥需要根据加密摘要中的数据进行多轮循环按照key匹配提取步骤来提取key加密密钥和剔除ins插值数据,且每次剔除ins插值数据后需要进行解异或才能进行下一次提取key密钥和剔除ins插值操作,直到完全剔除所有的ins插值数据,并可以提取全部的key加密密钥。

本发明的升级程序加密密文的解密操作需要用到关键性的加密摘要数据,本发明中用符号digest_data表示,其升级程序加密密文和加密摘要数据通过不同的时间和不同的途径传输给升级终端设备,升级终端设备接收到升级程序加密密文,并从无线网络远程服务器接收到升级指令后,升级终端设备向远程服务器请求加密摘要数据对加密密文进行解密操作;请参阅图5,升级终端设备加密摘要数据请求及解密的步骤如下:

1、升级终端设备向无线网络远程服务器发送加密摘要数据请求;

2、无线网络远程服务器利用sha256加密芯片的哈希算法对加密摘要数据digest_data和升级终端设备id计算出加密摘要数据哈希值digest_data_sha;

3、无线网络远程服务器将升级终端设备用户编号user_id和一个随机数tmp利用sha256加密芯片的哈希算法计算出一个含随机数的用户临时编号user_id_tmp;

4、远程无线网络远程服务器将用户临时编号user_id_tmp和2个随机加密密钥keya、keyb利用sha256加密芯片的哈希算法计算出两个32字节的临时密钥keya_sha、keyb_sha;

5、无线网络远程服务器利用临时密钥keya_sha、keyb_sha对加密摘要数据digest_data进行异或加密处理,生产新的加密摘要数据digest_data_new;

6、无线网络远程服务器将用户临时编号user_id_tmp、加密摘要数据哈希值digest_data_sha、新的加密摘要数据digest_data_new发送到升级终端设备;

7、升级终端设备接收到用户临时编号user_id_tmp、加密摘要数据哈希值digest_data_sha、新加密摘要数据digest_data_new后,通过升级终端设备内部的加密芯片中的全部密钥key1~16和user_id_tmp利用sha256加密芯片的哈希算法成key1_sha~key16_sha临时解密数据,遍历key1_sha~key16_sha临时解密数据提取两个解密数据keyx_sha、keyy_sha;

8、然后由keyx_sha、keyy_sha对digest_data_new进行解异或处理,还原出加密摘要数据digest_data_x;

9、利用sha256加密芯片的哈希算法计算数据digest_data_x和升级终端设备id的哈希值digest_data_sha_x;

10、比较从远程服务器中发送过来的加密摘要数据哈希值digest_data_sha和digest_data_sha_x,若两者相等,则表示还原出的加密摘要数据digest_data_x和原始加密摘要数据digest_data相同,即可利用该加密摘要数据可以对升级程序加密密文进行解密操作,若不相同则重复步骤7~10直到解密出原始加密摘要数据。

本发明通过如下几个要点解决了加密摘要数据在远程服务器和升级终端设备间的明文传输的安全性问题:

1、通过远程服务器的随机数生成user_id_tmp、digest_data_new两个数据并发送给升级设备终端;

2升级设备终端通过遍历设备内部的加密芯片中的全部密钥key1~16和user_id_tmp进行哈希运算生产的临时解密数据,从中提取出两个解密数据完成加密摘要数据的解密还原;

3、每次升级终端设备请求加密摘要数据并进行加密只要数据解密时,每次参与运算的随机数tmp不同,生成的user_id_tmp、digest_data_new每次都不相同;

4、user_id_tmp、digest_data_new、digest_data_sha这三个数据都是通过sha256哈希运算得出,无法反向直接解出其原始数据,只能够遍历加密芯片中全部密钥key1~16完成加密摘要数据还原;

5、远程服务器加密的加密摘要数据后,升级终端设备内部的加密密钥存储在加密芯片中,且加密芯片的key密钥不能通过任何方式读取,只能sha256运算的中间结果和user_id_tmp、digest_data_new、digest_data_sha这三个数据信息进行比较匹配后才能知道加密时选择的密钥是否正确;

6、在计算digest_data_sha和digest_data_sha_x时,将升级设备终端的id参与哈希运算,由于该设备id分别存储在远程服务器数据库中和升级设备终端的硬件器件中,且在无线网络中传输加密摘要数据请求的指令中不需要携带该id值,避免了升级终端设备id值的泄露,增强了加密强度,若将该升级终端设备id改为一个约定动态数据参与加密运算,每次实时动态的变换该数据,其解密出加密摘要数据的难度将大大提高;

7、本发明描述的加密摘要进行异或加密的临时密钥key_sha为2个32字节,若将异或加密的临时密钥key_sha增加为4个、8个或者更多,则反向异或解密的难度将又成倍增加;利用上述7点措施保证了加密密钥数据的安全传输,即使在公开了加密密钥的加密算法的情况下,入侵者截获了加密密钥的密文数据块,在无法获得到加密芯片硬件内key的情况下,也很难解密出加密密钥明文,保证了数据传输的安全性。

本发明描述的方法除了可以进行升级程序的加密和解密操作,还可以实现无线网络设备通讯数据的加密后安全传输,其高安全级别的数据加密传输步骤同加密摘要数据的加密传输步骤相同,若不需要这种高安全级别的加密数据处理,可以将加密步骤简化进行数据安全传输:1、两个设备间协商一个加密密钥序号n;2、发送设备根据密钥序号n利用加密芯片中的keyn密钥和序号n校验码进行哈希运算,生成一个临时密钥keyn_sha;3、发送设备利用临时密钥keyn_sha对待传输的数据进行异或处理生成加密后的数据;4、发送设备发送加密后的数据;5、接收设备收到后加密数据后,同样根据协商的密钥序号n及密钥keyn生成临时密钥keyn_sha;6、接收设备根据临时密钥keyn_sha对接收的加密数据进行异或解密。

本发明的升级程序加密密文的解密操作是加密操作的逆过程,在解密过程中有如下几个解密要点:1、每进行一轮解密处理时,需要从加密摘要中提取相应的异或摘要、插值摘要、同值摘要;2、进行插值剔除时,由于插值的顺序是按照升级程序从前向后插值的,故进行插值剔除时,需要按照升级程序从后向前按照字节对齐数进行反向遍历所有的二进制数据来剔除插值;3、插值剔除的方法为:按照字节对齐在加密密文中选择某个32字节分组ins,将该分组ins根据异或移位位数右移得到一个插值数据data_tmp,将data_tmp利用key匹配方式匹配加密芯片中的key密钥,匹配正确则剔除插值数据ins,并在内存记录data_tmp为某个序号的key密钥;后续剔除过程中会逐渐匹配出所有的加密芯片内部的key密钥,待所有密钥匹配出来后,可以直接根据匹配出来的记录在内存中的data_tmp密钥进行插值的剔除,以加快插值剔除的速度,且减少cpu处理器和加密芯片的硬件通讯的次数,提高密钥安全性;3、分组预处理的解密,同样采用从后向前的方式剔除分组预处理过程中插入的补齐数据。

本发明对于升级程序和数据进行加密生产加密密文和加密摘要两个部分,且两个部分采用不同的方式和途径传输,保证了加密数据的安全性,解决了加密密钥分发管理容易泄露的问题,即使加密摘要数据被泄露和破解,进行解密操作还需要用到硬件加密芯片中的key加密密钥,且加密密钥不可读,只能通过遍历匹配的方式进行提取识别,在没有加密芯片硬件的情况下,虽然破解了加密摘要数据,但是依然无法从加密密文中剔除插值数据和异或解密;本加密方法进行加密的升级程序和数据在解密时加密密文、加密摘要、加密密钥三个要素缺一不可。

本发明采用的加密算法,可以通过增减存储在加密芯片中的加密密钥key的数量来调整加密强度,也可以通过增减重复加密处理循环的次数来调整加密的强度,这样可以在加密强度和加解密运算速度方面作出动态平衡选择。

本发明cpu处理器和加密芯片的每次key密钥验证都加入了一个随机数进行sha256哈希运算,保证了即使同一个key密钥验证,在cpu处理器和加密芯片间硬件io管脚上的波形也各不相同,避免了第三方破解人员通过捕获设备硬件io管脚的波形来分析密钥进行解密。

实施例:

请参阅图8,本实施例的无线网络设备中有如下几个部分组成:

1、嵌入式cpu处理器,本实施例采用stm32f103rd芯片,该芯片处理器主时钟为72mhz,内部程序代码flash空间384kbyte;该stm32f103rdcpu处理器具有内部flash读保护机制,能够保证存储在cpu处理器中的程序代码不被第三方读取;

2、sha256加密芯片,本实施例采用atsha204加密芯片做为sha256加密芯片,该加密芯片通过i2c总线和cpu处理器io连接进行通讯,可以存储16个32字节的加密密钥,并且该加密芯片同样具有读保护机制,能够保护16个加密密钥不被读出;

3、无线通讯接口,本实施例采用si4463无线通讯模块实现设备的无线通讯;

4、有线通信接口,本实施例具有2个rs232通讯接口,采用sp3232eea芯片、1个rs485通讯接口,采用sp3485en芯片,1个can总线通讯接口,1个usb通讯接口与其他设备进行通讯和数据传输;

5、扩展flash存储器,本实施例采用m25p32flash存储器来存储升级程序加密密文,具有4mbyte的存储空间,采用spi接口和cpu处理器进行数据交互,用于存储通过无线通讯接口或者有线通讯接口传输过来的升级程序加密密文;

6、电源芯片,本实施例采用spx1117m5电源管理芯片,用于将5v供电电源转换为3.3v电源,给cpu处理器、加密芯片、无线通讯模块、扩展flash存储器及其它器件供电。

请参阅图9,将本实施例cpu处理器内部的384kbyteflash程序代码空间划分为五个分区,第一个分区大小32kbyte,用于存储启动及解密代码,本发明将该分区中的代码命名为boot代码;第二个分区大小为144kbyte,用于存储解密后的升级程序代码,本发明将该分区中的代码命名为app代码;第三个分区和第二分区同样大,用于存储解密升级前运行的app代码的备份,本发明将该分区命名为app-back备份分区,当某升级程序运行错误后,可以利用app-back备份分区中的代码恢复到老一个版本的程序运行;第四分区大小为48kbyte,用于存储关键性代码库,本发明将该分区中的代码命名为lib代码;第五分区大小为16kbyte,用于存储设备运行的配置数据,本发明将该分区中的数据命名为cfg数据。

针对不同cpu处理器内部不同大小flash空间分区的划分,本发明首先保证第一分区boot大小为32kbyte,存储位置设定在内部flash的最低地址空间;其次保证第五分区cfg大小为16kbyte,存储位置设定在内部flash的最高地址空间;第四分区lib的大小为根据关键性代码库的大小设定,默认设定lib大小为48kbyte,若设备中不需要调用关键性代码库时,lib分区大小不应该小于48kbyte,其目的是设定隔离区,保证第三分区的app-back备份代码不会越界覆盖cfg配置数据,保证设备升级运行过程中的可靠性和稳定性;最后将余下的cpu处理器内部flash空间划分为相等的两个app和app-back两个分区用来存储设备运行代码。

若需要安全强度更高的加密,可以扩展多个atsha204加密芯片来存储32个、64个、128个、256个甚至更多加密密钥,可以将2个、4个、8个、16个甚至更多个加密芯片连接到cpu的多个io口进行通讯,实现更多加密密钥的存储和管理,增加加密密钥的长度,提供加密的安全强度。

本实施例采用atsha204加密芯片来存储加密密钥,在扩展多个atsha204加密芯片的情况下,若cpu处理器的io口数量较少时可以采用1位总线的通讯方式连接atsha204加密芯片;若需要扩展超过256个加密密钥的的情况下,可以采用另外一个cpu处理器stm8s007c8芯片进行sha256哈希运算做加密芯片,该处理器内部具有64kbyte存储空间,可是存储越2000个32字节的加密密钥,也可以存储1000个64字节的加密密钥,或者更长的如128字节的加密密钥。

请参阅图10,本实施例升级程序在cpu处理器内部flash和扩展flash存储器中的传输步骤:

1、首先通过无线通讯接口或者有线接口接收升级程序加密密文,将接收到的加密密文数据写入到片外flash存储器中;

2、然后通过远程无线网络向远程服务器发送加密摘要请求指令,远程服务器接收到加密摘要请求指令后,按照本发明的加密摘要数据请求及解密步骤获取加密摘要并解密出加密摘要数据,将解密出的加密摘要数据存储在cpu处理器的第五分区cfg数据中;

3、重新启动无线远程设备,执行boot代码,在boot代码执行过程中读取第五分区中的cfg数据,查看是否存在加密摘要数据,并读取扩展flash存储器,查看是否有升级程序加密密钥文件,验证加密摘要和升级程序加密密钥文件;

4、验证加密摘要和升级程序加密密钥文件都存在则执行解密操作,若验证失败则执行步骤7、8启动第二分区程序;

5、cpu处理器将解密出来的升级程序明文后,通过加密摘要数据中的明文摘要数据校验升级程序明文正确后,将cpu第二分区中的数据复制到第三分区中存储备份;

6、将解密并校验正确后的升级程序明文写入第二分区中,若校验失败则执行步骤7、8启动第二分区程序;

7、先擦除扩展flash存储器中的升级程序加密密文数据,然后擦除第五分区cfg数据中的加密摘要数据;

8、并启动执行第二分区app中的新的升级程序,至此升级程序完成。若boot代码执行过程中检测到加密摘要和升级程序加密密文校验错误,或者解密操作过程中解密失败,则直接执行步骤7、8启动第二分区程序,并通知远程服务器升级程序失败。

本实施例的程序编译计算机、远程服务器、升级程序终端、无线通讯网络间的关系如图11所示:

1、编译计算机编译生成升级程序二进制文件,并由加密处理装置对升级程序进行加密生成升级加密密文和加密摘要数据;

2、该升级程序加密密文通过复制、拷贝、e-mail发送到远程服务器,或者通过usb、rs232等有线接口写入手持升级终端;

3、向升级终端写入升级程序密文有两种方式,一种方式通过远程服务器将升级程序密文通过无线网络发送到无线网络设备n中存储,一种方式是通过手持升级终端将升级程序密文通过无线模块信号发送到无线网络设备n中存储;

4、进行程序升级时,由远程服务器向加密处理装置发送加密摘要数据请求指令,由加密处理装置将加密摘要数据通过独立于加密密文的传输途径和传输方式发送给远程服务器,并由远程服务器将加密摘要数据发送给无线网络设备n,并执行解密升级操作;本发明推荐的安全传输方式是加密密文采用文件拷贝复制的方式进行传输,加密摘要数据采用即时网络通讯指令的方式进行传输,保证加密密文和加密密文和加密摘要不采用相同的方式传输、不在同一个时刻传输。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

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