CN112583573B - Sm4防故障攻击方法及sm4防故障攻击装置 - Google Patents
Sm4防故障攻击方法及sm4防故障攻击装置 Download PDFInfo
- Publication number
- CN112583573B CN112583573B CN202011306960.2A CN202011306960A CN112583573B CN 112583573 B CN112583573 B CN 112583573B CN 202011306960 A CN202011306960 A CN 202011306960A CN 112583573 B CN112583573 B CN 112583573B
- Authority
- CN
- China
- Prior art keywords
- key
- round
- keys
- registers
- master
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000002265 prevention Effects 0.000 title claims description 12
- 238000004364 calculation method Methods 0.000 claims abstract description 11
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
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/004—Countermeasures against attacks on cryptographic mechanisms for fault attacks
-
- 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
-
- 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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种SM4防故障攻击方法及装置,属于信息安全技术领域。所述方法包括:将主密钥在两个主密钥寄存器中各存储一次;对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥;将两个轮密钥一一对应存储到两个轮密钥寄存器中;使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。该方法将主密钥在不同的两个主密钥寄存器中各存储一次,并对两个主密钥寄存器中的主密钥分别进行密钥编排,编排得到的轮密钥存储在不同的两个轮密钥寄存器中,确保如果一个存储位置的主密钥或轮密钥受到攻击改变,另外一个存储位置的主密钥或轮密钥与其不同,可以通过两次运算的方式,检测出故障。
Description
技术领域
本发明涉及信息安全技术领域,具体地涉及一种SM4防故障攻击方法以及一种SM4防故障攻击装置。
背景技术
随着信息化和数字化社会的不断发展,人们对信息的安全和保密重要性的认识不断提高。加密算法正是信息安全和保密的核心技术之一。SM4密码算法作为WAPI相关密码算法,是国内官方公布的第一个商用分组密码算法。
随着信息安全的重要性不断增加,对密码算法的攻击方法和手段也不断增加。其中故障攻击是各种攻击手段之一,指的是运用外力对算法执行过程注入故障,使得寄存器或者存储器或者传输中的数据发生错误。
为防故障攻击,目前通常有两种方案:一、对每个数组数据进行正运算后,再进行一次逆运算,比对逆运算的输出是否与正运算的输入相等,若相等,则认为运算过程或者数据未受到攻击,否则认为受到攻击。二、对每个数组数据进行两次正运算后,比对两次正运算的输出是否相等,若相等,则认为运算过程或者数据未受到攻击,否则认为受到攻击。两种方案的特点在于对每个分组数据进行两次运算,通过对比两次的运算数据,判断运算是否受到攻击。
上面两种方案对于密钥通常有两种处理方法:
1.所有分组数据的整个运算过程仅进行一次密钥输入和一次密钥编排
所有分组数据的整个运算过程仅在第一个分组的第一运算前输入一次密钥,在第一个分组的第一次运算前或者第一次运算时进行一次密钥编排,将密钥编排后的结果放置在轮密钥寄存器中,以后所有的运算均使用该轮密钥寄存器中的值。这种方案的优点是,速度快。缺点是,不够安全,表现为:1)若密钥在通过总线向硬件寄存器写的过程中受到总线攻击,则存到密钥寄存器中的密钥是错误的,进而密钥编排出来的轮密钥也是错误的,但是由于同一个分组的两次运算使用的密钥都是来自于同一个轮密钥寄存器,值是相同的,故无法检测出受到了故障攻击;2)若对轮密钥寄存器的攻击恰好发生在第i个分组的第二次运算后,第i+1个分组的第一次运算前,如此,第i个分组的两次运算均使用正确的密钥,无法检测出错误,而第i+1个分组及之后的分组的两次运算都是使用的相同的错误轮密钥,故也无法检测出受到了故障攻击。
2.每次运算前都重新输入密钥,并重新计算轮密钥值
每个分组的每次运算前都重新输入密钥,并重新进行密钥编排得到轮密钥。这种方案的优点是:安全,可以检测出发生在任何位置的攻击。缺点是:速度慢。表现为:1)每次输入密钥需要消耗一定的时间;2)解密过程中,密钥编排和解密运算部分无法并行运算,只能串行运算,密钥编排所需时间与解密运算所需时间相近,如此大大降低了解密的性能。
发明内容
本发明实施方式的目的是提供一种SM4防故障攻击方法及装置,该装置用于实施该方法,该方法将主密钥在不同的两个主密钥寄存器中各存储一次,并对两个主密钥寄存器中的主密钥分别进行密钥编排,编排得到的轮密钥存储在不同的两个轮密钥寄存器中,确保如果一个存储位置的主密钥或轮密钥受到了攻击改变,另外一个存储位置的主密钥或轮密钥与其不同,仍然可以通过两次运算的方式,检测出故障。同时整个运算过程中仅需要进行两次密钥存储和密钥编排,与每次运算前都重新输入密钥并重新计算轮密钥值相比能够较大的提升速度。
为了实现上述目的,本发明第一方面提供一种SM4防故障攻击方法,所述方法包括:
将主密钥在两个主密钥寄存器中各存储一次;
对所述两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥;
将所述两个轮密钥一一对应存储到两个轮密钥寄存器中;
使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。将主密钥在不同的两个主密钥寄存器中各存储一次,并对两个主密钥寄存器中的主密钥分别进行密钥编排,编排得到的轮密钥存储在不同的两个轮密钥寄存器中,确保如果一个存储位置的主密钥或轮密钥受到了攻击改变,另外一个存储位置的主密钥或轮密钥与其不同,仍然可以通过两次运算的方式,检测出故障。
进一步地,所述两个主密钥寄存器包括第一主密钥寄存器和第二主密钥寄存器;所述两个轮密钥包括第一轮密钥和第二轮密钥;所述两个轮密钥寄存器包括存储所述第一轮密钥的第一轮密钥寄存器和存储所述第二轮密钥的第二轮密钥寄存器。
可选的,所述对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥,包括:
在第一个分组数据进行第一次运算前对所述第一主密钥寄存器中的主密钥进行密钥编排,得到所述第一轮密钥;
在第一个分组数据进行第二次运算前对所述第二主密钥寄存器中的主密钥进行密钥编排,得到所述第二轮密钥。
可选的,所述对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥,包括:
在第一个分组数据进行第一次运算时对所述第一主密钥寄存器中的主密钥进行密钥编排,得到所述第一轮密钥;
在第一个分组数据进行第二次运算时对所述第二主密钥寄存器中的主密钥进行密钥编排,得到所述第二轮密钥。
可选的,所述使用不同轮密钥寄存器中的轮密钥对正运算输入的分组数据进行运算,根据运算结果判定是否受到故障攻击,包括:
使用所述第一轮密钥寄存器中的所述第一轮密钥对输入的分组数据进行正运算,得到正运算结果;
使用所述第二轮密钥寄存器中的所述第二轮密钥以及所述正运算结果进行逆运算,得到逆运算结果;
比较所述逆运算结果与正运算输入的所述分组数据是否相同:
若是,则判定未受到故障攻击,并输出正运算结果,同时返回加密成功信息;
若否,则判定受到故障攻击,返回加密错误提示。通过使用不同的轮密钥寄存器中的轮密钥进行一正一逆两次运算,通过比较逆运算的结果与正运算的输入,能够有效确定是否受到攻击。
可选的,所述使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击,包括:
使用所述第一轮密钥寄存器中的所述第一轮密钥对输入的分组数据进行第一次正运算,得到第一正运算结果;
使用所述第二轮密钥寄存器中的所述第二轮密钥对输入的分组数据进行第二次正运算,得到第二正运算结果;
比较所述第一正运算结果与所述第二正运算结果是否相同:
若是,则判定未受到故障攻击,输出任一正运算结果,同时返回加密成功信息;
若否,则判定受到故障攻击,返回加密错误提示。通过使用不同的轮密钥寄存器中的轮密钥分别进行一次正运算,通过比较两次正运算结果能够有效确定是否受到攻击。
本发明第二方面提供一种SM4防故障攻击装置,所述装置包括:
两个主密钥寄存器,各用于存储一次主密钥;
两个轮密钥寄存器,用于一一对应存储所述两个主密钥寄存器中存储的所述主密钥进行相同的密钥编排得到的两个轮密钥;
防故障攻击模块,用于使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。两个主密钥寄存器中各存储一次主密钥,并对两个主密钥寄存器中的主密钥分别进行密钥编排,编排得到的轮密钥存储在不同的两个轮密钥寄存器中,确保如果一个存储位置的主密钥或轮密钥受到了攻击改变,另外一个存储位置的主密钥或轮密钥与其不同,仍然可以通过两次运算的方式,检测出故障。
通过上述技术方案,该装置用于实施该方法,该方法将主密钥在不同的两个主密钥寄存器中各存储一次,并对两个主密钥寄存器中的主密钥分别进行密钥编排,编排得到的轮密钥存储在不同的两个轮密钥寄存器中,确保如果一个存储位置的主密钥或轮密钥受到了攻击改变,另外一个存储位置的主密钥或轮密钥与其不同,仍然可以通过两次运算的方式,检测出故障。同时整个运算过程中仅需要进行两次密钥存储和密钥编排,与每次运算前都重新输入密钥并重新计算轮密钥值相比能够较大的提升速度。
另一方面,由于SM4解密的特殊性,即解密运算与密钥编排必须串行运行。当运算数据量较大时,与第一种密钥处理方式相比,如果采用的为正反运算防故障方式,那么本文提出方案,使整个运算性能提升约1/4。如果采用的为两次正运算的防故障方式,那么本文提出的方案,使得执行解密运算时,性能提升了约1/2。
本发明实施方式的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施方式的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施方式,但并不构成对本发明实施方式的限制。在附图中:
图1是本发明一种实施方式提供的密钥输入和编排流程图;
图2是本发明一种实施方式提供的SM4防故障攻击方法流程图;
图3是本发明第二种实施方式提供的SM4防故障攻击方法流程图;
图4是第一故障攻击示意图;
图5是第二故障攻击示意图;
图6是第三故障攻击示意图;
图7是第四故障攻击示意图;
图8是第五故障攻击示意图;
图9是第六故障攻击示意图;
图10是本发明一种实施方式提供的SM4防故障攻击装置框图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
在本发明的实施例中,最初输入的主密钥记为key,第一主密钥寄存器中存储的主密钥记为key1;第一主密钥寄存器中存储的主密钥记为key2;第一轮密钥记为subkey1;第二轮密钥记为subkey2。如果整个过程均未受到攻击,那么有key=key1=key2,subkey1=key_schedule(key1)=key_schedule(key1)=subkey2。其中key_schedule指密钥编排函数。以正运算为加密运算为例,E代表加密,D代表解密,mi代表第i个分组数据的明文,ci代表使用第一轮密钥subkey1对mi进行加密得到的密文,mi’代表使用第二轮密钥subkey2对ci进行解密后的结果,ci’代表使用轮密钥subkey2对mi进行加密后的结果。
实施例一
本发明的第一种实施方式提供的一种SM4防故障攻击方法,所述方法包括:
将主密钥在两个主密钥寄存器中各存储一次;
对所述两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥;
将所述两个轮密钥一一对应存储到两个轮密钥寄存器中;
使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。将主密钥在不同的两个主密钥寄存器中各存储一次,并对两个主密钥寄存器中的主密钥分别进行密钥编排,编排得到的轮密钥存储在不同的两个轮密钥寄存器中,确保如果一个存储位置的主密钥或轮密钥受到了攻击改变,另外一个存储位置的主密钥或轮密钥与其不同,仍然可以通过两次运算的方式,检测出故障。
进一步地,所述两个主密钥寄存器包括第一主密钥寄存器和第二主密钥寄存器;所述两个轮密钥包括第一轮密钥和第二轮密钥;所述两个轮密钥寄存器包括存储所述第一轮密钥的第一轮密钥寄存器和存储所述第二轮密钥的第二轮密钥寄存器。
可选的,所述对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥,包括:
在第一个分组数据进行第一次运算前对第一主密钥寄存器中的主密钥进行密钥编排,得到第一轮密钥;
在第一个分组数据进行第二次运算前对第二主密钥寄存器中的主密钥进行密钥编排,得到第二轮密钥。
具体的,使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击,包括:
使用所述第一轮密钥寄存器中的所述第一轮密钥对输入的分组数据进行正运算,得到正运算结果;
使用所述第二轮密钥寄存器中的所述第二轮密钥以及所述正运算结果进行逆运算,得到逆运算结果;
比较所述逆运算结果与正运算输入的所述分组数据是否相同:
若是,则判定未受到故障攻击,并输出正运算结果,同时返回加密成功信息;
若否,则判定受到故障攻击,返回加密错误提示。通过使用不同的轮密钥寄存器中的轮密钥进行一正一逆两次运算,通过比较逆运算的结果与正运算的输入,能够有效确定是否受到攻击。
如图1和图2所示,在本实施例中,输入主密钥key后分别存储到第一主密钥寄存器和第二主密钥寄存器中,得到key1和key2;第一主密钥寄存器中的key1进行密钥编排后得到第一轮密钥subkey1并存储在第一轮密钥寄存器中;第二主密钥寄存器中的key2进行密钥编排后得到第二轮密钥subkey2并存储在第二轮密钥寄存器中。
在进行运算时,使用第一轮密钥subkey1对第i个分组数据的明文mi进行加密运算,得到密文ci,然后使用第二轮密钥subkey2对密文ci进行解密运算,得到明文mi’,比较明文mi’与明文mi,判断二者是否相同,若相同,则输出加密运算结果密文ci,返回加密成功提示,若不相同,则返回加密错误提示。
实施例二
本发明的第二种实施方式提供的一种SM4防故障攻击方法,所述方法包括:
将主密钥在两个主密钥寄存器中各存储一次;
对所述两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥;
将所述两个轮密钥一一对应存储到两个轮密钥寄存器中;
使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。将主密钥在不同的两个主密钥寄存器中各存储一次,并对两个主密钥寄存器中的主密钥分别进行密钥编排,编排得到的轮密钥存储在不同的两个轮密钥寄存器中,确保如果一个存储位置的主密钥或轮密钥受到了攻击改变,另外一个存储位置的主密钥或轮密钥与其不同,仍然可以通过两次运算的方式,检测出故障。
进一步地,所述两个主密钥寄存器包括第一主密钥寄存器和第二主密钥寄存器;所述两个轮密钥包括第一轮密钥和第二轮密钥;所述两个轮密钥寄存器包括存储所述第一轮密钥的第一轮密钥寄存器和存储所述第二轮密钥的第二轮密钥寄存器。
可选的,所述对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥,包括:
在第一个分组数据进行第一次运算时对第一主密钥寄存器中的主密钥进行密钥编排,得到第一轮密钥;
在第一个分组数据进行第二次运算时对第二主密钥寄存器中的主密钥进行密钥编排,得到第二轮密钥。
具体的,使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击,包括:
使用所述第一轮密钥寄存器中的所述第一轮密钥对输入的分组数据进行第一次正运算,得到第一正运算结果;
使用所述第二轮密钥寄存器中的所述第二轮密钥对输入的分组数据进行第二次正运算,得到第二正运算结果;
比较所述第一正运算结果与所述第二正运算结果是否相同:
若是,则判定未受到故障攻击,输出任一正运算结果,同时返回加密成功信息;
若否,则判定受到故障攻击,返回加密错误提示。通过使用不同的轮密钥寄存器中的轮密钥分别进行一次正运算,通过比较两次正运算结果能够有效确定是否受到攻击。
如图1和图3所示,在本实施例中,输入主密钥key后分别存储到第一主密钥寄存器和第二主密钥寄存器中,得到key1和key2;第一主密钥寄存器中的key1进行密钥编排后得到第一轮密钥subkey1并存储在第一轮密钥寄存器中;第二主密钥寄存器中的key2进行密钥编排后得到第二轮密钥subkey2并存储在第二轮密钥寄存器中。在进行运算时,使用第一轮密钥subkey1对第i个分组数据的明文mi进行加密运算,得到密文ci,同时使用第二轮密钥subkey2对第i个分组数据的明文mi进行加密运算,得到密文ci’,比较密文ci’与密文ci,判断二者是否相同,若相同,则输出加密运算结果密文ci或ci’,返回加密成功提示,若不相同,则返回加密错误提示。
可选的,所述故障攻击包括:
第一故障攻击:将主密钥写入主密钥寄存器的过程中受到故障攻击,写入的主密钥改变。如图4所示,在主密钥key往第一主寄存器写的过程中受到攻击,则写入第一主寄存器的数据变为key1’,key1’≠key2,进行密钥编排后得到的subkey1≠subkey2,从而同一个分组的两次运算使用的轮密钥值不同,则可以检测出错误。
第二故障攻击:主密钥寄存器中的主密钥在进行密钥编排前受到故障攻击,主密钥改变。如图5所示,在第一主密钥寄存器中的值在进行密钥编排前受到攻击,即key1受到攻击,被攻击为key1’,则导致编排读取到key1’,且key1’≠key2,进行密钥编排后得到的subkey1≠subkey2,从而同一个分组的两次运算使用的轮密钥值不同,则可以检测出错误。
第三故障攻击:读取主密钥寄存器中的主密钥过的程中受到故障攻击,编排使用的主密钥改变,编排得到的轮密钥改变。如图6所示,在读取第一主密钥寄存器中的值时受到攻击,读取到的值被攻击为key1’,且key1’≠key2,进行密钥编排后得到的subkey1≠subkey2,从而同一个分组的两次运算使用的轮密钥值不同,则可以检测出错误。
第四故障攻击:主密钥在进行编排的过程中受到故障攻击,编排得到的轮密钥改变。如图7所示,如果某个主密钥的密钥编排过程受到攻击,例如key1的密钥编排过程受到攻击,则导致编排得到的subkey1≠subkey2,从而同一个分组的两次运算使用的轮密钥值不同,则可以检测出错误。
第五故障攻击:轮密钥写入轮密钥寄存器的过程中受到故障攻击,写入的轮密钥改变。如图8所示,在将编排得到的轮密钥写入第一轮密钥寄存器的过程中受到攻击,被攻击为subkey1’,则导致写入第一轮密钥寄存器的值为subkey1’,subkey1’≠subkey2,从而同一个分组的两次运算使用的轮密钥值不同,则可以检测出错误。
第六故障攻击:轮密钥寄存器中的轮密钥在分组运算前或者运算时受到攻击,分组运算使用的轮密钥改变。如图9所示,如果在某个分组数据运算前或者运算时,轮密钥寄存器受到攻击,例如第一轮密钥寄存器,subkey1被攻击为subkey1’,则导致subkey1’≠subkey2,从而同一个分组的两次运算使用的轮密钥值不同,则可以检测出错误。
图10是本发明一种实施方式提供的SM4防故障攻击装置框图。如图所示,所述装置包括:
两个主密钥寄存器,包括第一主密钥寄存器和第二主密钥寄存器,各用于存储一次主密钥;
两个轮密钥寄存器,用于一一对应存储所述两个主密钥寄存器中存储的所述主密钥进行相同的密钥编排得到的两个轮密钥,包括用于存储第一轮密钥的第一轮密钥寄存器和存储第二轮密钥的第二轮密钥寄存器;
防故障攻击模块,用于使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。例如使用第一轮密钥寄存器中的第一轮密钥对分组数据进行第一次运算,然后再使用第二轮密钥寄存器中的第二轮密钥对分组数据进行第二次运算,然后根据两次运算的结果判定是否受到故障攻击。
两个主密钥寄存器中各存储一次主密钥,并对两个主密钥寄存器中的主密钥分别进行密钥编排,编排得到的轮密钥存储在不同的两个轮密钥寄存器中,确保如果一个存储位置的主密钥或轮密钥受到了攻击改变,另外一个存储位置的主密钥或轮密钥与其不同,仍然可以通过两次运算的方式,检测出故障。
可选的,所述装置还包括:
密钥编排模块,用于对所述两个主密钥寄存器中存储的主密钥进行密钥编排,得到对应的两个轮密钥。
采用本发明的SM4防故障攻击方法在整个加密过程中仅需要进行两次密钥输入和密钥编排,并且两次密钥输入的数据存放在不同位置,对两个位置的密钥分别进行密钥编排后的轮密钥数据也存放在不同位置,这就确保了如果一个位置的主密钥或轮密钥受到了攻击,另外一个位置的主密钥或轮密钥与其不同,仍然可以通过两次运算的方式,检测出故障。相比于每次运算都进行密钥输入和密钥编排,当运算数据量较大时,本方案对性能有了较明显的提升。
本领域技术人员应当理解,本发明中术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本领域技术人员可以理解实现上述实施方式的方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上结合附图详细描述了本发明的可选实施方式,但是,本发明实施方式并不限于上述实施方式中的具体细节,在本发明实施方式的技术构思范围内,可以对本发明实施方式的技术方案进行多种简单变型,这些简单变型均属于本发明实施方式的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施方式对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施方式的思想,其同样应当视为本发明实施方式所公开的内容。
Claims (7)
1.一种SM4防故障攻击方法,其特征在于,所述方法包括:
将主密钥在两个主密钥寄存器中各存储一次;
对所述两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥;
将所述两个轮密钥一一对应存储到两个轮密钥寄存器中;
使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。
2.根据权利要求1所述的SM4防故障攻击方法,其特征在于,所述两个主密钥寄存器包括第一主密钥寄存器和第二主密钥寄存器;所述两个轮密钥包括第一轮密钥和第二轮密钥;所述两个轮密钥寄存器包括存储所述第一轮密钥的第一轮密钥寄存器和存储所述第二轮密钥的第二轮密钥寄存器。
3.根据权利要求2所述的SM4防故障攻击方法,其特征在于,所述对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥,包括:
在第一个分组数据进行第一次运算前对所述第一主密钥寄存器中的主密钥进行密钥编排,得到所述第一轮密钥;
在第一个分组数据进行第二次运算前对所述第二主密钥寄存器中的主密钥进行密钥编排,得到所述第二轮密钥。
4.根据权利要求2所述的SM4防故障攻击方法,其特征在于,所述对两个主密钥寄存器中存储的主密钥进行相同的密钥编排,得到对应的两个轮密钥,包括:
在第一个分组数据进行第一次运算时对所述第一主密钥寄存器中的主密钥进行密钥编排,得到所述第一轮密钥;
在第一个分组数据进行第二次运算时对所述第二主密钥寄存器中的主密钥进行密钥编排,得到所述第二轮密钥。
5.根据权利要求3或4所述的SM4防故障攻击方法,其特征在于,所述使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击,包括:
使用所述第一轮密钥寄存器中的所述第一轮密钥对输入的分组数据进行正运算,得到正运算结果;
使用所述第二轮密钥寄存器中的所述第二轮密钥以及所述正运算结果进行逆运算,得到逆运算结果;
比较所述逆运算结果与正运算输入的所述分组数据是否相同:
若是,则判定未受到故障攻击,并输出正运算结果,同时返回加密成功信息;
若否,则判定受到故障攻击,返回加密错误提示。
6.根据权利要求3或4所述的SM4防故障攻击方法,其特征在于,所述使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击,包括:
使用所述第一轮密钥寄存器中的所述第一轮密钥对输入的分组数据进行第一次正运算,得到第一正运算结果;
使用所述第二轮密钥寄存器中的所述第二轮密钥对输入的分组数据进行第二次正运算,得到第二正运算结果;
比较所述第一正运算结果与所述第二正运算结果是否相同:
若是,则判定未受到故障攻击,输出任一正运算结果,同时返回加密成功信息;
若否,则判定受到故障攻击,返回加密错误提示。
7.一种SM4防故障攻击装置,其特征在于,所述装置包括:
两个主密钥寄存器,各用于存储一次主密钥;
两个轮密钥寄存器,用于一一对应存储所述两个主密钥寄存器中存储的所述主密钥进行相同的密钥编排得到的两个轮密钥;
防故障攻击模块,用于使用不同轮密钥寄存器中的轮密钥对输入的分组数据进行运算,根据运算结果判定是否受到故障攻击。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011306960.2A CN112583573B (zh) | 2020-11-19 | 2020-11-19 | Sm4防故障攻击方法及sm4防故障攻击装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011306960.2A CN112583573B (zh) | 2020-11-19 | 2020-11-19 | Sm4防故障攻击方法及sm4防故障攻击装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112583573A CN112583573A (zh) | 2021-03-30 |
CN112583573B true CN112583573B (zh) | 2022-01-14 |
Family
ID=75122963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011306960.2A Active CN112583573B (zh) | 2020-11-19 | 2020-11-19 | Sm4防故障攻击方法及sm4防故障攻击装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112583573B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102468954A (zh) * | 2010-11-10 | 2012-05-23 | 上海华虹集成电路有限责任公司 | 防对称密码算法受攻击的方法 |
CN104579636A (zh) * | 2015-02-16 | 2015-04-29 | 滨州职业学院 | 一种超高速实现sm4算法的系统及其运行方法 |
CN110034918A (zh) * | 2019-03-15 | 2019-07-19 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9503256B2 (en) * | 2014-12-24 | 2016-11-22 | Intel Corporation | SMS4 acceleration hardware |
-
2020
- 2020-11-19 CN CN202011306960.2A patent/CN112583573B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102468954A (zh) * | 2010-11-10 | 2012-05-23 | 上海华虹集成电路有限责任公司 | 防对称密码算法受攻击的方法 |
CN104579636A (zh) * | 2015-02-16 | 2015-04-29 | 滨州职业学院 | 一种超高速实现sm4算法的系统及其运行方法 |
CN110034918A (zh) * | 2019-03-15 | 2019-07-19 | 深圳市纽创信安科技开发有限公司 | 一种sm4加速方法和装置 |
Non-Patent Citations (1)
Title |
---|
基于随机故障注入的SM4差分故障攻击方法;荣雪芳 等;《计算机工程》;20160731;第42卷(第7期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112583573A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8484486B2 (en) | Integrated cryptographic security module for a network node | |
US9898623B2 (en) | Method for performing an encryption with look-up tables, and corresponding encryption apparatus and computer program product | |
US9298947B2 (en) | Method for protecting the integrity of a fixed-length data structure | |
US8644500B2 (en) | Apparatus and method for block cipher process for insecure environments | |
CN106487499B (zh) | Rijndael算法的保护 | |
US11258579B2 (en) | Method and circuit for implementing a substitution table | |
US20170063523A1 (en) | Dpa protection of a rijndael algorithm | |
WO2016200474A1 (en) | Techniques for integrated circuit data path confidentiality and extensions thereof | |
Aldaya et al. | AES T-Box tampering attack | |
US7779272B2 (en) | Hardware cryptographic engine and encryption method | |
CN107832635A (zh) | 访问权限控制方法、装置、设备及计算机可读存储介质 | |
WO2017173136A9 (en) | Key update for masked keys | |
US8958556B2 (en) | Method of secure cryptographic calculation, in particular, against attacks of the DFA and unidirectional type, and corresponding component | |
CN106656473B (zh) | 一种安全的des算法的mac计算方法及系统 | |
CN112583573B (zh) | Sm4防故障攻击方法及sm4防故障攻击装置 | |
GB2399426A (en) | Fault detection in data processing apparatus | |
US11244078B2 (en) | Side channel attack protection | |
EP2363974A1 (en) | Variable table masking for cryptographic processes | |
Bertoni et al. | Fault detection in the advanced encryption standard | |
EP3832945B1 (en) | System and method for protecting memory encryption against template attacks | |
CN116781265A (zh) | 一种数据加密的方法和装置 | |
KR101105384B1 (ko) | 키 암호화 및 셔플링이 적용된 부채널 공격에 안전한 키 관리방법 | |
CA2327037A1 (en) | Method to detect fault attacks against cryptographic algorithms | |
EP3484095A1 (en) | Computer-implemented cryptographic method and device for implementing this method | |
CN115842628A (zh) | 实现密钥处理的方法、装置、计算机存储介质及固态硬盘 |
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 |