微型加密演算法
外觀
概述 | |
---|---|
設計者 | 大衛·惠勒,羅傑·尼達姆 |
首次發佈 | 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] |
在密碼學中,微型加密演算法(Tiny Encryption Algorithm,TEA)是一種易於描述和執行的塊密碼,通常只需要很少的代碼就可實現。其設計者是劍橋大學電腦實驗室的大衛·惠勒與羅傑·尼達姆。這項技術最初於1994年提交給魯汶的快速軟件加密的研討會上,並在該研討會上演講中首次發表。[2]
此項技術開源。
屬性
[編輯]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;
}
請留意這個參考實現對多位元組的處理。原稿中並未指定出如何從二進制或者其他內容中衍生出這些得到的數字。
參閱
[編輯]參考文獻
[編輯]- ^ Kelsey, John; Schneier, Bruce; Wagner, David. Related-key cryptanalysis of 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2, and TEA. Lecture Notes in Computer Science. 1997, 1334: 233–246 [2012-08-27]. doi:10.1007/BFb0028479. (原始內容存檔於2021-03-23).
- ^ 2.0 2.1 Wheeler, David J.; Needham, Roger M. TEA, a tiny encryption algorithm. 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. An application of genetic algorithms to the cryptoanalysis of one round TEA. 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. Finding efficient distinguishers for cryptographic mappings, with an application to the block cipher TEA. 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. Distinguishing TEA from a random permutation: Reduced round versions of TEA do not have the SAC or do not generate random numbers (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. Impossible differential cryptanalysis of reduced round XTEA and TEA (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. Differential cryptanalysis of TEA and XTEA. In Proceedings of ICISC 2003. 2003. doi:10.1007/978-3-540-24691-6_30.
外部連結
[編輯]- A Cryptanalysis of the Tiny Encryption Algorithm
- A web page advocating TEA and providing a variety of implementations
- Test vectors for TEA (頁面存檔備份,存於互聯網檔案館)
- A survey of TEA and XTEA and their cryptanalysis
- JavaScript implementation of XXTEA with Base64
- PHP implementation of XTEA (頁面存檔備份,存於互聯網檔案館)
- JavaScript implementation of TEA (頁面存檔備份,存於互聯網檔案館)
- JavaScript and PHP implementations of XTEA (English text) (頁面存檔備份,存於互聯網檔案館)
- Ruby implementation of XXTEA with Base64
- LGPL Java/J2ME implementation of TEA (頁面存檔備份,存於互聯網檔案館)
- Visual Basic.NET implementation of TEA
- A Bitsliced implementation of TEA
- AVR ASM implementation (頁面存檔備份,存於互聯網檔案館)