Lille krypteringsalgoritme - Tiny Encryption Algorithm

TE
TEA InfoBox Diagram.png
To Feistel-runder (en cyklus) af TEA
Generel
Designere Roger Needham , David Wheeler
Først offentliggjort 1994
Efterfølgere XTEA
Krypteringsdetaljer
Nøglestørrelser 128 bit
Blokstørrelser 64 bit
Struktur Feistel-netværk
Runder variabel; anbefalede 64 Feistel-runder (32 cyklusser)
Bedste offentlige kryptanalyse
TEA lider af ækvivalente nøgler (se tekst; Kelsey et al., 1996) og kan brydes ved hjælp af et angreb med relateret nøgle, der kræver 2 23 valgte almindelige tekster og en tidskompleksitet på 2 32 . Den bedste strukturelle kryptanalyse af TEA i standardindstillingen for enkelt hemmelig nøgle er nul-korrelations-kryptanalyse, der bryder 21 runder på 2 121,5 tid med mindre end den fulde kodebog

I kryptografi er Tiny Encryption Algorithm ( TEA ) en blokciffer, der er kendt for sin enkelhed med beskrivelse og implementering , typisk et par kodelinjer. Det blev designet af David Wheeler og Roger Needham fra Cambridge Computer Laboratory ; det blev først præsenteret på Fast Software Encryption- værkstedet i Leuven i 1994 og først offentliggjort under proceduren for denne workshop.

Krypteringen er ikke underlagt nogen patenter .

Ejendomme

TEA fungerer på to 32-bit usignerede heltal (kan stamme fra en 64-bit datablok ) og bruger en 128-bit nøgle . Den har en Feistel-struktur med en foreslået 64 runder, typisk implementeret i par kaldet cykler . Det har en ekstremt enkel nøgleplan , der blander alt nøglemateriale på nøjagtig samme måde for hver cyklus. Forskellige multipla af en magisk konstant bruges til at forhindre enkle angreb baseret på symmetrien af runderne. Den magiske konstant, 2654435769 eller 0x9E3779B9 vælges til at være 322 32 / ϕ ⌋, hvor ϕ er det gyldne forhold (som intet-op-min-ærme-nummer ).

TEA har et par svagheder. Mest bemærkelsesværdigt lider den af ​​ækvivalente nøgler - hver nøgle svarer til tre andre, hvilket betyder, at den effektive nøglestørrelse kun er 126 bit . Som et resultat er TEA især dårlig som en kryptografisk hash-funktion . Denne svaghed har ført til en metode til hacking Microsoft 's Xbox spillekonsol , hvor cipher blev brugt som en hash-funktion. TEA er også modtagelig for et angreb med relateret nøgle, som kræver 2 23 valgte almindelige tekster under et beslægtet nøglepar med 2 32 tidskompleksitet. På grund af disse svagheder blev XTEA- chiffer designet.

Versioner

Den første offentliggjorte version af TEA blev suppleret med en anden version, der indeholdt udvidelser for at gøre det mere sikkert. Blok TEA (som blev specificeret sammen med XTEA ) fungerer på blokke med vilkårlig størrelse i stedet for originalens 64-bit blokke.

En tredje version ( XXTEA ), der blev offentliggjort i 1998, beskrev yderligere forbedringer til forbedring af sikkerheden ved Block TEA-algoritmen.

Referencekode

Følgende er en tilpasning af referencekrypterings- og dekrypteringsrutiner i C , frigivet til det offentlige domæne af David Wheeler og Roger Needham:

#include <stdint.h>

void encrypt (uint32_t v[2], const uint32_t k[4]) {
    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[2], const uint32_t k[4]) {
    uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i;  /* set up; sum is (delta << 5) & 0xFFFFFFFF */
    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;
}

Bemærk, at referenceimplementeringen virker på numeriske værdier for flere byte. Det originale papir specificerer ikke, hvordan man kan udlede numrene, det handler på, fra binært eller andet indhold.

Se også

  • RC4 - En streamcipher, der ligesom TEA er designet til at være meget enkel at implementere.
  • XTEA - Første version af Block TEAs efterfølger.
  • XXTEA - Korrigeret Block TEAs efterfølger.
  • Treyfer - En enkel og kompakt krypteringsalgoritme med 64-bit nøglestørrelse og blokstørrelse.

Bemærkninger

  1. ^ Matthew D. Russell (27. februar 2004). "Tyndhed: En oversigt over TEA og relaterede cifre" . Arkiveret fra originalen den 12. august 2007.
  2. ^ a b Kelsey, John; Schneier, Bruce; Wagner, David (1997). Relateret nøgle-kryptanalyse af 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 og TEA . Forelæsningsnotater i datalogi . 1334 . s. 233-246. CiteSeerX  10.1.1.35.8112 . doi : 10.1007 / BFb0028479 . ISBN 978-3-540-63696-0.
  3. ^ Bogdanov, Andrey; Wang, Meiqin (2012). Nul-korrelation lineær kryptanalyse med reduceret datakompleksitet (PDF) . Forelæsningsnotater i datalogi . 7549 . Hurtig softwarekryptering 2012. s. 29–48. doi : 10.1007 / 978-3-642-34047-5_3 . ISBN 978-3-642-34046-8.
  4. ^ a b c Wheeler, David J .; Needham, Roger M. (1994-12-16). TEA, en lille krypteringsalgoritme . Forelæsningsnotater i datalogi . 1008 . Leuven, Belgien: Hurtig softwarekryptering: Andet internationalt værksted. s. 363–366. doi : 10.1007 / 3-540-60590-8_29 . ISBN 978-3-540-60590-4.
  5. ^ Kelsey, John; Schneier, Bruce; Wagner, David (1996). Nøgleplan kryptanalyse af IDEA, G-DES, GOST, SAFER og Triple-DES (PDF) . Forelæsningsnotater i datalogi . 1109 . s. 237-251. doi : 10.1007 / 3-540-68697-5_19 . ISBN 978-3-540-61512-5.
  6. ^ Michael Steil. "17 Fejl, Microsoft har lavet i Xbox-sikkerhedssystemet" . Arkiveret fra originalen den 16. april 2009.

Referencer

eksterne links