CN113364574B - S盒、替换方法及其装置 - Google Patents
S盒、替换方法及其装置 Download PDFInfo
- Publication number
- CN113364574B CN113364574B CN202010653586.7A CN202010653586A CN113364574B CN 113364574 B CN113364574 B CN 113364574B CN 202010653586 A CN202010653586 A CN 202010653586A CN 113364574 B CN113364574 B CN 113364574B
- Authority
- CN
- China
- Prior art keywords
- data
- input data
- output
- output data
- obfuscated
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/08—Randomization, e.g. dummy operations or using noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
S盒、替换方法及其装置。本发明公开了一种S盒。所述S盒包括一标的输入端,用于接收一标的输入数据;一混淆输入端,用于接收一混淆输入数据,所述混淆输入数据与一明文无关;一第一输出端,用于输出一第一输出数据;以及一第二输出端,用于输出一第二输出数据,所述第二输出数据与所述第一输出数据相关联,其中,所述第一输出数据及所述第二输出数据是根据所述标的输入数据及所述混淆输入数据生成的。
Description
技术领域
本发明涉及一种S盒、替换方法及装置,尤其涉及一种用于防止边信道攻击的S盒、替换方法及装置。
背景技术
SM4是一种分组密码(block cipher),其经过32个非线性回合(round)后,会由128比特输入及128比特密钥(key)生成128比特输出。SM4具有简单的结构,每个回合涉及多个XOR运算、一个非线性替换(nonlinear substitution)及一个线性变换(lineartransformation)。加密及解密基本上具有相同的结构,除了轮密钥(round key)(或轮数据)用于解密(decryption)时的顺序与用于加密(encryption)时的顺序相反。密钥扩展(key expansion)的结构类似于加密,并使用相同的非线性替换。
SM4硬件(hardware)架构通常用于32回合加密。由SM4硬件架构中可知,当128比特输入的输入模式(input pattern)不变时,SM4硬件架构中的中间值(intermediatevalues)将完全相同。因此,SM4硬件架构的功耗(power consumption)是相似且可预测的。因为边信道攻击(side channel attack)很容易且很可能找到功耗与128比特输入的输入模式之间的相关性,所以用于加密的128比特密钥易于受到攻击,实须改进。
发明内容
因此,本发明的主要目的即在于提供一种S盒、替换方法及装置,以防止边信道攻击。
本发明公开一种S盒。所述S盒包括一标的输入端,用于接收一标的输入数据;一混淆输入端,用于接收一混淆输入数据,所述混淆输入数据与一明文无关;一第一输出端,用于输出一第一输出数据;以及一第二输出端,用于输出一第二输出数据,所述第二输出数据与所述第一输出数据相关联,其中,所述第一输出数据及所述第二输出数据是根据所述标的输入数据及所述混淆输入数据生成的。
本发明另公开一种装置。所述装置包括四个S盒。所述四个S盒中的每一者分别包括一标的输入端,用于接收四个标的输入数据其中一者;一混淆输入端,用于接收四个混淆输入数据其中一者,所述四个混淆输入数据分别与一明文无关;一第一输出端,用于输出四个第一输出数据其中一者;以及一第二输出端,用于输出四个第二输出数据其中一者,所述四个第二输出数据分别与所述四个第一输出数据相关联,其中,所述四个第一输出数据及所述四个第二输出数据分别是根据所述四个标的输入数据及所述四个混淆输入数据生成的。
本发明另公开一种替换方法。所述替换方法包括接收四个标的输入数据其中一者及四个混淆输入数据其中一者,所述四个混淆输入数据分别与一明文无关;以及产生四个第一输出数据其中一者及与四个第二输出数据其中一者,其中,所述四个第二输出数据分别与所述四个第一输出数据相关联,所述四个第一输出数据及所述四个第二输出数据分别是根据所述四个标的输入数据及所述四个混淆输入数据生成的。
附图说明
图1是本发明实施例的一装置的示意图。
图2是本发明实施例的一S盒的示意图。
图3至图5分别是本发明实施例的装置的示意图。
图6是本发明实施例在一百万个功率迹线下就四个子密钥其中一者的关连功率分析的结果的示意图。
图7是本发明实施例的四个子密钥其中一者的部分猜测熵的示意图。
其中,附图标记说明如下:
20、SB11~SB14、SB31~SB34 S盒
30~50 装置
BNT 混淆输入端
CCS、CCS31、CCS32 移位电路
dct1、dct2、dct4、dct5、dct6 指示符
Dky1~Dky4 加密密钥数据
Dnb31~Dnb34 混淆输入数据
Dnt31~Dnt34、Dps 输入数据
Dnt31~Dnt34 标的输入数据
Drk0~Drk31 轮密钥数据
Drm、Dntxt1~Dntxt4 输入文本数据
Drm1~Drm4 随机数据
Drmps 复合随机数据
Dtw、Dtm、Dtw31~Dtw34、Dtm31~Dtm34 输出数据
Dxt1~Dxt4 混合数据
LCT1~LCT3 逻辑电路
MX11~MX14、MX2、MX4 多路复用器
RDR 重新排序电路
RNG 随机乱数生成电路
RVR 回复排序电路
SC1、SC2 存储电路
TNT 标的输入端
TT1、TT2 输出端
XR11~XR14、XR1~XR4 逻辑运算电路
具体实施方式
在通篇说明书及权利要求当中所提及的「包括」及「包括」为一开放式的用语,故应解释成「包括但不限定于」。术语「耦接(coupled)」旨在表示间接或直接的电性连接。在通篇说明书及权利要求当中所提及的「第一」、「第二」等叙述,仅用以区别不同的元件,并不对其产生优先级或顺序的限制。
请参考图2。图2是本发明实施例的一S盒(substitute box,S-box)20的示意图。S盒20可执行可逆替换(reversible substitution)或非线性替换,但不限于此。S盒20包括一标的输入端(target input terminal)TNT、一混淆输入端(obfuscation inputterminal)BNT、输出端TT1、TT2以及逻辑电路LCT1~LCT3。逻辑电路LCT1(也可称为第一逻辑电路)是用来对标的输入数据Dnt执行逆运算(inverse operation)以生成逆数据(inversion data)Dv,逻辑电路LCT1耦接至标的输入端TNT,而标的输入端TNT是用来接收标的输入数据Dnt。逻辑电路LCT2(也可称为第二逻辑电路)是用来将逆数据Dv与混淆输入数据(obfuscation input data)Dnb组合为组合数据(combination data)Dmb,逻辑电路LCT2耦接至逻辑电路LCT1及混淆输入端BNT,而混淆输入端BNT是用来接收与明文(plaintext)无关的混淆输入数据Dnb。逻辑电路LCT3(也可称为第三逻辑电路)是用来对混淆输入数据Dnb及组合数据Dmb执行仿射运算(affine operation)以生成输出数据Dtw及Dtm,逻辑电路LCT3耦接至逻辑电路LCT2及混淆输入端BNT。藉由输出端TT1(也可称为第一输出端)可发送输出数据Dtw(也可称为第一输出数据)。藉由输出端TT2(也可称为第二输出端)可发送与输出数据Dtw相关联的输出数据Dtm(也可称为第二输出数据)。
简而言之,混淆输入数据Dnb是由一随机乱数生成电路(random numbergeneration circuit)(图2未示出)随机生成的,因此与明文或加密密钥(encryption key)无关。明文是在加密之前或使用加密密钥解密之后的未加密信息(unencryptedinformation)。另一方面,标的输入数据Dnt与明文或加密密钥相关联。根据标的输入数据Dnb及混淆输入数据Dnb可生成输出数据Dtw及Dtm。因此,输出数据Dtw与明文或加密密钥相关联,输出数据Dtm也与明文或加密密钥相关联。然而,输出数据Dtw及Dtm因混淆输入数据Dnb而被随机化。如此一来,功耗会变化而有所不同以防止边信道攻击。
具体地,将具有随机性的混淆输入数据Dnb发送到逻辑电路LCT3。随机性意味着混淆输入数据Dnb是时变的(time variant)并且相对于时间是不可预测的。在一些实施例中,逻辑电路LCT2可涉及按位排他运算(bitwise exclusive operation),但不限于此。在一些实施例中,逻辑电路LCT2可执行逻辑运算并实现「异或(exclusive OR,XOR)」运算、「或(OR)」运算、「或非(NOR)」运算、「与非(NAND)」运算或「与(AND)」运算,而保留随机性。换句话说,由于混淆输入数据Dnb被混入,因此发送到逻辑电路LCT3的组合数据Dmb被随机化。具有随机性的混淆输入数据Dnb用来在逻辑电路LCT3的仿射运算中执行秘密共享(secretsharing)。即使在标的输入数据Dnt的输入模式(input pattern)相同的情况下,使用秘密共享可确保S盒20的两个输出数据Dtw及Dtm不会被固定下来,也就是说功耗将不同。如此一来可破坏功耗与加密密钥之间的相关性,即使攻击者尝试重复进行测量亦难以找到功耗与加密密钥之间的相关性。举例来说,当标的输入数据Dnt是f12186f9时,混淆输入数据Dnb、输出数据Dtw、输出数据Dtm可分别是33220757、2ffc5831、f69e6888。或者,当标的输入数据Dnt仍然是f12186f9时,而混淆输入数据Dnb改变为907127fa,输出数据Dtw、输出数据Dtm可分别为1dcdfa10、2ff60603。在此情况下,即使标的输入数据Dnt不变,S盒20的功耗也会改变或波动而有所不同,从而阻止边信道攻击。由于替换(substitution)属于一对一映射(one-to-one mapping),只要标的输入数据Dnt及混淆输入数据Dnb分别确定(例如确定为f12186f9及33220757)时,输出数据Dtw及输出数据Dtm必然分别确定(例如确定为2ffc5831及f69e6888)。
此外,在一些实施例中,可根据伽罗华域(Galois Field)执行逆运算。在一些实施例中,逻辑电路LCT1的逆运算可不同于用于防止边信道攻击的常规运算。举例来说,逆运算的生成多项式(generator polynomial)可不同于x8+x7+x6+x5+x4+x2+1。生成多项式的系数(coefficients)可根据不同系统需求而适度地调整。在一些实施例中,生成多项式可能影响逻辑电路LCT1的复杂度。在一些实施例中,藉由生成多项式可确定逆映射矩阵(inversemapping matrix)或逆查找表(inverse lookup table)。在一些实施例中,可藉由运算判断出S盒20的输入的乘法反元素(inverse)。在一些实施例中,由于判断出乘法反元素是最复杂的有限域运算(finite field operation),并且时钟频率(clock frequency)不能设得太高且会影响硬件吞吐量(hardware throughput),因此可在逻辑电路LCT1内设置了逆查找表以实现高时钟频率。相应地,由逻辑电路LCT3执行的仿射运算会配合逻辑电路LCT1的逆运算,以便如预期地提供输出数据Dtw及Dtm。在一些实施例中,逆查找表及仿射运算是独特的,以便抵抗边信道攻击。
在一些实施例中,标的输入数据Dnt的比特数(the number of bits)可与混淆输入数据Dnb的比特数、输出数据Dtw的比特数或输出数据Dtm的比特数相同。也就是说,标的输入数据Dnt中的比特的数目、混淆输入数据Dnb中的比特的数目、输出数据Dtw中的比特的数目及输出数据Dtm中的比特的数目是相等的。在一些实施例中,标的输入数据Dnt的比特数可是8位(即8位字符(8-bit characters)或1字节(byte)),并且混淆输入数据Dnb、输出数据Dtw及输出数据Dtm的比特数也是8位。也就是说,S盒20可接收两个8比特(bit)输入并且产生两个8比特输出。在一些实施例中,标的输入数据Dnt与加密密钥、明文、轮密钥数据(round key data)、轮函数数据(round function data)或密钥常数(key constant)相关联。类似地,输出数据Dtw或Dtm与加密密钥、明文、轮密钥数据、轮函数数据或密钥常数相关联。在一些实施例中,标的输入数据Dnt与明文或加密密钥相关联。类似地,输出数据Dtw或Dtm与明文或加密密钥相关联。输出数据Dtw与Dtm之间存在关联,以便如预期地执行加密过程。也就是说,利用输出数据Dtw及Dtm可如预期地生成的密文(ciphertext)。
图2所示的实施例中只有两个输入数据(即标的输入数据Dnt及混淆输入数据Dnb)及两个输入端(即标的输入端TNT及混淆输入端BNT),但在另一个实施例中,输入数据的数量(以及输入端的数量)可大于两个。图2所示的实施例中只有两个输出数据Dtw、Dtm及两个输出端TT1、TT2,但在另一个实施例中,输出数据的数量(以及输出端的数量)可大于两个。
请参考图3。图3是本发明实施例的一装置30的示意图。装置30用来提供密码功能且可用作加密器(encryptor)。装置30包括S盒SB31~SB34。在一些实施例中,S盒SB31~SB34中的每一者可依据图2中所示的S盒20来实现。
简而言之,为了抵抗边信道攻击,S盒SB31~SB34中的任一者的逆运算可不同于另一者的逆运算(意即彼此不同)。相应地,S盒SB31~SB34中的任一者的仿射运算可不同于另一者的仿射运算。换句话说,S盒SB31~SB34中的任一者不同于另一者,因为逆运算及仿射运算可影响一个S盒的复杂性或电路结构。据此,S盒SB31~SB34消耗的功率不同,从而阻止边信道攻击。
举例来说,S盒SB31(也可称为第一S盒)的逆运算(也可称为第一逆运算)或仿射运算(也可称为第一仿射运算)不同于S盒SB32(也可称为第二S盒)的逆运算(也可称为第二逆运算)或仿射运算(也可称为第二仿射运算)。S盒SB31的逆运算的生成多项式(也可称为第一生成多项式)可与S盒SB32的生成多项式(也可称为第二生成多项式)不同。在一些实施例中,S盒SB31的逆运算的逆查找表可与S盒SB32~SB34其中一者或多者的逆查找表不同。据此,即使在分别传送到四个S盒SB31~SB34的四个标的输入数据Dnt31~Dnt34是相同的的情况下,一个S盒的功耗亦不同于另一S盒的功耗,以防止边信道攻击。此外,装置30的S盒SB31~SB34之间的差异使边信道攻击更难成功,因为必须更费力地分析S盒SB31~SB34(中的每一者)的功耗。
此外,在一些实施例中,S盒SB31~SB34的逆运算是根据伽罗华域而执行的。在一些实施例中,S盒SB31~SB34的逆运算可不同于用于防止边信道攻击的常规运算。举例来说,在一些实施例中,S盒SB31~SB34的生成多项式不同于x8+x7+x6+x5+x4+x2+1。在一些实施例中,S盒SB31~SB34其中一者的逆运算的生成多项式可表示为x8+x7+x6+x5+x4+x2+1,而S盒SB31~SB34中其他的逆运算的生成多项式不同于x8+x7+x6+x5+x4+x2+1。生成多项式的系数可根据不同系统需求而适度地调整。在一些实施例中,藉由生成多项式中的每一者可确定其对应的逆映射矩阵或逆查找表。在一些实施例中,可藉由运算判断出S盒SB31~SB34的输入的乘法反元素。在一些实施例中,由于判断出乘法反元素是最复杂的有限域运算,并且时钟频率不能设得太高且会影响硬件吞吐量,因此在S盒SB31~SB34中的每一者内分别设置了逆查找表以实现高时钟频率。相应地,由S盒SB31~SB34执行的仿射运算会配合S盒SB31~SB34的逆运算。在一些实施例中,逆查找表及仿射运算是独特的,以便抵抗边信道攻击。
更具体地,对传送到S盒SB31的标的输入数据Dnt31(也可称为第一标的输入数据)进行S盒SB31的逆运算。在逆运算之后,对标的输入数据Dnt31及混淆输入数据Dnb31执行S盒SB31的仿射运算。随后,生成输出数据Dtw31及Dtm31并从S盒SB31发送输出数据Dtw31及Dtm31。因此,即使标的输入数据Dnt31不变,S盒SB31的功耗也会改变或波动而有所不同,从而抵抗边信道攻击。类似地,在对标的输入数据Dnt32(也可称为第二标的输入数据)进行S盒SB32的逆运算之后,对标的输入数据Dnt32及混淆输入数据Dnb32执行S盒SB32的仿射运算,以产生输出数据Dtw32及Dtm32。在对标的输入数据Dnt33(也可称为第三标的输入数据)进行S盒SB33的逆运算之后,对标的输入数据Dnt33及混淆输入数据Dnb33执行S盒SB33的仿射运算,以产生输出数据Dtw33及Dtm33。在对标的输入数据Dnt34(也可称为第四标的输入数据)进行S盒SB34的逆运算之后,对标的输入数据Dnt34及混淆输入数据Dnb34执行S盒SB34的仿射运算,以产生输出数据Dtw34及Dtm34。如此一来,可有效抵抗边信道攻击。
在一些实施例中,标的输入数据Dnt31~Dnt34中的任一者的比特数、混淆输入数据Dnb31~Dnb34中的任一者的比特数、输出数据Dtw31~Dtw34及Dtm31~Dtm34中的任一者的比特数可能相同。在一些实施例中,标的输入数据Dnt31~Dnt34、混淆输入数据Dnb31~Dnb34、输出数据Dtw31~Dtw34以及Dtm31~Dtm34中的每一者可以是8比特。在一些实施例中,标的输入数据Dnt31~Dnt34、输出数据Dtw31~Dtw34及Dtm31~Dtm34中的每一者与加密密钥、明文、轮密钥数据、轮函数数据或密钥常数相关联。为了如预期地执行加密流程,输出数据Dtw31与Dtm31之间存在关联。类似地,输出数据Dtw32与Dtm32之间、输出数据Dtw33与Dtm33之间、或输出数据Dtw34与Dtm34之间存在关联。
需注意的是,图3的装置30为本发明的实施例,本领域的技术人员当可据以做不同的变化及修饰。举例来说,请参考图4。图4是本发明实施例的装置40的示意图。图4的装置40的架构类似于图3的装置30,故相同元件沿用相同符号表示,且不再赘述。不同于装置30,装置40还包括一重新排序电路RDR及一回复排序电路RVR。S盒SB31~SB34分别耦接在重新排序电路RDR与回复排序电路RVR之间。
简而言之,为了抵抗边信道攻击,重新排序电路RDR可将四个标的输入数据Dnt31~Dnt34随机地分配给S盒SB31~SB34。如此一来,即使输入数据Dps(也可称为复合输入数据)不变,功耗也会改变或波动而有所不同,以防止边信道攻击。
具体地,输入数据Dps依次序被划分为四个标的输入数据Dnt31~Dnt34。换句话说,遵循以下顺序可重组为输入数据Dps:首先是标的输入数据Dnt31,然后是标的输入数据Dnt32,然后是标的输入数据Dnt33,然后是标的输入数据Dnt34。之后,重新排序电路RDR可以以不同的顺序随机将四个标的输入数据Dnt31~Dnt34重新进行排序。藉由重新排序电路RDR,输入数据Dps的标的输入数据(例如标的输入数据Dnt31)不会总是被发送到某个S盒(例如S盒SB31)中。取而代之的是,有时将输入数据Dps的标的输入数据(例如标的输入数据Dnt31)传送到某一个S盒(例如S盒SB33),但标的输入数据(即标的输入数据Dnt31)有时可能被发送到另一S盒(例如S盒SB32)。
举例来说,如图4所示,标的输入数据Dnt31被发送到S盒SB31,标的输入数据Dnt32被发送到S盒SB32,标的输入数据Dnt33被发送到S盒SB33,标的输入数据Dnt34被发送到S盒SB34。或者,标的输入数据Dnt31被发送到S盒SB33,标的输入数据Dnt32被发送到S盒SB32,标的输入数据Dnt33被发送到S盒SB34,标的输入数据Dnt34被发送到S盒SB31。据此,S盒SB31~SB34所消耗的功率始终在变化,从而阻止边信道攻击。
重新排序电路RDR是用来改变四个标的输入数据Dnt31~Dnt34之间的排序,并将四个标的输入数据Dnt31~Dnt34分配给四个S盒SB31~SB34。相应地,回复排序电路RVR是用来恢复由重新排序电路RDR导致的排序错置效果,使得欲生成的密文如同预期。也就是说,原先以第一顺序而排序的标的输入数据Dnt31~Dnt34由重新排序电路RDR重新排序为第二顺序。相应地,以第二顺序而排序的输出数据Dtw31~Dtw34由回复排序电路RVR重新排序为第二顺序,并且,以第二顺序而排序的输出数据Dtm31~Dtm34由回复排序电路RVR重新排序为第二顺序。在一些实施例中,重新排序电路RDR响应于指示符(indicator)dct5来执行,类似地,回复排序电路RVR响应于指示符dct6来执行,其中指示符dct5及dct6可相同。在一些实施例中,指示符dct5或dct6可以是随机的位元(random bits)。在一些实施例中,指示符dct5或dct6可以是5比特。
请参考图5。图5是本发明实施例的一装置50的示意图。图5的装置50的架构类似于图4的装置40,故相同元件沿用相同符号表示,且不再赘述。不同于装置40,装置50还包括一随机乱数生成电路RNG、多路复用器(multiplexer)MX11~MX14、MX2、MX4、逻辑运算电路XR11~XR14、XR1~XR4、移位电路(shift circuit)CCS31、CCS32以及存储电路SC1、SC2。
简而言之,在将输入数据Dps划分为四个标的输入数据Dnt31~Dnt34之前,输入数据Dps会因为随机数据Drm1~Drm4而随机化。在此情况下,功耗会改变或波动而有所不同,从而抵抗边信道攻击。
具体地,装置50可采用单一回合迭代架构(single-round-iterativearchitecture)。在一些实施例中,装置50可接收明文并利用加密密钥产生密文。明文是在加密之前或使用加密密钥解密之后的未加密信息。密文是对明文执行加密的结果,如果没有正确的密钥来解密就无法读取密文。在一些实施例中,装置50的明文、密文及加密密钥中的每一者都是128比特。在一些实施例中,明文可被划分为输入文本数据(input textdata)Dntxt1~Dntxt4,并且,加密密钥可分被划分为加密密钥数据Dky1~Dky4。类似地,密文可包括四个输出文本数据(output text data),这四个输出文本数据构成密文。在一些实施例中,输入文本数据Dntxt1~Dntxt4及加密密钥数据Dky1~Dky4中的每一者都是32比特(即,32位的一个字(word))。
给定加密密钥后,可进行32回合的轮密钥数据生成(round key datageneration),以进行密钥扩展。给出明文及加密密钥后,可进行32回合的加密轮交换(encryption round exchange),以进行加密。装置50的每一回合的演算法中,装置50可利用S盒SB31~SB34来执行SBOX功能,利用移位电路CCS31、CCS32执行移位功能,利用逻辑运算电路XR11~XR14、XR1~XR4执行逻辑运算功能。这些功能执行完毕后,才结束一回合。
在装置50的每一回合的演算法中,产生一轮函数数据Dfnc。经过32回合后,将获得32个轮函数数据,也就是作为第一轮函数数据的轮函数数据Dfnc1、作为第二轮函数数据的轮函数数据Dfnc2、作为第三轮函数数据的轮函数数据Dfnc3、作为第四轮函数数据的轮函数数据Dfnc4、…、以及第32轮函数数据。在一些实施例中,轮函数数据Dfnc可作为轮密钥数据Drk0~Drk31(其可由多路复用器MX4收集并存储在存储电路SC2中)其中一者、四个输出文本数据其中一者或一轮函数数据。在一些实施例中,32个轮函数数据、四个输出文本数据及轮密钥数据Drk0~Drk31中的每一者都是32比特。换句话说,一次会输入128比特数据,以输出32比特数据,这便称为一回合(round)(或交换(exchange))。
在装置50的每一回合的演算法中,多路复用器MX11~MX14、MX2及MX4用来在多个输入信号之间进行选择并将选择出的输入信号转发至一个输出线。以将轮密钥数据Drk0传输到多路复用器MX14的传输为例。如图5所示,多路复用器MX2可从输入文本数据Dntxt1、另一轮密钥数据(例如轮密钥数据Drk28)及一轮函数数据(例如例如轮函数数据Dfnc1)中选择出输入文本数据Dntxt1。多路复用器MX11可从输入文本数据Dntxt4、另一轮密钥数据(例如轮密钥数据Drk31)及另一轮函数数据(例如轮函数数据Dfnc4)中选择出输入文本数据Dntxt4。多路复用器MX12可从输入文本数据Dntxt3、另一轮密钥数据(例如轮密钥数据Drk30)及另一轮函数数据(例如轮函数数据Dfnc3)中选择出输入文本数据Dntxt3。多路复用器MX13可从输入文本数据Dntxt2、另一轮密钥数据(例如轮密钥数据Drk29)及另一轮函数数据(例如轮函数数据Dfnc2)中选择出输入文本数据Dntxt2。多路复用器MX14可从另一轮密钥数据(例如轮密钥数据Drk0)、另一轮密钥数据(例如轮密钥数据Drk31)及一常数(constant)密钥数据(例如常数密钥数据Dck1)中选择出轮密钥数据Drk0。在此情况下,从逻辑运算电路XR4生成的轮函数数据Dfnc仅作为轮函数数据。
以将轮密钥数据Drk31传输到多路复用器MX14的传输为例。多路复用器MX2可从一输入文本数据、一轮密钥数据及一轮函数数据(即第28轮函数数据)中选择出轮函数数据。多路复用器MX11可从另一输入文本数据、另一轮密钥数据及另一轮函数数据(即第31轮函数数据)中选择出轮函数数据。多路复用器MX12可从另一输入文本数据、另一轮密钥数据及另一轮函数数据(即第30轮函数数据)中选择出轮函数数据。多路复用器MX13可从另一输入文本数据、另一轮密钥数据及另一轮函数数据(即第29轮函数数据)中选择出轮函数数据。多路复用器MX14可从另一轮密钥数据、另一轮密钥数据及一常数密钥数据中选择出轮密钥数据(即轮密钥数据Drk31)。在此情况下,从逻辑运算电路XR4生成的轮函数数据Dfnc可作为四个输出文本数据其中一者。
以将常数密钥数据Dck1(也可称为32个常数密钥数据中的第一常数密钥数据)传输到多路复用器MX14的传输为例。如图5所示,多路复用器MX2可从加密密钥数据Dky1、一轮密钥数据(例如轮密钥数据Drk28)及一轮函数数据(例如轮函数数据Dfnc1)中选择出加密密钥数据Dky1。多路复用器MX11可从加密密钥数据Dky4、另一轮密钥数据(例如轮密钥数据Drk31)及另一轮函数数据(例如轮函数数据Dfnc4)中选择出加密密钥数据Dky4。多路复用器MX12可从加密密钥数据Dky3、另一轮密钥数据(例如轮密钥数据Drk30)及另一轮函数数据(例如轮函数数据Dfnc3)中选择出加密密钥数据Dky3。多路复用器MX13可从加密密钥数据Dky2、另一轮密钥数据(例如轮密钥数据Drk29)及另一轮函数数据(例如轮函数数据Dfnc2)中选择出加密密钥数据Dky2。多路复用器MX14可从另一轮密钥数据(例如轮密钥数据Drk0)、另一轮密钥数据(例如轮密钥数据Drk31)及常数密钥数据Dck1中选择出常数密钥数据Dck1。在此情况下,从逻辑运算电路XR4生成的轮函数数据Dfnc可作为轮密钥数据(即轮密钥数据Drk0)。
以将32个常数密钥数据中的第32常数密钥数据传输到多路复用器MX14的传输为例。多路复用器MX2可从一加密密钥数据、一轮密钥数据(即轮密钥数据Drk27)及轮函数数据中选择出轮密钥数据。多路复用器MX11可从另一加密密钥数据、另一轮密钥数据(即轮密钥数据Drk30)及另一轮函数数据中选择出轮密钥数据。多路复用器MX12可从另一加密密钥数据、另一轮密钥数据(即轮密钥数据Drk29)及另一轮函数数据中选择出轮密钥数据。多路复用器MX13可从另一加密密钥数据、另一轮密钥数据(即轮密钥数据Drk28)及另一轮函数数据中选择出轮密钥数据。多路复用器MX14可从另一轮密钥数据、另一轮密钥数据及常数密钥数据Dck32中选择出常数密钥数据Dck32。在此情况下,从逻辑运算电路XR4生成的轮函数数据Dfnc可作为轮密钥数据(即轮密钥数据Drk31)。
如上所述,可从轮密钥数据Drk0~Drk31及输入文本数据Dntxt1~Dntxt4导出四个输出文本数据,并且,可从加密密钥导出轮密钥数据Drk0~Drk31。此外,就演算法而言,用于密钥扩展的32回合的轮密钥数据生成类似于用于加密的32回合的加密轮交换。应理解的是,藉由多路复用器MX11~MX14、MX2及MX4选择输入信号可简化电路,而装置50不需要在任何架构上做实质或明显的改变。在一些实施例中,多路复用器MX11~MX14、MX2及MX4中的每一者响应于指示符(例如指示符dct1、dct2、dct4)而执行。在一些实施例中,指示符dct1、dct2、dct4可与计数器(counter)或当前状态(current state)相关联。
接着,在逻辑运算XR11处可将多路复用器MX11的输出及随机数据Drm1合并为混合数据Dxt1,其中,逻辑运算XR11是用来组合多路复用器MX11的输出与随机数据Drm1。类似地,在逻辑运算XR12处将多路复用器MX12的输出及随机数据Drm2合并为混合数据Dxt2,在逻辑运算电路XR13处将多路复用器MX13的输出及随机数据Drm3合并为混合数据Dxt3,在逻辑运算电路XR14处将多路复用器MX14的输出及随机数据Drm4合并为混合数据Dxt4。随机数据Drm1~Drm4中的每一者分别从随机乱数生成电路RNG中随机生成,因此与明文或加密密钥无关,以利于抵抗边信道攻击。随机乱数生成电路RNG可使用整数计数器(integercounter)。
接着,逻辑运算XR1组合混合数据Dxt1~Dxt4,使得混合数据Dxt1~Dxt4在逻辑运算XR1处合并为输入数据Dps。在一些实施例中,混合数据Dxt1~Dxt4及输入数据Dps中的每一者都是32比特。在一些实施例中,逻辑运算电路XR11~XR14及XR1中的每一者可涉及按位排他运算,但不限于此。在一些实施例中,逻辑运算电路XR11~XR14中的每一者可执行逻辑运算并实现「异或」运算,「或」运算,「或非」运算,「与非」运算或「与」运算,而保留随机性。输入数据Dps是根据多路复用器MX11~MX14的输出而生成的,因此与明文或加密密钥相关联。然而,在将输入数据Dps划分为四个标的输入数据Dnt31~Dnt34之前,输入数据Dps因为随机数据Drm1~Drm4而随机化。如此一来,功耗会变化而有所不同以防止边信道攻击。
随机数据Drm1~Drm4在逻辑运算XR5处合并为复合随机数据Drmps。由于输入数据Dps是依次序被划分为四个标的输入数据Dnt31~Dnt34,因此将复合随机数据Drmps依次序划分为四个混淆输入数据Dnb31~Dnb33。在一些实施例中,如图5所示,将复合随机数据Drmps及输入数据Dps发送到重新排序电路RDR。重新排序电路RDR将四个混淆输入数据Dnb31~Dnb33随机地分配给S盒SB31~SB34,同时地,重新排序电路RDR将四个标的输入数据Dnt31~Dnt34随机地分配给S盒SB31~SB34。在一些实施例中,四个标的输入数据Dnt31~Dnt34的分配是个别地并独立于四个混淆输入数据Dnb31~Dnb33的分配。在一些实施例中,重新排序电路RDR仅接收输入数据Dps,并且,四个混淆输入数据Dnb31~Dnb33直接发送至S盒SB31~SB34而没有经由重新排序电路RDR进行随机分配。
随后,装置50可将S盒SB31~SB34作为S盒20来执行SBOX功能。S盒SB31~SB34中的每一者分别具有两个输入,S盒SB31~SB34中的每一者的输出可分别分为两个份额(share)。在回复排序电路RVR改变输出数据Dtw31~Dtw34的顺序之后,输出数据Dtw31~Dtw34组合为替换数据Dsw。相应地,在回复排序电路RVR改变输出数据Dtm31~Dtm34的顺序之后,输出数据Dtm31~Dtm34组合为替换数据Dsm。在一些实施例中,替换数据Dsw或Dsm可以是32比特。替换数据Dsw与Dsm之间存在关联,以便如预期地执行加密流程。也就是说,利用替换数据Dsw及Dsm,欲生成的密文可如同预期。
因为S盒SB31~SB34中的每一者的输出分为两个份额,所以需要两个移位电路CCS31及CCS32来个别地并独立地处理这两个份额。替换数据Dsw被发送到移位电路CCS31。替换数据Dsm被发送到移位电路CCS32。在一些实施例中,移位电路CCS31及CCS32中的每一者可执行可逆线性替换(reversible linear substitution)。在一些实施例中,移位电路CCS31及CCS32中的每一者可涉及特定的替换功能。特定的替换功能可以是用于密钥扩展的L'变换(L’transformation),并且可以是用于加密的L变换(L transformation)。对于L'变换或L变换,可采用秘密共享来达到防止边信道攻击的效果。在一些实施例中,移位电路CCS31或CCS32可涉及移位功能。移位功能可涉及向左(或向右)移位n位的循环移位(cyclicshift),其中n是正整数,但不限于此。在一些实施例中,移位电路CCS31的电路结构与移位电路CCS32的电路结构相同。在一些实施例中,移位电路CCS31及CCS32可依据图1中所示的移位电路CCS来实现。移位电路CCS31或CCS32的确切电路结构可根据不同系统需求进行适当调整。
在逻辑运算电路XR4处可将移位电路CCS31的输出及随机数据Drm(例如随机数据Drm4)合并为移位数据Dfw,其中,逻辑运算电路XR4是用来组合移位电路CCS31的输出与随机数据Drm。在逻辑运算XR3处可合并多路复用器MX2的输出及随机数据Drm(例如随机数据Drm4),以便如预期地执行加密流程。在逻辑运算电路XR21处可将移位电路CCS32的输出及逻辑运算电路XR3的输出合并为移位数据Dfm,其中,逻辑运算电路XR21是用来组合移位电路CCS32的输出与逻辑运算电路XR3的输出。当在逻辑运算电路XR4处合并移位数据Dfw及Dfm时,可产生轮函数数据Dfnc。在一些实施例中,逻辑运算电路XR21、XR22、XR3及XR4中的每一者可涉及按位排他运算,但不限于此。在一些实施例中,逻辑运算电路XR21、XR22、XR3及XR4中的每一者可执行逻辑运算并实现「异或」运算,「或」运算,「或非」运算,「与非」运算或「与」运算,而保留随机性,以防止边信道攻击。
当前产生的轮函数数据Dfnc(例如轮函数数据Dfnc4)可与在先前三个连续回合中生成的其他三个轮函数数据(例如轮函数数据Dfnc1~Dfnc3)一起存储在存储电路SC1或SC2中。当前产生的轮函数数据Dfnc(例如轮函数数据Dfnc4或轮密钥数据Drk31)可于下一个连续回合提供至多路复用器MX11~MX13及MX2的其中一者(例如多路复用器MX11),在先前三个连续回合中生成的其他三个轮函数数据则可于此回合(即下一个连续回合)提供至多路复用器MX11~MX13及MX2中的其他者。在一些实施例中,存储电路SC1可作为轮函数输出寄存器(round function output register),并且存储电路SC2可作为轮密钥数据Drk0~Drk31的轮密钥寄存器(round key register)。在第一回合中,轮密钥数据Drk0可被保存在存储电路SC2的第32位置。在第二回合中,可将轮密钥数据Drk0移动到存储电路SC2的第31位置,并且可将轮密钥数据Drk1保存在存储电路SC2的第32位置。在32个回合之后,所有轮密钥数据Drk0~Drk31将保存在其相应的位置。移位寄存器(shift register)的设计使加密及解密流程更容易控制,因为当执行这两个运算时,只需要将轮密钥数据沿不同的方向移位即可。因此,可利用同一个寄存器正确读取轮密钥数据,并且可减少多路复用器占用的空间。此外,加密、解密或密钥扩展使用相同的硬件资源。移位寄存器的设计相较查找表的版本可节省约4k的门数(gate count)。
应理解的是,SM4演算法中的加密及解密方法采用相似的机制,除了顺序相反。因此,用于解密的装置可配合用于加密的装置50。然而,常规的解密器(decryptor)也可对装置50生成的密文进行解密。
请参考表1。表1呈现装置50的逻辑合成(Synthesis)结果。在表1中,可利用Synopsys设计编译器(compiler)来合成装置50。装置50的制程(technology process)可以是积体电路制造(TSMC)22纳米(nanometer,nm)。吞吐量由最大时钟频率及运算周期(operation cycle)数决定。根据表1,装置50的吞吐量是每秒2吉比特(gigabit persecond,Gbps),并且装置50可以以500兆赫兹(megahertz,MHz)运行。在装置50中,加密、解密及密钥扩展所需的硬件资源是高度集成(integrated)。与其他装置相比,面积减少了17.7%。
(表格1)
在一些实施例中,采用Sakura-G来测量一百万个功率迹线(power trace)。Sakura-G是为了实现硬件边信道安全而专门设计的开发板(development board)。它的特点是环境干净(clean)且杂讯(noise)少。Sakura-G包括一个主要(main)现场可编程逻辑门阵列(field programmable gate array)及一个控制(control)现场可编程逻辑门阵列。主要现场可编程逻辑门阵列是为实现加密演算法而构建的。本发明的寄存器传递语言(register transfer language,RTL)设计可置于主要现场可编程逻辑门阵列上。控制现场可编程逻辑门阵列主要负责与主要现场可编程逻辑门阵列进行通信。举例来说,当模拟数字转换器(analog-to-digital converter,ADC)开始记录功率迹线时,控制现场可编程逻辑门阵列控制主要现场可编程逻辑门阵列的输入。
请参考表2。表2呈现关连功率分析(correlation power analysis,CPA)实验的条件。Sakura-G板的时钟频率为3.5兆赫兹。模拟数字转换器采样率(sampling rate)为每秒78.6兆采样数(mega-samples per second,MSa/s)。也就是说,模拟数字转换器每个周期可记录约23个点。在一些实施例中,第一回合的轮密钥数据受攻击。使用的模型是汉明距离模型(hamming distance model),正确的轮密钥数据是32’hab0d48a0。在关连功率分析期间,将轮密钥数据划分为四个子密钥(sub key),并且四个子密钥中的每一者均为8比特。
(表2)
Sakura-G板的频率 | 3.5MHZ |
模拟数字转换器采样率 | 78.6MSa/s |
样本点(Sample points) | 1000 |
攻击点 | 第一回合加密 |
轮密钥数据 | 32’hab0d48a0 |
请参考图6。图6是本发明实施例在一百万个功率迹线下就四个子密钥其中一者的关连功率分析的结果的示意图。在图6中,深色代表错误猜测子密钥,而浅色代表正确猜测子密钥。根据图6,所有样本点的最高相关系数(correlation coefficient)未发生在样本点的范围靠近100时,而靠近100处设定为攻击点。将正确猜测的相关性(correlation)与错误猜测的相关性进行比较,在所有样本点处,正确猜测的相关性均不高于错误猜测的相关性。因此,装置50能够消除功耗与正确子密钥之间的相关性,从而抵抗边信道攻击。
请参考图7。图7是本发明实施例的四个子密钥其中一者的部分猜测熵(partialguessing entropy,PGE)的示意图。部分猜测熵可指示当前功率迹线数下正确子密钥的等级。等级越低,其与功率迹线的相关性越强。根据图7,随着功率迹线的增加,子密钥的部分猜测熵不会降低,意即功率迹线与正确子密钥之间的相关性很低。据此,即使收集到一百万个功率迹线时,装置50也是可靠的。
在一些实施例中,大多数边信道攻击对策是针对S盒,意即其架构大致与图1所示的架构相似,但S盒的结构不同。然而,如图5所示,从装置50的最左边开始,经过S盒SB31~SB34,直到装置50最右边的L变换(或L'变换)的最后部分,装置50都能够抵抗边信道攻击。
请参考图1。图1是本发明实施例的一装置10的示意图。图1的装置10类似于图5所示的装置50,故相同元件沿用相同符号表示,且不再赘述。不同于装置50,装置10仅包括S盒SB11~SB14、多路复用器MX11~MX14、MX2、MX4、逻辑运算电路XR1、XR2、移位电路CCS以及存储电路SC1、SC2。从多路复用器MX11~MX14输出的四个32比特数据在逻辑运算电路XR1处进行「异或」运算。逻辑运算电路XR1的32比特输出被分成四组的8比特数据,并被输入到四个S盒SB11~SB14中。S盒SB11~SB14的输出合并为在移位电路CCS及逻辑运算电路XR2处进行L变换或L’变换的32比特数据。移位电路CCS3的输出及多路复用器MX2的输出在逻辑运算电路XR2处合并。多路复用器MX4可从逻辑运算电路XR2的输出及轮密钥数据Drk中选择一者,然后可将所选择的一者存储在存储电路SC2中。
移位电路CCS可包括多路复用器MX31~MX34及移位单元SN1~SN6。装置10可利用移位电路CCS执行移位功能。移位功能可涉及向左(或向右)移位n位的循环移位,其中n是正整数,但不限于此。举例来说,移位单元SN1可涉及向左移位2位的循环移位。同样地,移位单元SN2~SN7可分别涉及向左移位13位、10位、23位、18位、0位及24位的循环移位。在一些实施例中,对于向左移位0位的循环移位,可藉由省略移位单元SN6的方式实现。多路复用器MX31可从移位单元SN1及SN2的输出中选择一者。类似地,多路复用器MX32~MX34可从移位单元SN3、SN4的输出、移位单元SN5、SN6的输出以及移位单元SN6、SN7的输出中选择一者。换句话说,移位电路CCS可执行可逆线性替换。移位电路CCS可涉及特定的替换功能。特定的替换函数可以是用于密钥扩展的L'变换,并且可以是用于加密的L变换。
综上所述,在一些实施例中,随机比特(random bit)作为杂讯且被引入S盒。在S盒中,输入与输出是一对一映射,只有一个输入映射到一个输出。然而,在本发明中使用混淆输入数据来完成秘密共享,从而本发明的S盒接收一个标的输入数据并产生两个输出数据。即使标的输入数据不变,因为混淆输入数据的随机性,两个输出数据也可能随时间随机变化。本发明的不同S盒中的逆运算及仿射运算之间的差异使边信道攻击更难成功,因为必须更费力地分析S盒的功耗。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种S盒,其特征在于,所述S盒包括:
一标的输入端,用于接收一标的输入数据;
一混淆输入端,用于接收一混淆输入数据,所述混淆输入数据与一明文无关;
一第一逻辑电路,耦接至所述标的输入端,用于对所述标的输入数据执行逆运算以产生一逆数据;
一第二逻辑电路,耦接至所述第一逻辑电路及所述混淆输入端,用于将所述逆数据与所述混淆输入数据合并为一组合数据;
一第一输出端,用于输出一第一输出数据;
一第二输出端,用于输出一第二输出数据,所述第二输出数据与所述第一输出数据相关联,其中,所述第一输出数据及所述第二输出数据是根据所述标的输入数据及所述混淆输入数据生成的;以及
一第三逻辑电路,耦接至所述第二逻辑电路及所述混淆输入端,用于对所述混淆输入数据及所述组合数据执行仿射运算,以产生所述第一输出数据及所述第二输出数据。
2.如权利要求1所述的S盒,其特征在于,根据伽罗华域来执行逆运算,其中,逆运算的一生成多项式不同于x8+x7+x6+x5+x4+x2+1。
3.如权利要求1所述的S盒,其特征在于,所述混淆输入数据是由一随机乱数生成电路随机生成的。
4.如权利要求1所述的S盒,其特征在于,所述第一输出数据及所述第二输出数据被随机化并且与所述明文或一加密密钥相关联。
5.如权利要求1所述的S盒,其特征在于,所述标的输入数据的比特数、所述混淆输入数据的比特数、所述第一输出数据的比特数及所述第二输出数据的比特数是相等的。
6.一种SM4装置,其特征在于,所述装置包括:
四个S盒,所述四个S盒中的每一者分别包括:
一标的输入端,用于接收四个标的输入数据其中一者;
一混淆输入端,用于接收四个混淆输入数据其中一者,所述四个混淆输入数据分别与一明文无关;
一第一逻辑电路,耦接至所述标的输入端,用于对所述标的输入数据执行逆运算以产生一逆数据;
一第二逻辑电路,耦接至所述第一逻辑电路及所述混淆输入端,用于将所述逆数据与所述混淆输入数据合并为一组合数据;
一第一输出端,用于输出四个第一输出数据其中一者;
一第二输出端,用于输出四个第二输出数据其中一者,所述第二输出数据与所述第一输出数据相关联,其中,所述第一输出数据及所述第二输出数据是根据所述标的输入数据及所述混淆输入数据生成的;以及
一第三逻辑电路,耦接至所述第二逻辑电路及所述混淆输入端,用于对所述混淆输入数据及所述组合数据执行仿射运算,以产生所述第一输出数据及所述第二输出数据。
7.如权利要求6所述的SM4装置,其特征在于,所述四个S盒中的一第一S盒的一第一生成多项式不同于所述四个S盒中的一第二S盒的一第二生成多项式。
8.如权利要求6所述的SM4装置,其特征在于,所述四个S盒中的一第一S盒的第一逆运算或第一仿射运算不同于所述四个S盒中的一第二S盒的第二逆运算或第二仿射运算。
9.如权利要求6所述的SM4装置,其特征在于,所述装置还包括:
一重新排序电路,耦接至所述四个S盒,其中,一输入数据被划分为所述四个标的输入数据中的一第一标的输入数据、一第二标的输入数据、一第三标的输入数据及一第四标的输入数据,其中所述重新排序电路是用来将所述四个标的输入数据重新进行排序,并将所述四个标的输入数据分配给所述四个S盒。
10.如权利要求9所述的SM4装置,其特征在于,所述输入数据在被划分为所述四个标的输入数据之前被随机化。
11.如权利要求9所述的SM4装置,其特征在于,所述装置还包括:
一回复排序电路,耦接至所述四个S盒,其中,以一第一顺序而排序的所述四个标的输入数据由所述重新排序电路重新排序为一第二顺序,以所述第二顺序而排序的所述四个第一输出数据由所述回复排序电路重新排序为所述第一顺序,以所述第二顺序而排序的所述四个第二输出数据由所述回复排序电路重新排序为所述第一顺序。
12.如权利要求6所述的SM4装置,其特征在于,所述四个混淆输入数据是由一随机乱数生成电路随机生成的。
13.如权利要求6所述的SM4装置,其特征在于,所述四个第一输出数据及所述四个第二输出数据被随机化并且与所述明文或一加密密钥相关联。
14.一种替换方法,其特征在于,所述替换方法包括:
接收四个标的输入数据其中一者及四个混淆输入数据其中一者,所述四个混淆输入数据分别与一明文无关;
对所述标的输入数据执行逆运算以产生一逆数据;
将所述逆数据与所述混淆输入数据合并为一组合数据;以及
对所述混淆输入数据及所述组合数据执行仿射运算,以产生四个第一输出数据其中一者及与四个第二输出数据其中一者,其中,所述四个第二输出数据分别与所述四个第一输出数据相关联,所述第一输出数据及所述第二输出数据是根据所述标的输入数据及所述混淆输入数据生成的。
15.如权利要求14所述的替换方法,其特征在于,所述替换方法还包括:
在一第一逻辑电路,对所述标的输入数据执行逆运算以产生所述逆数据,其中,逆运算的一生成多项式不同于x8+x7+x6+x5+x4+x2+1;
在一第二逻辑电路,将所述逆数据与所述混淆输入数据合并为所述组合数据,所述第二逻辑电路耦接至所述第一逻辑电路;以及
在一第三逻辑电路,对所述混淆输入数据及所述组合数据执行仿射运算,以产生所述第一输出数据及所述第二输出数据,所述第三逻辑电路耦接至所述第二逻辑电路。
16.如权利要求14所述的替换方法,其特征在于,所述替换方法还包括:
对所述四个标的输入数据执行逆运算,以分别产生四个逆数据;
将所述四个逆数据与所述四个混淆输入数据分别合并为四个组合数据;以及
对所述四个混淆输入数据及所述四个组合数据进行仿射运算,以分别产生所述四个第一输出数据及所述四个第二输出数据,其中关于所述四个标的输入数据其中一者的第一逆运算或第一仿射运算不同于关于所述四个标的输入数据其中另一者的第二逆运算或第二仿射运算。
17.如权利要求14所述的替换方法,其特征在于,所述替换方法还包括:
将所述四个标的输入数据重新进行排序,并将所述四个标的输入数据分配给四个S盒。
18.如权利要求14所述的替换方法,其特征在于,所述替换方法还包括:
将以一第一顺序而排序的所述四个标的输入数据重新排序为一第二顺序;
将以所述第二顺序而排序的所述四个第一输出数据重新排序为所述第一顺序;以及
将以所述第二顺序而排序的所述四个第二输出数据重新排序为所述第一顺序。
19.如权利要求14所述的替换方法,其特征在于,所述四个第一输出数据及所述四个第二输出数据被随机化并且与所述明文或一加密密钥相关联。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/809,567 US11632231B2 (en) | 2020-03-05 | 2020-03-05 | Substitute box, substitute method and apparatus thereof |
US16/809,567 | 2020-03-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113364574A CN113364574A (zh) | 2021-09-07 |
CN113364574B true CN113364574B (zh) | 2024-06-04 |
Family
ID=77524411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010653586.7A Active CN113364574B (zh) | 2020-03-05 | 2020-07-08 | S盒、替换方法及其装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11632231B2 (zh) |
CN (1) | CN113364574B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12235959B1 (en) * | 2020-11-24 | 2025-02-25 | University Of Florida Research Foundation, Incorporated | Apparatus for protecting against optical probing attacks |
TWI818503B (zh) * | 2022-04-11 | 2023-10-11 | 新唐科技股份有限公司 | 加密裝置以及加密方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106357380A (zh) * | 2016-10-11 | 2017-01-25 | 中国信息安全测评中心 | Sm4算法的掩码方法及装置 |
CN109644125A (zh) * | 2016-09-30 | 2019-04-16 | 英特尔公司 | 用于高级加密标准硬件的边信道免疫的线性掩码电路 |
CN109726565A (zh) * | 2017-10-27 | 2019-05-07 | 恩智浦有限公司 | 在抗泄漏原语中使用白盒 |
Family Cites Families (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100583192C (zh) * | 2000-03-09 | 2010-01-20 | 三菱电机株式会社 | 数据变换装置和数据变换方法 |
US7508937B2 (en) * | 2001-12-18 | 2009-03-24 | Analog Devices, Inc. | Programmable data encryption engine for advanced encryption standard algorithm |
JP4128395B2 (ja) * | 2002-05-23 | 2008-07-30 | 三菱電機株式会社 | データ変換装置 |
KR100594265B1 (ko) * | 2004-03-16 | 2006-06-30 | 삼성전자주식회사 | 매스킹 방법이 적용된 데이터 암호처리장치, aes암호시스템 및 aes 암호방법. |
EP1733502B1 (fr) * | 2004-03-29 | 2009-09-30 | Stmicroelectronics Sa | Processeur d'execution d'un algorithme de type aes |
US7512647B2 (en) * | 2004-11-22 | 2009-03-31 | Analog Devices, Inc. | Condensed Galois field computing system |
US8127130B2 (en) * | 2006-04-18 | 2012-02-28 | Advanced Communication Concepts, Inc. | Method and system for securing data utilizing reconfigurable logic |
US7970129B2 (en) * | 2007-04-19 | 2011-06-28 | Spansion Llc | Selection of a lookup table with data masked with a combination of an additive and multiplicative mask |
US8265273B2 (en) * | 2007-05-30 | 2012-09-11 | Panasonic Corporation | Encryption device using mask value to convert plain text into encrypted text |
CA2688592C (en) * | 2007-10-01 | 2014-04-15 | Research In Motion Limited | Substitution table masking for cryptographic processes |
US8923510B2 (en) * | 2007-12-28 | 2014-12-30 | Intel Corporation | Method and apparatus for efficiently implementing the advanced encryption standard |
FR2935503A1 (fr) * | 2008-08-28 | 2010-03-05 | St Microelectronics Rousset | Protection d'un algorithme de chiffrement |
US8175265B2 (en) * | 2008-09-02 | 2012-05-08 | Apple Inc. | Systems and methods for implementing block cipher algorithms on attacker-controlled systems |
KR100949538B1 (ko) * | 2008-09-09 | 2010-03-25 | 한국전자통신연구원 | Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법 |
JP5268609B2 (ja) * | 2008-12-09 | 2013-08-21 | 株式会社東芝 | 暗号処理装置及び演算方法 |
CN102484581B (zh) * | 2009-06-19 | 2015-07-01 | 耶德托公司 | 使用中间数据更改的具有可配置密钥的白盒密码系统 |
KR101026439B1 (ko) * | 2009-07-20 | 2011-04-07 | 한국전자통신연구원 | Seed 암호화에서 차분 전력 분석 공격을 방어하기 위한 마스킹 방법 |
FR2950721B1 (fr) * | 2009-09-29 | 2011-09-30 | Thales Sa | Procede d'execution d'un algorithme de protection d'un dispositif electronique par masquage affine et dispositif associe |
US8966279B2 (en) * | 2010-12-21 | 2015-02-24 | Apple Inc. | Securing the implementation of a cryptographic process using key expansion |
US8504845B2 (en) * | 2011-03-30 | 2013-08-06 | Apple Inc. | Protecting states of a cryptographic process using group automorphisms |
US9331848B1 (en) * | 2011-04-29 | 2016-05-03 | Altera Corporation | Differential power analysis resistant encryption and decryption functions |
KR101601684B1 (ko) * | 2011-05-18 | 2016-03-09 | 한국전자통신연구원 | 부채널 공격에 대응하는 대칭키 암호 알고리즘 구현 방법 |
US9189425B2 (en) * | 2011-09-01 | 2015-11-17 | Apple Inc. | Protecting look up tables by mixing code and operations |
JP5711681B2 (ja) * | 2012-03-06 | 2015-05-07 | 株式会社東芝 | 暗号処理装置 |
FR2995111B1 (fr) * | 2012-09-04 | 2015-07-24 | Morpho | Protection contre canaux auxiliaires |
DE102012018924A1 (de) * | 2012-09-25 | 2014-03-27 | Giesecke & Devrient Gmbh | Seitenkanalgeschützte Maskierung |
CN105359450B (zh) * | 2013-03-27 | 2020-08-07 | 爱迪德技术有限公司 | 防篡改密码算法实现 |
US9160523B2 (en) * | 2013-04-30 | 2015-10-13 | The United States Of America As Represented By The Secretary Of The Air Force | Apparatus and method to prevent side channel power attacks in advanced encryption standard |
CN105191206B (zh) * | 2013-05-01 | 2019-05-28 | 皇家飞利浦有限公司 | 电子块密码设备、方法和相应的计算机可读存储介质 |
KR102133200B1 (ko) * | 2013-08-08 | 2020-07-13 | 서울대학교산학협력단 | 데이터의 보호 방법 및 장치 |
US9843441B2 (en) * | 2013-09-24 | 2017-12-12 | Intel Corporation | Compact, low power advanced encryption standard circuit |
US9875377B2 (en) * | 2014-03-31 | 2018-01-23 | Stmicroelectronics S.R.L. | Encryption device of a substitution-box type, and corresponding encryption method and computer program product |
US9485226B2 (en) * | 2014-04-28 | 2016-11-01 | Nxp B.V. | Method for including an implicit integrity or authenticity check into a white-box implementation |
US9455833B2 (en) * | 2014-04-28 | 2016-09-27 | Nxp B.V. | Behavioral fingerprint in a white-box implementation |
US9380033B2 (en) * | 2014-04-28 | 2016-06-28 | Nxp B.V. | Implementing use-dependent security settings in a single white-box implementation |
US9363244B2 (en) * | 2014-04-28 | 2016-06-07 | Nxp B.V. | Realizing authorization via incorrect functional behavior of a white-box implementation |
US9641337B2 (en) * | 2014-04-28 | 2017-05-02 | Nxp B.V. | Interface compatible approach for gluing white-box implementation to surrounding program |
US9565018B2 (en) * | 2014-05-28 | 2017-02-07 | Apple Inc. | Protecting cryptographic operations using conjugacy class functions |
KR102446866B1 (ko) * | 2014-08-28 | 2022-09-23 | 삼성전자주식회사 | 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치 |
SG10201405852QA (en) * | 2014-09-18 | 2016-04-28 | Huawei Internat Pte Ltd | Encryption function and decryption function generating method, encryption and decryption method and related apparatuses |
DE102014016548A1 (de) * | 2014-11-10 | 2016-05-12 | Giesecke & Devrient Gmbh | Verfahren zum Testen und zum Härten von Softwareapplikationen |
FR3029719B1 (fr) * | 2014-12-04 | 2017-12-22 | Commissariat Energie Atomique | Methode de chiffrement a couches de confusion et de diffusion dynamiques |
US9819486B2 (en) * | 2014-12-19 | 2017-11-14 | Nxp B.V. | S-box in cryptographic implementation |
US20160269175A1 (en) * | 2015-03-09 | 2016-09-15 | Qualcomm Incorporated | Cryptographic cipher with finite subfield lookup tables for use in masked operations |
US20160350520A1 (en) * | 2015-05-29 | 2016-12-01 | Nxp, B.V. | Diversifying Control Flow of White-Box Implementation |
US10097342B2 (en) * | 2015-07-30 | 2018-10-09 | Nxp B.V. | Encoding values by pseudo-random mask |
FR3040513B1 (fr) * | 2015-09-02 | 2018-11-16 | Stmicroelectronics (Rousset) Sas | Protection d'un algorithme de rijndael |
FR3040514B1 (fr) * | 2015-09-02 | 2017-09-15 | Stmicroelectronics Rousset | Protection dpa d'un algorithme de rijndael |
FR3040515B1 (fr) * | 2015-09-02 | 2018-07-27 | St Microelectronics Rousset | Verification de la resistance d'un circuit electronique a des attaques par canaux caches |
US9794062B2 (en) * | 2015-10-08 | 2017-10-17 | The Boeing Company | Scrambled tweak mode of blockciphers for differential power analysis resistant encryption |
US10020932B2 (en) * | 2015-11-13 | 2018-07-10 | Nxp B.V. | Split-and-merge approach to protect against DFA attacks |
US10171234B2 (en) * | 2015-12-16 | 2019-01-01 | Nxp B.V. | Wide encoding of intermediate values within a white-box implementation |
US10103873B2 (en) * | 2016-04-01 | 2018-10-16 | Intel Corporation | Power side-channel attack resistant advanced encryption standard accelerator processor |
CA3026281A1 (en) * | 2016-06-06 | 2017-12-14 | Agilepq, Inc. | Data conversion systems and methods |
CN107547194A (zh) * | 2016-06-28 | 2018-01-05 | 埃沙尔公司 | 免受侧信道分析的保护方法和设备 |
GB2551849B (en) * | 2016-06-28 | 2019-10-09 | Mips Tech Llc | AES hardware implementation |
EP3488553A1 (en) * | 2016-07-21 | 2019-05-29 | Koninklijke Philips N.V. | Device and method for performing obfuscated arithmetic |
US10218497B2 (en) * | 2016-08-31 | 2019-02-26 | Intel Corporation | Hybrid AES-SMS4 hardware accelerator |
US10461925B2 (en) * | 2016-09-01 | 2019-10-29 | Cryptography Research, Inc. | Hardware masked substitution box for the data encryption standard |
CN106788974B (zh) * | 2016-12-22 | 2020-04-28 | 深圳国微技术有限公司 | 掩码s盒、分组密钥计算单元、装置及对应的构造方法 |
EP3367606B1 (en) * | 2017-02-24 | 2019-09-18 | Secure-IC SAS | Automatic insertion of masking into an algorithm |
DE102017002153A1 (de) * | 2017-03-06 | 2018-09-06 | Giesecke+Devrient Mobile Security Gmbh | Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung |
WO2018188002A1 (en) * | 2017-04-12 | 2018-10-18 | Beijing Lianshi Networks Technology Co., Ltd. | Methods and apparatus for secure and efficient implementation of block ciphers |
US10797858B2 (en) * | 2018-02-02 | 2020-10-06 | Intel Corporation | Unified hardware accelerator for symmetric-key ciphers |
FR3078464A1 (fr) * | 2018-02-26 | 2019-08-30 | Stmicroelectronics (Rousset) Sas | Procede et circuit de mise en oeuvre d'une table de substitution |
GB2574261B (en) * | 2018-06-01 | 2020-06-03 | Advanced Risc Mach Ltd | Efficient unified hardware implementation of multiple ciphers |
US11121856B2 (en) * | 2018-06-15 | 2021-09-14 | Intel Corporation | Unified AES-SMS4—Camellia symmetric key block cipher acceleration |
US20190044699A1 (en) * | 2018-06-28 | 2019-02-07 | Intel Corporation | Reconfigurable galois field sbox unit for camellia, aes, and sm4 hardware accelerator |
US11695542B2 (en) * | 2019-02-28 | 2023-07-04 | Intel Corporation | Technology for generating a keystream while combatting side-channel attacks |
US20200313850A1 (en) * | 2019-03-29 | 2020-10-01 | Irdeto Canada Corporation | Method and apparatus for implementing a white-box cipher |
US11838403B2 (en) * | 2019-04-12 | 2023-12-05 | Board Of Regents, The University Of Texas System | Method and apparatus for an ultra low power VLSI implementation of the 128-bit AES algorithm using a novel approach to the shiftrow transformation |
WO2020212016A1 (en) * | 2019-04-15 | 2020-10-22 | Telefonaktiebolaget Lm Ericsson (Publ) | Low depth aes sbox architecture for area-constraint hardware |
US11283619B2 (en) * | 2019-06-20 | 2022-03-22 | The Boeing Company | Bit mixer based parallel MAC and hash functions |
US11700111B2 (en) * | 2019-06-26 | 2023-07-11 | Cryptography Research, Inc. | Platform neutral data encryption standard (DES) cryptographic operation |
US11475168B2 (en) * | 2019-07-23 | 2022-10-18 | University Of Florida Research Foundation, Inc. | CAD framework for power side-channel vulnerability assessment |
TWI731770B (zh) * | 2019-08-16 | 2021-06-21 | 熵碼科技股份有限公司 | 運算系統 |
JP7383985B2 (ja) * | 2019-10-30 | 2023-11-21 | 富士電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
US11569980B2 (en) * | 2019-11-20 | 2023-01-31 | International Business Machines Corporation | Combined SBox and inverse SBox cryptography |
-
2020
- 2020-03-05 US US16/809,567 patent/US11632231B2/en active Active
- 2020-07-08 CN CN202010653586.7A patent/CN113364574B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109644125A (zh) * | 2016-09-30 | 2019-04-16 | 英特尔公司 | 用于高级加密标准硬件的边信道免疫的线性掩码电路 |
CN106357380A (zh) * | 2016-10-11 | 2017-01-25 | 中国信息安全测评中心 | Sm4算法的掩码方法及装置 |
CN109726565A (zh) * | 2017-10-27 | 2019-05-07 | 恩智浦有限公司 | 在抗泄漏原语中使用白盒 |
Also Published As
Publication number | Publication date |
---|---|
CN113364574A (zh) | 2021-09-07 |
US11632231B2 (en) | 2023-04-18 |
US20210281390A1 (en) | 2021-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7107670B2 (ja) | ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 | |
EP2356771B1 (en) | Low latency block cipher | |
US10320554B1 (en) | Differential power analysis resistant encryption and decryption functions | |
US8379841B2 (en) | Method and system for high throughput blockwise independent encryption/decryption | |
US7822797B2 (en) | System and method for generating initial vectors | |
JP5700128B2 (ja) | 暗号化処理装置および認証方法 | |
EP3322119B1 (en) | Data processing method and apparatus | |
Samir et al. | ASIC and FPGA comparative study for IoT lightweight hardware security algorithms | |
KR20150064148A (ko) | 물리적 복제방지 기능으로서 이용되는 메모리로부터 암호 키를 생성하기 위한 시스템 | |
WO2001008012A1 (en) | Method and apparatus for preventing information leakage attacks on a microelectronic assembly | |
US11258579B2 (en) | Method and circuit for implementing a substitution table | |
Nara et al. | A scan-based attack based on discriminators for AES cryptosystems | |
CN113364574B (zh) | S盒、替换方法及其装置 | |
WO2024164784A1 (zh) | 一种基于整数运算密码学置换的流密码加解密方法 | |
CN107453866A (zh) | 一种对数据进行加密的方法 | |
JP6287785B2 (ja) | 暗号処理装置、および暗号処理方法、並びにプログラム | |
CN1826753B (zh) | 保密密钥控制的可逆电路和相应的数据处理方法 | |
JP4470135B2 (ja) | 擬似乱数生成システム | |
US20040184607A1 (en) | Crypto-system with an inverse key evaluation circuit | |
US20190199526A1 (en) | Communication system and data communication method | |
JP2023130311A (ja) | サイドチャネル攻撃から電子コンピュータを保護する方法及び電子コンピュータ | |
KR100756435B1 (ko) | 키스트림 생성방법 및 장치 | |
KR20060068006A (ko) | 전력분석에 의한 데이터 버스 공격을 막기 위한 랜덤 버스스크램블 장치 | |
CN114969847B (zh) | 一种基于数据地址混合加密的存储器加密电路 | |
US20250038952A1 (en) | Methods, unit and device for successively executing first and next block cryptographic computations |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |