轻量级与非满射S-box的分组密码算法的分析

被引量 : 0次 | 上传用户:ylalh
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在过去的几十年里,由于计算机技术的蓬勃发展给通信安全带来了巨大的挑战和机遇,密码学在信息安全领域的作用日趋显著。在当今密码学领域,分组密码,作为对称密码算法的一种,是一种基础密码算法,其结构也常常被用来构造流密码,哈希函数以及消息认证码。分组密码的加密过程是一个由唯一密钥来决定的置换过程,它先把消息分为等长分组,然后在密钥的作用下转换为等长的密文块。分组密码被广泛应用于如SSL, IPsec等各种安全协议和安全类应用程序。直到现在,分组密码的设计与安全性评估一直是研究的热点。分组密码算法DES是由IBM公司设计,并在1977年被提名为第一个分组密码加密标准。它密钥长度为56比特,分组长度64比特。整个加密过程是Feistel结构,由一个初始变换,16个迭代轮函数和一个逆变换组成。在此之后,出现了很多Feistel吉构的分组密码,比如分组密码CAMELLIA, CAST-128, ICE, LOKI97, LUCIFER。与此同时,一系列的分析方法也正在展开,比如差分分析,线性分析,代数攻击等。因为56比特的密钥空间已经不足以保证DES算法的安全性,1997年,美国国家标准与技术研究所(NIST)开始征集高级加密标准(AES)。2000年由Joan Daemen和Vincent Rijmen设计的分组密码算法Rijndael被提名为新的高级加密标准(AES),并在一年后由NIST发布于FIPS PUB197。AES是SPN结构的,这种结构比起Feistel结构实现的效率更高,这是因为为达到同样程度的混乱和扩散,SPN结构相对于Feistel结构更易于并行化。S盒在分组密码的设计中起着至关重要的作用。S盒是一个布尔函数映射{0,1}m→{0,1}n它的非线性影响着分组密码的混乱特性。为了抵抗差分分析,有些分组密码如CAST-128, CAST-256, Blowfish等的S盒采用输出比特大于输入比特的设计特点。对于一个输入比特为m,输出比特为n的S盒,也可以实现为一个2m个元素的表。如果n大于m,那么S盒为非满射。线性分析是一种已知明文攻击或者唯密文攻击,由Matsui在1993年提出[26]。因此在设计能抵抗线性分析的大S盒时,常常采用bent函数,这种函数的非线性度能够达到上界2m-1-2?(m/2)-1。在线性分析中,能找到非满射大S盒的输入掩码为0,输出掩码为非0的线性近似表达式是很有用的。然而,遍历S盒所有元素和所有输出掩码往往是非常耗时的。在针对采用非满射大S盒的分组密码的线性分析中,由于计算时间的限制,以有的工作只是搜索了部分线性近似表达式,没有达到全部搜索的目的。比如,在分组密码算法CAST-128和CAST-256中,有三种轮函数F1,F2,F3,每种都由4个8×32的非满射S盒通过模加、模减和异或的混合运算构成,这导致无法构建S盒的线性分布表。由于CAST的Feistel结构,为了控制每轮的偏差,分析者对0→Г的线性近似表达式进行了搜索。在[63]中,Nakahara等考虑到模加模减运算会产生借位,因此只考虑了轮函数F1,F2,F3的最优线性近似表达式是00000000x→00000001x,其偏差是2-17,利用它构造了两轮迭代线性近似表达式进而给出了12轮CAST-256的分析结果,需要2101个明文,2101次12轮CAST-256加密。但随后王美琴等在[14]的对CAST-128和CAST-256的线性分析中指出进位和借位不总是降低偏差,由于计算时间的限制,他们搜索了轮函数F1和F3的输出掩码的汉明重量不大于3的线性近似表达式;对于轮函数F2,搜索了输出掩码的汉明重量不大于6的线性近似表达式,最后利用F2的最优线性近似表达式00000000x→03400000x,偏差为2-12.91,给出了24轮CAST-256勺分析结果,需要2124’个明文,2156.2次24轮CAST-256加密。然而,轮函数F1,F2,F3的输出比特数为32。所以还有大量的线性近似表达式的偏差没有被计算。是否存在偏差更高的线性近似表达式是未知的。本文中,我们提出一种针对非满射大S盒(32×32)的所有线性近似表达式(0→Г)实际可行的搜索方法。该算法充分利用了64位高性能并行计算机的硬件特性,能够分析任何具有非满射大S盒的分组密码算法。为了清晰的描述我们的算法,我们以CAST-256为例。我们找到了比王美琴等找到的最好线性近似表达式更好的线性近似表达式。我们主要描述了对于CAST-256中的轮函数F2的搜索过程。在我们的并行环境里(64颗CPU核,主频2.4GHZ,3MB二级缓存,型号IBM X3950M2),搜索完所有232个线性近似表达式用时85.3个小时。这里需要提及的一点是我们的工作不只是并行化实现,而是充分利用了硬件的特性来显著降低计算时间。如果没有我们的改进,即便采用并行化,这个搜索过程在我们的并行环境下,也将在256天才能完成。我们得到了CAST-256的轮函数F2的最好线性近似表达式00000000x→8021c53aX,偏差为2-12.63,比已有的最优偏差2-12.91更优。而且我们给出一个通用的针对非满射大S盒的线性近似表达式(0→Г)搜索方法,利用该方法在我们的并行环境下可以在47.72小时内搜索完CAST-256算法的任一轮函数F1,F2,F3的所有线性近似表达式(0→Г)。在最近几年里,由于因特网的迅猛发展,越来越多的微型终端设备被普遍使用,它们可以提供快捷的计算与通信,比如射频标签和传感器网络。然而,广受欢迎的密码算法AES并不能完全适合这种低耗能和计算资源有限的环境。所以最近几年国际密码领域设计了很多轻量级分组密码被设计出来满足这种资源受限的环境的安全需求,比如分组算法DESL, mCRYPTON, HEIGHT, ICEBERG, PRESENT, PUFFIN等。PUFFIN是一种轻量级分组密码,由Cheng, Heys和Wang在DSD2008上发表。它是一种32轮SPN结构的分组密码,分组长度为64比特,密钥长度为128比特。和ICEBERG一样,PUFFIN也是一种自反的SPN结构的算法,这使得它能在硬件要求低的环境下使用。在CCECE2009上,Wang和Heys又提出了分组密码算法PUFFIN2,该算法结构与PUFFIN相似,只是轮数为34轮,密钥生成算法略有不同。PUFFIN原文中提出31轮PUFFIN差分特征的概率小于2-62。Cheng等声称利用这一差分特征,需要262个选择明文对才能破解,这种攻击的数据复杂度接近于字典攻击。但是,PUFFIN的密钥长度为128比特,分组长度是64比特。Cheng等认为对于一个理想的加密算法,即便利用整个数据空间也无法恢复密钥。因此Cheng等声称32轮PUFFIN可以抵抗差分攻击[12]。然而,如果一个攻击能够利用整个数据空间恢复密钥,时间复杂度低于穷搜,那么这种攻击就是有效的。在本文中,我们利用整个数据空间对32轮PUFFIN进行差分分析,进而恢复128比特密钥。同时,我们利用28轮的线性近似表达式恢复128比特的密钥。其数据复杂度为262个明文,计算复杂度为293.7次32轮加密。另外,我们的攻击结果也适用于32轮PUFFIN2。差分分析是分组密码算法的一种经典攻击方法[24,25],由Biham和Shamir相继发现,是一种选择明文攻击,它能够恢复出迭代分组密码的密钥。。它通过在迭代密码算法中存在的高概率差分特征来作为与随机置换的区分器。抵抗差分分析已经成为分组密码算法设计的安全准则。代数攻击也是分组密码算法的一种通用的攻击类型,它被广泛应用于分析流密码[28,29],多变元密码系统[30]和一些分组密码算法[31-35]。代数攻击的基本思想是将分组密码算表示为多变量多项式方程组,进而通过求解来恢复密钥。一般来说,变量越多,非线性方程越多,多项式方程组求解的时间复杂度越高,如AES的密钥恢复可以看成对一个已知明文攻击,方程组包含4000个多变元二次方程,其求解复杂度至今仍然是难以估计的。然而个别密码算法导出的方程组其代数特性可能是容易解的[38,39]。如今,人们还在不断寻找更优的求解方法[36,37,40]。一般认为,稀疏的多项式方程组是容易解的。有两类方法Grobner Basis, SAT Solver可以用来求解这一类多项式方程组,如Magma, Singular, PolyBori, MiniSat2等[43-46]。PolyBori是计算Grobner Basis的工具,MiniSat2是一种快速的SAT Solver。如果分组密码算法的多项式方程组可以被求解,那么只需要很少的明密文对便可以恢复密钥。然而,由于多项式方程组的求解时间难以估计,对于分组密码的代数攻击的可行性至今是未知的。近年来,差分分析与代数分析的组合成为人们关注的分析方法。在FSE2009上,Albrecht等提出了一种新型的攻击方法,差分代数攻击[47]。他们提出了三种攻击方法,命名为攻击A,攻击B和攻击C。他们认为攻击A的计算复杂度是难以估计的;攻击B和攻击C的目标是过滤掉不满足差分特征或者差分的错误对,进而识别正确对以恢复密钥。最后给出了对16轮PRESENT-80,17,18,19轮PRESENT-128的攻击。在本文中,我们指出攻击B和攻击C并不适用于PRESENT算法,因为它们不能过滤掉大多数满足密文差分的错误对。而且,我们解释了攻击C是不适用于一般的分组密码算法。其次,我们利用PolyBori和MiniSat2对PRESENT算法执行差分代数攻击,验证其是无效的。在此基础上,我们提出了两种新的差分代数攻击:固定部分密钥比特和多向量的差分代数攻击。基于第一个方法,我们可以攻击16轮PRESENT-80,这需要263个选择明文,最差时间复杂度是2794次加密。虽然攻击的时间复杂度分析结果更高,但数据复杂度有所降低。本论文中,我们首先给出了非满射大S盒的线性近似表达式的搜索方法,对32轮PUFFIN进行了差分分析和线性分析,并对Albrecht等在FSE2009上提出的差分代数攻击技术进行了研究。其中差分代数攻击技术的研究内容,主要思想和证明由王美琴老师完成,本文作者负责大批量试验数据测试。具体来讲,本文主要贡献分为以下三个方面:(1)对非满射大S盒的线性近似表达式的搜索算法·利用硬件特性进行改进我们将计数器累加操作并行处理分给64个子进程,父进程负责计算偏差。为了降低计数器带来的巨大内存需求,我们重复利用有限的计数器来计算更多不同输出掩码的线性近似表达式的偏差。我们还利用64位寄存器一次内存读获取S盒中的两个元素。●Dot_Multiply运算的优化受对分查找思想[671的启发,我们把Dot_Multiply运算从32次异或运算,33次与运算,31次右移运算减少到6次异或运算,8次与运算,6次右移运算。·S盒重排序和累加运算的优化这里我们以CAST-256的轮函数F2为例。因为输入掩码始终是0,所以S盒中元素的顺序不影响偏差的计算。因此我们把非满射大S盒中的元素进行了重新排序,重新排序后的S盒包含64个新的组,在每一组里都有40000x个元素,然后将每一组分配给一个子进程。每一组最多由B1,B2和B3三种块组成,其中在B1或B2中,所有元素的6比特最低有效位相同。每一个子进程都会用不同的方式去处理不同类型的块。这样我们可以在对64个连续的输出掩码的计数器累加操作中,只进行最多2次Dot_Multiply运算,并且仅需要操作2个计数器。·最后,在对CAST-256的轮函数凡的最优线性近似表达式的搜索算法基础上,我们给出了对非满射大S盒的线性近似表达式更有效的通用搜索算法。利用这个通用算法,搜索CAST-256的轮函数Fl或F3的线性近似表达式仅需要242.81次内存写,内存需求为228个字节,在我们的并行环境下,这实际需要47.72小时。而如果直接采用对轮函数F2的搜索算法来完成,将需要251.58次内存写,内存需求为228个字节。(2)对32轮PUFFIN的差分分析和线性分析结果我们识别了4条2轮PUFFIN的迭代差分特征,它们的概率都是2-4,每一轮都只有一个活性S盒。利用其中任一条2轮迭代差分特征,我们可以构建更多轮的差分特征。它们的概率都为2-60,我们列举了其中1条30轮PUFFIN的差分特征,如下,其中→30r表示30轮,(00000000x,00004000x)→30r(00000000x,00004000x).我们在第2轮到第31轮使用第1条差分特征。我们推出明文差分的4个比特和密文差分的4个比特要满足如下的集合。所以我们选择了264个明文,来构建260个结构,在每一个结构里都有56个明文对,它们仅在第14,22,38,55比特上口J‘能为1。(△P55,△P38,AP22,△P14)∈{(1,1,0,0),(0,0,0,1),(0,1,0,1),(1,0,1,0),(1,0,1,1),(0,1,1,1),(1,1,1,1)},(△08,△06,△C18,△C.0)∈{(1,0,0,1),(0,1,0,0),(1,1,0,0),(0,0,1,1),(0,1,1,1),(1,1,1,0),(1,1,1,1)}.然后我们恢复第0轮和第32轮的轮密钥。我们利用其它3条差分特征来恢复其它密钥比特。恢复128比特的密钥,共需要264个明密文对,2112次32轮加密和和28个6比特计数器,成功率为99.99999999996%。要得到多轮数的线性近似表达式,我们在搜索时首先考虑2轮迭代线性近似表达式。我们最终找到了14条2轮迭代线性近似表达式,它们的偏差都是最大值2-3,其中一条如下:(0000000000000010)x→1r(0004000000000000)x→1r(0000000000000010)x我们迭代此2轮的线性近似表达式得到28轮的线性近似表达式,它的偏差为2-29。我们在第3轮到第30轮使用这个28轮的线性近似表达式,进而恢复了32轮PUFFIN的主密钥。在密钥恢复过程中,要猜测的轮密钥比特为第0,1,2,31,32轮的轮密钥,总计41比特。从密钥生成算法看,这41个比特等价于主密钥的35个比特。因此剩下的93个比特用穷搜来恢复。因此我们用262个已知明文,293.7次32轮加密,235个64比特计数器恢复32轮PUFFIN的128比特主密钥,成功率为91%。(3)Albrecht等的差分代数攻击技术的研究Albrecht等发表在FSE2009上的一篇文章里指出差分代数攻击可以用来攻击PRESENT,并给出了三种攻击方法,攻击A,攻击B,攻击C。首先,我们指出攻击C是不能过滤掉满足密文差分值的错误对的。其次,我们用PolyBori和MiniSat2证实了攻击B对于PRESENT算法的攻击也是不可行。原因是在多项式方程组中,能使得错误对较短时间产生矛盾或者使得正确对较短时间求解的约束条件太少。因此,我们给出了两种方法可以更可靠的利用正确对在有效的时间内求解出正确密钥,而且错误对不会求解出错误密钥。第一种方法是在多项式方程组中固定部分密钥比特值。另外一种是用两组以上的明密文对构建多项式方程组。基于第一种方法,我们给出了16轮PRESENT-80算法的分析结果,这需要263个选择明文,时间复杂度最多需要2794次加密。相比于16轮PRESENT-80的差分分析,时间复杂度为262次内存访问,数据复杂度为264个明文,我们的攻击方法虽然时间复杂度略高,但数据复杂度有所降低。对于第二种方法,若攻击16轮PRESENT-80算法,时间复杂度比穷搜密钥攻击略高,我们希望这种方法可以在其它分组密码算法的分析中取得效果。
其他文献
林语堂是中国现代文学史上颇有争议的人物,20年代他首次将英文“Humor”一词翻译为“幽默”,并且在我国最早提倡幽默,30年代林语堂曾创办并主办《论语》半月刊,极力倡导幽默文和
经济全球化带来了资本、技术和信息跨国界流动,发达国家凭借研发、设计和品牌管理等优势成为全球价值链(GVC)的治理者,而嵌入价值链的珠三角产业由于不利的资源禀赋,被迫处在低
研究了日本弓背蚁的社群生活史;结合室外观察和室内饲养方法,对日本弓背蚁社群生活史各阶段社会行为进行了初步研究.结果表明,蚁后在社群的建立过程中起着重要作用;日本弓背蚁社群
作为哈龙替代物,热气溶胶灭火剂以其优越的性能成为目前应用最为广泛、最受关注的一类灭火剂,为了研究热气溶胶灭火剂对油池火的抑制规律,本文结合现有较为成熟的气溶胶灭火
本文系统地研究了云南省植烟区的主要土壤类型的pH值和有机质、全氮、速效氮、全钾、速效钾、全磷、速效磷、水溶性氯含量等理化指标,明确了不同土壤的养分丰缺状况,依据测土
语言的学习与掌握一开始往往都是从“听”入手的。目前大部分的高中英语听力教学遵循的是“放听力-做练习-对答案”的一种简单的听力教学模式,学生觉得听力课枯燥无味,因为在这
20世纪90年代以来诗歌发生了意义重大、可以被命名为“民间化趋向”的变化,本文的绪言部分首先对诗歌的“民间化”做出梳理和界定,它主要地包括三个方面,诗歌的存在方式、传
逆向物流越来越受到人们的关注,逆向物流的合理运作将产生巨大的经济效益和环保效益。由于逆向物流具有复杂性、不确定性等特点,需要研究新型的物流组织形式来高效、低成本地
目的:1.比较Graves病(Graves’ disease, GD)、桥本甲状腺炎(Hashimoto’s thyroiditis, HT)患儿治疗前后的临床表现、甲状腺激素及抗体水平的变化,了解儿童自身免疫性甲状腺
陶瓷自远古以来就是人类不可缺少的日常生活用品,随着时间的演变和人类文明的发展,逐渐成为艺术品。釉下彩瓷是我国一种传统的陶瓷装饰艺术品门类,醴陵出产的釉下五彩瓷作为