一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

固件加解密方法、装置、计算机设备及可读存储介质与流程

2022-11-16 15:55:30 来源:中国专利 TAG:


1.本发明涉及数据安全技术领域,尤其涉及一种固件加解密方法、装置、计算机设备及可读存储介质。


背景技术:

2.随着物联网的高速发展,集成电路芯片的应用领域越来越广泛,尤其是单片机借着本身控制能力强和功耗低等优势,已经逐渐成为智能控制系统中不可或缺的部分,但是,单片机中的固件容易被非法窃取,从而造成技术泄露和经济损失。
3.单片机固件的保护方法多种多样,在现有技术中,通常通过指令伪装法、读写权限设置和总线乱序等方式对单片机的固件进行加密,但是,现有技术使用的加密方法,安全系数较低容易被破译。
4.因此,如何提高固件的安全性成为亟待解决的技术问题。


技术实现要素:

5.有鉴于此,本发明的目的在于提供一种固件加解密方法、装置、计算机设备及可读存储介质,以提高固件的安全性。
6.为了实现上述目的,本发明实施例采用的技术方案如下:
7.第一方面,本发明实施例提供一种固件加密方法,包括:
8.获取固件地址和固件明文,对所述固件地址和所述固件明文分别进行扩散,得到扩散地址和扩散明文;
9.获取加密密钥,利用所述加密密钥对所述扩散地址进行混淆,得到混淆密钥;
10.根据预设加密函数,利用所述混淆密钥对所述扩散明文进行加密运算,得到中间密文;
11.对所述中间密文进行扩散,得到固件密文。
12.在一种实施例中,所述获取固件地址和固件明文,对所述固件地址和所述固件明文分别进行扩散,得到扩散地址和扩散明文,包括:
13.对所述固件地址和所述固件明文分别进行置乱,得到所述扩散地址和所述扩散明文。
14.在一种实施例中,所述获取加密密钥,利用所述加密密钥对所述扩散地址进行混淆,得到混淆密钥,包括:
15.将预设加密密钥和所述扩散地址进行异或操作,得到所述混淆密钥。
16.在一种实施例中,所述根据预设加密函数,利用所述混淆密钥对所述扩散明文进行加密运算,得到中间密文,包括:
17.获取所述混淆密钥的字符长度;
18.根据所述字符长度,确定所述扩散明文的偏移量;
19.将所述扩散明文按照所述偏移量进行偏移,得到所述中间密文。
20.在一种实施例中,所述对所述中间密文进行扩散,得到固件密文,包括:
21.对所述中间密文进行置乱,得到所述固件密文。
22.第二方面,本发明实施例提供一种固件解密方法,包括:
23.获取固件地址,对所述固件地址进行扩散,得到扩散地址;
24.获取解密密钥,利用所述解密密钥对所述扩散地址进行混淆,得到混淆密钥;
25.获取固件密文,对所述固件密文进行逆扩散,得到中间密文;
26.根据预设解密函数,利用所述混淆密钥对所述中间密文进行解密运算,得到扩散明文;
27.对所述扩散明文进行逆扩散,得到固件明文。
28.第三方面,本发明实施例提供一种固件加密装置,包括:
29.第一扩散模块,用于获取固件地址和固件明文,对所述固件地址和所述固件明文分别进行扩散,得到扩散地址和扩散明文;
30.第一混淆模块,用于获取加密密钥,利用所述加密密钥对所述扩散地址进行混淆,得到混淆密钥;
31.加密模块,用于根据预设加密函数,利用所述混淆密钥对所述扩散明文进行加密运算,得到中间密文;
32.第二扩散模块,用于对所述中间密文进行扩散,得到固件密文。
33.第四方面,本发明实施例提供一种固件解密装置,包括:
34.第三扩散模块,用于对固件地址进行扩散,得到扩散地址;
35.第二混淆模块,用于获取解密密钥,利用所述解密密钥对所述扩散地址进行混淆,得到混淆密钥;
36.第一逆扩散模块,用于获取固件密文,对所述固件密文进行逆扩散,得到中间密文;
37.解密模块,用于根据预设解密函数,利用所述混淆密钥对所述中间密文进行解密运算,得到扩散明文;
38.第二逆扩散模块,用于对所述扩散明文进行逆扩散,得到固件明文。
39.第五方面,发明实施例提供一种计算机设备,包括:处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序以使所述计算机设备执行所述固件加密方法或所述固件解密方法。
40.第六方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行所述固件加密方法或所述固件解密方法。
41.与现有技术相比,本方明实施例提供的固件加解密方法、装置、计算机设备及可读存储介质,该加密方法通过获取固件地址和固件明文,对所述固件地址和所述固件明文分别进行扩散,得到扩散地址和扩散明文;获取加密密钥,利用所述加密密钥对所述扩散地址进行混淆,得到混淆密钥;根据预设加密函数,利用所述混淆密钥对所述扩散明文进行加密运算,得到中间密文;对所述中间密文进行扩散,得到固件密文。通过在加密密钥中加入扩散地址的信息,不仅提升了混淆密钥的盗取难度,还保证了各个地址的固件明文都采用不同的混淆密钥进行加密,并且通过对固件进行反复加密处理,提高了破译难度以及固件的
安全性和可靠性。
42.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
43.为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
44.图1示出了本发明实施例提供的固件加密方法的流程图;
45.图2示出了本发明实施例提供的固件解密方法的流程图;
46.图3示出了本发明实施例提供的固件加密装置的模块示意图;
47.图4示出了本发明实施例提供的固件解密装置的模块示意图。
48.主要元件符号说明:
49.100-固件加密装置;101-第一扩散模块;102-第一混淆模块;103-加密模块;104-第二扩散模块;200-固件解密装置;201-第三扩散模块;202-第二混淆模块;203-第一逆扩散模块;204-解密模块;205-第二逆扩散模块。
具体实施方式
50.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
51.通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
52.在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
53.此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
54.除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
55.实施例1
56.请参照图1,本发明实施例提供的一种固件加密方法,包括:
57.步骤s101:获取固件地址和固件明文,对所述固件地址和所述固件明文分别进行
扩散,得到扩散地址和扩散明文。
58.可以理解的是,扩散是指重新排列信息中的数据,具体来说,就是让明文的每一位影响密文中的许多位,从而达到隐蔽明文和密文之间的关系。因此,对固件地址和固件明文都进行扩散,能够有效地保证固件的安全。需要说明的是,对固件地址和固件明文进行扩散,可以同时进行,也可以逐个进行,此处不做限定。
59.可选的,所述步骤s101,具体包括:
60.对所述固件地址和所述固件明文分别进行置乱,得到所述扩散地址和所述扩散明文。
61.示范性地,通过bit交换(比特位交换)的方式,对固件地址和固件明文的比特位位置分别进行置乱,且两者具体的置乱方案也可以是不同的,位置可以有所区别,比如固件地址扩散时将地址数据的bit2交换到了bit7,固件明文扩散时将明文数据的bit1交换到了bit7,具体的比特位位置的置乱可以根据实际需求进行响应,这里不做限制。
62.因此,通过对固件明文进行bit交换,得到扩散明文,从而能够有效地抵御明文攻击。每次对固件地址进行置乱时,固件地址的比特位位置都进行自动更新,使得固件地址的扩散更加高效。
63.步骤s102:获取加密密钥,利用所述加密密钥对所述扩散地址进行混淆,得到混淆密钥。
64.其中,本技术实施例中加密密钥是预设的,具体可以基于伪随机数生成器生成,也可以基于口令的加密算法生成,加密密钥的生成方式根据实际情况而定,这里不做限制。
65.可以理解的是,利用加密密钥对扩散地址进行混淆,实质上是在加密密钥中加入扩散地址的信息,从而将加密密钥和扩散地址的关系变得复杂,以此来保证固件的安全。并且利用扩散地址和加密密钥之间复杂的关系,使得其他用户即使获得关于扩散地址的一些数据特性,也无法推测出加密密钥,从而确保固件的安全性。
66.可选的,在本实施例中,所述步骤s102,具体包括:
67.将所述加密密钥和所述扩散地址进行异或操作,得到所述混淆密钥。
68.其中,异或操作是指通过对加密密钥和扩散地址进行按位异或的方式进行加密,具体地,通过加密密钥和扩散地址对应的等长比特位进行异或,等长比特位可以是单独的一位比特位,也可以是等长的多位比特位。
69.可以理解的是,在加密密钥加入不同扩散地址的信息后,使得固件中各个地址对应的混淆密钥都不一样,有效的增加了混淆密钥的安全性,从而使得各个地址对应的固件采用了不同的混淆密钥进行加密,进一步提高了固件的安全性。当然,在实际应用中还可以采用查表替换、偏移等方法,让混淆密钥更加复杂,使得加密数据之间相关性更不明显,具体方法可以视实际情况而定,这里不做限定。
70.步骤s103:根据预设加密函数,利用所述混淆密钥对所述扩散明文进行加密运算,得到中间密文。
71.可选的,在本实施例中,预设加密函数包括:
72.dataout=datin keyin;
73.其中,keyin为所述混淆密钥,datin为所述扩散明文,dataout为所述中间密文。
74.进而,步骤s103,包括:
75.获取所述混淆密钥的字符长度;
76.根据所述字符长度,确定所述扩散明文的偏移量;
77.将所述扩散明文按照所述偏移量进行偏移,得到所述中间密文。
78.可选的,将所述扩散明文中的每一位都按照所述偏移量进行偏移,可以进行向前偏移,也可以向后偏移。假设偏移量为2,如果扩散明文进行向前偏移,扩散明文中的a将会被替换成c;如果扩散明文进行向后偏移,扩散明文中的a将会被替换成y,并将偏移后得到的结果存储为中间密文。因此,通过混淆密钥的字符长度和扩散明文偏移方向两个方面,提高了固件加密的安全性。
79.步骤s104:对所述中间密文进行扩散,得到固件密文。
80.具体地,将中间密文进行扩散,可以采用比特位交换的方式对所述中间密文进行置换。
81.示范性地,通过对中间密文的比特位位置进行置乱,从而得到固件密文,具体的比特位位置的交换可以根据实际需求进行响应,这里不做限制。因此,通过中间密文进行比特位交换得到固件密文,进一步地提高了固件加密的安全性。
82.可选的,在本实施例中,所述固件加密方法是对开发完成的固件采取离线加密的方式完成的。具体地,在离线状态时,即与接收方进行通信之前,通过外部设备利用所述固件加密方法对固件完成加密,也就是说,在获知接收方和需要加密的固件之前,由外部设备计算并生成离线的密文固件。
83.因此,通过离线加密的方式对固件进行加密,能够提前对加密所需的计算进行处理,不仅提高了加密效率,还适用于轻量级设备使用。
84.可选的,固件密文可以存储并用于单片机内部flash(flash eeprom memory,闪存)、rom(read-only memory,只读存储器)和ram(random access memory,随机存取存储器)等存储器。
85.本实施例中通过获取固件地址和固件明文,对所述固件地址和所述固件明文分别进行扩散,得到扩散地址和扩散明文;获取加密密钥,利用所述加密密钥对所述扩散地址进行混淆,得到混淆密钥;根据预设加密函数,利用所述混淆密钥对所述扩散明文进行加密运算,得到中间密文;对所述中间密文进行扩散,得到固件密文。通过在加密密钥中加入扩散地址的信息,不仅提升了混淆密钥的盗取难度,还保证了各个地址的固件明文都采用不同的混淆密钥进行加密,并且通过对固件进行反复加密处理,提高了破译难度以及固件的安全性和可靠性。
86.实施例2
87.请参照图2,本发明实施例提供的一种固件解密方法,包括:
88.步骤s201:获取固件地址,对所述固件地址进行扩散,得到扩散地址。
89.具体地,单片机内部的cpu获取访问固件对应的地址,并通过比特位交换的方式对地址进行置乱,得到解密地址。具体的比特位交换的位置和对应的加密方法保持一致,从而保证了数据的完整性以及解密的正确性。
90.步骤s202:获取解密密钥,利用所述解密密钥对所述扩散地址进行混淆,得到混淆密钥;
91.可选的,解密密钥和加密密钥可以使用同一个密钥,即使用相同的密钥对固件进
行加密和解密,使得单片机不必研究和交换外部设备的加密算法,只需要知道加解密使用的密钥即可,不仅简化了加密的处理过程,还使得固件加解密的速度更快。
92.进一步地,将所述解密密钥和所述扩散地址进行异或操作,得到所述混淆密钥。
93.具体地,利用异或运算的性质,对解密密钥和扩散地址进行按位异或的方式进行解密。可以理解的是,在解密密钥中加入扩散后的地址,能够还原出各个混淆密钥,使得解密更加高效快速。
94.步骤s203:获取固件密文,对所述固件密文进行逆扩散,得到中间密文。
95.可选的,通过中测机台的测试接口直接将固件密文加载至单片机内部的flash,也可以通过单片机内部的下载端口将固件密文下载至flash内部,具体方式可以根据实际情况而定,这里不做限定。
96.可以理解的是,步骤s203可以看做步骤s104的逆处理,将密文固件进行逆扩散,示范性地,首先,单片机通过解密地址读出的固件密文,再对通过比特位交换的方式对密文固件进行置乱,从而得到中间密文。因此,通过比特位交换对密文固件进行初步解密,得到中间密文,从而能够高效地对固件密文进行解密。
97.特别注意的是,步骤s202和步骤s203没有固定的执行顺序,可以同时进行,也可以按照步骤s202先执行步骤s203后执行或步骤s203先执行步骤s202后执行的顺序进行,具体执行顺序可以根据实际情况而定,这里不做限定。
98.步骤s204:根据预设解密函数,利用所述混淆密钥对所述中间密文进行解密运算,得到扩散明文。
99.可选的,所述预设解密函数包括:
100.dataout’=datin
’–
keyin’;
101.其中,keyin’为所述混淆密钥,datin’为所述中间密文,dataout为所述扩散明文。
102.进而,获取所述混淆密钥的字符长度;根据所述字符长度,确定所述中间密文的偏移量;将所述中间密文按照所述偏移量进行偏移,得到所述扩散明文。
103.可以理解的是,解密函数可以看做加密函数的逆。可选的,将所述中间密文中的每一位都按照所述偏移量进行偏移,可以进行向前偏移,也可以向后偏移;其中,假设在加密过程是向前移动,那么解密过程中则向后移动。并将通过偏移后得到的结果存储为扩散明文。保证了各个固件地址对应的中间密文都采用对应的混淆密钥进行解密,提高了固件解密的准确性。
104.步骤s205:对所述扩散明文进行逆扩散,得到固件明文。
105.具体地,将固件解密数据进行逆扩散,可以看成是对固件明文进行扩散的逆过程。进一步地,重新排列扩散明文,从而解析出固件中明文和密文之间的关系。示范性地,通过比特位交换的方式对扩散明文进行对应于加密过程的逆置乱,得到固件的明文数据。
106.因此,通过对固件解密数据进行逆扩散处理,从而快速地得到固件的明文数据,保证了解密之后得到的明文数据的完整性。
107.本实施例中通过将固件地址进行扩散,得到扩散地址;在解密密钥中加入扩散后的固件地址,得到混淆密钥;将固件密文进行逆扩散,得到中间密文;根据预设解密函数,利用所述混淆密钥对和所述中间密文进行解密运算,得到扩散明文;将所述扩散明文进行逆扩散,得到固件明文。通过固件地址获取对应的固件密文,提高了获取固件密文的准确性;
使用解密密钥节省了固件解密的时间;对固件进行多次解密操作,保证了解密的准确性以及数据的完整性,并且解密过程中占用的资源小。
108.实施例3
109.请参照图3,本发明实施例提供的一种固件加密装置100,包括:第一扩散模块101,第一混淆模块102,加密模块103和第二扩散模块104。
110.其中,第一扩散模块101,用于获取固件地址和固件明文,对所述固件地址和所述固件明文分别进行扩散,得到扩散地址和扩散明文;
111.第一混淆模块102,用于获取加密密钥,利用所述加密密钥对所述扩散地址进行混淆,得到混淆密钥;
112.加密模块103,用于根据预设加密函数,利用所述混淆密钥对所述扩散明文进行加密运算,得到中间密文;
113.第二扩散模块104,用于对所述中间密文进行扩散,得到固件密文。
114.可选的,所述第一扩散模块101,具体还用于对所述固件地址和所述固件明文分别进行置乱,得到所述扩散地址和所述扩散明文。
115.可选的,所述第一混淆模块102,具体还用于将预设加密密钥和所述扩散地址进行异或操作,得到所述混淆密钥。
116.可选的,所述加密模块103,包括:
117.获取子模块,用于获取所述混淆密钥的字符长度;
118.确定子模块,用于根据所述字符长度,确定所述扩散明文的偏移量;
119.偏移子模块,用于将所述扩散明文按照所述偏移量进行偏移,得到所述中间密文。
120.本技术实施例提供的固件加密装置能够实现上述实施例1中固件加密方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
121.实施例4
122.请参照图4,本发明实施例提供的一种固件解密装置200,包括:第三扩散模块201,第二混淆模块202,第一逆扩散模块203,解密模块204和第二逆扩散模块205。
123.其中,第三扩散模块201,获取固件地址,对所述固件地址进行扩散,得到扩散地址;
124.第二混淆模块202,获取解密密钥,利用所述解密密钥对所述扩散地址进行混淆,得到混淆密钥;
125.第一逆扩散模块203,获取固件密文,对所述固件密文进行逆扩散,得到中间密文;
126.解密模块204,根据预设解密函数,利用所述混淆密钥对所述中间密文进行解密运算,得到扩散明文;
127.第二逆扩散模块205,对所述扩散明文进行逆扩散,得到固件明文。
128.本技术实施例提供的固件解密装置能够实现上述实施例2中固件解密方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
129.实施例5
130.本发明实施例提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器存储有计算机程序,所述计算机程序在所述处理器执行时,实现如实施例1所述的固件加密方法或实施例2所述的固件解密方法。
131.本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如实施例1所述的固件加密方法或实施例2所述的固件解密方法。
132.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
133.另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
134.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
135.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献