微型加密算法

密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行块密码,通常只需要很少的代码就可实现。其设计者是剑桥大学计算机实验室大卫·惠勒罗杰·尼达姆。这项技术最初于1994年提交给鲁汶快速软件加密的研讨会上,并在该研讨会上演讲中首次发表。[2]

微型加密算法
两轮Feistel结构(单周期)的TEA加密
概述
设计者大卫·惠勒罗杰·尼达姆
首次发布1994年
继承算法XTEA
密码细节
密钥长度128位
分组长度64位
结构Feistel network
重复回数variable; recommended 64 Feistel rounds (32 cycles)
最佳公开破解
TEA suffers from equivalent keys (Kelsey et al., 1996) and can be broken using a related-key attack requiring 223 chosen plaintexts and a time complexity of 232.[1]

此项技术开源

属性

TEA操作处理在两个32位无符号整型上(可能源于一个64位数据),并且使用一个128位的密钥

版本

TEA的第三个版本XXTEA,发表于1998年,进一步提高了TEA算法的安全性。

参考代码

此处引用C语言中加密和解密的改编例程,由大卫·惠勒同罗杰·尼达姆共同发表[2]

#include <stdint.h>

void encrypt (uint32_t* v, uint32_t* k) {
    uint32_t v0=v[0], v1=v[1], sum=0, i;           /* set up */
    uint32_t delta=0x9e3779b9;                     /* a key schedule constant */
    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
    for (i=0; i < 32; i++) {                       /* basic cycle start */
        sum += delta;
        v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
        v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);  
    }                                              /* end cycle */
    v[0]=v0; v[1]=v1;
}

void decrypt (uint32_t* v, uint32_t* k) {
    uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i;  /* set up */
    uint32_t delta=0x9e3779b9;                     /* a key schedule constant */
    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
    for (i=0; i<32; i++) {                         /* basic cycle start */
        v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
        v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
        sum -= delta;                                   
    }                                              /* end cycle */
    v[0]=v0; v[1]=v1;
}

请留意这个参考实现对多字节的处理。原稿中并未指定出如何从二进制或者其他内容中派生出这些得到的数字。

参阅

  • RC4 - 一种流密码,如同TEA一般, 旨在被设计后易于执行。
  • XTEA - 块TEA的继任者的第一个版本
  • XXTEA -改进版本块TEA的继任者

参考文献

  1. Kelsey, John; Schneier, Bruce; Wagner, David. . Lecture Notes in Computer Science. 1997, 1334: 233–246 [2012-08-27]. doi:10.1007/BFb0028479. (原始内容存档于2021-03-23).
  2. Wheeler, David J.; Needham, Roger M. . Lecture Notes in Computer Science (Leuven, Belgium: Fast Software Encryption: Second International Workshop). 1994-12-16, 1008: 363–366 [2012-08-27]. (原始内容存档于2019-08-22).

引用

  • 安德姆, 维克拉姆 雷迪. (PDF). 塔斯卡卢萨: 阿拉巴马大学. 2003. (原始内容 (PDF)存档于2012-03-31).
  • Hernández, Julio César; Isasi, Pedro; Ribagorda, Arturo. . Proceedings of the 2002 Symposium on Artificial Intelligence and its Application. 2002.
  • Hernández, Julio César; Sierra, José María; Isasi, Pedro; Ribargorda. Arturo. . Proceedings of the 2003 Congress on Evolutionary Computation. 2003, 3: 2189. doi:10.1109/CEC.2003.1299943.
  • Hernández, Julio César; Sierra, José María; Ribagorda, Arturo; Ramos, Benjamín; Mex-Perera, J. C. (PDF). Proceedings of the IMA Int. Conf. on Cryptography and Coding 2001. 2001: 374–377 [2012-08-27]. doi:10.1007/3-540-45325-3_34. (原始内容 (PDF)存档于2012-04-26).
  • Moon, Dukjae; Hwang, Kyungdeok; Lee, Wonil; Lee, Sangjin; Lim, Jongin. (PDF). Lecture Notes in Computer Science. 2002, 2365: 49–60 [2012-08-27]. doi:10.1007/3-540-45661-9_4. (原始内容存档 (PDF)于2022-01-23).
  • Hong, Seokhie; Hong, Deukjo; Ko, Youngdai; Chang, Donghoon; Lee, Wonil; Lee, Sangjin. . In Proceedings of ICISC 2003. 2003. doi:10.1007/978-3-540-24691-6_30.

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.