# Schlüsselstromgenerator

Ein Schlüsselstromgenerator ist der Kernbestandteil einer Stromverschlüsselung. Er erzeugt aus dem Schlüssel den Schlüsselstrom, der auf die Nachricht addiert wird, um sie zu verschlüsseln. Die gängigsten Konstruktionen basieren auf linear rückgekoppelten Schieberegistern (Linear Feedback Shift Register, LFSR) oder auf Blockchiffren.

## Generatoren auf LFSR-Basis

Für Generatoren auf der Grundlage von linearen Schieberegistern mit Rückkopplung nimmt man eine oder mehrere LFSR, die meist unterschiedlich lang sind und unterschiedliche Rückkopplungspolynome haben. Damit kombiniert man LFSRs zu nichtlinearen Generatoren. Diese generieren einen Schlüsselstrom.
Kombinationsgeneratoren verwenden mehrere LFSR, deren Ausgabebits über eine nichtlineare Funktion verknüpft werden. Filtergeneratoren bestehen aus einem einzigen LFSR, die Bits aus verschiedenen Stufen des internen Zustands über eine nichtlineare Funktion verknüpfen. Sowohl Kombinationsgeneratoren als auch Filtergeneratoren erwiesen sich als unsicher. Neuere Generatoren sind sogenannte taktgesteuerte Generatoren. Hierbei kontrolliert ein internes Ausgabebit das Verhalten des Generators.

### Stop-and-Go-Generator

Ein Stop-and-Go-Generator besteht aus zwei LFSRs (Register R1 und R2), wobei die Ausgabe des ersten Registers (R1) den Takt des zweiten Registers (R2) steuert. Liefert das Register R1 den Ausgabewert „1“, so liefert der Generator den Ausgabewert vom Register R2. Liefert das Register R1 den Wert „0“, so wird der Wert des zweiten Registers R2 verworfen. Danach erzeugen beide Register (R1 und R2) je ein neues Bit.

### Alternierender Stop-and-Go-Generator

Ein alternierender Stop-and-Go-Generator arbeitet mit insgesamt drei Register (R1, R2 und R3). Wenn das Register R1 den Ausgabewert „1“ liefert, wird das Register R2 getaktet, das Register R3 wiederholt den vorhergehenden Wert. Wenn das Register R1 den Ausgabewert „0“ liefert wird das Register R3 getaktet und das Register R2 wiederholt den vorhergehenden Wert. Der Generator liefert als Ausgabe die bitweise XOR-Verknüpfung der beiden Register R2 und R3.

### Selbststeuernder Generator

Der selbststeuernde Generator steuert seinen eigenen Takt. Wenn das Register die Ausgabe „0“ liefert, wird es d-mal getaktet. Wenn das Register die die Ausgabe „1“ liefert, wird es k-mal getaktet.

### Shrinking Generator

Der Shrinking Generator besteht aus zwei Registern R1 und R2. Liefert das Register R1 den Wert „1“, so gilt die Ausgabe des Registers R2 als die Ausgabe des Generators. Liefert das Register R1 den Wert „0“, so wird in diesem Takt das Ausgabebit des Registers R2 verworfen.

### Self-Shrinking Generator

Der Self-Shrinking Generator besteht aus einem LFSR (Register). Dieses Register wird zweimal getaktet und das erzeugte Bitpaar legt die Ausgabe fest. Ist das erste Bit des Paares eine „1“, so gibt der Generator den Wert des zweiten Bits aus. Ist das erste Bit eine „0“, so wird das zweite Bit verworfen. Danach wird durch das Register ein neues Bitpaar erzeugt.

## Generatoren auf Basis von Blockchiffren

Eine Blockchiffre kann im Counter Mode oder im Output Feedback Mode betrieben werden um als Schlüsselstromgenerator zu dienen.

## Beweisbar sichere Generatoren

Parallel zur Einführung der beweisbaren Sicherheit in anderen Bereichen der Kryptographie gab es auch Anstrengungen, Schlüsselstromgeneratoren zu konstruieren, deren Sicherheit direkt auf die Schwere eines zahlentheoretischen Problems zurückgeführt werden kann. Beispiele für solche Generatoren sind der Blum-Blum-Shub-Generator und der Blum-Micali-Generator. In der Praxis werden diese Konstruktionen jedoch fast nie verwendet, da sie um Größenordnungen langsamer sind als die obigen.