一种针对分组密码的选择明文持久性故障分析方法及装置

文档序号:31411977发布日期:2022-09-03 10:16阅读:167来源:国知局
一种针对分组密码的选择明文持久性故障分析方法及装置

1.本发明属于通信与信息安全技术领域,尤其涉及一种针对分组密码的选择明文持久性故障分析方法及装置。


背景技术:

2.分组密码是现代密码学中的重要组成部分,也是使用最广、影响最大的一种密码体制。其主要任务是提供数据保密性,也常用于随机数、序列密码、哈希函数等的构造中。目前广泛使用的诸如高级加密标准(advanced encryption standard),present等常见密码算法都有着极高的理论安全性能,传统的密码学分析方法很难对这些算法产生实质性的威胁。
3.对于分组密码,故障攻击是一种有效的攻击方式。故障攻击是一种基于实现的攻击方法,它包括了故障注入和故障分析两个阶段,当密码算法执行过程中受到意外或恶意干扰而偏离其正常流程时,攻击者以及分析人员可以根据由此产生的故障信息来获取设备内部隐藏的秘密信息。在故障注入阶段,攻击者需要对密码设备的运行进行干扰并使其出错,常见的故障注入手段包括电磁、激光、电压以及时钟毛刺等等。在故障分析阶段,阶段中攻击者对带有故障的密码设备的输出进行分析,从而推测出密码系统中的敏感信息。
4.常见的故障分析方法有dfa(differential fault analysis,差分故障分析)、afa(algebraicfault analysis,代数故障分析)、sfa(statistical fault analysis,统计故障分析)等。对故障存在时间进行分类时可以分为瞬时故障(transient fault)、永久故障(permanent fault)和持久故障(persistent fault)等,其中,大多数传统的故障攻击方法多是针对于瞬时故障。
5.在2018年ches上张帆等人提出了pfa(persistent fault analysis,持久性故障分析),将持久性故障运用在故障分析方法中。持久性故障是指在密码设备中注入一个持久性存在的故障,除非该设备重启,否则该故障将一直存在。pfa在分组密码的s盒中注入了持久性故障,使得s盒中某一个元素发生改变,从而导致了s盒输出分布变得不再均匀。v和u分别表示故障s盒位置的原值和改变后的值,其有关系其中f表示故障差分值。假设密码算法的最后一轮为s盒的输出与密钥kr异或后得到故障密文c。
6.由于s盒被注入了故障,导致s盒输出s[x]的一种输出v不会再出现,即s[x]≠v。在密钥k保持不变的情况下,收集足够多的密文c时,可以通过对密钥搜索空间大小进行缩减至一,即为真实密钥值。
[0007]
在实现本发明的过程中,发明人发现pfa作为一种新的对分组密码进行故障分析的方法,其仍存在以下弊端:
[0008]
pfa需要大量故障密文,这在实际攻击场景中操作性较低;pfa故障注入位置和故障值的识别较难;在注入故障的数量大于一个的情况下难以求出s盒中不再出现的值,也就无法利用pfa求解出密钥。


技术实现要素:

[0009]
本技术实施例的目的是提供一种针对分组密码的选择明文持久性故障分析方法及装置,以解决相关技术中存在的pfa需要大量故障密文、pfa故障注入位置和故障值的识别较难和在注入故障的数量大于一个的情况下难以恢复密钥的技术问题。
[0010]
根据本技术实施例的第一方面,提供一种针对分组密码的选择明文持久性故障分析方法,包括:
[0011]
对分组密码进行故障注入,得到含有故障的目标密码;
[0012]
构造与所述分组密码的s盒大小相同数量的选择明文,将所述选择明文输入所述目标密码,得到第一故障密文;
[0013]
根据所述第一故障密文以及所述选择明文,分析所有可能的故障情况并得到对应的s盒不可能输出值集合;
[0014]
根据所有可能的故障情况对应的故障数量和所述目标密码,增加特定数量的随机明文,将所述随机明文输入所述目标密码,得到第二故障密文;
[0015]
对于每一个可能的故障情况以及对应的s盒不可能输出值集合,根据所述第一故障密文以及所述第二故障密文进行对密钥不可能值的排除,得到加密主密钥。
[0016]
进一步地,对分组密码进行故障注入,得到含有故障的目标密码,包括:
[0017]
选择一个分组密码作为目标;
[0018]
使用故障注入技术对所述分组密码进行故障注入,得到含有故障的目标密码。
[0019]
进一步地,构造与所述分组密码的s盒大小相同数量的选择明文,将所述选择明文输入所述目标密码,得到第一故障密文,包括:
[0020]
根据分组密码的s盒大小,构造相同数量的选择明文,其中所述选择明文之间除了第θ个元素值各不相同之外,其余元素完全相同;
[0021]
将所述选择明文输入所述目标密码,通过所述目标密码在含有故障的情况下加密所述选择明文,得到第一故障密文。
[0022]
进一步地,根据所述第一故障密文以及所述选择明文,分析所有可能的故障情况并得到对应的s盒不可能输出值集合,包括:
[0023]
在所述第一故障密文中找到值相等的密文,根据所述值相等的密文对应的选择明文中的第θ个元素,构造若干个θ元素集合;
[0024]
根据所述θ元素集合,计算故障位置集合,其中所述故障位置集合的数量与所述θ元素集合的数量相等;
[0025]
根据所述故障位置集合,计算得到相同数量的s盒原始值集合;
[0026]
对每一个所述s盒原始值集合,将其中的一个元素排除,其余元素放入s盒不可能输出值集合,从而根据主密钥第θ个元素的取值得到若干s盒不可能输出值集合。
[0027]
进一步地,根据所有可能的故障情况对应的故障数量和所述目标密码,增加特定数量的随机明文,将所述随机明文输入所述目标密码,得到第二故障密文,包括:
[0028]
根据所有可能的故障情况对应的故障数量和所述目标密码,计算需要增加的随机明文数量;
[0029]
构造所述随机明文数量的随机明文,将所述随机明文输入所述目标密码,得到第二故障密文;
[0030]
其中,计算需要增加的随机明文数量的公式如下:
[0031][0032]
其中nf表示故障数量,表示故障密文c中元素的比特长度,r为迭代变量。
[0033]
进一步地,对于每一个可能的故障情况以及对应的s盒不可能输出值集合,根据所述第一故障密文以及所述第二故障密文进行对密钥不可能值的排除,得到加密主密钥,包括:
[0034]
针对每一个候选值k
θ
,有个候选的s盒不可能输出值集合对于每一个集合利用下列公式对最后一轮轮密钥kr进行不可能值的排除,得到最后一轮轮密钥,进行逆密钥扩展后得到最终的加密主密钥:
[0035][0036]
其中,nf表示故障数量,故障密文c共有m个元素。
[0037]
根据本技术实施例的第二方面,提供一种针对分组密码的选择明文持久性故障分析装置,包括:
[0038]
故障注入模块,用于对分组密码进行故障注入,得到含有故障的目标密码;
[0039]
构造模块,用于构造与所述分组密码的s盒大小相同数量的选择明文,将所述选择明文输入所述目标密码,得到第一故障密文;
[0040]
分析模块,用于根据所述第一故障密文以及所述选择明文,分析所有可能的故障情况并得到对应的s盒不可能输出值集合;
[0041]
增加模块,用于根据所有可能的故障情况对应的故障数量和所述目标密码,增加特定数量的随机明文,将所述随机明文输入所述目标密码,得到第二故障密文;
[0042]
排除模块,用于对于每一个可能的故障情况以及对应的s盒不可能输出值集合,根据所述第一故障密文以及所述第二故障密文进行对密钥不可能值的排除,得到加密主密钥。
[0043]
根据本技术实施例的第三方面,提供一种电子设备,包括:
[0044]
一个或多个处理器;
[0045]
存储器,用于存储一个或多个程序;
[0046]
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的方法。
[0047]
根据本技术实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
[0048]
本技术的实施例提供的技术方案可以包括以下有益效果:
[0049]
由上述实施例可知,本技术引入了选择明文进行辅助分析。与传统pfa相比,引入选择明文能够使用所述故障密文以及所述选择明文直接得到注入故障的数量,故障注入的位置,解决了原始pfa在实践中难以识别具体故障的问题,进而能够提高持久性故障攻击的实用性;在多故障情况下,每条故障密文能够排除nf个密钥的不可能值,相比传统pfa而言能够极大地减少所需密文数量;同时在恢复出主密钥的同时也恢复了故障位置以及故障
值。本技术采用了pfa与选择明文结合的方法,对平台和目标算法没有限制,适用于各种场景下的分组密码持久性故障攻击。
[0050]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
[0051]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
[0052]
图1是根据一示例性实施例示出的一种针对分组密码的选择明文持久性故障分析方法的流程图。
[0053]
图2是根据一示例性实施例示出的步骤s11的流程图。
[0054]
图3是根据一示例性实施例示出的步骤s12的流程图。
[0055]
图4是根据一示例性实施例示出的步骤s13的流程图。
[0056]
图5是根据一示例性实施例示出的步骤s14的流程图。
[0057]
图6是根据一示例性实施例示出的一种针对分组密码的选择明文持久性故障分析装置的框图。
具体实施方式
[0058]
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。
[0059]
在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0060]
应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0061]
图1是根据一示例性实施例示出的一种针对分组密码的选择明文持久性故障分析方法的流程图,如图1所示,该方法可以包括以下步骤:
[0062]
步骤s11:对分组密码进行故障注入,得到含有故障的目标密码;
[0063]
步骤s12:构造与所述分组密码的s盒大小相同数量的选择明文,将所述选择明文输入所述目标密码,得到第一故障密文;
[0064]
步骤s13:根据所述第一故障密文以及所述选择明文,分析所有可能的故障情况并得到对应的s盒不可能输出值集合;
[0065]
步骤s14:根据所有可能的故障情况对应的故障数量和所述目标密码,增加特定数量的随机明文,将所述随机明文输入所述目标密码,得到第二故障密文;
[0066]
步骤s15:对于每一个可能的故障情况以及对应的s盒不可能输出值集合,根据所述第一故障密文以及所述第二故障密文进行对密钥不可能值的排除,得到加密主密钥。
[0067]
由上述实施例可知,本技术引入了选择明文进行辅助分析。与传统pfa相比,引入选择明文能够使用所述故障密文以及所述选择明文直接得到注入故障的数量,故障注入的位置,解决了原始pfa在实践中难以识别具体故障的问题,进而能够提高持久性故障攻击的实用性;在多故障情况下,每条故障密文能够排除nf个密钥的不可能值,相比传统pfa而言能够极大地减少所需密文数量;同时在恢复出主密钥的同时也恢复了故障位置以及故障值。本技术采用了pfa与选择明文结合的方法,对平台和目标算法没有限制,适用于各种场景下的分组密码持久性故障攻击。
[0068]
具体地,该方法可以在故障数量未知,故障位置未知以及故障值未知的情况下,利用所述选择明文以及所述第一故障密文求出故障数量,故障位置的候选值和故障值的候选值。在知道故障数量的情况下,求出针对该故障数量求得密钥所需要的总的密文数量,将总的密文数量减去第一故障密文数量就可以计算出第二故障密文的数量。针对每一个故障位置以及故障值的候选值,利用总的故障密文进行密钥不可能值排除。如果密钥的剩余空间缩小至0,则证明该候选值是错误的。密钥空间缩小至1便证明该密钥是正确密钥,对应的故障位置以及故障值也是正确的故障情况。
[0069]
在步骤s11的具体实施中,对分组密码进行故障注入,得到含有故障的目标密码;
[0070]
具体地,如图2所示,此步骤可以包括以下子步骤:
[0071]
步骤s21:选择一个分组密码作为目标;
[0072]
步骤s22:使用故障注入技术对所述分组密码进行故障注入,得到含有故障的目标密码。
[0073]
在步骤s21-步骤s22的具体实施中,所述故障包括故障数量nf、故障位置l和故障值f,可以选择一个含有目标分组密码的软件或硬件,采用rowhammer或其他故障注入技术对该目标密码注入随机故障,其中故障数量为nf。使得s盒的nf个元素发生故障,假设第i个故障的原值为vi,注入故障后的故障值为ui,其中
[0074]
在步骤s12的具体实施中,构造与所述分组密码的s盒大小相同数量的选择明文,将所述选择明文输入所述目标密码,得到第一故障密文;
[0075]
具体地,如图3所示,此步骤可以包括以下子步骤:
[0076]
步骤s31:根据分组密码的s盒大小,构造相同数量的选择明文,其中所述选择明文之间除了第θ个元素值各不相同之外,其余元素完全相同;
[0077]
具体地,假设所述目标密码地s盒大小为n
×
n,构造n
×
n个特殊的选择明文,这些明文除了第θ个元素不同之外,其余元素都相同,且第θ个元素分别为:0,1,

,2
w-1(2w=n
×
n)。由于第一轮的轮密钥k在加密过程中保持不变,这样构造后的选择明文的第θ个元素异或上第一轮的轮密钥后也能是n
×
n个互不相等的值(0,1,

,2
w-1)。这样在访问故障s盒的时候能够保证故障s盒的每一个位置都能够被访问到。
[0078]
步骤s32:将所述选择明文输入所述目标密码,通过所述目标密码在含有故障的情况下加密所述选择明文,得到第一故障密文。
[0079]
具体地,将所述选择明文输入到所述含有故障的目标密码中,目标密码在固定密钥下加密所述选择明文,并输出同样数量的第一故障密文c。收集所述第一故障密文c,第一
故障密文c含有m个元素,每个元素含有w个比特(2w=n
×
n)。
[0080]
在步骤s13的具体实施中,根据所述第一故障密文以及所述选择明文,分析所有可能的故障情况并得到对应的s盒不可能输出值集合;
[0081]
具体地,如图4所示,此步骤可以包括以下子步骤:
[0082]
步骤s41:在所述第一故障密文中找到值相等的密文,根据所述值相等的密文对应的选择明文中的第θ个元素,构造若干个θ元素集合;
[0083]
具体地,利用第一故障密文c1,在所述故障密文中找到值相等的密文,将相等密文对应的所述选择明文中第θ个元素放入集合中。本实施例中,假设在故障密文c1中存在ns个密文集合,每个集合中的故障密文相等,集合中相等的密文数量为λi(0≤i<ns),即),即
[0084]
步骤s42:根据所述θ元素集合,计算故障位置集合,其中所述故障位置集合的数量与所述θ元素集合的数量相等;
[0085]
具体地,根据所述第一故障密文以及所述明文得到ns个集合后,可以得到故障数量以及ns个故障位置的集合个故障位置的集合k
θ
为主密钥第θ个元素。因为构造的选择明文除了第θ个元素不同之外,其余元素值都是相等的。那么多个明文的第θ个元素在经过第一轮故障s盒变换后值是相等的,那么之后的所有中间状态以及最终的密文也是相等的。由于正确的s盒中不存在不同的输入有相同的输出,正式因为故障导致了这种情况,那么就可以利用这些相等密文对应明文的第θ个元素推测出故障注入的位置。
[0086]
步骤s43:根据所述故障位置集合,计算得到相同数量的s盒原始值集合;
[0087]
具体地,对于每一个故障位置集合发生故障前的s盒原始值集合为故障后的值均为可能是集合中的任意一个。由于每个集合中的元素经过故障s盒后都相等,但是集合中也存在一个没有被故障影响的元素,可以任选一个该位置,假设其为未被故障影响的正确s盒元素,其余则为故障s盒元素,那么它们被故障注入后的输出一定是该正确s盒输出的元素值。
[0088]
步骤s44:对每一个所述s盒原始值集合,将其中的一个元素排除,其余元素放入s盒不可能输出值集合,从而根据主密钥第θ个元素的取值得到若干s盒不可能输出值集合。
[0089]
具体地,假设k
θ
已知的情况下(事实上k
θ
是未知的),利用上述方法求得s盒原始值集合后。针对每一个集合将其中的一个元素排除,其余元素放入集合中,在对所有集合完成相同操作后,所得到的集合便是s盒不可能值输出值集合的候选。由于主密钥第θ个元素k
θ
是未知的,k
θ
可能取值有2w种(0~2
w-1),每个k
θ
对应种候选的集合所以共可以得到个候选的s盒不可能输出值集合。
[0090]
在步骤s14的具体实施中,根据所有可能的故障情况对应的故障数量和所述目标密码,增加特定数量的随机明文,将所述随机明文输入所述目标密码,得到第二故障密文;
[0091]
具体地,如图5所示,此步骤可以包括以下子步骤:
[0092]
步骤s51:根据所有可能的故障情况对应的故障数量和所述目标密码,计算需要增加的随机明文数量;
[0093]
其中,计算需要增加的随机明文数量的公式如下:
[0094][0095]
其中nf表示故障数量,表示故障密文c中元素的比特长度,r为迭代变量。这个公式减号左边部分表示在有nf的故障情况下,将密钥空间缩小至一所需要的故障密文数量,减号右边部分表示已有2w条故障密文,这是由构造的2w条选择明文加密而得到的。将它们相减便是所需要增加的额外故障密文数量。
[0096]
步骤s52:构造所述随机明文数量的随机明文,将所述随机明文输入所述目标密码,得到第二故障密文;
[0097]
具体地,步骤s52的具体实施与步骤s12的具体实施同理,此处不作赘述。
[0098]
在步骤s15的具体实施中,对于每一个可能的故障情况以及对应的s盒不可能输出值集合,根据所述第一故障密文以及所述第二故障密文进行对密钥不可能值的排除,得到加密主密钥。
[0099]
具体地,对于第一故障密文和第二故障密文,由于二者在本步骤中的地位、用处均相同,因此统一称为故障密文c;针对每一个候选值k
θ
,有个候选的s盒不可能输出值集合对于每一个集合利用下列公式对最后一轮轮密钥kr进行不可能值的排除,得到最后一轮轮密钥,进行逆密钥扩展后得到最终的加密主密钥:
[0100][0101]
其中,nf表示故障数量,故障密文c共有m个元素。因为密文c是由最后一轮s盒的输出异或上最后一轮的轮密钥kr得到的。但是对s盒注入故障导致了s盒不会输出集合中的值。那么针对密文c第i个元素ci,进行变换后可以得到对密钥不可能值排除的公式
[0102]
与前述的针对分组密码的选择明文持久性故障分析方法的实施例相对应,本技术还提供了针对分组密码的选择明文持久性故障分析装置的实施例。
[0103]
图6是根据一示例性实施例示出的一种针对分组密码的选择明文持久性故障分析装置框图。参照图6,该装置可以包括:
[0104]
故障注入模块21,用于对分组密码进行故障注入,得到含有故障的目标密码;
[0105]
构造模块22,用于构造与所述分组密码的s盒大小相同数量的选择明文,将所述选择明文输入所述目标密码,得到第一故障密文;
[0106]
分析模块23,用于根据所述第一故障密文以及所述选择明文,分析所有可能的故障情况并得到对应的s盒不可能输出值集合;
[0107]
增加模块24,用于根据所有可能的故障情况对应的故障数量和所述目标密码,增加特定数量的随机明文,将所述随机明文输入所述目标密码,得到第二故障密文;
[0108]
排除模块25,用于对于每一个可能的故障情况以及对应的s盒不可能输出值集合,
根据所述第一故障密文以及所述第二故障密文进行对密钥不可能值的排除,得到加密主密钥。
[0109]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0110]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0111]
相应的,本技术还提供一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的针对分组密码的选择明文持久性故障分析方法。
[0112]
相应的,本技术还提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述的针对分组密码的选择明文持久性故障分析方法。
[0113]
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。
[0114]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1