CN106027225B - 数据的解密方法以及电子设备 - Google Patents
数据的解密方法以及电子设备 Download PDFInfo
- Publication number
- CN106027225B CN106027225B CN201510128560.XA CN201510128560A CN106027225B CN 106027225 B CN106027225 B CN 106027225B CN 201510128560 A CN201510128560 A CN 201510128560A CN 106027225 B CN106027225 B CN 106027225B
- Authority
- CN
- China
- Prior art keywords
- round key
- key
- wheel
- data
- round
- 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
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种数据的解密方法以及电子设备。解密方法应用于电子设备,所述数据通过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轮密钥进行解密。根据本发明的数据的解密方法以及电子设备,根据每一轮的密钥都基于上一轮的密钥推导,因此只需存储上一轮密钥即可,从而节省了存储空间,而且每一轮密钥只需进行一次运算,从而降低了运行开销。
Description
技术领域
本发明涉及一种数据的解密方法以及电子设备,尤其涉及能够节省存储空间的同时降低电子设备的运行开销的数据的解密方法以及电子设备。
背景技术
信息网络技术的发展为人们提供了极大的便利。但同时网络犯罪也随之增多,信息安全问题渐渐成为人们关注的焦点。如今,出现了各种各样的数据加密方法。其中使用轮密钥进行加密的方法由于其安全性高,开始被广泛应用。例如,AES(Advanced EncryptionStandard,高级加密标准)是当前最流行的加密方法之一。
在使用轮密钥进行加密时,通常情况下密钥的长度与数据的长度相等。例如密钥的长度和数据的长度均为128位、192位或者256位。下面,结合附图详细说明密钥的长度与数据的长度相等时使用轮密钥进行加密的过程。图1是用于说明轮密钥的长度与数据的长度相等时进行加密的示意图。如图1所示,首先使用第1轮密钥K1对明文数据进行加密,从而获得第1轮加密数据D1。随后,对第1轮密钥K1适用规定函数f(x)而获得第2轮密钥K2。再使用第2轮密钥K2对第1轮加密数据D1进一步加密,从而获得第2轮加密数据D2。随后,进一步对第2轮密钥K2适用规定函数f(x)而获得第3轮密钥K3,以此类推,对明文数据进行N轮的迭代加密,从而获得第N轮加密数据DN。应当注意,在使用轮密钥进行加密的过程中除了上述步骤以外还可以包括一系列其他操作。例如在AES中,每一轮加密都包括字节变换(ByteSub)、行移位(ShiftRow)、列混合(MixColumn)、密钥加(AddRoundKey)等。但由于上述以外的步骤与本发明没有直接的相关性,因此在这里省略其说明。
下面,结合附图详细介绍使用上述规定函数推导轮密钥的过程。图2是用于说明基于第n轮密钥获取第n+1轮密钥的一例的示意图。下面,以密钥的长度为128位,并且一个字长为32位(即每一轮密钥包括4个字)为例进行说明。如图2所示,假设第n轮密钥Kn={Wn0,Wn1,Wn2,Wn3},则通过以下公式(1)求出第n+1轮密钥Kn+1={W(n+1)0,W(n+1)1,W(n+1)2,W(n+1)3}。
W(n+1)0=Wn0⊕g(Wn3)
W(n+1)1=Wn1⊕W(n+1)0
W(n+1)2=Wn2⊕W(n+1)1
W(n+1)3=Wn3⊕W(n+1)2……………..(1)
其中,“⊕”为逻辑异或运算符,g(x)可以是AES中定义的g函数。应当注意,在本发明中规定函数不限于公式(1),也可以是其他任何函数。
下面,结合附图详细介绍对以图1的方式进行了加密的N轮加密数据进行解密的过程。图3是用于说明密钥的长度与数据的长度相等时进行解密的示意图。图3中,第1轮解密数据DN即图1中的第N轮加密数据DN。此时需要使用第N轮密钥KN对第1轮解密数据DN进行解密,从而获得第2轮解密数据DN-1。应当注意,第2轮解密数据DN-1可以与在以图1的方式进行加密的过程中得到的第N-1轮加密数据DN-1相同,但也可以与第N-1轮加密数据DN-1不相同。接下来,使用第N-1轮密钥KN-1对第2轮解密数据DN-1进行解密而得到第3轮解密数据DN-2。以此类推,最后使用第1轮密钥K1对第N轮解密数据D1进行解密,从而得到明文数据。
可见,在解密过程中轮密钥是逆序使用的,即最先使用到第N轮密钥KN,随后依次递减,直到最后一轮才会使用到第1轮密钥K1。然而,当进行数据的解密时,在最开始只能获得第1轮密钥K1,而无法直接获得第N轮密钥KN。因此,为了进行第1轮解密,需要通过对第1轮密钥迭代适用N-1次上述规定函数而获得第N轮密钥。
第一种现有的解密方法将推导第N轮密钥KN过程中的每一轮的密钥都存储在存储单元当中,并且在进行解密时从该存储单元依次读取轮密钥。具体而言,首先存储第1轮密钥K1,随后对该第1轮密钥K1适用规定函数而获得第2轮密钥K2。接下来,存储该2轮密钥K2,随后对该第2轮密钥适用规定函数而获得第3轮密钥K3。以此类推,能够存储在推导第N轮密钥过程中获得的第1轮密钥至第N-1轮密钥。这样,在进行解密时依次逆序读取每一轮密钥即可。然而,这种方法需要较大的存储空间来存储每一轮密钥,增加了硬件成本。
为了解决存储空间的问题,还出现了第二种现有的解密方法,即在每一轮解密开始前都从第1轮密钥K1开始推导该轮的轮密钥。具体而言,在进行第1轮解密时,对第1轮密钥K1适用N-1次规定函数而获得第N轮密钥KN,并且使用该第N轮密钥KN进行解密。接下来,进行第2轮解密时,再次对第1轮密钥K1适用N-2次规定函数而获得第N-1轮密钥KN-1,并且使用该第N-1轮密钥KN-1进行解密。虽然这种方式可以不占用存储空间,但每一轮都需要从第1轮密钥开始进行推导,增加了运行开销。
发明内容
本发明鉴于以上课题完成,其目的在于,提供一种数据的解密方法以及电子设备,根据每一轮的密钥都基于上一轮的密钥推导,因此只需存储上一轮密钥即可,从而节省了存储空间,而且每一轮密钥只需进行一次运算,从而降低了运行开销。
本发明的一个实施例提供一种数据的解密方法,应用于电子设备,所述数据通过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轮密钥进行解密。
本发明的实施例还提供一种电子设备,用于对数据进行解密,所述数据通过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-1时,进行第n+1轮解密,当n=N-1时,读取第1轮密钥并且使用所述第1轮密钥进行解密。
根据本发明的数据的解密方法以及电子设备,每一轮的密钥都基于上一轮的密钥推导,因此只需存储上一轮密钥即可,从而节省了存储空间,而且每一轮密钥只需进行一次运算,从而降低了运行开销。
附图说明
图1是用于说明轮密钥的长度与数据的长度相等时进行加密的示意图。
图2是用于说明基于第n轮密钥获取第n+1轮密钥的一例的示意图。
图3是用于说明轮密钥的长度与数据的长度相等时进行解密的示意图。
图4是根据本发明的实施例的数据的解密方法的流程图。
图5是用于说明轮密钥的长度为数据的长度的两倍时进行加密的示意图。
图6是用于说明轮密钥的长度为数据的长度的两倍时推导下一轮密钥的示意图。
图7是用于说明轮密钥的长度为数据的长度的两倍时进行解密的示意图。
图8是根据本发明的轮密钥的长度为数据的长度的两倍时的数据的解密方法的流程图。
图9是用于说明根据本发明的优选实施例中密钥的存储情况的示意图。
图10是根据本发明的电子设备的功能框图。
具体实施方式
为使本领域的技术人员能够更好地理解本发明的技术方案,下面结合附图详细说明本发明的数据的解密方法以及电子设备的具体实施方式。其中,本发明的数据的解密方法应用于电子设备,电子设备例如可以是平板电脑、笔记本电脑、台式电脑、PDA等以运算功能为主的设备、也可以是电子书籍、电视、显示器等以显示功能为主的设备,还可以是智能电话、便携式电话等以通话功能为主的设备。显然,本发明不限于下面的具体实施例,在本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
【数据的解密方法】
下面,结合附图来详细说明本发明的数据的解密方法。本发明的解密方法可以用于解密按照如图1的方式通过N轮密钥进行加密得到的数据,其中N为大于等于2的自然数。图4是根据本发明的实施例的数据的解密方法的流程图。如图4所示,该解密方法包括以下步骤:
首先,存储第N轮密钥(步骤S401)。具体而言,可以首先获取第1轮密钥,并且对第1轮密钥K1迭代适用N-1次规定函数而算出第N轮密钥KN,并且存储该第N轮密钥KN。
接下来,始对所述数据进行迭代解密(步骤S402-S407)。具体而言:
在第1轮解密中,首先读取第N轮密钥KN(步骤S402),并且使用该第N轮密钥KN进行解密(步骤S403)。随后,基于所述第N轮密钥KN获得第N-1轮密钥KN-1(步骤S404)。具体而言,如果能够获得规定函数f(x)的反函数f-1(x),则可以对KN适用该反函数f-1(x)即可获得KN-1。但是有时候规定函数是非常复杂的函数,因此难以获得反函数f-1(x)。以结合图2说明的规定函数为例,公式(1)中除了逻辑异或运算外还存在AES中定义的g函数。然而,g函数中还会涉及到字节变换以及行移位等复杂的操作。在此情况下求出公式(1)的反函数难度很大。此时,由于在异或运算中A⊕B=C等效于A=C⊕B,因此,能够通过以下公式(2)从第n+1轮密钥Kn+1={W(n+1)0,W(n+1)1,W(n+1)2,W(n+1)3}求出第n轮密钥Kn={Wn0,Wn1,Wn2,Wn3}:
Wn3=W(n+1)3⊕W(n+1)2
Wn2=W(n+1)2⊕W(n+1)1
Wn1=W(n+1)1⊕W(n+1)0
Wn0=W(n+1)0⊕g(Wn3)……………..(2)
这样,能够不通过求出反函数f-1(x)而简单地推导第n轮密钥Kn。
接下来,存储该第N-1轮密钥KN-1(步骤S405)。此时,可以向原先存储第N轮密钥KN的存储地址存储该第N-1轮密钥KN-1,这样,通过每一轮都使用相同的存储地址存储密钥,能够有效节省存储空间。随后,进行第2轮解密。
第2轮解密中,同样重复上述处理:首先读取第N-1轮密钥KN-1(步骤S402),并且使用该第N-1轮密钥KN-1进行解密(步骤S403)。随后,基于所述第N-1轮密钥KN-1获得第N-2轮密钥KN-2(步骤S404)并且存储该第N-2轮密钥KN-2(步骤S405)。随后,进一步进行第3轮解密。
以此类推,直到进行第N-1轮解密结束。此时,存储地址中存储的是第1轮密钥K1。最后,读取该第1轮密钥K1(步骤S406)并且使用该第1轮密钥K1进行解密(步骤S407),从而得到明文数据。
通过上述方法,每一轮密钥都基于上一轮的密钥推导,因此整个解密过程只需要存储一个密钥的存储空间即可,进而节省了存储单元的开销。不仅如此,每一轮密钥只需进行一次运算就能够获得,因此还降低了运行开销。
正如上面所述,通常情况下密钥的长度与数据的长度相等。例如密钥的长度和数据的长度均为128位、192位或者256位。但有时轮密钥的长度可以是数据的长度的两倍,例如密钥的长度为256位,数据的长度为128位。
下面,结合附图详细说明密钥的长度是数据的长度的两倍时使用轮密钥进行加密的过程。图5是用于说明轮密钥的长度为数据的长度的两倍时进行加密的示意图。密钥的长度为数据的长度的两倍时,每一轮密钥都可以包括第1部分和第2部分,每一个部分可以与数据的长度相等。如图5所示,首先使用第1轮密钥K1的第一部分对明文数据进行加密,从而获得第1轮加密数据D1。接下来,使用第1轮密钥K1的第二部分对第1轮加密数据D1进行加密,从而获得第2轮加密数据D2。随后,对第1轮密钥K1适用规定函数f(x)而获得第2轮密钥K2。再使用第2轮密钥K2的第一部分对第2轮加密数据D2进一步加密,从而获得第3轮加密数据D3。接下来,使用第2轮密钥K2的第二部分对第3轮加密数据D3进行加密,从而获得第4轮加密数据D4。随后,进一步对第2轮密钥K2适用规定函数f(x)而获得第3轮密钥K3,以此类推,一共对明文数据进行2N次迭代加密,从而获得第2N轮加密数据D2N。应当注意,在使用轮密钥进行加密的过程中除了上述步骤以外还可以包括一系列其他操作。例如在AES中,每一轮加密都包括字节变换(ByteSub)、行移位(ShiftRow)、列混合(MixColumn)、密钥加(AddRoundKey)等。但由于上述以外的步骤与本发明没有直接的相关性,因此在这里省略其说明。
下面,结合附图详细介绍轮密钥的长度为数据的长度的两倍时使用上述规定函数推导轮密钥的过程。图6是用于说明轮密钥的长度为数据的长度的两倍时推导下一轮密钥的示意图。下面,以密钥的长度为256位,并且一个字长为32位(即每一轮密钥包括8个字)为例进行说明。如图6所示,假设第n轮密钥Kn={Wn0,Wn1,Wn2,Wn3,Wn4,Wn5,Wn6,Wn7},则通过以下公式(3)求出第n+1轮密钥Kn+1={W(n+1)0,W(n+1)1,W(n+1)2,W(n+1)3,W(n+1)4,W(n+1)5,W(n+1)6,W(n+1)7}:
W(n+1)0=Wn0⊕g(Wn7)
W(n+1)1=Wn1⊕W(n+1)0
W(n+1)2=Wn2⊕W(n+1)1
W(n+1)3=Wn3⊕W(n+1)2
W(n+1)4=Wn4⊕s(W(n+1)3)
W(n+1)5=Wn5⊕W(n+1)4
W(n+1)6=Wn6⊕W(n+1)5
W(n+1)7=Wn7⊕W(n+1)6……………..(3)
其中,“⊕”为逻辑异或运算符,g(x)可以是AES中定义的g函数,s(x)可以是字节变换函数。应当注意,在本发明中规定函数不限于公式(3),也可以是其他任何函数。
下面,结合附图详细介绍对以图5的方式进行了加密的2N轮加密数据进行解密的过程。图7是用于说明轮密钥的长度为数据的长度的两倍时进行解密的示意图。图7中,第1轮解密数据D2N即图5中的第2N轮加密数据D2N。此时需要使用第N轮密钥KN的第二部分对第1轮解密数据D2N进行解密,从而获得第2轮解密数据D2N-1。应当注意,第2轮解密数据D2N-1可以与在以图5的方式进行加密的过程中得到的第2N-1轮加密数据D2N-1相同,但也可以与第2N-1轮加密数据D2N-1不相同。接下来,使用第N轮密钥KN的第一部分对第2轮解密数据D2N-1进行解密,从而获得第3轮解密数据D2N-2。随后,使用第N-1轮密钥KN-1的第二部分对第3轮解密数据D2N-2进行解密而得到第4轮解密数据D2N-3,并且使用第N-1轮密钥KN-1的第一部分对第4轮解密数据D2N-3进行解密,从而获得第5轮解密数据D2N-4。以此类推,最后使用第1轮密钥K1的第二部分对第2N-1轮解密数据D2进行解密而获得第2N轮解密数据D1,并且使用第1轮密钥K1的第一部分对第2N轮解密数据D1进行解密,从而得到明文数据。
下面,结合附图详细介绍轮密钥的长度为数据的长度的两倍时的数据的解密方法。图8是根据本发明的轮密钥的长度为数据的长度的两倍时的数据的解密方法的流程图。如图8所示,该解密方法包括以下步骤:
首先,存储第N轮密钥(步骤S801)。具体而言,可以首先获取第1轮密钥,并且对第1轮密钥K1迭代适用N-1次规定函数而算出第N轮密钥KN,并且存储该第N轮密钥KN。
接下来,对所述数据进行迭代解密(步骤S802-S811)。具体而言:
在第1轮解密中,首先读取第N轮密钥KN的第二部分(步骤S802),并且使用该第N轮密钥KN的第二部分对第1轮解密数据D2N进行解密,从而得到第2轮解密数据D2N-1(步骤S803)。然后,读取第N轮密钥KN的第一部分(步骤S804),并且使用第N轮密钥KN的第一部分对第2轮解密数据D2N-1进行解密,从而得到第3轮解密数据D2N-2(步骤S805)。随后,基于所述第N轮密钥KN获得第N-1轮密钥KN-1(步骤S806)。以结合图6说明的规定函数为例,能够通过以下公式(4)从第n+1轮密钥Kn+1={W(n+1)0,W(n+1)1,W(n+1)2,W(n+1)3,W(n+1)4,W(n+1)5,W(n+1)6,W(n+1)7}求出第n轮密钥Kn={Wn0,Wn1,Wn2,Wn3,Wn4,Wn5,Wn6,Wn7}:
Wn7=W(n+1)7⊕W(n+1)6
Wn6=W(n+1)6⊕W(n+1)5
Wn5=W(n+1)5⊕W(n+1)4
Wn4=W(n+1)4⊕s(W(n+1)3)
Wn3=W(n+1)3⊕W(n+1)2
Wn2=W(n+1)2⊕W(n+1)1
Wn1=W(n+1)1⊕W(n+1)0
Wn0=W(n+1)0⊕g(Wn7)……………..(4)
这样,能够不通过求出反函数f-1(x)而简单地推导第n轮密钥Kn。
接下来,存储该第N-1轮密钥KN-1(步骤S807)。此时,可以向原先存储第N轮密钥KN的存储地址存储该第N-1轮密钥KN-1,这样,通过每一轮都使用相同的存储地址存储密钥,能够有效节省存储空间。随后,进行第2轮解密。
第2轮解密中,同样重复上述处理:首先读取第N-1轮密钥KN-1的第二部分(步骤S802),并且使用该第N-1轮密钥KN-1的第二部分对第3轮解密数据D2N-2进行解密,从而得到第4轮解密数据D2N-3(步骤S803)。然后,读取第N-1轮密钥KN-1的第一部分(步骤S804),并且使用第N-1轮密钥KN-1的第一部分对第4轮解密数据D2N-3进行解密,从而得到第5轮解密数据D2N-4(步骤S805)。随后,基于所述第N-1轮密钥KN-1获得第N-2轮密钥KN-2(步骤S806)并且存储该第N-2轮密钥KN-2(步骤S807)。随后,进一步进行第3轮解密。
以此类推,直到进行第N-1轮解密结束。此时,存储地址中存储的是第1轮密钥K1。接下来,读取第1轮密钥K1的第二部分(步骤S808),并且使用所述第1轮密钥的第二部分对第2N-1轮解密数据D2N-1进行解密,从而得到第2N轮解密数据D2N(步骤S809)。最后,读取第1轮密钥K1的第一部分(步骤S810),并且使用所述第1轮密钥的第一部分对第2N轮解密数据D2N进行解密,从而得到明文数据(步骤S811)。
然而,在上述每一轮的解密过程中都需要分别使用轮密钥的第一部分和第二部分进行解密。因此,如果仅仅简单地将每一轮密钥存储在与上一轮密钥相同的存储地址,则在解密时需要交替地从该存储地址的不同位置读取轮密钥的第一部分和密钥的第二部分,会导致逻辑复杂而影响性能。
为此,本发明还提供了另一个优选实施例。图9是用于说明根据本发明的优选实施例中密钥的存储情况的示意图。如图9中所示,对于任意的第n+1轮解密,可以将第n+1轮密钥Kn+1的第二部分存储到第一存储地址,并且将第n+1轮密钥Kn+1的第一部分存储到第二存储地址(步骤I)。其中,第一存储地址和第二存储地址可以是两个存储单元(例如两个寄存器),也可以是一个存储单元的两个存储空间。随后,从第一存储地址从第一存储地址读取第n+1轮密钥Kn+1的第二部分,并且使用该轮密钥的第二部分进行解密。随后将第n+1轮密钥Kn+1的第一部分存储到第一存储地址并且将第n+1轮密钥Kn+1的第二部分存储到第二存储地址(步骤II)。这里,也可以使用寄存器移位的方法简单地调换第n+1轮密钥Kn+1的第一部分和第二部分的存储位置。当然,也可以通过逻辑运算或者其他任何方法实现上述存储位置的转换。接下来,从第一存储地址从第一存储地址读取第n+1轮密钥Kn+1的第一部分,并且使用该轮密钥的第一部分进行解密。随后,基于第一存储地址中的第n+1轮密钥Kn+1的第一部分和第二存储地址中的第n+1轮密钥Kn+1的第二部分获取第n轮密钥Kn,并且将第n轮密钥Kn的第二部分存储到第一存储地址,并且将第n+1轮密钥Kn+1的第一部分存储到第二存储地址(步骤III),从而可以进行下一轮解密,以此类推。通过这样的方式,在每一次解密时都从第一存储地址中读取轮密钥的第一部分或者第二部分,因此简化了逻辑处理,能够进一步提高解密效率。
通过上述方法,每一轮密钥都基于上一轮的密钥推导,因此整个解密过程只需要存储一个密钥的存储空间即可,进而节省了存储单元的开销。不仅如此,每一轮密钥只需进行一次运算就能够获得,因此还降低了运行开销。
以上说明了本发明的数据的解密方法的多个实施例。显然,本领域技术人员在不脱离本发明的精神和范围内可以对上述实施例作出各种组合、修改或者变形。本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
【电子设备】
下面,结合附图来详细说明本发明的电子设备。本发明的电子设备能够解密按照如图1的方式通过N轮密钥进行加密得到的数据,其中N为大于等于2的自然数。图10是根据本发明的电子设备的功能框图。如图10所示,电子设备1000包括:存储单元1010以及处理单元1020。其中存储单元1010用于存储轮密钥,处理单元1020用于对数据进行下面详细描述的迭代解密。
下面,详细说明处理单元1020执行的迭代解密的过程。
首先,存储第N轮密钥。具体而言,可以首先获取第1轮密钥,并且对第1轮密钥K1迭代适用N-1次规定函数而算出第N轮密钥KN,并且存储该第N轮密钥KN。
接下来,执行在第1轮解密。在第一轮解密中,首先读取第N轮密钥KN,并且使用该第N轮密钥KN进行解密。随后,基于所述第N轮密钥KN获得第N-1轮密钥KN-1。具体而言,如果能够获得规定函数f(x)的反函数f-1(x),则可以对KN适用该反函数f-1(x)即可获得KN-1。但是有时候规定函数是非常复杂的函数,因此难以获得反函数f-1(x)。以结合图2说明的规定函数为例,公式(1)中除了逻辑异或运算外还存在AES中定义的g函数。然而,g函数中还会涉及到字节变换以及行移位等复杂的操作。在此情况下求出公式(1)的反函数难度很大。此时,由于在异或运算中A⊕B=C等效于A=C⊕B,因此,能够通过以下公式(2)从第n+1轮密钥Kn+1={W(n+1)0,W(n+1)1,W(n+1)2,W(n+1)3}求出第n轮密钥Kn={Wn0,Wn1,Wn2,Wn3}:
Wn3=W(n+1)3⊕W(n+1)2
Wn2=W(n+1)2⊕W(n+1)1
Wn1=W(n+1)1⊕W(n+1)0
Wn0=W(n+1)0⊕g(Wn3)……………..(2)
这样,能够不通过求出反函数f-1(x)而简单地推导第n轮密钥Kn。
接下来,存储该第N-1轮密钥KN-1。此时,可以向原先存储第N轮密钥KN的存储地址存储该第N-1轮密钥KN-1,这样,通过每一轮都使用相同的存储地址存储密钥,能够有效节省存储空间。随后,进行第2轮解密。
第2轮解密中,同样重复上述处理:首先读取第N-1轮密钥KN-1,并且使用该第N-1轮密钥KN-1进行解密。随后,基于所述第N-1轮密钥KN-1获得第N-2轮密钥KN-2并且存储该第N-2轮密钥KN-2。随后,进一步进行第3轮解密。
以此类推,直到进行第N-1轮解密结束。此时,存储地址中存储的是第1轮密钥K1。最后,读取该第1轮密钥K1并且使用该第1轮密钥K1进行解密,从而得到明文数据。
通过上述处理,每一轮密钥都基于上一轮的密钥推导,因此整个解密过程只需要存储一个密钥的存储空间即可,进而节省了存储单元的开销。不仅如此,每一轮密钥只需进行一次运算就能够获得,因此还降低了运行开销。
正如上面所述,通常情况下密钥的长度与数据的长度相等。例如密钥的长度和数据的长度均为128位、192位或者256位。但有时轮密钥的长度可以是数据的长度的两倍,例如密钥的长度为256位,数据的长度为128位。
下面,结合附图详细说明密钥的长度是数据的长度的两倍时使用轮密钥进行加密的过程。密钥的长度为数据的长度的两倍时,每一轮密钥都可以包括第1部分和第2部分,每一个部分可以与数据的长度相等。如图5所示,首先使用第1轮密钥K1的第一部分对明文数据进行加密,从而获得第1轮加密数据D1。接下来,使用第1轮密钥K1的第二部分对第1轮加密数据D1进行加密,从而获得第2轮加密数据D2。随后,对第1轮密钥K1适用规定函数f(x)而获得第2轮密钥K2。再使用第2轮密钥K2的第一部分对第2轮加密数据D2进一步加密,从而获得第3轮加密数据D3。接下来,使用第2轮密钥K2的第二部分对第3轮加密数据D3进行加密,从而获得第4轮加密数据D4。随后,进一步对第2轮密钥K2适用规定函数f(x)而获得第3轮密钥K3,以此类推,一共对明文数据进行2N次迭代加密,从而获得第2N轮加密数据D2N。应当注意,在使用轮密钥进行加密的过程中除了上述步骤以外还可以包括一系列其他操作。例如在AES中,每一轮加密都包括字节变换(ByteSub)、行移位(ShiftRow)、列混合(MixColumn)、密钥加(AddRoundKey)等。但由于上述以外的步骤与本发明没有直接的相关性,因此在这里省略其说明。
下面,结合附图详细介绍轮密钥的长度为数据的长度的两倍时使用上述规定函数推导轮密钥的过程。图6是用于说明轮密钥的长度为数据的长度的两倍时推导下一轮密钥的示意图。下面,以密钥的长度为256位,并且一个字长为32位(即每一轮密钥包括8个字)为例进行说明。如图6所示,假设第n轮密钥Kn={Wn0,Wn1,Wn2,Wn3,Wn4,Wn5,Wn6,Wn7},则通过以下公式(3)求出第n+1轮密钥Kn+1={W(n+1)0,W(n+1)1,W(n+1)2,W(n+1)3,W(n+1)4,W(n+1)5,W(n+1)6,W(n+1)7}:
W(n+1)0=Wn0⊕g(Wn7)
W(n+1)1=Wn1⊕W(n+1)0
W(n+1)2=Wn2⊕W(n+1)1
W(n+1)3=Wn3⊕W(n+1)2
W(n+1)4=Wn4⊕s(W(n+1)3)
W(n+1)5=Wn5⊕W(n+1)4
W(n+1)6=Wn6⊕W(n+1)5
W(n+1)7=Wn7⊕W(n+1)6……………..(3)
其中,“⊕”为逻辑异或运算符,g(x)可以是AES中定义的g函数,s(x)可以是字节变换函数。应当注意,在本发明中规定函数不限于公式(3),也可以是其他任何函数。
下面,结合附图详细介绍对以图5的方式进行了加密的2N轮加密数据进行解密的过程。图7是用于说明轮密钥的长度为数据的长度的两倍时进行解密的示意图。图7中,第1轮解密数据D2N即图5中的第2N轮加密数据D2N。此时需要使用第N轮密钥KN的第二部分对第1轮解密数据D2N进行解密,从而获得第2轮解密数据D2N-1。应当注意,第2轮解密数据D2N-1可以与在以图5的方式进行加密的过程中得到的第2N-1轮加密数据D2N-1相同,但也可以与第2N-1轮加密数据D2N-1不相同。接下来,使用第N轮密钥KN的第一部分对第2轮解密数据D2N-1进行解密,从而获得第3轮解密数据D2N-2。随后,使用第N-1轮密钥KN-1的第二部分对第3轮解密数据D2N-2进行解密而得到第4轮解密数据D2N-3,并且使用第N-1轮密钥KN-1的第一部分对第4轮解密数据D2N-3进行解密,从而获得第5轮解密数据D2N-4。以此类推,最后使用第1轮密钥K1的第二部分对第2N-1轮解密数据D2进行解密而获得第2N轮解密数据D1,并且使用第1轮密钥K1的第一部分对第2N轮解密数据D1进行解密,从而得到明文数据。
下面,详细介绍轮密钥的长度为数据的长度的两倍时处理单元1020执行的解密过程。
首先,存储第N轮密钥。具体而言,可以首先获取第1轮密钥,并且对第1轮密钥K1迭代适用N-1次规定函数而算出第N轮密钥KN,并且存储该第N轮密钥KN。
接下来,在第1轮解密中,首先读取第N轮密钥KN的第二部分,并且使用该第N轮密钥KN的第二部分对第1轮解密数据D2N进行解密,从而得到第2轮解密数据D2N-1。然后,读取第N轮密钥KN的第一部分,并且使用第N轮密钥KN的第一部分对第2轮解密数据D2N-1进行解密,从而得到第3轮解密数据D2N-2。随后,基于所述第N轮密钥KN获得第N-1轮密钥KN-1。以结合图6说明的规定函数为例,能够通过以下公式(4)从第n+1轮密钥Kn+1={W(n+1)0,W(n+1)1,W(n+1)2,W(n+1)3,W(n+1)4,W(n+1)5,W(n+1)6,W(n+1)7}求出第n轮密钥Kn={Wn0,Wn1,Wn2,Wn3,Wn4,Wn5,Wn6,Wn7}:
Wn7=W(n+1)7⊕W(n+1)6
Wn6=W(n+1)6⊕W(n+1)5
Wn5=W(n+1)5⊕W(n+1)4
Wn4=W(n+1)4⊕s(W(n+1)3)
Wn3=W(n+1)3⊕W(n+1)2
Wn2=W(n+1)2⊕W(n+1)1
Wn1=W(n+1)1⊕W(n+1)0
Wn0=W(n+1)0⊕g(Wn7)……………..(4)
这样,能够不通过求出反函数f-1(x)而简单地推导第n轮密钥Kn。
接下来,存储该第N-1轮密钥KN-1。此时,可以向原先存储第N轮密钥KN的存储地址存储该第N-1轮密钥KN-1,这样,通过每一轮都使用相同的存储地址存储密钥,能够有效节省存储空间。随后,进行第2轮解密。
第2轮解密中,同样重复上述处理:首先读取第N-1轮密钥KN-1的第二部分,并且使用该第N-1轮密钥KN-1的第二部分对第3轮解密数据D2N-2进行解密,从而得到第4轮解密数据D2N-3。然后,读取第N-1轮密钥KN-1的第一部分,并且使用第N-1轮密钥KN-1的第一部分对第4轮解密数据D2N-3进行解密,从而得到第5轮解密数据D2N-4。随后,基于所述第N-1轮密钥KN-1获得第N-2轮密钥KN-2并且存储该第N-2轮密钥KN-2。随后,进一步进行第3轮解密。
以此类推,直到进行第N-1轮解密结束。此时,存储地址中存储的是第1轮密钥K1。接下来,读取第1轮密钥K1的第二部分,并且使用所述第1轮密钥的第二部分对第2N-1轮解密数据D2N-1进行解密,从而得到第2N轮解密数据D2N。最后,读取第1轮密钥K1的第一部分,并且使用所述第1轮密钥的第一部分对第2N轮解密数据D2N进行解密,从而得到明文数据。
然而,在上述每一轮的解密过程中都需要分别使用轮密钥的第一部分和第二部分进行解密。因此,如果仅仅简单地将每一轮密钥存储在与上一轮密钥相同的存储地址,则在解密时需要交替地从该存储地址的不同位置读取轮密钥的第一部分和密钥的第二部分,会导致逻辑复杂而影响性能。
为此,本发明还提供了另一个优选实施例。图9是用于说明根据本发明的优选实施例中密钥的存储情况的示意图。如图9中所示,对于任意的第n+1轮解密,可以将第n+1轮密钥Kn+1的第二部分存储到第一存储地址,并且将第n+1轮密钥Kn+1的第一部分存储到第二存储地址(步骤I)。其中,第一存储地址和第二存储地址可以是两个存储单元(例如两个寄存器),也可以是一个存储单元的两个存储空间。随后,从第一存储地址从第一存储地址读取第n+1轮密钥Kn+1的第二部分,并且使用该轮密钥的第二部分进行解密。随后将第n+1轮密钥Kn+1的第一部分存储到第一存储地址并且将第n+1轮密钥Kn+1的第二部分存储到第二存储地址(步骤II)。这里,也可以使用寄存器移位的方法简单地调换第n+1轮密钥Kn+1的第一部分和第二部分的存储位置。当然,也可以通过逻辑运算或者其他任何方法实现上述存储位置的转换。接下来,从第一存储地址从第一存储地址读取第n+1轮密钥Kn+1的第一部分,并且使用该轮密钥的第一部分进行解密。随后,基于第一存储地址中的第n+1轮密钥Kn+1的第一部分和第二存储地址中的第n+1轮密钥Kn+1的第二部分获取第n轮密钥Kn,并且将第n轮密钥Kn的第二部分存储到第一存储地址,并且将第n+1轮密钥Kn+1的第一部分存储到第二存储地址(步骤III),从而可以进行下一轮解密,以此类推。通过这样的方式,在每一次解密时都从第一存储地址中读取轮密钥的第一部分或者第二部分,因此简化了逻辑处理,能够进一步提高解密效率。
通过上述处理,每一轮密钥都基于上一轮的密钥推导,因此整个解密过程只需要存储一个密钥的存储空间即可,进而节省了存储单元的开销。不仅如此,每一轮密钥只需进行一次运算就能够获得,因此还降低了运行开销。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上说明了本发明的电子设备的多个实施例。显然,本领域技术人员在不脱离本发明的精神和范围内可以对上述实施例作出各种组合、修改或者变形。本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
Claims (9)
1.一种数据的解密方法,应用于电子设备,所述数据通过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轮密钥进行解密;
其中,轮密钥的长度是所述数据的长度的两倍,所述轮密钥包括第一部分和第二部分,使用第i轮密钥的第一部分对第2i-1轮加密数据进行加密,使用第i轮密钥的第二部分对第2i轮加密数据进行加密,i为自然数且1≤i≤N。
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所述的解密方法,其中,
所述迭代解密包括:
对于第n轮解密,其中n为自然数并且1≤n≤N-1,进行以下步骤:
读取第N-n+1轮密钥的第二部分;
使用所述第N-n+1轮密钥的第二部分对第2n-1轮解密数据进行解密;
读取第N-n+1轮密钥的第一部分;
使用所述第N-n+1轮密钥的第一部分对第2n轮解密数据进行解密;
基于所述第N-n+1轮密钥获得第N-n轮密钥;
存储所述第N-n轮密钥;以及
当1≤n<N-1时,
进行第n+1轮解密,
当n=N-1时,
读取第1轮密钥的第二部分;
使用所述第1轮密钥的第二部分对第2N-1轮解密数据进行解密;
读取第1轮密钥的第一部分;
使用所述第1轮密钥的第一部分对第2N轮解密数据进行解密。
6.如权利要求5所述的解密方法,其中,
所述存储第N轮密钥包括:
将所述第N轮密钥的第二部分存储到第一存储地址并且将所述第N轮密钥的第一部分存储到第二存储地址,
所述读取第N-n+1轮密钥的第二部分包括:
从所述第一存储地址读取第N-n+1轮密钥的第二部分,
所述使用所述第N-n+1轮密钥的第二部分对第2n-1轮解密数据进行解密后,还包括:
将第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轮密钥的第一部分。
7.一种电子设备,用于对数据进行解密,所述数据通过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轮密钥进行解密;
其中,轮密钥的长度是所述数据的长度的两倍,所述轮密钥包括第一部分和第二部分,使用第i轮密钥的第一部分对第2i-1轮加密数据进行加密,使用第i轮密钥的第二部分对第2i轮加密数据进行加密,i为自然数且1≤i≤N。
8.如权利要求7所述的电子设备,其中,
所述迭代解密包括:
存储第N轮密钥;
对于第n轮解密,其中n为自然数并且1≤n≤N-1,进行以下步骤:
读取第N-n+1轮密钥的第二部分;
使用所述第N-n+1轮密钥的第二部分对第2n-1轮解密数据进行解密;
读取第N-n+1轮密钥的第一部分;
使用所述第N-n+1轮密钥的第一部分对第2n轮解密数据进行解密;
基于所述第N-n+1轮密钥获得第N-n轮密钥;
存储所述第N-n轮密钥;以及
当1≤n<N-1时,
进行第n+1轮解密,
当n=N-1时,
读取第1轮密钥的第二部分;
使用所述第1轮密钥的第二部分对第2N-1轮解密数据进行解密;
读取第1轮密钥的第一部分;
使用所述第1轮密钥的第一部分对第2N轮解密数据进行解密。
9.如权利要求7所述的电子设备,其中,
所述存储单元将所述第N轮密钥的第二部分存储到第一存储地址并且将所述第N轮密钥的第一部分存储到第二存储地址,
所述迭代解密包括:
存储第N轮密钥;
对于第n轮解密,其中n为自然数并且1≤n≤N-1,进行以下处理:
从所述第一存储地址读取第N-n+1轮密钥的第二部分;
使用所述第N-n+1轮密钥的第二部分对第2n-1轮解密数据进行解密;
将第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-1时,
进行第n+1轮解密,
当n=N-1时,
从所述第一存储地址读取第1轮密钥的第二部分;
使用所述第1轮密钥的第二部分对第2N-1轮解密数据进行解密;
将所述第1轮密钥的第一部分存储到所述第一存储地址;
从所述第一存储地址读取第1轮密钥的第一部分;以及
使用所述第1轮密钥的第一部分对第2N轮解密数据进行解密。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510128560.XA CN106027225B (zh) | 2015-03-23 | 2015-03-23 | 数据的解密方法以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510128560.XA CN106027225B (zh) | 2015-03-23 | 2015-03-23 | 数据的解密方法以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106027225A CN106027225A (zh) | 2016-10-12 |
CN106027225B true CN106027225B (zh) | 2019-07-26 |
Family
ID=57082335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510128560.XA Active CN106027225B (zh) | 2015-03-23 | 2015-03-23 | 数据的解密方法以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106027225B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1921382A (zh) * | 2006-09-06 | 2007-02-28 | 华为技术有限公司 | 一种基于aes算法的加解密方法及加解密器 |
CN102647272A (zh) * | 2012-05-02 | 2012-08-22 | 西安电子科技大学 | 256比特位密钥扩展系统及方法 |
CN103516512A (zh) * | 2013-10-21 | 2014-01-15 | 深圳市芯通信息科技有限公司 | 基于aes算法的加解密方法及加解密器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8538015B2 (en) * | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
-
2015
- 2015-03-23 CN CN201510128560.XA patent/CN106027225B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1921382A (zh) * | 2006-09-06 | 2007-02-28 | 华为技术有限公司 | 一种基于aes算法的加解密方法及加解密器 |
CN102647272A (zh) * | 2012-05-02 | 2012-08-22 | 西安电子科技大学 | 256比特位密钥扩展系统及方法 |
CN103516512A (zh) * | 2013-10-21 | 2014-01-15 | 深圳市芯通信息科技有限公司 | 基于aes算法的加解密方法及加解密器 |
Non-Patent Citations (2)
Title |
---|
"Hashing mode using a lightweight blockcipher";KUWAKADO H,HIROSE S;《Cryptography and Coding.Springer Berlin Heidelberg》;20131231;第213-231页 |
"一种新的加密标准AES";单玉峰,潘孟贤;《信息技术》;20021130;第32-35页 |
Also Published As
Publication number | Publication date |
---|---|
CN106027225A (zh) | 2016-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106850221B (zh) | 信息加密、解密方法及装置 | |
CN102138300B (zh) | 消息认证码预计算在安全存储器中的应用 | |
US9031228B2 (en) | Systems and methods for implementing block cipher algorithms on attacker-controlled systems | |
EP2852089B1 (en) | Data protecting apparatus and method thereof | |
EP3014800B1 (en) | Method and apparatus to encrypt plaintext data | |
US9143317B2 (en) | Protecting against white box attacks using column rotation | |
US8718280B2 (en) | Securing keys of a cipher using properties of the cipher process | |
US9565018B2 (en) | Protecting cryptographic operations using conjugacy class functions | |
CN106034021B (zh) | 轻量级双模兼容aes加解密模块及其方法 | |
Abd Ali et al. | Novel encryption algorithm for securing sensitive information based on feistel cipher | |
CN106598882A (zh) | 一种安全的内存数据保护方法及装置 | |
CN108494546A (zh) | 一种白盒加密方法、装置及存储介质 | |
CN113098675B (zh) | 基于多项式完全同态的二进制数据加密系统及方法 | |
CN107257279A (zh) | 一种明文数据加密方法及设备 | |
Saddam et al. | A lightweight image encryption and blowfish decryption for the secure internet of things | |
CN109687966A (zh) | 加密方法及其系统 | |
CN109257176A (zh) | 基于sm2算法的解密密钥分割及解密方法、装置和介质 | |
CN110120867A (zh) | 一种基于量子可逆线路的aes硬件加密系统的实现方法 | |
CN104219045A (zh) | Rc4 流密码生成器 | |
Dawood et al. | Design large symmetric algorithm for securing big data | |
CN106027225B (zh) | 数据的解密方法以及电子设备 | |
Orhanou et al. | Analytical evaluation of the stream cipher ZUC | |
CN106921486A (zh) | 数据加密的方法和装置 | |
Bajaj et al. | AES algorithm for encryption | |
CN110071927B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |