论文部分内容阅读
分组密码具有速度快、易于标准化和便于软件实现等特点,在网络通信、电子商务、智能卡等方面有着广泛地应用;同时作为一个基础模块,它也被用来构造流密码、伪随机数发生器、消息认证码以及杂凑函数等。分组密码的研究主要包括分组密码的设计理论、分组密码的分析方法、分组密码的工作模式以及分组密码的检测评估四个部分,其中分组密码的分析方法是现代密码学研究的热点之一。目前,主要的分析方法有差分分析、线性分析、代数分析以及这些分析方法的扩展,譬如:不可能差分分析、截断差分分析、高阶差分分析、多线性分析、非线性分析等。这些分析方法不仅推动着分组密码的分析理论的发展,也给分组密码的设计理论提供了一定的依据。本文针对几种国际上比较流行或新设计的分组密码算法,研究它们的结构特点,分析它们抵抗不可能差分分析或代数分析的能力。我们的结果从理论上分析和评估了这些算法的安全强度,在一定程度上影响着人们对这些算法的使用信心,同时也对分组密码的设计方法提出了更高的要求,促进了分组密码的发展。此外,本文还对MiFareClassic非接触智能卡的安全性做了部分研究。论文的主要贡献如下:(1)研究了轻量级分组密码LBlock抵抗不可能差分分析的能力。LBlock是2011年提出的在硬件环境和软件环境都可以有效实现的32轮分组密码,此前在单密钥情形下最好的分析结果是对20轮LBlock的不可能差分分析和积分攻击。本文研究了简化轮LBlock的结构特性和密钥编排方案的冗余性,得到连续轮轮密钥之间的关系,通过适当选取一条14轮不可能差分链攻击了21轮LBlock,我们的攻击的数据复杂度、时间复杂度和存储复杂度分别为:262.5选择明文、272.2次21轮加密所需要的时间和257.5比特。(2)研究了各种简化版本Camellia算法抵抗不可能差分分析的能力。Camellia算法是2000年由两家日本电子公司NTT和Mitsubishi共同提出的,之后被CRYPTREC和NESSIE推荐为建议使用的分组密码算法之一,也被ISO/IEC采用作为分组密码国际化标准之一。它采用Feistel结构,且每六轮插入一个密钥相关层FL/FL-1,设计者希望此密钥相关层能抵抗未来一些新的攻击方法。本文从两个方面研究了不可能差分分析Camellia算法。第一,提出了一些含FL/FL-1的7轮Camellia的不可能差分链(此前最长的此类不可能差分链是6轮),并攻击了带有密钥白化层和密钥相关层的11轮Camellia-192、11轮Camellia-256(从第1轮到第11轮)和12轮Camellia-256;第二,构造了Camellia算法的一个差分链集合,此集合中至少含有一条带有两个密钥相关层的8轮不可能差分链,这与目前最长的无密钥相关层的不可能差分链轮数一样。我们的结果表明密钥相关层不能有效地抵抗不可能差分攻击。基于这个差分链集合,我们提出一个新的策略,并攻击了11轮Camellia-128、12轮Camellia-192、13轮Camellia-256以及不带有密钥白化层的13轮Camellia-192、14轮Camellia-256。我们的结果均好于之前对缩减轮Camellia算法和无密钥白化层但有密钥相关层的Camellia算法的分析结果。(3)研究了缩减轮AES-128抵抗不可能差分分析的能力。具体地说,本文构造了一些2轮AES的不可能差分链,在此基础上给出了一个数据复杂度低的7轮AES-128的不可能差分分析。我们的攻击的数据复杂度为280个选择明文,这将目前对7轮AES-128最好的不可能差分分析数据复杂度降低了2-26.2倍。(4)从代数角度研究了分组密码Four-Cell的安全性。Four-Cell是2009年提出的具有扩展Feistel非线性反馈移位寄存器结构的分组密码,且它的轮函数作用在两个有限域GF(28)和GF(2)上,从而增加了代数分析的难度。本文通过一个向量共轭运算将分组密码Four-Cell扩展成一个新的分组密码E-Four-Cell,E-Four-Cell中所有运算均作用在有限域GF(28)上,并且在限定明文空间、密钥空间和密文空间的情况下新的分组密码E-Four-Cell与Four-Cell是一致的,从而简化了代数攻击分组密码Four-Cell的难度。(5)研究了MiFare Classic非接触智能卡的安全性。MiFare Classic卡片是由NXP生产的带存储的逻辑加密卡,被广泛地应用到公交、校园卡、门禁等系统中。本文首先对MiFare Classic系统进行了读卡器端攻击(即敌手仅仅与合法的读卡器交互)。对多扇区认证协议而言,在可忽略的时间内仅仅通过与读卡器交互并搜集通信数据,再利用算法本身的弱点便可求解出第二扇区乃至之后扇区的密钥,从而避免了需要进行多次猜测获得连续两个扇区认证准确的时间差。其次,研究了MiFare Classic系统中用于加密的密码算法Crypto1的一些变形是否能抵抗目前已有的攻击。我们的结果表明:仅仅通过简单地改变非线性函数输入的个数、位置而仍保持均匀地从线性反馈移位寄存器中抽取,得到的新的流密码算法仍然是不安全的。