CN114070560B - 一种针对分组密码的代数持久性故障分析方法及装置 - Google Patents

一种针对分组密码的代数持久性故障分析方法及装置 Download PDF

Info

Publication number
CN114070560B
CN114070560B CN202210038526.3A CN202210038526A CN114070560B CN 114070560 B CN114070560 B CN 114070560B CN 202210038526 A CN202210038526 A CN 202210038526A CN 114070560 B CN114070560 B CN 114070560B
Authority
CN
China
Prior art keywords
fault
equation
ciphertext
encryption
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.)
Expired - Fee Related
Application number
CN202210038526.3A
Other languages
English (en)
Other versions
CN114070560A (zh
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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202210038526.3A priority Critical patent/CN114070560B/zh
Publication of CN114070560A publication Critical patent/CN114070560A/zh
Application granted granted Critical
Publication of CN114070560B publication Critical patent/CN114070560B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开了一种针对分组密码的代数持久性故障分析方法及装置,包括:对分组密码进行故障注入,得到含有故障的目标密码;将随机明文输入所述目标密码,得到故障密文;利用所述故障密文,获得故障值根据所述故障值,为每条所述故障密文构建倒数r轮的加密代数方程,并为所述加密代数方程添加对应的密钥约束代数方程;对所述加密代数方程进行求解,得到加密主密钥。该方法将持久性故障分析和代数分析相结合,发挥了二者的优势,在最大程度上减少了恢复密钥所需的故障密文数量。

Description

一种针对分组密码的代数持久性故障分析方法及装置
技术领域
本申请涉及通信与信息安全领域,尤其涉及一种针对分组密码的代数持久性故障分析方法及装置。
背景技术
分组密码算法是密码学当中一个重要的领域,它被广泛地应用于智能卡等商用设备中。目前广泛使用的诸如高级加密标准(Advanced Encryption Standard),PRESENT等常见密码算法都有着极高的理论安全性能,传统的密码学分析方法很难对这些算法产生实质性的威胁。
对于分组密码,故障攻击是一类常见的攻击方式。故障攻击通过改变密码系统的运行条件,或是施加外部干扰使得密码算法的运行出错,进而获取到密码系统内部的敏感信息。按照实施过程,故障攻击可以分为两个阶段。第一阶段被称为故障注入阶段,该阶段攻击者需要对密码设备的运行进行干扰并使其出错,常见的故障注入手段包括电磁、激光、电压以及时钟毛刺等等。第二阶段被称为故障分析阶段,该阶段中攻击者对带有故障的密码设备的输出进行分析,从而推测出密码系统中的敏感信息。
常见的故障分析手段有DFA(差分故障分析)、AFA(代数故障分析)、SFA(统计故障分析)等。对故障存在时间进行分类时可以分为瞬时故障(transient fault)、永久故障(permanent fault)和持久故障(persistent fault)等,其中,大多数传统的故障攻击方法多是针对于瞬时故障。
在2018年CHES上张帆等人提出了PFA(持久性故障分析),持久性故障指在密码设 备中持久性存在的故障但在设备重启时会消失。该分析方法会在分组密码的S盒中注入故 障,使得S盒中某一项值发生改变,从而导致S盒的输出分布变得不再均匀。
Figure 421108DEST_PATH_IMAGE001
Figure 869407DEST_PATH_IMAGE002
分别表示S 盒故障位置的原值和改变后的值,其有关系
Figure 914724DEST_PATH_IMAGE003
,其中
Figure 575512DEST_PATH_IMAGE004
表示故障差分值。假设密码算 法的最后一轮为S盒的输出与密钥
Figure 422508DEST_PATH_IMAGE005
异或后得到故障密文
Figure 510549DEST_PATH_IMAGE006
由于S盒被注入了故障,导致S盒输出
Figure 43162DEST_PATH_IMAGE007
的一种输出
Figure 773221DEST_PATH_IMAGE001
不会再出现,即
Figure 973258DEST_PATH_IMAGE008
。在 密钥
Figure 232201DEST_PATH_IMAGE005
保持不变的情况下,收集足够多的密文
Figure 252109DEST_PATH_IMAGE006
时,可以通过
Figure 520280DEST_PATH_IMAGE009
对密钥搜索空间大 小进行缩减至一,即为真实密钥值。
在实现本发明的过程中,发明人发现PFA作为一种新的对分组密码进行故障分析的方法,其仍存在以下弊端:
PFA需要大量故障密文,这在实际攻击场景中操作性较低;PFA故障注入位置和故障值的识别较难。
发明内容
本申请实施例的目的是提供一种针对分组密码算法的代数持久性故障分析方法及装置,以解决PFA需要大量故障密文,这在实际攻击场景中操作性较低,PFA故障注入位置和故障值的识别较难的技术问题。
根据本申请实施例的第一方面,提供一种针对分组密码的代数持久性故障分析方法,包括:
对分组密码进行故障注入,得到含有故障的目标密码;
将随机明文输入所述目标密码,得到故障密文;
利用所述故障密文,获得故障值;
根据所述故障值,为每条所述故障密文构建倒数
Figure 309244DEST_PATH_IMAGE010
轮的加密代数方程,并为所述加 密代数方程添加对应的密钥约束代数方程;
对所述加密代数方程进行求解,得到加密主密钥。
进一步地,对分组密码进行故障注入,得到含有故障的目标密码,包括:
选择一个分组密码作为目标,使用故障注入技术对所述目标密码进行故障注入,得到含有故障的目标密码,所述故障包括故障值和故障位置。
进一步地,将随机明文输入所述目标密码,得到故障密文,包括:
选取预定量随机明文输入所述目标密码,通过所述目标密码在含有故障的情况下加密所述随机明文,得到故障密文。
进一步地,利用所述故障密文,获得故障值,包括:
利用所述故障密文
Figure 270247DEST_PATH_IMAGE011
,将故障密文
Figure 541566DEST_PATH_IMAGE011
通过最大似然函数估计出故障值
Figure 82269DEST_PATH_IMAGE004
,其中所 述最大似然函数如下:
Figure 991319DEST_PATH_IMAGE012
其中
Figure 592064DEST_PATH_IMAGE004
表示故障值,
Figure 852145DEST_PATH_IMAGE013
表示故障候选值;
Figure 196538DEST_PATH_IMAGE014
表示故障密文
Figure 960095DEST_PATH_IMAGE011
中共有
Figure 997321DEST_PATH_IMAGE014
个元素,
Figure 213539DEST_PATH_IMAGE015
表 示故障密文
Figure 361623DEST_PATH_IMAGE011
的第
Figure 245266DEST_PATH_IMAGE016
个元素,
Figure 187814DEST_PATH_IMAGE017
为元素的比特个数;
Figure 891328DEST_PATH_IMAGE018
表示
Figure 577524DEST_PATH_IMAGE015
Figure 82717DEST_PATH_IMAGE019
出现的次数;
Figure 461746DEST_PATH_IMAGE020
为克罗内 克
Figure 652556DEST_PATH_IMAGE021
函数,满足:
Figure 142443DEST_PATH_IMAGE022
进一步地,根据所述故障值,为每条所述故障密文构建倒数
Figure 469519DEST_PATH_IMAGE010
轮的加密代数方程, 并为所述加密代数方程添加对应的密钥约束代数方程,包括:
根据所述目标密码,分析目标密码轮函数的组成;
根据所述目标密码轮函数组成为轮函数中的线性加层建立第一方程;
根据所述目标密码轮函数组成和故障值
Figure 19449DEST_PATH_IMAGE004
,通过枚举故障位置
Figure 697555DEST_PATH_IMAGE023
为轮函数中的替换 层建立第二方程;
根据所述目标密码轮函数组成为轮函数中的置换层建立第三方程;
根据所述目标密码,将第一、第二、第三方程进行组合,为所述目标密码的轮函数建立第四方程;
根据所述目标密码以及所述第四方程,建立倒数
Figure 991133DEST_PATH_IMAGE010
轮的加密方程;
根据所述目标密码,为倒数
Figure 438295DEST_PATH_IMAGE010
轮中的轮密钥添加密钥约束方程;
根据所述故障密文,为所述加密方程表示输出密文的变量赋值。
进一步地,根据所述目标密码,为倒数
Figure 893547DEST_PATH_IMAGE010
轮中的轮密钥添加密钥约束方程,包括:
利用如下代数方程为密钥添加约束:
Figure 58949DEST_PATH_IMAGE024
其中,
Figure 890639DEST_PATH_IMAGE017
为元素的比特个数;
Figure 457886DEST_PATH_IMAGE025
为新增的中间变量,
Figure 84040DEST_PATH_IMAGE026
为S盒故障位置
Figure 736738DEST_PATH_IMAGE023
的原值的第
Figure 372119DEST_PATH_IMAGE016
个比特;
Figure 26829DEST_PATH_IMAGE027
Figure 89463DEST_PATH_IMAGE028
分别是通过轮密钥加后的变量和轮密钥经过逆置换层函数的第
Figure 963878DEST_PATH_IMAGE016
个比特。
进一步地,对所述加密代数方程进行求解,得到加密主密钥,包括:
根据所述加密代数方程,将其输入至代数解析器当中并调用代数解析器进行求解;
根据所述求解结果,恢复目标密码加密所使用的主密钥。
根据本申请实施例的第二方面,提供一种针对分组密码算法的代数持久性故障分析装置,包括:
注入模块,用于对分组密码进行故障注入,得到含有故障的目标密码;
加密模块,用于将随机明文输入所述目标密码,得到故障密文;
计算模块,用于利用所述故障密文,获得故障值;
分析模块,用于根据所述故障值,为每条所述故障密文构建倒数
Figure 402949DEST_PATH_IMAGE010
轮的加密代数方 程,并为所述加密代数方程添加对应的密钥约束代数方程;
求解模块,用于对所述加密代数方程进行求解,得到加密主密钥。
本申请的实施例提供的技术方案可以包括以下有益效果:
由上述实施例可知,本申请引入了代数用于建立目标密码的倒数多轮加密方程,并且为倒数多轮添加了对应的密钥约束代数方程。与PFA相比,引入代数能够使用多轮故障泄露信息,进而能够减少所需密文的数量;本申请采用了PFA与代数相结合的方法,解决了原始PFA需要大量密文的缺点,进而在较少数量的密文下就能恢复主密钥,并提高故障分析效率;本申请同样引入了最大似然估计方法,解决了原始PFA在实践中难以识别具体故障的问题,进而能够提高持久性故障攻击的实用性。本申请使用的是基于代数的求解方法,对平台和目标算法没有限制,适用于各种场景下的分组密码持久性故障攻击。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据本发明实施例的一种针对分组密码的代数持久性故障分析方法的流程图。
图2是根据本发明实施例的分组密码轮函数组成图。
图3是根据本发明实施例的分组密码故障泄露利用图。
图4是根据本发明实施例的一种针对分组密码的代数持久性故障分析装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是根据一示例性实施例示出的一种针对分组密码的代数持久性故障分析方法的流程图,如图1所示,可以包括以下步骤:
步骤S11,对分组密码进行故障注入,得到含有故障的目标密码;
步骤S12,将随机明文输入所述目标密码,得到故障密文;
步骤S13,利用所述故障密文,获得故障值;
步骤S14,根据所述故障值,为每条所述故障密文构建倒数
Figure 679210DEST_PATH_IMAGE010
轮的加密代数方程,并 为所述加密代数方程添加对应的密钥约束代数方程;
步骤S15,对所述加密代数方程进行求解,得到加密主密钥。
由上述实施例可知,本申请引入了代数用于建立目标密码的倒数多轮加密方程,并且为倒数多轮添加了对应的密钥约束代数方程。与PFA相比,引入代数能够使用多轮故障泄露信息,进而能够减少所需密文的数量;本申请采用了PFA与代数相结合的方法,解决了原始PFA需要大量密文的缺点,进而在较少数量的密文下就能恢复主密钥,并提高故障分析效率;本申请同样引入了最大似然估计方法,解决了原始PFA在实践中难以识别具体故障的问题,进而能够提高持久性故障攻击的实用性。本申请使用的是基于代数的求解方法,对平台和目标算法没有限制,适用于各种场景下的分组密码持久性故障攻击。
在步骤S11的具体实施中,对分组密码进行故障注入,得到含有故障的目标密码;
具体地,选择一个分组密码作为目标,使用故障注入技术对所述目标密码进行故 障注入,得到含有故障的目标密码,所述故障包括故障值
Figure 178324DEST_PATH_IMAGE004
和故障位置
Figure 540036DEST_PATH_IMAGE023
更具体地,选择一个含有目标分组密码的软件或硬件,采用RowHammer或其他故障 注入技术对该目标密码注入单故障,其中故障值为
Figure 517219DEST_PATH_IMAGE029
,故障位置为
Figure 382407DEST_PATH_IMAGE030
。使得S盒的第
Figure 786843DEST_PATH_IMAGE030
个元素发 生故障,假设第
Figure 635850DEST_PATH_IMAGE030
个故障的原值为
Figure 151145DEST_PATH_IMAGE031
,注入故障后的故障值为
Figure 401998DEST_PATH_IMAGE032
,其中
Figure 977336DEST_PATH_IMAGE033
在步骤S12的具体实施中,将随机明文输入所述目标密码,得到故障密文;
具体地,选取预定量随机明文输入所述目标密码,通过所述目标密码在含有故障的情况下加密所述随机明文,得到故障密文。
更具体地,将预定量的随机明文输入到所述含有故障的目标密码中,目标密码在 固定密钥下加密所述随机明文,并输出同样数量的故障密文
Figure 313639DEST_PATH_IMAGE034
。收集所述故障密文
Figure 632625DEST_PATH_IMAGE034
,故障密 文
Figure 239449DEST_PATH_IMAGE034
含有
Figure 985689DEST_PATH_IMAGE035
个元素,每个元素含有
Figure 543709DEST_PATH_IMAGE036
个比特。
在步骤S13的具体实施中,利用所述故障密文,获得故障值;
具体地,利用所述故障密文
Figure 666386DEST_PATH_IMAGE011
,将故障密文
Figure 626251DEST_PATH_IMAGE011
通过最大似然函数估计出故障值
Figure 543392DEST_PATH_IMAGE004
, 其中所述最大似然函数如下:
Figure 854287DEST_PATH_IMAGE012
其中
Figure 515076DEST_PATH_IMAGE004
表示故障值,
Figure 595027DEST_PATH_IMAGE013
表示故障候选值;
Figure 948648DEST_PATH_IMAGE014
表示故障密文
Figure 481261DEST_PATH_IMAGE011
中共有
Figure 945740DEST_PATH_IMAGE014
个元素,
Figure 614619DEST_PATH_IMAGE015
表示 故障密文
Figure 139141DEST_PATH_IMAGE011
的第
Figure 159050DEST_PATH_IMAGE016
个元素,
Figure 660176DEST_PATH_IMAGE017
为元素的比特个数;
Figure 449140DEST_PATH_IMAGE018
表示
Figure 144564DEST_PATH_IMAGE015
Figure 386190DEST_PATH_IMAGE019
出现的次数;
Figure 192472DEST_PATH_IMAGE020
为克罗内克
Figure 101522DEST_PATH_IMAGE021
函数,满足:
Figure 702267DEST_PATH_IMAGE022
更具体地,通过对故障密文
Figure 696768DEST_PATH_IMAGE034
中每一个元素上出现过的值进行统计,存入二维数组
Figure 41162DEST_PATH_IMAGE037
,表示故障密文
Figure 804718DEST_PATH_IMAGE034
的第
Figure 576365DEST_PATH_IMAGE038
个元素
Figure 58162DEST_PATH_IMAGE039
出现的值为
Figure 471826DEST_PATH_IMAGE040
的个数。对于每个
Figure 89889DEST_PATH_IMAGE041
的值,并计算在该
Figure 298017DEST_PATH_IMAGE041
值 下
Figure 502995DEST_PATH_IMAGE042
的结果。在所有
Figure 189192DEST_PATH_IMAGE041
中能够使得
Figure 927340DEST_PATH_IMAGE042
的结果最大的
Figure 40790DEST_PATH_IMAGE041
即为故障 值
Figure 231600DEST_PATH_IMAGE029
使用最大似然估计能够在较少数量的密文下先恢复出故障值
Figure 721487DEST_PATH_IMAGE029
,使得故障值
Figure 314142DEST_PATH_IMAGE029
能够 用于后续的分析当中。
在步骤S14的具体实施中,根据所述故障值,为每条所述故障密文构建倒数
Figure 864072DEST_PATH_IMAGE010
轮的 加密代数方程,并为所述加密代数方程添加对应的密钥约束代数方程,包括以下子步骤:
(1)根据所述目标密码,分析目标密码轮函数的组成;
具体地,由图2可知分组密码的轮函数一般可以分为三层:线性加层、替换层
Figure 542178DEST_PATH_IMAGE043
、置 换层
Figure 570177DEST_PATH_IMAGE044
。其中线性加层可以分为与密钥异或的密钥加层
Figure 17339DEST_PATH_IMAGE045
以及与常数异或的常数加层
Figure 738171DEST_PATH_IMAGE046
。 另外将逆置换层记作
Figure 903573DEST_PATH_IMAGE047
。其中参与每层运算的数据块为
Figure 735262DEST_PATH_IMAGE048
Figure 36931DEST_PATH_IMAGE049
Figure 928663DEST_PATH_IMAGE050
分别表示
Figure 91615DEST_PATH_IMAGE048
的一个比特和 一个元素(一个元素有
Figure 461417DEST_PATH_IMAGE036
个比特)。上述三者关系如下:
Figure 883171DEST_PATH_IMAGE051
其中
Figure 945805DEST_PATH_IMAGE052
为数据块
Figure 820220DEST_PATH_IMAGE048
的长度。
(2)根据所述目标密码轮函数组成为轮函数中的线性加层建立第一方程;
具体地,令
Figure 259292DEST_PATH_IMAGE053
分别表示线性加层中的输入和输出的第
Figure 535552DEST_PATH_IMAGE038
个比特,
Figure 769087DEST_PATH_IMAGE054
表示子密钥的第
Figure 130799DEST_PATH_IMAGE038
个比特,
Figure 842403DEST_PATH_IMAGE045
所对应的代数方程可表示为:
Figure 238749DEST_PATH_IMAGE055
表示常数加层时,
Figure 643185DEST_PATH_IMAGE046
所对应的代数方程可以表示为:
Figure 492193DEST_PATH_IMAGE056
其中
Figure 7488DEST_PATH_IMAGE057
为常数的第
Figure 258341DEST_PATH_IMAGE016
个比特。
(3)根据所述目标密码轮函数组成和故障值
Figure 833678DEST_PATH_IMAGE004
,通过枚举故障位置
Figure 671447DEST_PATH_IMAGE023
为轮函数中的 替换层建立第二方程;
具体地,令
Figure 990433DEST_PATH_IMAGE058
分别表示S盒的输入和输出,根据S盒的真值表可以构建出
Figure 95792DEST_PATH_IMAGE059
Figure 842031DEST_PATH_IMAGE060
的 代数正规型(Algebraic Normal Form, ANF)的形式,ANF的通项为:
Figure 400051DEST_PATH_IMAGE061
其中
Figure 522728DEST_PATH_IMAGE062
Figure 482594DEST_PATH_IMAGE063
的第
Figure 399734DEST_PATH_IMAGE038
个比特,
Figure 710630DEST_PATH_IMAGE064
为ANF系数,取值为
Figure 371418DEST_PATH_IMAGE065
Figure 185790DEST_PATH_IMAGE036
为变量的比特个数。
以PRESENT加密算法的S盒为例,得到的ANF如下:
Figure 273832DEST_PATH_IMAGE066
Figure 806445DEST_PATH_IMAGE067
Figure 5345DEST_PATH_IMAGE068
Figure 939803DEST_PATH_IMAGE069
对上述ANF中的幂次大于1的项需要进行降幂处理,引入1个新变量
Figure 464325DEST_PATH_IMAGE070
来表示ANF通 项中的第
Figure 218654DEST_PATH_IMAGE063
项。通过以下CNF子句可以用
Figure 985360DEST_PATH_IMAGE070
表示ANF的第
Figure 774324DEST_PATH_IMAGE063
Figure 204169DEST_PATH_IMAGE071
Figure 711373DEST_PATH_IMAGE072
其中
Figure 517655DEST_PATH_IMAGE073
Figure 161126DEST_PATH_IMAGE074
分别表示取反。
更进一步的,使用变量
Figure 27451DEST_PATH_IMAGE070
来表示ANF,那么所示PRESENT的S盒可以表示为:
Figure 756373DEST_PATH_IMAGE075
Figure 366346DEST_PATH_IMAGE076
Figure 129902DEST_PATH_IMAGE077
Figure 901549DEST_PATH_IMAGE078
其中数字表示相应变量
Figure 383346DEST_PATH_IMAGE079
的下标。
(4)根据所述目标密码轮函数组成为轮函数中的置换层建立第三方程;
具体地,置换层可以分为基于比特的置换以及基于MDS矩阵乘法的置换。基于比特 的置换操作一般由置换表参与置换,例如PRESENT加密算法的BitPermutaion,其置换表
Figure 531431DEST_PATH_IMAGE080
可以表示为
Figure 149494DEST_PATH_IMAGE081
。基于单比特的置换可以用如下代数方程表示:
Figure 92042DEST_PATH_IMAGE082
基于MDS矩阵乘法的置换,其一般通过在有限域上的乘法操作来实现,例如LED的MixColumnsSerial,其用如下式子表示置换:
Figure 795556DEST_PATH_IMAGE083
其中
Figure 248796DEST_PATH_IMAGE084
可以表示为
Figure 986945DEST_PATH_IMAGE085
由此可见
Figure 365974DEST_PATH_IMAGE059
Figure 556784DEST_PATH_IMAGE060
之间所乘的常数是固定的,对于每一个常数,为其建立
Figure 46671DEST_PATH_IMAGE059
Figure 639326DEST_PATH_IMAGE060
的关 系。
(5)根据所述目标密码,将第一、第二、第三方程进行组合,为所述目标密码的轮函数建立第四方程;
具体地,根据所述目标密码轮函数的结构,将第一、第二、第三方程进行组合,例如 PRESENT的轮函数
Figure 189256DEST_PATH_IMAGE086
可以表示为:
Figure 601783DEST_PATH_IMAGE087
其中
Figure 895361DEST_PATH_IMAGE088
分别表示第
Figure 342523DEST_PATH_IMAGE010
轮的输入变量以及轮密钥,且共有
Figure 328934DEST_PATH_IMAGE089
轮的轮函数。
(6)根据所述目标密码以及所述第四方程,建立倒数
Figure 494336DEST_PATH_IMAGE010
轮的加密方程;
具体地,根据所述目标密码一轮轮函数的结构以及第四方程,为倒数
Figure 326025DEST_PATH_IMAGE090
轮轮函数建 立方程。
(7)根据所述目标密码,为倒数
Figure 627694DEST_PATH_IMAGE010
轮中的轮密钥添加密钥约束方程;
根据所述目标密码,为倒数
Figure 17962DEST_PATH_IMAGE010
轮中的轮密钥添加密钥约束方程,包括:
利用如下代数方程为密钥添加约束:
Figure 405081DEST_PATH_IMAGE091
Figure 40461DEST_PATH_IMAGE092
其中,
Figure 727795DEST_PATH_IMAGE017
为元素的比特个数;
Figure 790429DEST_PATH_IMAGE025
为新增的中间变量,
Figure 664844DEST_PATH_IMAGE026
为S盒故障位置
Figure 838336DEST_PATH_IMAGE023
的原值的第
Figure 114597DEST_PATH_IMAGE016
个比特;
Figure 348132DEST_PATH_IMAGE027
Figure 709843DEST_PATH_IMAGE028
分别是通过轮密钥加后的变量和轮密钥经过逆置换层函数的第
Figure 952605DEST_PATH_IMAGE016
个比特。
具体地,请参阅图3,图3为本申请倒数
Figure 348952DEST_PATH_IMAGE090
轮中每轮可添加的密钥约束方程示意图。
如图3所示,倒数
Figure 753388DEST_PATH_IMAGE010
轮中,每一轮都可以为当前轮密钥添加密钥约束方程。这样可以 在使用代数的情况下,利用持久性故障中的多轮故障泄露,提高故障的利用率,从而减少使 用的密文数量。
(8)根据所述故障密文,为所述加密方程表示输出密文的变量赋值。
具体地,对所述倒数
Figure 336816DEST_PATH_IMAGE090
轮加密方程中表示输出密文的变量,使用实际收集到的故障 密文
Figure 619155DEST_PATH_IMAGE034
进行赋值。故障密文
Figure 870008DEST_PATH_IMAGE034
中的第
Figure 445346DEST_PATH_IMAGE038
个比特
Figure 781649DEST_PATH_IMAGE093
为0时,加密方程中表示密文的变量赋值为0, 反之赋值为1。通过这步可以将实际故障密文
Figure 100635DEST_PATH_IMAGE034
与代数方程相联系。
在步骤S15的具体实施中,对所述加密代数方程进行求解,得到加密主密钥;
(1)根据所述加密代数方程,将其输入至代数解析器当中并调用代数解析器进行求解;
具体地,本申请基于可满足性(SAT)问题的CryptoMiniSAT解析器。本申请采用python下pycryptosat库,首先创建求解器的对象,再将代数方程传入对象中,最后调用对象内置解析器进行求解。
(3)根据所述求解结果,恢复目标密码加密所使用的主密钥。
具体地,使用上述SAT求解器进行求解后,其方程变量中用来表示主密钥的变量结果即为目标密码在加密时所使用的主密钥。
与前述的一种针对分组密码算法的代数持久性故障分析方法的实施例相对应,本申请还提供了一种针对分组密码算法的代数持久性故障分析装置的实施例。
图4是根据一示例性实施例示出的一种针对分组密码的代数持久性故障分析方法装置框图。参照图4,该装置包括:
注入模块21,用于对分组密码进行故障注入,得到含有故障的目标密码;
加密模块22,用于将随机明文输入所述目标密码,得到故障密文;
计算模块23,用于利用所述故障密文,获得故障值;
分析模块24,用于根据所述故障值,为每条所述故障密文构建倒数
Figure 205995DEST_PATH_IMAGE010
轮的加密代数 方程,并为所述加密代数方程添加对应的密钥约束代数方程;
求解模块25,用于对所述加密代数方程进行求解,得到加密主密钥。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本申请还提供一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的一种针对分组密码的代数持久性故障分析方法。
相应的,本申请还提供一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如上述的一种针对分组密码的代数持久性故障分析方法。
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (8)

1.一种针对分组密码的代数持久性故障分析方法,其特征在于,包括:
对分组密码进行故障注入,得到含有故障的目标密码;
将随机明文输入所述目标密码,得到故障密文;
利用所述故障密文,获得故障值;
根据所述故障值,为每条所述故障密文构建倒数
Figure DEST_PATH_IMAGE001
轮的加密代数方程,并为所述加密代 数方程添加对应的密钥约束代数方程;
对所述加密代数方程进行求解,得到加密主密钥;
利用所述故障密文,获得故障值,包括:
利用所述故障密文
Figure 525193DEST_PATH_IMAGE002
,将故障密文
Figure 89029DEST_PATH_IMAGE002
通过最大似然函数估计出故障值
Figure DEST_PATH_IMAGE003
,其中所述最大似 然函数如下:
Figure DEST_PATH_IMAGE005
其中
Figure 538465DEST_PATH_IMAGE003
表示故障值,
Figure 501742DEST_PATH_IMAGE006
表示故障候选值;
Figure DEST_PATH_IMAGE007
表示故障密文
Figure 126759DEST_PATH_IMAGE002
中共有
Figure 251709DEST_PATH_IMAGE007
个元素,
Figure 329387DEST_PATH_IMAGE008
表示故障密 文
Figure 768458DEST_PATH_IMAGE002
的第
Figure DEST_PATH_IMAGE009
个元素,
Figure 71483DEST_PATH_IMAGE010
为元素的比特个数;
Figure DEST_PATH_IMAGE011
表示
Figure 898493DEST_PATH_IMAGE008
Figure 197888DEST_PATH_IMAGE012
出现的次数;
Figure DEST_PATH_IMAGE013
为克罗内克
Figure 768546DEST_PATH_IMAGE014
函数,满 足:
Figure 836996DEST_PATH_IMAGE016
根据所述故障值,为每条所述故障密文构建倒数
Figure 241433DEST_PATH_IMAGE001
轮的加密代数方程,并为所述加密代 数方程添加对应的密钥约束代数方程,包括:
根据所述目标密码,分析目标密码轮函数的组成;
根据所述目标密码轮函数组成为轮函数中的线性加层建立第一方程;
根据所述目标密码轮函数组成和故障值
Figure 418336DEST_PATH_IMAGE003
,通过枚举故障位置
Figure DEST_PATH_IMAGE017
为轮函数中的替换层建 立第二方程;
根据所述目标密码轮函数组成为轮函数中的置换层建立第三方程;
根据所述目标密码,将第一、第二、第三方程进行组合,为所述目标密码的轮函数建立第四方程;
根据所述目标密码以及所述第四方程,建立倒数
Figure 136894DEST_PATH_IMAGE001
轮的加密方程;
根据所述目标密码,为倒数
Figure 951528DEST_PATH_IMAGE001
轮中的轮密钥添加密钥约束方程;
根据所述故障密文,为所述加密方程表示输出密文的变量赋值。
2.根据权利要求1所述的方法,其特征在于,对分组密码进行故障注入,得到含有故障的目标密码,包括:
选择一个分组密码作为目标,使用故障注入技术对所述目标密码进行故障注入,得到含有故障的目标密码,所述故障包括故障值和故障位置。
3.根据权利要求1所述的方法,其特征在于,将随机明文输入所述目标密码,得到故障密文,包括:
选取预定量随机明文输入所述目标密码,通过所述目标密码在含有故障的情况下加密所述随机明文,得到故障密文。
4.根据权利要求1所述的方法,其特征在于,根据所述目标密码,为倒数
Figure 730128DEST_PATH_IMAGE001
轮中的轮密钥 添加密钥约束方程,包括:
利用如下代数方程为密钥添加约束:
Figure DEST_PATH_IMAGE019
Figure DEST_PATH_IMAGE021
其中,
Figure 863169DEST_PATH_IMAGE010
为元素的比特个数;
Figure 182155DEST_PATH_IMAGE022
为新增的中间变量,
Figure DEST_PATH_IMAGE023
为S盒故障位置
Figure 818673DEST_PATH_IMAGE017
的原值的第
Figure 564912DEST_PATH_IMAGE009
个比 特;
Figure 185249DEST_PATH_IMAGE024
Figure DEST_PATH_IMAGE025
分别是通过轮密钥加后的变量和轮密钥经过逆置换层函数的第
Figure 776768DEST_PATH_IMAGE009
个比特。
5.根据权利要求1所述的方法,其特征在于,对所述加密代数方程进行求解,得到加密主密钥,包括:
根据所述加密代数方程,将其输入至代数解析器当中并调用代数解析器进行求解;
根据所述求解结果,恢复目标密码加密所使用的主密钥。
6.一种针对分组密码算法的代数持久性故障分析装置,其特征在于,包括:
注入模块,用于对分组密码进行故障注入,得到含有故障的目标密码;
加密模块,用于将随机明文输入所述目标密码,得到故障密文;
计算模块,用于利用所述故障密文,获得故障值;
分析模块,用于根据所述故障值,为每条所述故障密文构建倒数
Figure 300415DEST_PATH_IMAGE001
轮的加密代数方程, 并为所述加密代数方程添加对应的密钥约束代数方程;
求解模块,用于对所述加密代数方程进行求解,得到加密主密钥;
利用所述故障密文,获得故障值,包括:
利用所述故障密文
Figure 420818DEST_PATH_IMAGE002
,将故障密文
Figure 731714DEST_PATH_IMAGE002
通过最大似然函数估计出故障值
Figure 454819DEST_PATH_IMAGE003
,其中所述最大似 然函数如下:
Figure 472454DEST_PATH_IMAGE005
其中
Figure 826074DEST_PATH_IMAGE003
表示故障值,
Figure 421004DEST_PATH_IMAGE006
表示故障候选值;
Figure 885483DEST_PATH_IMAGE007
表示故障密文
Figure 757624DEST_PATH_IMAGE002
中共有
Figure 344463DEST_PATH_IMAGE007
个元素,
Figure 567634DEST_PATH_IMAGE008
表示故障密 文
Figure 570225DEST_PATH_IMAGE002
的第
Figure 922972DEST_PATH_IMAGE009
个元素,
Figure 618395DEST_PATH_IMAGE010
为元素的比特个数;
Figure 63283DEST_PATH_IMAGE011
表示
Figure 931882DEST_PATH_IMAGE008
Figure 840932DEST_PATH_IMAGE012
出现的次数;
Figure 644940DEST_PATH_IMAGE013
为克罗内克
Figure 701758DEST_PATH_IMAGE014
函数,满 足:
Figure 46151DEST_PATH_IMAGE016
根据所述故障值,为每条所述故障密文构建倒数
Figure 12970DEST_PATH_IMAGE001
轮的加密代数方程,并为所述加密代 数方程添加对应的密钥约束代数方程,包括:
根据所述目标密码,分析目标密码轮函数的组成;
根据所述目标密码轮函数组成为轮函数中的线性加层建立第一方程;
根据所述目标密码轮函数组成和故障值
Figure 846934DEST_PATH_IMAGE003
,通过枚举故障位置
Figure 328731DEST_PATH_IMAGE017
为轮函数中的替换层建 立第二方程;
根据所述目标密码轮函数组成为轮函数中的置换层建立第三方程;
根据所述目标密码,将第一、第二、第三方程进行组合,为所述目标密码的轮函数建立第四方程;
根据所述目标密码以及所述第四方程,建立倒数
Figure 680078DEST_PATH_IMAGE001
轮的加密方程;
根据所述目标密码,为倒数
Figure 856064DEST_PATH_IMAGE001
轮中的轮密钥添加密钥约束方程;
根据所述故障密文,为所述加密方程表示输出密文的变量赋值。
7.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5任一项所述的方法。
8.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-5中任一项所述方法的步骤。
CN202210038526.3A 2022-01-13 2022-01-13 一种针对分组密码的代数持久性故障分析方法及装置 Expired - Fee Related CN114070560B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210038526.3A CN114070560B (zh) 2022-01-13 2022-01-13 一种针对分组密码的代数持久性故障分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210038526.3A CN114070560B (zh) 2022-01-13 2022-01-13 一种针对分组密码的代数持久性故障分析方法及装置

Publications (2)

Publication Number Publication Date
CN114070560A CN114070560A (zh) 2022-02-18
CN114070560B true CN114070560B (zh) 2022-06-24

Family

ID=80230858

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210038526.3A Expired - Fee Related CN114070560B (zh) 2022-01-13 2022-01-13 一种针对分组密码的代数持久性故障分析方法及装置

Country Status (1)

Country Link
CN (1) CN114070560B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110401627A (zh) * 2019-01-31 2019-11-01 中国科学院软件研究所 一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法和系统
CN113206734A (zh) * 2021-04-30 2021-08-03 桂林电子科技大学 一种检测和抵御差分故障攻击的方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11606189B2 (en) * 2018-08-03 2023-03-14 Arris Enterprises Llc Method and apparatus for improving the speed of advanced encryption standard (AES) decryption algorithm
CN109831294B (zh) * 2019-01-02 2020-11-27 北京邮电大学 Spn型分组密码抗故障攻击能力评估方法及装置
CN109787745A (zh) * 2019-03-05 2019-05-21 中国人民解放军32082部队 一种基于多推断利用的分组密码容错代数旁路分析方法
CN110299988B (zh) * 2019-07-01 2022-10-21 中国人民解放军战略支援部队信息工程大学 轻量级分组密码算法抗攻击能力的检测方法及检测装置
US20230077946A1 (en) * 2020-02-12 2023-03-16 FortifyIQ, Inc. Methods and ip cores for reducing vulnerability to hardware attacks and/or improving processor performance
CN112187444A (zh) * 2020-09-02 2021-01-05 中国科学院软件研究所 一种抗侧信道和故障攻击的综合防护方法
CN113014377B (zh) * 2021-02-01 2022-07-22 中国科学院软件研究所 一种利用分组密码s盒双射特性的持久故障攻击防护方法和装置
CN113193955B (zh) * 2021-04-22 2023-01-17 中国科学院软件研究所 一种密码算法的故障攻击防护方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110401627A (zh) * 2019-01-31 2019-11-01 中国科学院软件研究所 一种适用于分组密码算法感染防护的抗差分故障攻击安全性评估方法和系统
CN113206734A (zh) * 2021-04-30 2021-08-03 桂林电子科技大学 一种检测和抵御差分故障攻击的方法

Also Published As

Publication number Publication date
CN114070560A (zh) 2022-02-18

Similar Documents

Publication Publication Date Title
Chen et al. An efficient image encryption scheme using lookup table-based confusion and diffusion
Li et al. Differential fault analysis on the ARIA algorithm
CN113940028B (zh) 实现白盒密码的方法和装置
CA3007348A1 (en) Fast format-preserving encryption for variable length data
CN112653546A (zh) 一种基于功耗分析的故障攻击检测方法
CN111712816B (zh) 使用密码蒙蔽以用于高效地使用蒙哥马利乘法
Levi et al. Garbled Circuits from an SCA Perspective: Free XOR can be Quite Expensive...
Clavier et al. Complete reverse-engineering of AES-like block ciphers by SCARE and FIRE attacks
Chabanne et al. Linear repairing codes and side-channel attacks
Zhao et al. Differential fault analysis on LED using Super‐Sbox
CN114070560B (zh) 一种针对分组密码的代数持久性故障分析方法及装置
Lim et al. Differential fault attack on lightweight block cipher PIPO
Minier et al. Solving a symmetric key cryptographic problem with constraint programming
Beckers et al. Fault analysis of the chacha and salsa families of stream ciphers
Hou et al. DNFA: Differential no-fault analysis of bit permutation based ciphers assisted by side-channel
Deepthi et al. Cryptanalysis for reduced round Salsa and ChaCha: revisited
Sakallı et al. On the construction of 20× 20 and 24× 24 binary matrices with good implementation properties for lightweight block ciphers and hash functions
Li et al. Single byte differential fault analysis on the LED lightweight cipher in the wireless sensor network
Velugoti et al. An Approach for Privacy Preservation Assisted Secure Cloud Computation
Zhang et al. Zero Correlation Linear Cryptanalysis on LEA Family Ciphers.
Min et al. Differential fault attack on GIFT
Liu et al. Improved zero‐correlation linear cryptanalysis of reduced‐round Camellia under weak keys
Ma et al. Differential fault analysis on 3DES middle rounds based on error propagation
Shi et al. A Secure Implementation of a Symmetric Encryption Algorithm in White‐Box Attack Contexts
Saha et al. Diagonal fault analysis of Gr⊘ stl in dedicated MAC mode

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20220624

CF01 Termination of patent right due to non-payment of annual fee