CN116866038A - 动态掩码加密方法及动态掩码加密装置 - Google Patents

动态掩码加密方法及动态掩码加密装置 Download PDF

Info

Publication number
CN116866038A
CN116866038A CN202310853966.9A CN202310853966A CN116866038A CN 116866038 A CN116866038 A CN 116866038A CN 202310853966 A CN202310853966 A CN 202310853966A CN 116866038 A CN116866038 A CN 116866038A
Authority
CN
China
Prior art keywords
mask
round
data
dynamic
sbox
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.)
Pending
Application number
CN202310853966.9A
Other languages
English (en)
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.)
Beijing Zhaoxun Hengda Technology Co ltd
Original Assignee
Beijing Zhaoxun Hengda Technology 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 Beijing Zhaoxun Hengda Technology Co ltd filed Critical Beijing Zhaoxun Hengda Technology Co ltd
Priority to CN202310853966.9A priority Critical patent/CN116866038A/zh
Publication of CN116866038A publication Critical patent/CN116866038A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种动态掩码加密方法及动态掩码加密装置。该加密方法包括:步骤1:输入明文数据P,与初始掩码进行异或计算,得到第一轮数据;步骤2:对第一轮数据添加第一轮加掩掩码,得到第一轮输入数据;步骤3:对第一轮输入数据去除初始掩码,得到第一轮结果数据;步骤4:基于第一轮结果数据进行线性运算;步骤5:添加第二轮加掩掩码,得到第二轮输入数据;步骤6:异或第一轮脱掩掩码以去除第一轮加掩掩码;步骤7:多次重复步骤4~步骤6,得到最后一轮结果数据;步骤8:对最后一轮结果数据添加预设的掩码MASK_F;步骤9:通过异或最后一轮脱掩掩码,得到密文C与变换后的掩码MASK_F的异或结果,或者密文与掩码MASK_F的异或结果。

Description

动态掩码加密方法及动态掩码加密装置
技术领域
本发明涉及一种动态掩码加密方法,同时也涉及相应的动态掩码加密装置,属于信息安全技术领域。
背景技术
对称密码体制加密算法(简称为DES算法)和高级加密标准算法(简称为AES算法)是目前广泛使用的加密算法。其中,AES算法己经被一些国际标准化组织(ISO,IETF,IEEE802.11等)采纳作为国际标准。另一方面,为了保障商用密码的安全性,我国也制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)等。
在这些密码算法中,包含线性运算的典型分组算法包括AES,DES,SM1,SM4,SM7等算法。其中,SM4算法、AES算法、DES算法在计算机和通信系统中广泛应用,发挥了重要作用。其中,如图1(a)和图1(b)所示,DES算法主要包括以下步骤:1.输入64位明文数据,并进行初始变换IP;2.在初始变换IP后,明文数据再被分为左右两部分,每部分32位,以L0,R0表示;3.在密钥的控制下,进行16轮运算(f);4.经过16轮运算后,将左、右两部分交换,并连接在一起,再进行逆变换;5.输出64位密文。
然而,随着保密性的要求越来越高,例如功耗分析技术、侧信道攻击技术的出现,对密码算法实现的安全性提出了更高的防护要求,一旦出现信息泄露,将严重威胁到密码产品的正常使用。因此,需要更加安全保密的密码算法。
发明内容
本发明所要解决的首要技术问题在于提供一种动态掩码加密方法。
本发明所要解决的另一技术问题在于提供一种动态掩码加密装置。
根据本发明实施例的第一方面,提供一种动态掩码加密方法,包括以下步骤:
步骤1:输入明文数据P,与初始掩码进行异或计算,得到第一轮数据;
步骤2:对第一轮数据添加第一轮加掩掩码,得到第一轮输入数据;
步骤3:对第一轮输入数据去除所述初始掩码,得到第一轮结果数据;
步骤4:基于所述第一轮结果数据进行线性运算;
步骤5:添加第二轮加掩掩码,得到第二轮输入数据;
步骤6:异或第一轮脱掩掩码以去除所述第一轮加掩掩码;
步骤7:多次重复步骤4~步骤6,得到最后一轮结果数据;
步骤8:对最后一轮结果数据添加预设的掩码MASK_F;
步骤9:通过异或最后一轮脱掩掩码,得到密文C与变换后的掩码MASK_F的异或结果,或者密文与掩码MASK_F的异或结果。
其中较优地,所述初始掩码、所述掩码MASK_F以及每一轮加掩掩码、每一轮脱掩掩码均为每个时钟周期会动态更新的动态掩码。
其中较优地,如果步骤9中得到密文C与变换后的掩码MASK_F的异或结果,则在步骤9之后还包括去除变换后的掩码MASK_F,以得到密文C;
如果步骤9中得到密文C与掩码MASK_F的异或结果,则在步骤9之后还包括去除掩码MASK_F,以得到密文C;其中,所述密文C是明文数据P的基于包含线性运算的分组密码算法的加密数据。
其中较优地,所述变换后的掩码MASK_F,为DES算法中的经过IP逆变换后的MASK_F;或者经过反序变换后的MASK_F。
其中较优地,所述线性运算中使用的加密Sbox(即mSbox)满足:
mSbox(M⊕E(random0))=N⊕invP(random1⊕random2)
其中,M表示加密Sbox的输入数据,N表示加密Sbox的输出数据,random2,random1,random0为每轮动态加载的随机数,E表示E扩展,invP表示逆P变换。
其中较优地,所述第一轮加掩掩码和所述第一轮脱掩掩码的获得步骤包括:
S21:在每轮运算时,自动获取96bit随机数{random2,random1,random0},其中,random0,random1,random2为32(b)it随机数,这三组32(b)it随机数每个时钟周期会动态更新;
S22:令第一轮加掩掩码Round1_maskin={random1,random0};
S23:令第一轮脱掩掩码Maskout_round1={random0,random2}。其中较优地,在所述步骤3和所述步骤4之间还包括以下步骤:
S4:对第一轮结果数据进行E扩展,然后进行动态加密Sbox,再进行P变换。
其中较优地,在所述步骤5中,添加第二轮加掩掩码之前,先对去初始掩码得到的高位数据L0与第一轮低位数据进行异或计算。
其中较优地,第16轮脱掩掩码Maskout_round16_invip是对第16轮加掩掩码Maskout_round16的IP逆置换。
其中较优地,所述线性运算中使用的加密Sbox满足:
mSbox(M⊕({random3,random2,random1,random0}))=N⊕invShiftRows(invMixColummns({random7,random6,random5,random4})),
其中,M表示加密Sbox的输入数据,N表示Sbox的输出数据,invShiftRows表示逆ShiftRows变换,invMixColummns表示逆MixColummns变换,random7,random6,random5,random4,random3,random2,random1,random0为每轮动态更新的随机数。
其中较优地,所述步骤4中的线性运算包括对所述第一轮结果数据进行动态加密Sbox,经行移位和列混合以后,添加第一轮轮密钥。
其中较优地,所述线性运算中使用的加密Sbox满足:
mSbox(M⊕(random2⊕random1⊕random0))=N⊕random4
其中,random4,random2,random1,random0为每轮动态加载的随机数,M表示加密Sbox的输入数据,N表示加密Sbox的输出数据。
其中较优地,所述变换后的掩码MASK_F是掩码MASK_F经过反序变换得到的。
根据本发明实施例的第二方面,提供一种动态掩码加密装置,其特征在于包括处理器和存储器;所述存储器用于存储计算机程序,当该计算机程序被所述处理器执行时,实现上述的动态掩码加密方法。
与现有技术相比较,本发明利用动态加密Sbox对输入输出数据实现掩码保护。而且,在密码算法的每轮计算中均利用动态更新的随机数实现动态掩码保护,使得整个算法过程均有掩码保护。因此,显著提高了保密性,可以保障数据安全。
附图说明
图1(a)为现有技术中的DES算法整体流程示意图;
图1(b)为图1(a)中的部分流程示意图;
图2(a)和图2(b)为本发明第一实施例中,在DES算法中应用的动态掩码加密方法的示意图;
图3为本发明第二实施例中,在AES算法中应用的动态掩码加密方法的示意图;
图4为本发明第二实施例中,动态掩码生成示意图;
图5为本发明第三实施例中,在SM4算法中应用的动态掩码加密方法的示意图;
图6为本发明第三实施例中,动态掩码生成示意图;
图7为本发明第四实施例中,动态掩码加密装置的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容进行详细具体的说明。
本发明实施例中的整体技术构思是在每一轮轮计算后,首先添加下一轮运算的掩码,然后在下一轮计算开始时去除上一轮的掩码,然后在Sbox(S盒)x中利用动态加密Sbox,对动态加密Sbox输入输出数据保持掩码保护。因此,在每轮计算中均有掩码保护,而且利用动态更新的随机数实现动态掩码保护。
(第一实施例)
如图2(a)和图2(b)所示,本发明第一实施例提供的动态掩码加密方法,至少包括以下步骤。
S1:输入明文数据P,与初始掩码进行异或计算后,得到第一轮数据,并进行初始变换(IP)。
初始掩码MASK_D为64位的掩码。即,初始掩码来自64位随机数寄存器,该64位随机数寄存器每个时钟周期动态更新,与64位的明文数据(P)进行异或计算,得到64位的初始掩码后数据P⊕MASK_D,写入寄存器。然后对初始掩码后数据进行初始变换,得到第一轮数据。
初始变换(Initialpermutation,简称为IP)的操作,与标准的DES算法中的相同,利用变换表进行。
S2:利用异或计算,对第一轮数据添加第一轮加掩掩码Round1_maskin,得到第一轮输入数据,其高32(b)it为高位数据L0,低32(b)it为低位数据R0。
第一轮掩码Round1_maskin为64bit,与64bit的第一轮数据进行异或计算,将结果(第一轮加掩后数据)锁存到LR寄存器,得到L0和R0。
第一轮加掩掩码Round1_maskin和第一轮脱掩掩码的获得步骤包括:
S21:在每轮运算时,自动获取96bit随机数{random2,random1,random0}。
其中,random0,random1,random2为32(b)it随机数,这三组32(b)it随机数每个时钟周期会动态更新。
S22:令第一轮加掩掩码Round1_maskin={random1,random0}。
S23:令第一轮脱掩掩码Maskout_round1={random0,random2}。
由于在DES算法的轮运算中,输入的低32(b)it数据(低位数据)不经过运算而直接交换到高32(b)it(高位数据),因此第一轮的轮运算结果的高32(b)it的脱掩掩码就是random0,令第一轮运算结果中的低32(b)it脱掩掩码是random2,则第一轮数据的脱掩掩码,即第一轮脱掩掩码Maskout_round1={random0,random2}。
S3:将第一轮输入数据与初始变换后的初始掩码MASK_D,进行异或计算,以消除初始掩码MASK_D,得到第一轮结果数据。
第一轮输入数据的高位数据L0(高32(b)it数据)和低位数据R0(低32(b)it数据),与初始变换后的初始掩码MASK_D的高32(b)it和低32(b)it进行异或。具体而言,将L0的32位数据与初始变换后的初始掩码MASK_D的32位高位进行异或计算,对L0去除初始掩码MASK_D,得到去初始掩码的高位数据。将R0的32位数据与初始变换后的初始掩码MASK_D的32位低位进行异或计算,对R0去除初始掩码MASK_D,得到去初始掩码的低位数据。
S4:对第一轮结果数据进行E扩展,然后进行动态加密Sbox,再进行P变换。
结合图2(a)和2(b)所示,本步骤进一步包括以下子步骤。
S41:对去初始掩码得到的第一轮结果数据的低位32位数据进行E扩展;
S42:加入subkey1轮密钥;
S43:进行动态加密Sbox变换;
S44:进行P变换,得到第一轮低位数据。
在此,E扩展就是DES算法中将32位的去初始掩码的低位数据,扩展为48位数据。E扩展、Sbox变换和P变换的操作均与标准DES算法中相同,但是在本发明实施例中,由于E扩展之前在步骤S2中已加入掩码,所以在此仅单独讨论掩码的加掩和脱掩,其余内容则不予赘述。
在步骤S2中,对第一轮输入数据加入了第一轮加掩掩码Round1_maskin,并且在步骤S3中已去除初始掩码MASK_D,所以在第一轮结果数据中仅加入了加掩掩码Round1_maskin。
因此,在本发明的一个实施例中,第一轮输入数据已加入了加掩掩码Round1_maskin,并且加掩掩码Round1_maskin={random1,random0},则第一轮计算结果的低32(b)it的掩码是random0;高32(b)it的掩码是random1。
参考图2(a)和图2(b),具体操作如下。
第一轮输入数据的高32(b)it(L0)去除初始掩码MASK_D之后,得到的第一轮结果数据的高32(b)it,其掩码是MASK_L=random1;第一轮输入数据的低32(b)it(R0)去除初始掩码MASK_D之后,得到的第一轮结果数据的低32(b)it,其掩码是MASK_R=random0。这是因为第一轮输入数据已加入加掩掩码Round1_maskin={random1,random0}。
针对第一轮结果数据的低32(b)it,其掩码是MASK_R=random0,E扩展为48bit之后,掩码变成E(random0),经过subkey1轮密钥添加后掩码不变,故,掩码仍然是MASK_A=E(random0)。
然后,在进行加密Sbox(即mSbox)变换时,需要满足以下条件:
Sbox的输入带有48bit的掩码MASK_A=E(random0),输出带有的32(b)it的掩码MASK_B=invP(random1⊕random2),其中,invP表示P逆变换。
接着,加密Sbox变换输出的数据带有的掩码为MASK_B=invP(random1⊕random2),通过P变换,数据带有的掩码为MASK_C=MASK_L⊕Maskout_round1[31:0]=random1⊕random2。
S5:对去初始掩码得到的高位数据L0与第一轮低位数据进行异或计算,并加第二轮掩码Round2_maskin,得到第二轮输入数据,锁存到LR寄存器。
在此,将带有掩码MASK_L的第一轮结果数据中的高32(b)it,与带有掩码的MASK_C的数据进行异或,并加入第二轮加掩掩码Round2_maskin,得到第二轮输入数据L1和R1。
S6:对第二轮输入数据中的高位数据L1异或第一轮脱掩掩码Maskout_round1的高位数据,得到第一轮脱掩的高位数据;对第二轮输入数据中的低位数据R1异或第一轮脱掩掩码Maskout_round1的低位数据,得到第一轮脱掩的低位数据。
根据标准的DES算法,第一轮运算结果的低32(b)it是由第一轮输入数据的高32(b)it和低32(b)it的轮运算结果异或生成的;第一轮运算结果的高32(b)it是由第一轮输入数据的低32(b)it直接得到。
S7:对去第一轮掩码的低位数据进行E扩展、加密Sbox变换及P变换,得到第二轮低位数据。
S8:将去第一轮掩码的高位数据和第二轮低位数据进行异或计算,并加第三轮掩码Round3_maskin,得到第二轮输出数据,锁存到LR寄存器。
S9:在密钥的控制下,重复步骤S5到S7,进行共16轮运算。
S10:在最后1轮(第16轮)轮运算后,加入掩码MASK_F,随后进行IP逆变换;
S11:IP逆变换计算结束后,异或Maskout_round16_invip,以消除第16轮轮计算中最后一轮加掩掩码Round16_maskin经过轮运算和IP逆变换后对应的掩码,在结果寄存器中保存明文结果和经过IP逆变换后的MASK_F异或的结果(64位密文)。
第16轮脱掩掩码Maskout_round16_invip是对第16轮加掩掩码Maskout_round16的IP逆变换。
S12:在读取结果寄存器时,在总线上对密文进行脱掩码(去除MASK_F经过IP逆置换的MASK_F_INVIP),得到密文C。
密文C是明文数据P的基于包含线性运算的分组密码算法的加密数据。在本发明的一个实施例中,密文C是明文数据P的基于DES算法的加密数据。
下面解释本发明实施例中,加掩码和脱掩码的工作原理:
第一轮输入数据的低32(b)it的掩码是MASK_L=random0,第一轮输入数据的高32(b)it去除MASK_D之后的掩码是MASK_L=random1。
因此P变换后的数据带有的掩码MASK_C=MASK_L⊕Maskout_round1[31:0]=random1⊕random2。
因此Sbox变换之后数据带有的掩码MASK_B=invP(MASK_C)=invP(random1⊕random2),即MASK_C的逆P变换。
如图2(a)和图2(b)所示,第一轮输入数据的低32(b)it在E扩展之前带有的掩码是MASK_R=random0,经过E扩展后带有的掩码变成E(random0)。经过subkey1轮密钥加后掩码不变,掩码MASK_A=E(random0)。
因为标准DES算法的标准Sbox中,Sbox(M)=N,M表示Sbox的输入数据,N表示Sbox的输出数据。
则本发明实施例中的加密Sbox(即mSbox)满足:
mSbox(M⊕MASK_A)=N⊕MASK_B (1)
其中,MASK_A表示加密Sbox的输入数据的掩码;MASK_B表示加密Sbox的输出数据的掩码。
上述公式(1)也可表示为:
mSbox(M⊕E(random0))=N⊕invP(random1⊕random2) (2)
其中,random2,random1,random0为每轮动态加载的随机数,MASK_B=invP(random1⊕random2),M表示加密Sbox的输入数据,N表示加密Sbox的输出数据。
根据公式(2)可知,加密Sbox的输入带有48bit的掩码MASK_A=E(random0),输出带有32(b)it的掩码MASK_B=invP(random1⊕random2)。
因为第一轮脱掩掩码Maskout_round1={random0,random2},为了在第二轮轮计算中对第一轮输出数据(L1和R1)中的第一轮加掩掩码进行脱掩,所以在第一轮输出数据(L1和R1)中的带有的掩码MASK_C只能是random1⊕random2,所以P变换之前的(即加密Sbox变换后的)数据带有的掩码MASK_B=invP(MASK_C)=invP(random1⊕random2),即MASK_C的逆P变换。
换言之,令MASK_B=invP(random1⊕random2),才能保证在第二轮轮计算时通过加入第一轮脱掩掩码Maskout_round1={random0,random2}来去除第一轮加掩掩码Round1_maskin。
由于对于E(random0)和invP(random1⊕random2)均可以推倒出来,因此本发明利用加密Sbox,对真实的输出N添加invP(random1⊕random2)掩码保护,以保证整个轮运算过程中的数据均有掩码保护。由此可见,本发明利用动态掩码机制,可以提供更高的数据安全性,在金融、通信、公共安全等领域均可以得到广泛应用。
(第二实施例)
本发明第二实施例提供上述动态掩码加密方法在AES算法中的应用。
AES128加密算法的轮函数主要包含4种运算,但不同的运算轮所做的具体运的算组合并不相同。主要区别是初始轮(Round0)和最后一轮(RoundNr),所有中间轮的运算都是相同的,会依次进行4种运算,即:字节代换(SubByte),行移位(ShiftRow),列混合(MixColumn)以及轮密钥加(AddRoundKey)。
参见图3,本发明实施例中的动态掩码加密方法包括以下步骤。
S51:将明文数据P,与初始掩码(MASK_D)的异或的结果,得到第一轮数据。
在写入数据寄存器时,将128位的明文数据P,与初始掩码(MASK_D)的异或的结果P⊕MASK_D,作为第一轮数据。
S52:利用异或计算,对第一轮数据添加第一轮加掩掩码Round1_maskin,得到第一轮输入数据。
对第一轮数据异或轮密钥subkey0,然后再添加第一轮加掩掩码Round1_maskin,将结果锁存到X0寄存器。
S53:将第一轮输入数据与初始掩码MASK_D进行异或计算,用于消去此前添加的MASK_D掩码,得到第一轮结果数据。
S54:对第一轮结果数据进行动态加密Sbox,经行移位和列混合以后,添加第一轮轮密钥subkey1。
Sbox是固定查询表,可知逆S盒也是16x16的固定查询表。S盒是由一个有限域GF(256)上的乘法求逆并串联线性仿射变换所构造出来的。因其运算复杂,大部分的AES算法实现直接使用了查询表,但查询表的方式并不适合所有场景,如遇到不能使用查询表的场景(如硬件存储限制),则要实现与S盒替换等价的运算逻辑。
对第一轮结果数据进行动态加密Sbox,经行移位和列混合以后,添加第一轮轮密钥subkey1,完成第1轮轮计算。
S55:第1轮轮计算结束后,加入第二轮加掩掩码Round2_maskin得到第一轮输出数据,锁存到X1寄存器。
S56:去除第一轮掩码,并进行加密Sbox变换,经行移位和列混合以后,添加第二轮轮密钥subkey2,得到第一轮输出数据。
S57:第2轮运算开始时,对第一轮输出数据异或第一轮脱掩掩码Maskout_round1,用于消除第一轮加掩掩码Round1_maskin经过轮运算后对真实结果增加的掩码。以此类推,重复进行共10轮轮计算。
具体而言,第2轮轮计算结束后,加入第三轮加掩掩码Round3_maskin;并且在第3轮轮计算开始时,异或第二轮脱掩掩码Maskout_round2,以此类推。在第10轮开始时,异或第九轮脱掩掩码Maskout_round9,用于消除第9轮中的第九轮加掩掩码Round9_maskin。在第10轮轮计算结束后,加入掩码MASK_F,得到第十轮输出数据(X10),锁存到X10寄存器;
对第十轮输出数据(X10)异或第十轮脱掩掩码Maskout_round10,以消除第10轮轮计算中的第十轮加掩掩码Round10_maskin。因此,在结果寄存器中保存的是密文和掩码MASK_F异或的结果。
S58:读取结果寄存器时,在总线上对加密的结果进行脱掩(去除预设的掩码MASK_F),从而读到真实的结果。
下面结合图4,解释本发明实施例中加掩码和脱掩码的原理。
首先,以第一轮计算为例,说明加掩掩码maskin和脱掩掩码maskout是如何确定的。
在AES算法中的10轮轮计算中,每轮运算时分别获取256bit的随机数{random7,random6,random5,random4,random3,random2,random1,random0},其中,random0,random1,random2,random3,random4,random5,random6,random7分别为32(b)it的随机数。这8组32(b)it随机数中,每个时钟周期会动态更新。令第一轮加掩掩码Round1_maskin={random3,random2,random1,random0},令第一轮数据的脱掩掩码(第一轮脱掩掩码)Maskout_round1={random7,random6,random5,random4}。即,第一轮加掩掩码为256bit的随机数中的128bit的低位;第一轮数据的脱掩掩码为256bit的随机数中的128bit的高位。
由于第一轮脱掩掩码Maskout_round1={random7,random6,random5,random4},已和与轮密钥subkey1异或不会改变掩码,因此从第一轮脱掩掩码可以倒推出:在MixColums后的数据具有的掩码依然是Maskout_round1。
进一步,再倒推出在ShifRows后的数据具有的掩码是MASK_C=invMixColumns(Maskout_round1)=invMixColumns(random7,random6,random5,random4),即MASK_C为第一轮脱掩掩码Maskout_round1的逆MixColumns变换。
再进一步,可以倒推出,在加密Sbox变换之后的数据带有的掩码MASK_B=invShifRows(MASK_C)=invShiftRows(invMixColummns({random7,random6,random5,random4})),即MASK_B为MASK_C的逆ShifRows变换。
由于第一轮输入数据在加密Sbox变换之前没有任何改变第一轮加掩掩码的操作,因此第一轮输入数据的脱掩掩码MASK_A仍然是第一轮加掩掩码Round1_maskin=MASK_A={random3,random2,random1,random0}。
此时,加密Sbox的输入数据为带有128bit的掩码MASK_A={random3,random2,random1,random0},加密Sbox输出数据一共带有128bit的掩码MASK_B=invShifRows(MASK_C)=invShiftRows(invMixColummns({random7,random6,random5,random4}))。
对于满足AES算法的标准SboxSbox若有,Sbox(M)=N,则该加密SboxmSbox满足:mSbox(M⊕MASK_A)=N⊕MASK_B,也可表示为:
mSbox(M⊕({random3,random2,random1,random0}))=N⊕invShiftRows(invMixColummns({random7,random6,random5,random4})),其中random7,random6,random5,random4,random3,random2,random1,random0为每轮动态更新的随机数。M表示加密Sbox的输入数据,N表示加密Sbox的输出数据。
对于({random3,random2,random1,random0})和invShiftRows(invMixColummns({random7,random6,random5,random4}))可分别通过随机数寄存器和推倒得出,因此本发明的加密SboxmSbox,对真实的输出数据N添加invShiftRows(invMixColummns({random7,random6,random5,random4}))掩码保护,这样可以保证整个轮运算中间数据均有每轮动态更新的掩码保护。
(第三实施例)
本发明第三实施例提供上述动态掩码加密方法在SM4算法中的应用。
如图5所示,本发明实施例中的动态掩码加密方法,包括如下步骤。
S61:输入明文数据P,与初始掩码进行异或计算,得到第一轮数据,写入寄存器。
具体地,将明文数据P和掩码MASK_D的异或计算的结果写入寄存器。
S62:利用异或计算,对第一轮数据添加第一轮加掩掩码Round1_maskin,得到第一轮输入数据。
对第一轮数据(P⊕MASK_D的计算结果)添加第一轮加掩掩码Round1_maskin,并锁存到{X0,X1,X2,X3}寄存器。
S63:将第一轮输入数据与初始掩码MASK_D,进行异或计算,以消除初始掩码MASK_D,得到第一轮结果数据。
S64:第1轮轮计算结束后,对第一轮结果数据加入第二轮加掩掩码Round2_maskin得到第一轮输出数据,锁存到寄存器。
第1轮轮计算结束后,对第一轮结果数据异或第二轮加掩掩码Round2_maskin,以加入第2轮的轮掩码,然后锁存到{X1,X2,X3,X4}寄存器。
S65:在第2轮轮计算开始时,对第一轮输出数据异或第一轮脱掩掩码Maskout_round1,用于消除第1轮运算中第一轮加掩掩码Round1_maskin经过轮运算后对真实结果增加的掩码。
在第2轮轮计算结束后,加入第3轮的轮掩码(第三轮加掩掩码Round3_maskin);并且在第3轮轮计算开始时,异或第二轮脱掩掩码Maskout_round2,以此类推,重复进行共32轮轮计算。
在最后1轮(第32轮)轮计算开始时异或前一轮的脱掩掩码Maskout_round31,用于消除前一轮中的加掩掩码Round31_maskin经过轮运算后对真实结果增加的掩码。
S66:在最后1轮(第32轮)轮计算结束后,加入掩码预设的MASK_F,得到的结果锁存到{X32,X33,X34,X35}寄存器。
S67:反序变换后,异或Maskout_round32_inv,以消除最后一轮加掩掩码Round32_maskin经过轮运算和反序变换后对应的掩码,在结果寄存器中保存明文结果和经过反序变换后的MASK_F异或的结果。
对{X32,X33,X34,X35}反序变换后得到{X35,X34,X33,X32},对{X35,X34,X33,X32}异或Maskout_round32_inv,以消除在最后1轮(第32轮)中最后一轮加掩掩码Round32_maskin经过轮运算和反序变换后对应的掩码。因此,在结果寄存器中保存的是明文结果和经过反序变换的MASK_F异或的结果。
最后一轮脱掩掩码Maskout_round32_inv是对Maskout_round32的反序变换。
S68:读取结果寄存器时,在总线上对加密的结果进行脱掩(去除MASK_F经过反序变换的MASK_F_inv),从而读到真实的结果(密文C)。
下面结合图5和图6,具体说明本发明实施例中加掩码和脱掩码的工作原理:
首先,以第一轮计算为例,说明加掩掩码maskin和脱掩掩码maskout是如何确定的。
在SM4算法中的32轮轮计算中,每轮轮计算时均获取160bit随机数{random4,random3,random2,random1,random0},其中,random0,random1,random2,random3,random4均为32(b)it随机数。这5组32(b)it随机数每个时钟周期会动态更新。在此,令第一轮加掩掩码Round1_maskin={random3,random2,random1,random0}。由于在SM4算法中,每次轮运算中输入的31-0位数据不经过运算就直接交换到63-32位,63-32位数据不经过运算就直接交换到95-64位,并且95-64位数据不经过运算就直接交换到127-96位,因此第一轮的轮运算结果中的127-96位的脱掩掩码就是Maskout_round1[127:96]=random2,95-64位的脱掩掩码就是Maskout_round1[95:64]=random1,63-32位的脱掩掩码就是Maskout_round1[64:32]=random0。
令第一轮运算结果中的低位(低32(b)it)脱掩掩码Maskout_round1[31:0]=random3⊕L(random4),其中L变换是SM4算法标准中的L变换,满足C=L(B)=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24),则第一轮脱掩掩码Mask_round1={random2,random1,random0,random3⊕L(random4)}。
第一轮结果数据中的31-0位是由第一轮输入数据的127-96位和轮运算结果的31-0位异或生成的,第一轮结果数据的31-0位的掩码是random3⊕L(random4),第一轮输入数据的127-96位去除MASK_D之后的掩码是random3,因此L变换后的数据带有的掩码MASK_C=random3⊕Maskout_round1[31:0]=L(random4)。
因此,加密Sbox变换之后数据带有的掩码MASK_B=invL(MASK_C)=invL(L(random4))=random4,即MASK_C的逆L变换。
第一轮输入数据的95-64位带有的掩码是random2,63-32位带有的掩码是random1,31-0位带有的掩码是random0,数据95-64位和63-32位和31-0位异或后的结果带有的掩码是(random2⊕random1⊕random0)。经过subkey1轮密钥加后掩码不变,掩码仍然是MASK_A=(random2⊕random1⊕random0)。
此时,加密Sbox的输入带有的掩码MASK_A=random2⊕random1⊕random0,输出带有的掩码MASK_B=random4。
因为SM4算法的标准Sbox满足Sbox(M)=N,所以SM4算法的加密mSbox满足:
mSbox(M⊕MASK_A)=N⊕MASK_B,也可表示为:
mSbox(M⊕(random2⊕random1⊕random0))=N⊕random4,其中random4,random2,random1,random0为每轮动态加载的随机数,M表示加密Sbox的输入数据,N表示加密Sbox的输出数据。
由于random2⊕random1⊕random0和random4可以分别通过推倒和从随机数寄存器得到,因此本发明利用加密Sbox,对真实的输出N添加random4掩码动态保护,保证整个轮运算的中间数据均有掩码保护,从而提高了保密性。
第四实施例
基于上述动态掩码加密方法,本发明第四实施例提供一种动态掩码加密装置。如图7所示,该动态掩码加密装置包括一个或多个处理器和存储器。其中,存储器与处理器耦接,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上述实施例中的动态掩码加密方法。
其中,处理器用于控制该动态掩码加密装置的整体操作,以完成上述动态掩码加密方法的全部或部分步骤。该处理器模块可以是中央处理器(CPU)、图形处理器(GPU)、现场可编程逻辑门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理(DSP)芯片等。存储器用于存储各种类型的数据以支持在该动态掩码加密装置的操作,这些数据例如可以包括用于在该动态掩码加密装置上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器模块可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、快闪存储器等。
综上所述,本发明提供的动态掩码加密方法及动态掩码加密装置利用动态加密Sbox对输入输出数据实现掩码保护。而且,在密码算法的每轮计算中均利用动态更新的随机数实现动态掩码保护,使得整个算法过程均有掩码保护。因此,显著提高了保密性,可以保障数据安全。
需要说明的是,上述多个实施例只是举例,各个实施例的技术方案之间可以进行组合,均在本发明的保护范围内。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
上面对本发明所提供的动态掩码加密方法及动态掩码加密装置进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质内容的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。

Claims (14)

1.一种动态掩码加密方法,其特征在于包括以下步骤:
步骤1:输入明文数据P,与初始掩码进行异或计算,得到第一轮数据;
步骤2:对第一轮数据添加第一轮加掩掩码,得到第一轮输入数据;
步骤3:对第一轮输入数据去除所述初始掩码,得到第一轮结果数据;
步骤4:基于所述第一轮结果数据进行线性运算;
步骤5:添加第二轮加掩掩码,得到第二轮输入数据;
步骤6:异或第一轮脱掩掩码以去除所述第一轮加掩掩码;
步骤7:多次重复步骤4~步骤6,得到最后一轮结果数据;
步骤8:对最后一轮结果数据添加预设的掩码MASK_F;
步骤9:通过异或最后一轮脱掩掩码,得到密文C与变换后的掩码MASK_F的异或结果,或者密文与掩码MASK_F的异或结果。
2.如权利要求1所述的动态掩码加密方法,其特征在于:
所述初始掩码、所述掩码MASK_F以及每一轮加掩掩码、每一轮脱掩掩码均为每个时钟周期动态更新的动态掩码。
3.如权利要求2所述的动态掩码加密方法,其特征在于:
如果步骤9中得到密文C与变换后的掩码MASK_F的异或结果,则在步骤9之后还包括去除变换后的掩码MASK_F,以得到密文C;
如果步骤9中得到密文C与掩码MASK_F的异或结果,则在步骤9之后还包括去除掩码MASK_F,以得到密文C;其中,
所述密文C是明文数据P的基于包含线性运算的分组密码算法的加密数据。
4.如权利要求1或3所述的动态掩码加密方法,其特征在于:
所述变换后的掩码MASK_F,为DES算法中的经过IP逆变换后的MASK_F;或者经过反序变换后的MASK_F。
5.如权利要求1或2所述的动态掩码加密方法,其特征在于:
所述线性运算中使用的加密Sbox满足:
mSbox(M⊕E(random0))=N⊕invP(random1⊕random2),
其中,M表示加密Sbox的输入数据,N表示加密Sbox的输出数据,random2,random1,random0为每轮动态加载的随机数,E表示E扩展,invP表示逆P变换。
6.如权利要求5所述的动态掩码加密方法,其特征在于所述第一轮加掩掩码和所述第一轮脱掩掩码的获得步骤包括:
S21:在每轮运算时,自动获取96bit随机数{random2,random1,random0},其中,random0,random1,random2为32(b)it随机数,这三组32(b)it随机数每个时钟周期会动态更新;
S22:令第一轮加掩掩码Round1_maskin={random1,random0};
S23:令第一轮脱掩掩码Maskout_round1={random0,random2}。
7.如权利要求6所述的动态掩码加密方法,其特征在于在所述步骤3和所述步骤4之间还包括以下步骤:
S4:对第一轮结果数据进行E扩展,然后进行动态加密Sbox,再进行P变换。
8.如权利要求7所述的动态掩码加密方法,其特征在于:
在所述步骤5中,添加第二轮加掩掩码之前,先对去初始掩码得到的高位数据L0与第一轮低位数据进行异或计算。
9.如权利要求8所述的动态掩码加密方法,其特征在于:
第16轮脱掩掩码Maskout_round16_invip是对第16轮加掩掩码Maskout_round16的IP逆置换。
10.如权利要求1~3中任意一项所述的动态掩码加密方法,其特征在于所述线性运算中使用的加密Sbox满足:
mSbox(M⊕({random3,random2,random1,random0}))=N⊕invShiftRows(invMixColummns({random7,random6,random5,random4})),
其中,M表示加密Sbox的输入数据,N表示Sbox的输出数据,invShiftRows表示逆ShiftRows变换,invMixColummns表示逆MixColummns变换,random7,random6,random5,random4,random3,random2,random1,random0为每轮动态更新的随机数。
11.如权利要求8所述的动态掩码加密方法,其特征在于:
所述步骤4中的线性运算,包括对所述第一轮结果数据进行动态加密Sbox,经行移位和列混合以后,添加第一轮轮密钥。
12.如权利要求1~3中任意一项所述的动态掩码加密方法,其特征在于所述线性运算中使用的加密Sbox满足:
mSbox(M⊕(random2⊕random1⊕random0))=N⊕random4,
其中,random4,random2,random1,random0为每轮动态加载的随机数,M表示加密Sbox的输入数据,N表示加密Sbox的输出数据。
13.如权利要求12所述的动态掩码加密方法,其特征在于:
所述变换后的掩码MASK_F是掩码MASK_F经过反序变换得到的。
14.一种动态掩码加密装置,其特征在于包括处理器和存储器;所述存储器用于存储计算机程序,当该计算机程序被所述处理器执行时,实现权利要求1~13中任意一项所述的动态掩码加密方法。
CN202310853966.9A 2023-07-12 2023-07-12 动态掩码加密方法及动态掩码加密装置 Pending CN116866038A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310853966.9A CN116866038A (zh) 2023-07-12 2023-07-12 动态掩码加密方法及动态掩码加密装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310853966.9A CN116866038A (zh) 2023-07-12 2023-07-12 动态掩码加密方法及动态掩码加密装置

Publications (1)

Publication Number Publication Date
CN116866038A true CN116866038A (zh) 2023-10-10

Family

ID=88233724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310853966.9A Pending CN116866038A (zh) 2023-07-12 2023-07-12 动态掩码加密方法及动态掩码加密装置

Country Status (1)

Country Link
CN (1) CN116866038A (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196965A (zh) * 2006-12-07 2008-06-11 上海安创信息科技有限公司 防攻击高级加密标准的加密芯片的算法
KR20090079664A (ko) * 2008-01-18 2009-07-22 고려대학교 산학협력단 아리아 마스킹 방법 및 이를 이용한 아리아 암호 장치 및방법
CN102983964A (zh) * 2012-12-28 2013-03-20 大唐微电子技术有限公司 一种抗差分功耗分析的数字加密标准改进方法及装置
CN104683095A (zh) * 2013-11-29 2015-06-03 上海复旦微电子集团股份有限公司 一种des加密方法和装置
CN104753665A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码轮函数输出的侧信道能量攻击方法
US20150222423A1 (en) * 2012-09-04 2015-08-06 Morpho Protection against side channels
US20170288855A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Power side-channel attack resistant advanced encryption standard accelerator processor
CN107800530A (zh) * 2017-11-28 2018-03-13 聚辰半导体(上海)有限公司 一种sms4的s盒掩码方法
CN107872317A (zh) * 2016-09-28 2018-04-03 北京同方微电子有限公司 一种用于aes密钥扩展的随机掩码方法及其装置
CN108173642A (zh) * 2018-03-21 2018-06-15 电子科技大学 一种抗高阶差分功耗攻击的aes硬件实现方法
US20200125333A1 (en) * 2017-06-28 2020-04-23 Thales Dis France Sa Method for securing a cryptographic process with sbox against high-order side-channel attacks
US20200412523A1 (en) * 2019-06-26 2020-12-31 Cryptography Research, Inc. Platform neutral data encryption standard (des) cryptographic operation

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101196965A (zh) * 2006-12-07 2008-06-11 上海安创信息科技有限公司 防攻击高级加密标准的加密芯片的算法
KR20090079664A (ko) * 2008-01-18 2009-07-22 고려대학교 산학협력단 아리아 마스킹 방법 및 이를 이용한 아리아 암호 장치 및방법
US20150222423A1 (en) * 2012-09-04 2015-08-06 Morpho Protection against side channels
CN102983964A (zh) * 2012-12-28 2013-03-20 大唐微电子技术有限公司 一种抗差分功耗分析的数字加密标准改进方法及装置
CN104683095A (zh) * 2013-11-29 2015-06-03 上海复旦微电子集团股份有限公司 一种des加密方法和装置
CN104753665A (zh) * 2015-03-19 2015-07-01 成都信息工程学院 一种针对sm4密码轮函数输出的侧信道能量攻击方法
US20170288855A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Power side-channel attack resistant advanced encryption standard accelerator processor
CN107872317A (zh) * 2016-09-28 2018-04-03 北京同方微电子有限公司 一种用于aes密钥扩展的随机掩码方法及其装置
US20200125333A1 (en) * 2017-06-28 2020-04-23 Thales Dis France Sa Method for securing a cryptographic process with sbox against high-order side-channel attacks
CN107800530A (zh) * 2017-11-28 2018-03-13 聚辰半导体(上海)有限公司 一种sms4的s盒掩码方法
CN108173642A (zh) * 2018-03-21 2018-06-15 电子科技大学 一种抗高阶差分功耗攻击的aes硬件实现方法
US20200412523A1 (en) * 2019-06-26 2020-12-31 Cryptography Research, Inc. Platform neutral data encryption standard (des) cryptographic operation

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
JIQIANG LV: "《Enhanced DES ImplementationSecure against High-Order Differential Power Analys is in Smartcards》", AUSTRALASIAN CONFERENCE ON INFORMATION SECURITY AND PRIVACY, 31 July 2005 (2005-07-31) *
ZELENG ZHUANG ETAL: "《A Countermeasure for DES with Both Rotating Masks and Secured S-Boxes》", 2014 TENTH INTERNATIONAL CONFERENCE ON COMPUTATIONAL INTELLIGENCE AND SECURITY, 22 January 2015 (2015-01-22) *
刘海清 等: "《基于随机掩码的AES算法抗DPA攻击硬件实现》", 专题报道, 30 November 2008 (2008-11-30) *
刘海清;陆洪毅;童元满;: "基于随机掩码的AES算法抗DPA攻击硬件实现", 信息网络安全, no. 11, 10 November 2008 (2008-11-10) *

Similar Documents

Publication Publication Date Title
Lim CRYPTON: A new 128-bit block cipher
Eisenbarth et al. Compact implementation and performance evaluation of block ciphers in ATtiny devices
Biham New types of cryptanalytic attacks using related keys
US20060177052A1 (en) S-box encryption in block cipher implementations
JP5987250B2 (ja) カスタマイズされたマスキングによって保護される低複雑度の電子回路
US11606189B2 (en) Method and apparatus for improving the speed of advanced encryption standard (AES) decryption algorithm
EP2367316B1 (en) Method and circuitry for detecting a fault attack
CN106487498B (zh) 电子电路对边信道攻击的抵抗的检验
US9692592B2 (en) Using state reordering to protect against white box attacks
Lu A methodology for differential-linear cryptanalysis and its applications
Paar et al. The advanced encryption standard (AES)
US20020101985A1 (en) Single-cycle hardware implementation of crypto-function for high throughput crypto-processing
Masoodi et al. Symmetric Algorithms I
Sumathy et al. Enhanced AES algorithm for strong encryption
US20240097880A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
Scripcariu et al. Extended des algorithm to galois fields
CN116866038A (zh) 动态掩码加密方法及动态掩码加密装置
RU2738321C1 (ru) Способ криптографического преобразования и устройство для его осуществления
Paar et al. The data encryption standard (DES) and alternatives
Lu et al. The higher-order meet-in-the-middle attack and its application to the Camellia block cipher
Wei et al. Related-key impossible differential cryptanalysis on crypton and crypton v1. 0
Keliher Cryptanalysis of a modified Hill Cipher
Poupard et al. Decorrelated Fast Cipher: an AES Candidate well suited for low cost smart cards applications
US20220414268A1 (en) Protection of data processed by an encryption algorithm
US10678709B2 (en) Apparatus and method for memory address encryption

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination