Winziger Verschlüsselungsalgorithmus - Tiny Encryption Algorithm

TEE
TEA InfoBox Diagram.png
Zwei Feistel-Runden (ein Zyklus) TEA
Allgemeines
Designer Roger Needham , David Wheeler
Erstmals veröffentlicht 1994
Nachfolger XTEA
Verschlüsselungsdetail
Schlüsselgrößen 128 Bit
Blockgrößen 64 Bit
Struktur Feistel-Netzwerk
Runden Variable; empfohlen 64 Feistel-Runden (32 Zyklen)
Beste öffentliche Kryptoanalyse
TEA leidet unter äquivalenten Schlüsseln (siehe Text; Kelsey et al., 1996) und kann mit einem Related-Key-Angriff gebrochen werden , der 2 23 ausgewählte Klartexte und eine Zeitkomplexität von 2 32 erfordert . Die beste strukturelle Kryptoanalyse von TEA in der Standardeinstellung für einen einzelnen geheimen Schlüssel ist die Nullkorrelations-Kryptanalyse, die 21 Runden in 2 121,5 Mal mit weniger als dem vollständigen Codebuch durchbricht

In der Kryptographie ist der Tiny Encryption Algorithm ( TEA ) eine Blockverschlüsselung, die sich durch ihre einfache Beschreibung und Implementierung auszeichnet, typischerweise einige Codezeilen. Es wurde von David Wheeler und Roger Needham vom Cambridge Computer Laboratory entworfen ; Es wurde erstmals 1994 auf dem Fast Software Encryption Workshop in Leuven vorgestellt und erstmals im Rahmen dieses Workshops veröffentlicht.

Die Chiffre unterliegt keinen Patenten .

Eigenschaften

TEA arbeitet mit zwei 32-Bit-Ganzzahlen ohne Vorzeichen (könnte von einem 64-Bit- Datenblock abgeleitet werden ) und verwendet einen 128-Bit- Schlüssel . Es hat eine Feistel-Struktur mit vorgeschlagenen 64 Runden, die typischerweise in Paaren implementiert werden, die als Zyklen bezeichnet werden . Es hat einen extrem einfachen Schlüsselplan , der das gesamte Schlüsselmaterial für jeden Zyklus genau gleich mischt. Verschiedene Vielfache einer magischen Konstante werden verwendet, um einfache Angriffe aufgrund der Symmetrie der Runden zu verhindern. Die magische Konstante 2654435769 oder 0x9E3779B9 wird als ⌊2 32 / ϕ ⌋ gewählt, wobei ϕ der Goldene Schnitt ist (als Nichts-auf-meine-Hülse-Zahl ).

TEA hat ein paar Schwächen. Vor allem leidet es unter gleichwertigen Schlüsseln – jeder Schlüssel entspricht drei anderen, was bedeutet, dass die effektive Schlüsselgröße nur 126 Bit beträgt . Dadurch ist TEA als kryptografische Hash-Funktion besonders schlecht . Diese Schwäche führte zu einer Methode zum Hacken der Xbox -Spielekonsole von Microsoft , bei der die Chiffre als Hash-Funktion verwendet wurde. TEA ist auch anfällig für einen Related-Key-Angriff, der 2 23 ausgewählte Klartexte unter einem Related-Key-Paar mit 2 32 Zeitkomplexität erfordert . Aufgrund dieser Schwächen wurde die XTEA- Chiffre entwickelt.

Versionen

Die erste veröffentlichte Version von TEA wurde durch eine zweite Version ergänzt, die Erweiterungen enthielt, um sie sicherer zu machen. Block TEA (der zusammen mit XTEA spezifiziert wurde ) arbeitet mit Blöcken beliebiger Größe anstelle der 64-Bit-Blöcke des Originals.

Eine dritte Version ( XXTEA ), die 1998 veröffentlicht wurde, beschrieb weitere Verbesserungen zur Erhöhung der Sicherheit des Block-TEA-Algorithmus.

Referenzcode

Es folgt eine Anpassung der Referenzverschlüsselungs- und -entschlüsselungsroutinen in C , die von David Wheeler und Roger Needham öffentlich zugänglich gemacht wurden:

#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;
}

Beachten Sie, dass die Referenzimplementierung auf numerische Mehrbytewerte wirkt. Das Originalpapier gibt nicht an, wie die Zahlen, auf die es reagiert, aus binären oder anderen Inhalten abzuleiten sind.

Siehe auch

  • RC4 – Eine Stromchiffre , die wie TEA sehr einfach zu implementieren ist.
  • XTEA – Erste Version des Nachfolgers von Block TEA.
  • XXTEA – Der Nachfolger von Block TEA wurde korrigiert.
  • Treyfer - Ein einfacher und kompakter Verschlüsselungsalgorithmus mit 64-Bit-Schlüsselgröße und Blockgröße.

Anmerkungen

  1. ^ Matthew D. Russell (27. Februar 2004). „Kleinheit: Ein Überblick über TEA und verwandte Chiffren“ . Archiviert vom Original am 12. August 2007.
  2. ^ a b Kelsey, John; Schneier, Bruce; Wagner, David (1997). Related-Key-Kryptanalyse von 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 und TEA . Skript zur Vorlesung Informatik . 1334 . S. 233–246. CiteSeerX  10.1.1.35.8112 . doi : 10.1007/BFb0028479 . ISBN 978-3-540-63696-0.
  3. ^ Bogdanow, Andrej; Wang, Meiqin (2012). Null-Korrelation Lineare Kryptoanalyse mit reduzierter Datenkomplexität (PDF) . Skript zur Vorlesung Informatik . 7549 . Fast Software Encryption 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, ein winziger Verschlüsselungsalgorithmus . Skript zur Vorlesung Informatik . 1008 . Leuven, Belgien: Schnelle Softwareverschlüsselung: Zweiter internationaler Workshop. 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). Schlüsselschema-Kryptanalyse von IDEA, G-DES, GOST, SAFER und Triple-DES (PDF) . Skript zur Vorlesung Informatik . 1109 . S. 237–251. doi : 10.1007/3-540-68697-5_19 . ISBN 978-3-540-61512-5.
  6. ^ Michael Steil. „17 Fehler, die Microsoft im Xbox-Sicherheitssystem gemacht hat“ . Archiviert vom Original am 16. April 2009.

Verweise

Externe Links