Grain Chiffre

Herkunft / Verwendung: Grain ist eine 2004 von Martin Hell, Thomas Johansson und Willi Meier entwickelte Stromchiffre mit einer Schlüssellänge von 80 bit (Version 1, entsprechend 10 Zeichen) bzw. 128 bit (Grain-128, entsprechend 16 Zeichen).

Grain war Kandidat beim eStream Projekt des ECRYPT-Netzwerkes, einem Kryptowettbewerb, der von 2004 bis 2008 lief und das Ziel verfolgte, Vorschläge für neue Stromchiffren entgegenzunehmen, kryptologisch zu untersuchen und zu bewerten und so empfehlenswerte Verfahren zu finden. Das eStream Projekt lief über drei Phasen: Phase 1, die bis März 2006 lief, war eine allgemeine Beurteilung und Analyse der eingereichten 34 Kandidaten. Hier wurden offensichtliche Schwächen erkannt. Phase 2, im August 2006 gestartet, untersuchte die Kandidaten, die weitergekommen waren insbesondere auch auf Design und Performance und beinhaltete weitere Kryptoanalysen. Phase 3 schließlich, im April 2007 gestartet und im April 2008 beendet, verglich die übrigen 14 Kandidaten miteinander und kürte die besten als empfehlenswert: vier in der Kategorie Software-Implementierung und drei in der Kategorie Hardware-Implementierung.

Grain V1 mit 80 bit Schlüssellänge schaffte es bis in Phase 3 des Wettbewerbs und wurde auch als einer der sieben empfehlenswerten Algorithmen eingestuft. Grain ist für die Implementierung in Hardware optimiert. Grain ist für den kommerziellen und nicht-kommerziellen Gebrauch freigegeben.

Es sind einige Schwäche in Grain Version 1 und Grain-128 bekannt geworden, die 2011 zur Entwicklung von Grain-128a geführt haben, die gegen die erkannten Schwächen gehärtet wurde. Gegen Grain-128a ist wiederum ein Attackszenario bekannt geworden.

Beschreibung des Algorithmus

Der Algorithmus funktioniert mit einer Schlüssellänge von 80 bit und einer Initialisierungsvektorlänge von 64 bit in der Version 1 (Grain v1) bzw. mit einer Schlüssellänge von 128 bit und einer Initialisierungsvektorlänge von 96 bit in der Version Grain-128.

Grain benutzt ein lineares Feedback Shift Register (LFSR) mit 80 bit Länge und ein nichtlineares Feedback Shift Register (NLFSR), auch mit 80 bit Länge, die den 160 bit breiter interner Status darstellen. Das NLFSR wird mit einer nichtlinearen 5-zu-1 Funktion mit binären Operationen aktualisiert. In die Funktion fließt ein bit von LFSR und 5 bit vom NLFSR ein. Das LFSR wird mit einer 6-zu-1 Funktion aktualisiert, die sich linear verhält. Zu Erzeugung des Schlüsselstroms, mit dem der Klartext XOR-verknüpft wird (darum auch die Umkehrbarkeit des Verfahrens, da XOR reziprok ist) werden beide Register herangezogen.

Beispiel

Klartext:BeispielklartextBeispielklartext (32 Bytes)
Schlüssel:Schokolade (10 Bytes, 80 bit)
IV:00000000 00000000 (hex 8 Bytes, 64 bit)
Chiffrat (Grain v1):7DFEF42E F6A4461C FE413532 878F19A1 EF80A219 2269F4C5 C493994F 896AA286 (hex)

Klartext:BeispielklartextBeispielklartext (32 Bytes)
Schlüssel:Schokoladentorte (16 Bytes, 128 bit)
IV:00000000 00000000 00000000 (hex 12 Bytes, 96 bit)
Chiffrat (Grain-128):D0C36211 AA64DCC2 D7293781 F193390E E95F9B62 E169FBC6 BA5DAF8E AF99765D (hex)

Code / Chiffre online dekodieren / entschlüsseln bzw. kodieren / verschlüsseln (DeCoder / Encoder / Solver-Tool)

Wenn Sie Texte eingeben, die nicht als Hex-Sequenz (ohne Leerzeichen) interpretiert werden können, erfolgt eine automatische Umsetzung in eine Hex-Sequenz. Ist das Ergebnis umsetzbar in druckbare ASCII-Zeichen, erfolgt eine automatische Umsetzung von Hex.

Einen eventuell zu berücksichtigen Initialisierungsvektor (IV) können Sie, durch Komma getrennt, nach dem Schlüssel angeben.



Quellen, Literaturverweise und weiterführende Links

Schmeh, Klaus: Kryptografie: Verfahren - Protokolle - Infrastrukturen, dpunkt Verlag, 5. Auflage 2013, iX-Edition, S. 309
Homepage des eSTREAM Projekts
Özgül Kücük: Slide Resynchronization Attack on the Initialization of Grain 1.0
Côme Berbain, Henri Gilbert, Alexander Maximov: Cryptanalysis of Grain
Banik, Maitra, Sarkar, Turan: A Chosen IV Related Key Attack on Grain-128a