1994年TEA算法在剑桥大学计算机实验室被研发,而在三年后,它的变种版本XTEA算法便横空出世。相比TEA算法,XTEA增加了更多的密钥表,移位和异或操作等,下面我们就一起来了解一下XTEA算法。

XTEA算法简介

由于TEA算法中的密钥中存在缺陷,每一个key都等效于其他算法中的三个key,这意味着实际上key中只有126bit会生效。因此,TEA算法的散列性能不好,这个弱点甚至导致了Xbox被黑客攻击,并且TEA容易受到密钥相关攻击。

于是,为了弥补这些缺陷,XTEA算法被设计出来,XTEA跟TEA使用了相同的简单运算,但它采用了截然不同的顺序,为了阻止密钥表攻击,四个子密钥采用了一种不太正规的方式进行混合。

XTEA算法

XTEA算法的加密过程

XTEA算法的加密和解密过程都是由多轮迭代完成的。每轮迭代都包括四个步骤:轮密钥加、代换、置换和轮密钥加。其中,代换和置换步骤是XTEA算法的核心部分。

初始化

首先,将128位的密钥划分成四个32位的子密钥K1,并将明文块V分成两个32位的子块V。然后,初始化变量A和S,其中A的初始值为0,S的值为固定的常数0x9E3779B9。

迭代加密

接下来,对于每个明文块V,循环执行加密操作K2次,每次加密操作中,都使用密钥的四个子密钥K1对明文块V进行加密,加密结果保存在N数组中。

在每次加密操作中,首先将F左移4位,然后将结果与F右移5位的结果进行异或运算,再将结果加上F的值,最后再将结果与A和M进行异或运算。其中,T表示A的低2位,即A对4取模所得的余数。这个操作是为了保证每个子密钥都能够参与到加密过程中。

然后,将A加上固定常数S,S的值为0x9E3779B9,这个常数的选取保证了加密的安全性。

接下来,将G左移4位,然后将结果与G右移5位的结果进行异或运算,再将结果加上G的值,最后再将结果与A和H进行异或运算。其中,D表示A向右移11位,并对4取模所得的余数。这个操作是为了保证每个子密钥都能够参与到加密过程中。

输出密文

最后,将加密结果N保存在输出数组中。

XTEA算法

XTEA算法和TEA算法的区别

  • 密钥长度不同:TEA算法采用128位密钥,而XTEA算法采用更长的256位密钥。
  • 加密轮数不同:TEA算法采用32轮迭代加密/解密,而XTEA算法采用64轮迭代加密/解密。这使得XTEA算法有更好的安全性,但也使得它相对于TEA算法来说更加耗时。
  • 算法细节不同:XTEA算法在TEA算法的基础上进行了改进,主要针对TEA算法中的一些安全弱点。具体来说,XTEA算法中的迭代加密/解密中加入了一个变量delta的变化,以增强算法的安全性。此外,XTEA算法中的轮加密过程也做了一些微调,例如将密钥扩展的方式做了改进等。

免责声明:素材源于网络,如有侵权,请联系删稿。