RTEA

RTEA
Skaber Marcos el Ruptor (Sean O'Neil)
Oprettet 2007 _
offentliggjort 2007 _
Nøglestørrelse 128 (256) bit
Blokstørrelse 64 bit
Antal runder 48 (64)
Type Feistel netværk


RTEA (fra Ruptors TEA eller Repaired TEA ) er en symmetrisk blokkrypteringsalgoritme af typen " Feistel Network " inden for kryptografi , udviklet af Marcos el Ruptor, en udvidelse af TEA -krypteringsalgoritmen . Rettede nogle sårbarheder i algoritmen. Ligesom andre versioner af TEA-algoritmen er operationerne baseret på at arbejde med 32-bit tal. Algoritmen er meget enklere og mere effektiv end XTEA , mens den ifølge forfatterne og ifølge de statistiske test udført af udviklerne er mere modstandsdygtig over for kryptoanalyse [1]. For at modstå alle adaptive og ikke-adaptive angreb har algoritmen brug for et antal runder svarende til 32+w*4, hvor w er antallet af 32-bit heltal i nøglen, dvs. 4 for en 128-bit nøgle og 8 for en 256-bit nøgle. For en nøgle med en størrelse på 128 bit udføres 48 runder, for en nøgle med en størrelse på 256 bit, 64 runder af algoritmen. [2]

Fordi dette er en blokchifferalgoritme, hvor bloklængden er 64-bit, og datalængden måske ikke er et multiplum af 64-bit, er værdien af ​​alle bytes, der komplementerer blokken til et multiplum af 64-bit, sat til 0x01.

Implementering

Algoritmen behandler to 32-bit usignerede tal (ufortegn lange) a og b, det vil sige en 64-bit blok. Nøglenængden i 32-bit tal er kw, r er den runde.

Deklarationen af ​​variabler kunne således være som følger:

u32 a , b , c , kw ; u32key [ kw ] ; lang r ;

Universal kode

// kryptering for ( r = 0 ; r < kw * 4 + 32 ; r ++ ) c = b , b += a + (( b << 6 ) ^ ( b >> 8 )) + tast [ r % kw ] + r , a = c ; // dekryptering for ( r = kw * 4 + 31 ; r != -1 ; r -- ) c = a , a = b -= a + (( a << 6 ) ^ ( a >> 8 )) + tast [ r % kw ] + r , b = c ;


Som ligner den anden stavemåde:


// kryptering for ( r = 0 ; r < kw * 4 + 32 ; r ++ ) a += b + (( b << 6 ) ^ ( b >> 8 )) + tast [ r % kw ] + r , r + + , b += a + (( a << 6 ) ^ ( a >> 8 )) + tast [ r % kw ] + r ; // dekryptering for ( r = kw * 4 + 31 ; r != -1 ; r -- ) b -= a + (( a << 6 ) ^ ( a >> 8 )) + tast [ r % kw ] + r , r -- , a -= b + (( b << 6 ) ^ ( b >> 8 )) + tast [ r % kw ] + r ;

Kode til 256-bit nøgle

Brugen af ​​algoritmen er meget enkel og bekvem. Så for en nøgle svarende til 256 bit (kw = 8), vil koden være som følger:


// kryptering for ( r = 0 ; r < 64 ; r ++ ) { b += a + (( a << 6 ) ^ ( a >> 8 )) + ( tast [ r % 8 ] + r ); r ++ ; a += b + (( b << 6 ) ^ ( b >> 8 )) + ( tast [ r % 8 ] + r ); } // dekryptering for ( r = 63 ; r >= 0 ; r - ) { a -= b + (( b << 6 ) ^ ( b >> 8 )) + ( tast [ r % 8 ] + r ); r -- ; b -= a + (( a << 6 ) ^ ( a >> 8 )) + ( tast [ r % 8 ] + r ); }

For at sikre entydigheden af ​​hver af de krypterede blokke med identiteten af ​​den originale klartekst, kan en af ​​DES-tilstandene anvendes (for eksempel CBC, CFB, CTS, CTR)

Sikkerhed

I øjeblikket er der kun et angreb baseret på relaterede nøgler ( engelsk  relateret nøgleangreb ) [3] på denne chiffer.

Se også

TE

XTEA

XXTEA

Raiden  er en algoritme, ligesom RTEA, baseret på ideerne fra TEA -blokchifferet.

Noter

  1. Sammenlignende resultater af stabilitet af symmetriske kryptoalgoritmer Arkiveret den 25. juli 2008.  (Engelsk)
  2. TEA, XTEA, XXTEA og RTEA Arkiveret 19. juli 2008.
  3. Et relateret nøgleangreb for RTEA.  (utilgængeligt link)

Links

  1. RTEA algoritme kildekode på Open Watcom C og Delphi Arkiveret 23. april 2018 på Wayback Machine
  2. FAQ baseret på materialerne fra fido7.ru.crypt-konferencen. (utilgængeligt link) . Hentet 22. april 2010. Arkiveret fra originalen 22. august 2011.   Følgende forhåndsadvarsel gælder direkte for RTEA: "At finde på en algoritme er 5% af arbejdet. De resterende 95% sørger for (og overbeviser andre), at ingen kan bryde den."