数据的解密方法以及电子设备的制造方法

文档序号:10660572阅读:560来源:国知局
数据的解密方法以及电子设备的制造方法
【专利摘要】本发明提供了一种数据的解密方法以及电子设备。解密方法应用于电子设备,所述数据通过N轮密钥进行加密得到,N为大于等于2的自然数,其中包括:存储第N轮密钥;以及对所述数据进行迭代解密,迭代解密包括:对于第n轮解密,n为自然数并且1≤n≤N-1,进行以下步骤:读取第N-n+1轮密钥;使用第N-n+1轮密钥进行解密;基于第N-n+1轮密钥获得第N-n轮密钥;存储第N-n轮密钥;以及当1≤n<N-1时,进行第n+1轮解密,当n=N-1时,读取第1轮密钥并且使用第1轮密钥进行解密。根据本发明的数据的解密方法以及电子设备,根据每一轮的密钥都基于上一轮的密钥推导,因此只需存储上一轮密钥即可,从而节省了存储空间,而且每一轮密钥只需进行一次运算,从而降低了运行开销。
【专利说明】
数据的解密方法以及电子设备
技术领域
[0001]本发明涉及一种数据的解密方法以及电子设备,尤其涉及能够节省存储空间的同时降低电子设备的运行开销的数据的解密方法以及电子设备。【背景技术】
[0002]信息网络技术的发展为人们提供了极大的便利。但同时网络犯罪也随之增多,信息安全问题渐渐成为人们关注的焦点。如今,出现了各种各样的数据加密方法。其中使用轮密钥进行加密的方法由于其安全性高,开始被广泛应用。例如,AES (Advanced Encrypt1n Standard,高级加密标准)是当前最流行的加密方法之一。
[0003]在使用轮密钥进行加密时,通常情况下密钥的长度与数据的长度相等。例如密钥的长度和数据的长度均为128位、192位或者256位。下面,结合附图详细说明密钥的长度与数据的长度相等时使用轮密钥进行加密的过程。图1是用于说明轮密钥的长度与数据的长度相等时进行加密的示意图。如图1所示,首先使用第1轮密钥I对明文数据进行加密,从而获得第1轮加密数据Di。随后,对第1轮密钥&适用规定函数f(x)而获得第2轮密钥K2。再使用第2轮密钥K2对第1轮加密数据D i进一步加密,从而获得第2轮加密数据 D2。随后,进一步对第2轮密钥K2适用规定函数f(x)而获得第3轮密钥K3,以此类推,对明文数据进行N轮的迭代加密,从而获得第N轮加密数据DN。应当注意,在使用轮密钥进行加密的过程中除了上述步骤以外还可以包括一系列其他操作。例如在AES中,每一轮加密都包括字节变换(ByteSub)、行移位(ShiftRow)、列混合(MixColumn)、密钥加(AddRoundKey) 等。但由于上述以外的步骤与本发明没有直接的相关性,因此在这里省略其说明。
[0004]下面,结合附图详细介绍使用上述规定函数推导轮密钥的过程。图2是用于说明基于第n轮密钥获取第n+1轮密钥的一例的示意图。下面,以密钥的长度为128位,并且一个字长为32位(即每一轮密钥包括4个字)为例进行说明。如图2所示,假设第n轮密钥1={?11〇,術11,術12,術13},则通过以下公式(1)求出第11+1轮密钥1(?+1={¥(11+1)0, ff(n+l) 1, ff(n+l)2, ff(n+l)3} 〇
[0005]W(n+1)0 = WnO 十 g(Wn3)
[0006]W(n+1) 1 = Wnl 十 W(n+1)0
[0007]W (n+1) 2 = Wn2 十 W (n+1) 1
[0008]W(n+1)3 = Wn3 十 W(n+1)2.? ? (1)
[0009]其中,“?”为逻辑异或运算符,g(x)可以是AES中定义的g函数。应当注意,在本发明中规定函数不限于公式(1),也可以是其他任何函数。
[0010]下面,结合附图详细介绍对以图1的方式进行了加密的N轮加密数据进行解密的过程。图3是用于说明密钥的长度与数据的长度相等时进行解密的示意图。图3中,第1 轮解密数据DN即图1中的第N轮加密数据D N。此时需要使用第N轮密钥KN对第1轮解密数据队进行解密,从而获得第2轮解密数据D N i。应当注意,第2轮解密数据DN i可以与在以图1的方式进行加密的过程中得到的第N-1轮加密数据DN i相同,但也可以与第N-1轮加密数据DN i不相同。接下来,使用第N-1轮密钥K N i对第2轮解密数据D N i进行解密而得到第3轮解密数据DN 2。以此类推,最后使用第1轮密钥&对第N轮解密数据D i进行解密, 从而得到明文数据。
[0011]可见,在解密过程中轮密钥是逆序使用的,即最先使用到第N轮密钥KN,随后依次递减,直到最后一轮才会使用到第1轮密钥I。然而,当进行数据的解密时,在最开始只能获得第1轮密钥I,而无法直接获得第N轮密钥KN。因此,为了进行第1轮解密,需要通过对第1轮密钥迭代适用N-1次上述规定函数而获得第N轮密钥。
[0012]第一种现有的解密方法将推导第N轮密钥KN过程中的每一轮的密钥都存储在存储单元当中,并且在进行解密时从该存储单元依次读取轮密钥。具体而言,首先存储第1轮密钥I,随后对该第1轮密钥&适用规定函数而获得第2轮密钥K 2。接下来,存储该2轮密钥K2,随后对该第2轮密钥适用规定函数而获得第3轮密钥K3。以此类推,能够存储在推导第N轮密钥过程中获得的第1轮密钥至第N-1轮密钥。这样,在进行解密时依次逆序读取每一轮密钥即可。然而,这种方法需要较大的存储空间来存储每一轮密钥,增加了硬件成本。[〇〇13]为了解决存储空间的问题,还出现了第二种现有的解密方法,即在每一轮解密开始前都从第1轮密钥1开始推导该轮的轮密钥。具体而言,在进行第1轮解密时,对第1轮密钥I适用N-1次规定函数而获得第N轮密钥K N,并且使用该第N轮密钥igj行解密。接下来,进行第2轮解密时,再次对第1轮密钥&适用N-2次规定函数而获得第N-1轮密钥 KN:,并且使用该第N-1轮密钥KN i进行解密。虽然这种方式可以不占用存储空间,但每一轮都需要从第1轮密钥开始进行推导,增加了运行开销。
【发明内容】

[0014]本发明鉴于以上课题完成,其目的在于,提供一种数据的解密方法以及电子设备, 根据每一轮的密钥都基于上一轮的密钥推导,因此只需存储上一轮密钥即可,从而节省了存储空间,而且每一轮密钥只需进行一次运算,从而降低了运行开销。
[0015]本发明的一个实施例提供一种数据的解密方法,应用于电子设备,所述数据通过N 轮密钥进行加密得到,N为大于等于2的自然数,其中包括:存储第N轮密钥;以及对所述数据进行迭代解密,所述迭代解密包括:对于第n轮解密,其中n为自然数并且1 < n < N-1, 进行以下步骤:读取第N-n+1轮密钥;使用所述第N-n+1轮密钥进行解密;基于所述第 N-n+1轮密钥获得第N-n轮密钥;存储所述第N-n轮密钥;以及当1 < n〈N-l时,进行第n+1 轮解密,当n = N-1时,读取第1轮密钥并且使用所述第1轮密钥进行解密。
[0016]本发明的实施例还提供一种电子设备,用于对数据进行解密,所述数据通过N轮密钥进行加密得到,N为大于等于2的自然数,其中包括:存储单元,配置来存储密钥;以及处理单元,配置来对所述数据进行迭代解密,对于第n轮解密,其中n为自然数并且 1 < n < N-1,进行以下处理:读取第N-n+1轮密钥;使用第N-n+1轮密钥进行解密;基于所述第N-n+1轮密钥获得第N-n轮密钥;存储所述第N-n轮密钥;以及当1 < n〈N-l时,进行第n+1轮解密,当n = N-1时,读取第1轮密钥并且使用所述第1轮密钥进行解密。
[0017]根据本发明的数据的解密方法以及电子设备,每一轮的密钥都基于上一轮的密钥推导,因此只需存储上一轮密钥即可,从而节省了存储空间,而且每一轮密钥只需进行一次运算,从而降低了运行开销。【附图说明】
[0018]图1是用于说明轮密钥的长度与数据的长度相等时进行加密的示意图。
[0019]图2是用于说明基于第n轮密钥获取第n+1轮密钥的一例的示意图。
[0020]图3是用于说明轮密钥的长度与数据的长度相等时进行解密的示意图。
[0021]图4是根据本发明的实施例的数据的解密方法的流程图。
[0022]图5是用于说明轮密钥的长度为数据的长度的两倍时进行加密的示意图。
[0023]图6是用于说明轮密钥的长度为数据的长度的两倍时推导下一轮密钥的示意图。
[0024]图7是用于说明轮密钥的长度为数据的长度的两倍时进行解密的示意图。
[0025]图8是根据本发明的轮密钥的长度为数据的长度的两倍时的数据的解密方法的流程图。
[0026]图9是用于说明根据本发明的优选实施例中密钥的存储情况的示意图。
[0027]图10是根据本发明的电子设备的功能框图。【具体实施方式】
[0028]为使本领域的技术人员能够更好地理解本发明的技术方案,下面结合附图详细说明本发明的数据的解密方法以及电子设备的【具体实施方式】。其中,本发明的数据的解密方法应用于电子设备,电子设备例如可以是平板电脑、笔记本电脑、台式电脑、PDA等以运算功能为主的设备、也可以是电子书籍、电视、显示器等以显示功能为主的设备,还可以是智能电话、便携式电话等以通话功能为主的设备。显然,本发明不限于下面的具体实施例,在本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029]【数据的解密方法】
[0030]下面,结合附图来详细说明本发明的数据的解密方法。本发明的解密方法可以用于解密按照如图1的方式通过N轮密钥进行加密得到的数据,其中N为大于等于2的自然数。图4是根据本发明的实施例的数据的解密方法的流程图。如图4所示,该解密方法包括以下步骤:
[0031]首先,存储第N轮密钥(步骤S401)。具体而言,可以首先获取第1轮密钥,并且对第1轮密钥1迭代适用N-1次规定函数而算出第N轮密钥K N,并且存储该第N轮密钥Kn。 [〇〇32]接下来,始对所述数据进行迭代解密(步骤S402-S407)。具体而言:
[0033] 在第1轮解密中,首先读取第N轮密钥Kn (步骤S402),并且使用该第N轮密钥Kn 进行解密(步骤S403)。随后,基于所述第N轮密钥Kn获得第N-1轮密钥K N i (步骤S404)。 具体而言,如果能够获得规定函数f(x)的反函数f则可以对&适用该反函数f穴幻即可获得KN1。但是有时候规定函数是非常复杂的函数,因此难以获得反函数fU)。以结合图2说明的规定函数为例,公式(1)中除了逻辑异或运算外还存在AES中定义的g函数。 然而,g函数中还会涉及到字节变换以及行移位等复杂的操作。在此情况下求出公式(1)的反函数难度很大。此时,由于在异或运算中A ? B = C等效于A = C ? B,因此,能够通过以下公式⑵从第n+1轮密钥Kn+1= {ff(n+l)0,W(n+l)l,W(n+l)2,W(n+l)3}求出第n轮密钥Kn= {WnO, ffnl, Wn2, Wn3}:
[0034]Wn3 = W (n+1) 3 十 W (n+1) 2
[0035]Wn2 = W (n+1) 2 十 W (n+1) 1
[0036]Wnl = W(n+1) 1 十 W(n+1)0
[0037]WnO = W (n+1) 0 十 g (Wn3).? ? (2)
[0038]这样,能够不通过求出反函数f 1 (x)而简单地推导第n轮密钥Kn。
[0039]接下来,存储该第N-1轮密钥KN i (步骤S405)。此时,可以向原先存储第N轮密钥 KN的存储地址存储该第N-1轮密钥KN i,这样,通过每一轮都使用相同的存储地址存储密钥, 能够有效节省存储空间。随后,进行第2轮解密。
[0040]第2轮解密中,同样重复上述处理:首先读取第N-1轮密钥KN i (步骤S402),并且使用该第N-1轮密钥KN i进行解密(步骤S403)。随后,基于所述第N-1轮密钥K N i获得第 N-2轮密钥KN 2 (步骤S404)并且存储该第N-2轮密钥KN 2 (步骤S405)。随后,进一步进行第3轮解密。
[0041]以此类推,直到进行第N-1轮解密结束。此时,存储地址中存储的是第1轮密钥I。 最后,读取该第1轮密钥I (步骤S406)并且使用该第1轮密钥1进行解密(步骤S407), 从而得到明文数据。
[0042]通过上述方法,每一轮密钥都基于上一轮的密钥推导,因此整个解密过程只需要存储一个密钥的存储空间即可,进而节省了存储单元的开销。不仅如此,每一轮密钥只需进行一次运算就能够获得,因此还降低了运行开销。
[0043]正如上面所述,通常情况下密钥的长度与数据的长度相等。例如密钥的长度和数据的长度均为128位、192位或者256位。但有时轮密钥的长度可以是数据的长度的两倍, 例如密钥的长度为256位,数据的长度为128位。
[0044]下面,结合附图详细说明密钥的长度是数据的长度的两倍时使用轮密钥进行加密的过程。图5是用于说明轮密钥的长度为数据的长度的两倍时进行加密的示意图。密钥的长度为数据的长度的两倍时,每一轮密钥都可以包括第1部分和第2部分,每一个部分可以与数据的长度相等。如图5所示,首先使用第1轮密钥&的第一部分对明文数据进行加密, 从而获得第1轮加密数据Di。接下来,使用第1轮密钥&的第二部分对第1轮加密数据D 1 进行加密,从而获得第2轮加密数据D2。随后,对第1轮密钥&适用规定函数f(x)而获得第2轮密钥K2。再使用第2轮密钥1(2的第一部分对第2轮加密数据D 2进一步加密,从而获得第3轮加密数据D3。接下来,使用第2轮密钥1(2的第二部分对第3轮加密数据D 3进行加密,从而获得第4轮加密数据D4。随后,进一步对第2轮密钥K2适用规定函数f(x)而获得第3轮密钥K3,以此类推,一共对明文数据进行2N次迭代加密,从而获得第2N轮加密数据 D2N。应当注意,在使用轮密钥进行加密的过程中除了上述步骤以外还可以包括一系列其他操作。例如在AES中,每一轮加密都包括字节变换(ByteSub)、行移位(ShiftRow)、列混合 (MixColumn)、密钥加(AddRoundKey)等。但由于上述以外的步骤与本发明没有直接的相关性,因此在这里省略其说明。
[0045]下面,结合附图详细介绍轮密钥的长度为数据的长度的两倍时使用上述规定函数推导轮密钥的过程。图6是用于说明轮密钥的长度为数据的长度的两倍时推导下一轮密钥的示意图。下面,以密钥的长度为256位,并且一个字长为32位(即每一轮密钥包括8个字)为例进行说明。如图6所示,假设第n轮密钥Kn= {WnO, Wnl,Wn2, Wn3, Wn4, Wn5, Wn6, Wn7},则通过以下公式(3)求出第 n+1 轮密钥 Kn+1= {ff(n+l)0, W(n+l)l,W(n+1)2, ff(n+l)3,ff(n+l)4, ff(n+l)5, ff(n+l)6, ff(n+l)7}:
[0046]W(n+1)0 = WnO 十 g(Wn7)
[0047]W(n+1) 1 = Wnl 十 W(n+1)0
[0048]W (n+1) 2=Wn2十W (n+1) 1
[0049]W (n+1) 3=Wn3十W (n+1) 2
[0050]ff(n+l)4 = Wn4 ? s(ff(n+l)3)
[0051]W (n+1) 5=Wn5十W (n+1) 4
[0052]W (n+1) 6=Wn6十W (n+1) 5
[0053]W (n+1) 7=Wn7十W (n+1) 6.??(3)
[0054]其中,“?”为逻辑异或运算符,g(x)可以是AES中定义的g函数,s(x)可以是字节变换函数。应当注意,在本发明中规定函数不限于公式(3),也可以是其他任何函数。
[0055]下面,结合附图详细介绍对以图5的方式进行了加密的2N轮加密数据进行解密的过程。图7是用于说明轮密钥的长度为数据的长度的两倍时进行解密的示意图。图7中, 第1轮解密数据D2N即图5中的第2N轮加密数据D 2N。此时需要使用第N轮密钥KN的第二部分对第1轮解密数据D2N进行解密,从而获得第2轮解密数据D 2N i。应当注意,第2轮解密数据D2N i可以与在以图5的方式进行加密的过程中得到的第2N-1轮加密数据D2N i相同, 但也可以与第2N-1轮加密数据D2N i不相同。接下来,使用第N轮密钥K ^勺第一部分对第2 轮解密数据D2N i进行解密,从而获得第3轮解密数据D 2N 2。随后,使用第N-1轮密钥KN:的第二部分对第3轮解密数据D2N 2进行解密而得到第4轮解密数据D 2N 3,并且使用第N-1轮密钥KN i的第一部分对第4轮解密数据D 2N 3进行解密,从而获得第5轮解密数据D 2N 4。以此类推,最后使用第1轮密钥1的第二部分对第2N-1轮解密数据D 2进行解密而获得第2N 轮解密数据Di,并且使用第1轮密钥&的第一部分对第2N轮解密数据D:进行解密,从而得到明文数据。
[0056]下面,结合附图详细介绍轮密钥的长度为数据的长度的两倍时的数据的解密方法。图8是根据本发明的轮密钥的长度为数据的长度的两倍时的数据的解密方法的流程图。如图8所示,该解密方法包括以下步骤:
[0057]首先,存储第N轮密钥(步骤S801)。具体而言,可以首先获取第1轮密钥,并且对第1轮密钥1迭代适用N-1次规定函数而算出第N轮密钥K N,并且存储该第N轮密钥Kn。
[0058]接下来,对所述数据进行迭代解密(步骤S802-S811)。具体而言:
[0059]在第1轮解密中,首先读取第N轮密钥KN的第二部分(步骤S802),并且使用该第 N轮密钥&的第二部分对第1轮解密数据D 2N进行解密,从而得到第2轮解密数据D 2N i (步骤S803)。然后,读取第N轮密钥KN的第一部分(步骤S804),并且使用第N轮密钥K ^勺第一部分对第2轮解密数据D2N i进行解密,从而得到第3轮解密数据D 2N 2 (步骤S805)。 随后,基于所述第N轮密钥KN获得第N-1轮密钥K N i (步骤S806)。以结合图6说明的规定函数为例,能够通过以下公式(4)从第n+1轮密钥Kn+1= {W(n+1)0, W(n+l)l,W(n+1)2, W(n+1)3, W(n+l)4,W(n+l)5, W(n+1)6, W(n+1)7}求出第 n 轮密钥 Kn= {WnO, Wnl,Wn2, Wn3, Wn4, Wn5, Wn6, Wn7}:
[0060]Wn7=W (n+1) 7十W (n+1) 6
[0061]Wn6=W (n+1) 6十W (n+1) 5
[0062]Wn5=W (n+1) 5十W (n+1) 4
[0063]Wn4 = ff(n+l)4 ? s(ff(n+l)3)
[0064]Wn3=W (n+1) 3十W (n+1) 2
[0065]Wn2=W (n+1) 2十W (n+1) 1
[0066]Wnl = W(n+1) 1 十 W(n+1)0
[0067]WnO = W (n+1) 0 十 g (Wn7).? ? (4)
[0068]这样,能够不通过求出反函数f 1 (x)而简单地推导第n轮密钥Kn。
[0069]接下来,存储该第N-1轮密钥KN i (步骤S807)。此时,可以向原先存储第N轮密钥 KN的存储地址存储该第N-1轮密钥KN i,这样,通过每一轮都使用相同的存储地址存储密钥, 能够有效节省存储空间。随后,进行第2轮解密。
[0070]第2轮解密中,同样重复上述处理:首先读取第N-1轮密钥KN i的第二部分(步骤 S802),并且使用该第N-1轮密钥KN i的第二部分对第3轮解密数据D 2N 2进行解密,从而得到第4轮解密数据D2N 3 (步骤S803)。然后,读取第N-1轮密钥KN i的第一部分(步骤S804), 并且使用第N-1轮密钥KN i的第一部分对第4轮解密数据D 2N 3进行解密,从而得到第5轮解密数据D2N 4 (步骤S805)。随后,基于所述第N-1轮密钥KN i获得第N-2轮密钥K N 2 (步骤 S806)并且存储该第N-2轮密钥KN 2 (步骤S807)。随后,进一步进行第3轮解密。
[0071]以此类推,直到进行第N-1轮解密结束。此时,存储地址中存储的是第1轮密钥I。 接下来,读取第1轮密钥I的第二部分(步骤S808),并且使用所述第1轮密钥的第二部分对第2N-1轮解密数据D2N i进行解密,从而得到第2N轮解密数据D 2N (步骤S809)。最后,读取第1轮密钥I的第一部分(步骤S810),并且使用所述第1轮密钥的第一部分对第2N轮解密数据D2N进行解密,从而得到明文数据(步骤S811)。
[0072]然而,在上述每一轮的解密过程中都需要分别使用轮密钥的第一部分和第二部分进行解密。因此,如果仅仅简单地将每一轮密钥存储在与上一轮密钥相同的存储地址,则在解密时需要交替地从该存储地址的不同位置读取轮密钥的第一部分和密钥的第二部分,会导致逻辑复杂而影响性能。
[0073]为此,本发明还提供了另一个优选实施例。图9是用于说明根据本发明的优选实施例中密钥的存储情况的示意图。如图9中所示,对于任意的第n+1轮解密,可以将第n+1 轮密钥Kn+1的第二部分存储到第一存储地址,并且将第n+1轮密钥Kn+1的第一部分存储到第二存储地址(步骤I)。其中,第一存储地址和第二存储地址可以是两个存储单元(例如两个寄存器),也可以是一个存储单元的两个存储空间。随后,从第一存储地址从第一存储地址读取第n+1轮密钥Kn+1的第二部分,并且使用该轮密钥的第二部分进行解密。随后将第 n+1轮密钥Kn+1的第一部分存储到第一存储地址并且将第n+1轮密钥K n+1的第二部分存储到第二存储地址(步骤II)。这里,也可以使用寄存器移位的方法简单地调换第n+1轮密钥 Kn+1的第一部分和第二部分的存储位置。当然,也可以通过逻辑运算或者其他任何方法实现上述存储位置的转换。接下来,从第一存储地址从第一存储地址读取第n+1轮密钥Kn+1的第一部分,并且使用该轮密钥的第一部分进行解密。随后,基于第一存储地址中的第n+1轮密钥Kn+1的第一部分和第二存储地址中的第n+1轮密钥K n+1的第二部分获取第n轮密钥K n,并且将第n轮密钥Kn的第二部分存储到第一存储地址,并且将第n+1轮密钥K n+1的第一部分存储到第二存储地址(步骤III),从而可以进行下一轮解密,以此类推。通过这样的方式, 在每一次解密时都从第一存储地址中读取轮密钥的第一部分或者第二部分,因此简化了逻辑处理,能够进一步提高解密效率。
[0074]通过上述方法,每一轮密钥都基于上一轮的密钥推导,因此整个解密过程只需要存储一个密钥的存储空间即可,进而节省了存储单元的开销。不仅如此,每一轮密钥只需进行一次运算就能够获得,因此还降低了运行开销。
[0075]以上说明了本发明的数据的解密方法的多个实施例。显然,本领域技术人员在不脱离本发明的精神和范围内可以对上述实施例作出各种组合、修改或者变形。本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0076]【电子设备】
[0077]下面,结合附图来详细说明本发明的电子设备。本发明的电子设备能够解密按照如图1的方式通过N轮密钥进行加密得到的数据,其中N为大于等于2的自然数。图10是根据本发明的电子设备的功能框图。如图10所不,电子设备1000包括:存储单兀1010以及处理单元1020。其中存储单元1010用于存储轮密钥,处理单元1020用于对数据进行下面详细描述的迭代解密。
[0078]下面,详细说明处理单元1020执行的迭代解密的过程。
[0079]首先,存储第N轮密钥。具体而言,可以首先获取第1轮密钥,并且对第1轮密钥 1迭代适用N-1次规定函数而算出第N轮密钥K N,并且存储该第N轮密钥Kn。
[0080]接下来,执行在第1轮解密。在第一轮解密中,首先读取第N轮密钥KN,并且使用该第N轮密钥igi行解密。随后,基于所述第N轮密钥KN获得第N-1轮密钥KN1。具体而言,如果能够获得规定函数f(x)的反函数f则可以对&适用该反函数f i(x)即可获得KN1。但是有时候规定函数是非常复杂的函数,因此难以获得反函数fU)。以结合图2 说明的规定函数为例,公式(1)中除了逻辑异或运算外还存在AES中定义的g函数。然而, g函数中还会涉及到字节变换以及行移位等复杂的操作。在此情况下求出公式(1)的反函数难度很大。此时,由于在异或运算中A ? B = C等效于A = C ? B,因此,能够通过以下公式⑵从第 n+1 轮密钥 Kn+1= {W(n+1)0, W(n+l)l,W(n+1)2, W(n+1)3}求出第 n 轮密钥 Kn ={WnO, ffnl, Wn2, Wn3}:
[0081]Wn3 = W (n+1) 3 十 W (n+1) 2
[0082]Wn2 = W (n+1) 2 十 W (n+1) 1
[0083]Wnl = W(n+1) 1 十 W(n+1)0
[0084]WnO = W (n+1) 0 十 g (Wn3).? ? (2)
[0085]这样,能够不通过求出反函数f 1 (x)而简单地推导第n轮密钥Kn。
[0086]接下来,存储该第N-1轮密钥KN i。此时,可以向原先存储第N轮密钥心的存储地址存储该第N-1轮密钥KN i,这样,通过每一轮都使用相同的存储地址存储密钥,能够有效节省存储空间。随后,进行第2轮解密。
[0087]第2轮解密中,同样重复上述处理:首先读取第N-1轮密钥KN i,并且使用该第N-1 轮密钥KN i进行解密。随后,基于所述第N-1轮密钥K N i获得第N-2轮密钥K N 2并且存储该第N-2轮密钥KN2。随后,进一步进行第3轮解密。
[0088]以此类推,直到进行第N-1轮解密结束。此时,存储地址中存储的是第1轮密钥I。 最后,读取该第1轮密钥I并且使用该第1轮密钥K:进行解密,从而得到明文数据。
[0089]通过上述处理,每一轮密钥都基于上一轮的密钥推导,因此整个解密过程只需要存储一个密钥的存储空间即可,进而节省了存储单元的开销。不仅如此,每一轮密钥只需进行一次运算就能够获得,因此还降低了运行开销。
[0090]正如上面所述,通常情况下密钥的长度与数据的长度相等。例如密钥的长度和数据的长度均为128位、192位或者256位。但有时轮密钥的长度可以是数据的长度的两倍, 例如密钥的长度为256位,数据的长度为128位。
[0091]下面,结合附图详细说明密钥的长度是数据的长度的两倍时使用轮密钥进行加密的过程。密钥的长度为数据的长度的两倍时,每一轮密钥都可以包括第1部分和第2部分, 每一个部分可以与数据的长度相等。如图5所示,首先使用第1轮密钥&的第一部分对明文数据进行加密,从而获得第1轮加密数据Di。接下来,使用第1轮密钥&的第二部分对第1轮加密数据〇:进行加密,从而获得第2轮加密数据D 2。随后,对第1轮密钥&适用规定函数f(x)而获得第2轮密钥K2。再使用第2轮密钥1(2的第一部分对第2轮加密数据D 2 进一步加密,从而获得第3轮加密数据D3。接下来,使用第2轮密钥1(2的第二部分对第3轮加密数据%进行加密,从而获得第4轮加密数据D 4。随后,进一步对第2轮密钥K2适用规定函数f (x)而获得第3轮密钥K3,以此类推,一共对明文数据进行2N次迭代加密,从而获得第2N轮加密数据D2N。应当注意,在使用轮密钥进行加密的过程中除了上述步骤以外还可以包括一系列其他操作。例如在AES中,每一轮加密都包括字节变换(ByteSub)、行移位 (ShiftRow)、列混合(MixColumn)、密钥加(AddRoundKey)等。但由于上述以外的步骤与本发明没有直接的相关性,因此在这里省略其说明。
[0092]下面,结合附图详细介绍轮密钥的长度为数据的长度的两倍时使用上述规定函数推导轮密钥的过程。图6是用于说明轮密钥的长度为数据的长度的两倍时推导下一轮密钥的示意图。下面,以密钥的长度为256位,并且一个字长为32位(即每一轮密钥包括8 个字)为例进行说明。如图6所示,假设第n轮密钥Kn= {WnO, Wnl,Wn2, Wn3, Wn4, Wn5, Wn6, Wn7},则通过以下公式(3)求出第 n+1 轮密钥 Kn+1= {ff(n+l)0, W(n+l)l,W(n+1)2, ff(n+l)3,ff(n+l)4, ff(n+l)5, ff(n+l)6, ff(n+l)7}:
[0093]W(n+1)0 = WnO 十 g(Wn7)
[0094]W(n+1) 1 = Wnl 十 W(n+1)0
[0095]W (n+1) 2 =Wn2十 W (n+1) 1
[0096]W (n+1) 3 =Wn3十 W (n+1) 2
[0097]ff(n+l)4 = Wn4 ? s(ff(n+l)3)
[0098]W (n+1) 5 =Wn5十 W (n+1) 4
[0099]W (n+1) 6 =Wn6十 W (n+1) 5
[0100]W(n+1)7 = Wn7 十 W(n+1)6...(3)
[0101]其中,“?”为逻辑异或运算符,g(x)可以是AES中定义的g函数,s(x)可以是字节变换函数。应当注意,在本发明中规定函数不限于公式(3),也可以是其他任何函数。
[0102]下面,结合附图详细介绍对以图5的方式进行了加密的2N轮加密数据进行解密的过程。图7是用于说明轮密钥的长度为数据的长度的两倍时进行解密的示意图。图7中, 第1轮解密数据D2N即图5中的第2N轮加密数据D 2N。此时需要使用第N轮密钥KN的第二部分对第1轮解密数据D2N进行解密,从而获得第2轮解密数据D 2N i。应当注意,第2轮解密数据D2N i可以与在以图5的方式进行加密的过程中得到的第2N-1轮加密数据D2N i相同, 但也可以与第2N-1轮加密数据D2N i不相同。接下来,使用第N轮密钥K ^勺第一部分对第2 轮解密数据D2N i进行解密,从而获得第3轮解密数据D 2N 2。随后,使用第N-1轮密钥KN:的第二部分对第3轮解密数据D2N 2进行解密而得到第4轮解密数据D 2N 3,并且使用第N-1轮密钥KN i的第一部分对第4轮解密数据D 2N 3进行解密,从而获得第5轮解密数据D 2N 4。以此类推,最后使用第1轮密钥1的第二部分对第2N-1轮解密数据D 2进行解密而获得第2N 轮解密数据Di,并且使用第1轮密钥&的第一部分对第2N轮解密数据D:进行解密,从而得到明文数据。
[0103]下面,详细介绍轮密钥的长度为数据的长度的两倍时处理单元1020执行的解密过程。
[0104]首先,存储第N轮密钥。具体而言,可以首先获取第1轮密钥,并且对第1轮密钥 1迭代适用N-1次规定函数而算出第N轮密钥K N,并且存储该第N轮密钥Kn。
[0105]接下来,在第1轮解密中,首先读取第N轮密钥KN的第二部分,并且使用该第N轮密钥&的第二部分对第1轮解密数据D 2N进行解密,从而得到第2轮解密数据D 2N i。然后, 读取第N轮密钥KN的第一部分,并且使用第N轮密钥K第一部分对第2轮解密数据D 2N 1进行解密,从而得到第3轮解密数据D2N 2。随后,基于所述第N轮密钥KN获得第N-1轮密钥KN1。以结合图6说明的规定函数为例,能够通过以下公式(4)从第n+1轮密钥Kn+1 = {ff(n+l)0, W(n+l)l,W(n+1)2, W(n+l)3,W(n+l)4, W(n+1)5, W(n+1)6, W(n+1)7}求出第 n 轮密钥 Kn= {WnO, Wnl,Wn2, Wn3, Wn4, Wn5, Wn6, Wn7}:
[0106]Wn7=W (n+1) 7十W (n+1) 6
[0107]Wn6=W (n+1) 6十W (n+1) 5
[0108]Wn5=W (n+1) 5十W (n+1) 4
[0109]Wn4=ff(n+l)4?s(ff(n+l)3)
[0110]Wn3=W (n+1) 3十W (n+1) 2
[0111]Wn2 = W(n+1)2 十 W(n+1) 1
[0112]Wnl = W(n+1) 1 十 W(n+1)0
[0113]WnO = W(n+1)0 十 g(Wn7)...(4)
[0114]这样,能够不通过求出反函数fYx)而简单地推导第n轮密钥Kn。
[0115]接下来,存储该第N-1轮密钥KN1。此时,可以向原先存储第N轮密钥心的存储地址存储该第N-1轮密钥KN i,这样,通过每一轮都使用相同的存储地址存储密钥,能够有效节省存储空间。随后,进行第2轮解密。
[0116]第2轮解密中,同样重复上述处理:首先读取第N-1轮密钥KN i的第二部分,并且使用该第N-1轮密钥KN i的第二部分对第3轮解密数据D 2N 2进行解密,从而得到第4轮解密数据D2N 3。然后,读取第N-1轮密钥KN i的第一部分,并且使用第N-1轮密钥K N i的第一部分对第4轮解密数据D2N 3进行解密,从而得到第5轮解密数据D 2N 4。随后,基于所述第N-1 轮密钥KN i获得第N-2轮密钥K N 2并且存储该第N-2轮密钥K N 2。随后,进一步进行第3轮解密。
[0117]以此类推,直到进行第N-1轮解密结束。此时,存储地址中存储的是第1轮密钥I。 接下来,读取第1轮密钥I的第二部分,并且使用所述第1轮密钥的第二部分对第2N-1轮解密数据D2N i进行解密,从而得到第2N轮解密数据D 2N。最后,读取第1轮密钥&的第一部分,并且使用所述第1轮密钥的第一部分对第2N轮解密数据D2N进行解密,从而得到明文数据。
[0118]然而,在上述每一轮的解密过程中都需要分别使用轮密钥的第一部分和第二部分进行解密。因此,如果仅仅简单地将每一轮密钥存储在与上一轮密钥相同的存储地址,则在解密时需要交替地从该存储地址的不同位置读取轮密钥的第一部分和密钥的第二部分,会导致逻辑复杂而影响性能。
[0119]为此,本发明还提供了另一个优选实施例。图9是用于说明根据本发明的优选实施例中密钥的存储情况的示意图。如图9中所示,对于任意的第n+1轮解密,可以将第n+1 轮密钥Kn+1的第二部分存储到第一存储地址,并且将第n+1轮密钥Kn+1的第一部分存储到第二存储地址(步骤I)。其中,第一存储地址和第二存储地址可以是两个存储单元(例如两个寄存器),也可以是一个存储单元的两个存储空间。随后,从第一存储地址从第一存储地址读取第n+1轮密钥Kn+1的第二部分,并且使用该轮密钥的第二部分进行解密。随后将第 n+1轮密钥Kn+1的第一部分存储到第一存储地址并且将第n+1轮密钥K n+1的第二部分存储到第二存储地址(步骤II)。这里,也可以使用寄存器移位的方法简单地调换第n+1轮密钥 Kn+1的第一部分和第二部分的存储位置。当然,也可以通过逻辑运算或者其他任何方法实现上述存储位置的转换。接下来,从第一存储地址从第一存储地址读取第n+1轮密钥Kn+1的第一部分,并且使用该轮密钥的第一部分进行解密。随后,基于第一存储地址中的第n+1轮密钥Kn+1的第一部分和第二存储地址中的第n+1轮密钥K n+1的第二部分获取第n轮密钥K n,并且将第n轮密钥Kn的第二部分存储到第一存储地址,并且将第n+1轮密钥K n+1的第一部分存储到第二存储地址(步骤III),从而可以进行下一轮解密,以此类推。通过这样的方式, 在每一次解密时都从第一存储地址中读取轮密钥的第一部分或者第二部分,因此简化了逻辑处理,能够进一步提高解密效率。
[0120]通过上述处理,每一轮密钥都基于上一轮的密钥推导,因此整个解密过程只需要存储一个密钥的存储空间即可,进而节省了存储单元的开销。不仅如此,每一轮密钥只需进行一次运算就能够获得,因此还降低了运行开销。
[0121]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解, 本发明的技术方案对【背景技术】做出贡献的全部或者部分可以以软件产品的形式体现出来, 该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0122]以上说明了本发明的电子设备的多个实施例。显然,本领域技术人员在不脱离本发明的精神和范围内可以对上述实施例作出各种组合、修改或者变形。本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
【主权项】
1.一种数据的解密方法,应用于电子设备,所述数据通过N轮密钥进行加密得到,NS 大于等于2的自然数,其中包括:存储第N轮密钥;以及 对所述数据进行迭代解密,所述迭代解密包括:对于第n轮解密,其中n为自然数并且1彡n彡N-1,进行以下步骤:读取第N-n+1轮密钥;使用所述第N-n+1轮密钥进行解密;基于所述第N-n+1轮密钥获得第N-n轮密钥;存储所述第N-n轮密钥;以及 当1彡n〈N-l时,进行第n+1轮解密,当n = N-1时,读取第1轮密钥;使用所述第1轮密钥进行解密。2.如权利要求1所述的解密方法,其中,所述存储所述第N-n轮密钥包括:向存储有所述N-n+1轮密钥的存储地址存储第所述N-n轮密钥。3.如权利要求1所述的解密方法,其中,所述存储第N轮密钥包括:获取第1轮密钥;基于所述第1轮密钥迭代适用N-1次规定函数而算出第N轮密钥;以及 存储所述第N轮密钥。4.如权利要求1-3中的任意一项解密方法,其中,轮密钥的长度与所述数据的长度相同,所述数据通过N轮密钥依次进行N轮加密而得 到。5.如权利要求1-3中的任意一项解密方法,其中,轮密钥的长度是所述数据的长度的两倍,所述轮密钥包括第一部分和第二部分,使用 第i轮密钥的第一部分对第21-l轮加密数据进行加密,使用第i轮密钥的第二部分对第2i 轮加密数据进行加密,i为自然数且1 < i < N。6.如权利要求5的解密方法,其中,所述迭代解密包括:对于第n轮解密,其中n为自然数并且1彡n彡N-1,进行以下步骤:读取第N-n+1轮密钥的第二部分;使用所述第N-n+1轮密钥的第二部分对第2n-l轮解密数据进行解密;读取第N-n+1轮密钥的第一部分;使用所述第N-n+1轮密钥的第一部分对第2n轮解密数据进行解密;基于所述第N-n+1轮密钥获得第N-n轮密钥;存储所述第N-n轮密钥;以及当1彡n〈N-l时,进行第n+1轮解密,当n = N-1时,读取第1轮密钥的第二部分;使用所述第1轮密钥的第二部分对第2N-1轮解密数据进行解密;读取第1轮密钥的第一部分;使用所述第1轮密钥的第一部分对第2N轮解密数据进行解密。7.如权利要求6所述的解密方法,其中,所述存储第N轮密钥包括:将所述第N轮密钥的第二部分存储到第一存储地址并且将所述第N轮密钥的第一部分 存储到第二存储地址,所述读取第N-n+1轮密钥的第二部分包括:从所述第一存储地址读取第N-n+1轮密钥的第二部分,所述使用所述第N-n+1轮密钥的第二部分对第2n-l轮解密数据进行解密后,还包括: 将第N-n+1轮密钥的第一部分存储到所述第一存储地址并且将所述第N-n+1轮密钥的 第二部分存储到第二存储地址,所述读取第N-n+1轮密钥的第一部分包括:从所述第一存储地址读取第N-n+1轮密钥的第一部分,所述存储所述第N-n轮密钥包括:将所述第N-n轮密钥的第二部分存储到第一存储地址并且将所述第N-n轮密钥的第一 部分存储到第二存储地址,所述读取第1轮密钥的第一部分包括:从所述第一存储地址读取第1轮密钥的第二部分;所述使用所述第1轮密钥的第二部分对第2N-1轮解密数据进行解密之后还包括:将所述第1轮密钥的第一部分存储到所述第一存储地址,所述读取第1轮密钥的第一部分包括:从所述第一存储地址读取第1轮密钥的第一部分。8.—种电子设备,用于对数据进行解密,所述数据通过N轮密钥进行加密得到,N为大 于等于2的自然数,其中包括:存储单元,配置来存储密钥;以及 处理单元,配置来对所述数据进行迭代解密,所述迭代解密包括:存储第N轮密钥;对于第n轮解密,其中n为自然数并且1彡n彡N-1,进行以下处理:读取第N-n+1轮密钥;使用第N-n+1轮密钥进行解密;基于所述第N-n+1轮密钥获得第N-n轮密钥;存储所述第N-n轮密钥;以及 当1彡n〈N-l时,进行第n+1轮解密,当n = N-1时,读取第1轮密钥;使用所述第1轮密钥进行解密。9.如权利要求8所述的电子设备,其中轮密钥的长度是所述数据的长度的两倍,所述轮密钥包括第一部分和第二部分,使用 第i轮密钥的第一部分对第21-l轮加密数据进行加密,使用第i轮密钥的第二部分对第2i 轮加密数据进行加密,i为自然数且1 < i < N。10.如权利要求9所述的电子设备,其中,所述迭代解密包括:存储第N轮密钥;对于第n轮解密,其中n为自然数并且1彡n彡N-1,进行以下步骤:读取第N-n+1轮密钥的第二部分;使用所述第N-n+1轮密钥的第二部分对第2n-l轮解密数据进行解密;读取第N-n+1轮密钥的第一部分;使用所述第N-n+1轮密钥的第一部分对第2n轮解密数据进行解密;基于所述第N-n+1轮密钥获得第N-n轮密钥;存储所述第N-n轮密钥;以及 当1彡n〈N-l时,进行第n+1轮解密,当n = N-1时,读取第1轮密钥的第二部分;使用所述第1轮密钥的第二部分对第2N-1轮解密数据进行解密;读取第1轮密钥的第一部分;使用所述第1轮密钥的第一部分对第2N轮解密数据进行解密。11.如权利要求9所述的电子设备,其中,所述存储单元将所述第N轮密钥的第二部分存储到第一存储地址并且将所述第N轮密 钥的第一部分存储到第二存储地址,所述迭代解密包括:存储第N轮密钥;对于第n轮解密,其中n为自然数并且1彡n彡N-1,进行以下处理:从所述第一存储地址读取第N-n+1轮密钥的第二部分;使用所述第N-n+1轮密钥的第二部分对第2n-l轮解密数据进行解密;将第N-n+1轮密钥的第一部分存储到所述第一存储地址并且将所述第N-n+1轮密钥的 第二部分存储到第二存储地址;从所述第一存储地址读取第N-n+1轮密钥的第一部分;使用所述第N-n+1轮密钥的第一部分对第2n轮解密数据进行解密;基于所述第N-n+1轮密钥获得第N-n轮密钥;将所述第N-n轮密钥的第二部分存储到第一存储地址并且将所述第N-n轮密钥的第一部分存储到第二存储地址,以及 当1彡n〈N-l时,进行第n+1轮解密,当n = N-1时,从所述第一存储地址读取第1轮密钥的第二部分;使用所述第1轮密钥的第二部分对第2N-1轮解密数据进行解密; 将所述第1轮密钥的第一部分存储到所述第一存储地址;从所述第一存储地址读取第1轮密钥的第一部分;以及 使用所述第1轮密钥的第一部分对第2N轮解密数据进行解密。
【文档编号】H04L9/06GK106027225SQ201510128560
【公开日】2016年10月12日
【申请日】2015年3月23日
【发明人】闻军会, 毛兴中
【申请人】联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1