TEA(Tiny Encryption Algorithm)算法是一种对称的Feistel加密结构的分组加密算法。由于理想分组加密在实践中的种种困难。Feistel最先提出使用乘积加密的概念来逼近理想的分组加密。乘积加密是指依次使用两个或两个以上基本密码,所得结果的密码强度将强于所有单个密码的强度。这种方法的本质是开发一个分组加密,密钥长为k位,分组长为n位,采用2^k个变换,而不是理想分组密码的(2^n)!个可用变换。
Feistel建议交替地使用代替和置换。代替和置换的定义如下所述。
- 代替:每个明文元素或元素组被唯一地替换为相应的密文元素或元素组。
- 置换:明文元素的序列被替换为该序列的一个置换。也就是说,序列里没有元素被添加、删除或替换,但序列里元素出现的顺序改变了。
混淆和扩散
实际上,这是Claude Shannon提出的交替使用混淆和扩散的乘积加密的实际应用。Shannon引进混淆和扩散这两个术语来刻画任何加密系统的两个基本构件。他关注的是如何挫败基于统计方法的密码分析。他假设攻击者拥有明文统计特征的知识。例如某种人类语言的可读信息,其不同字母的频率分布是已知的。或者已知信息中极有可能出现某些单词或短语。如果这些特征以任何形式体现在密文中,密码分析者就有可能推导出密钥或其一部分,至少是包含确切密钥的一个密钥集,在Shannon所指的强理想加密中,密文所有的统计特征都是独立于所用密钥的。任意替代加密即理想分组加密,就是这样一种加密,不过它是不可能获得实际应用的。
下图描述了Feistel提出的结构。加密算法的输入是长为2w位的明文分组和密钥K。明文分组被分为等长的两部分:L0和R0.这两半数据经过n轮迭代后组合成密文分组。第i轮迭代的输入Li-1和Ri-1来自于上轮迭代的输出;而输入的子密钥Ki是由整个密钥