微型加密演算法

密碼學中,微型加密演算法(Tiny Encryption Algorithm,TEA)是一種易於描述和執行塊密碼,通常只需要很少的代碼就可實現。其設計者是劍橋大學電腦實驗室大衛·惠勒英語David Wheeler (computer scientist)羅傑·尼達姆英語Roger Needham。這項技術最初於1994年提交給魯汶快速軟件加密英語Fast Software Encryption的研討會上,並在該研討會上演講中首次發表。[2]

微型加密演算法
兩輪Feistel結構(單周期)的TEA加密
概述
設計者大衛·惠勒英語David Wheeler (computer scientist)羅傑·尼達姆英語Roger Needham
首次發佈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. 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. ^ 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). 

參照

外部連結