Thema: Lineare Feedback-Shift-Register (LFSR)

Stromchiffren

  • Unterscheidung der Chiffren in zwei große Klassen: Strom- und Blockchiffren
    • Bei Stromchiffre ändert sich Verschlüsselungsfkt. kontextabhängig
    • Stromchiffren haben daher einen Zustand, für den sie Speicher benötigen, Blockchiffren sind zustandslos und daher i. A. speicherlos
      • Blockchiffren können Zustand und Speicher haben, z. B. wenn im CBC, CFB oder OFB-Modus betrieben; entspricht Stromchiffre mit großer Blockgröße
    • "Blockgröße" einer Stromchiffre beträgt in der Regel ein Bit
      • Benötigen zur Laufzeit weniger Speicher als Blockchiffren, die auf großen Blöcken arbeiten: gut für Hardware-Implementierung
      • Geringere Latenzzeit bei Übertragungen, da jedes Bit sofort ver-/entschlüsselt werden kann
      • Geringe oder keine Fehler-Propagierung (Bitfehler im Chiffretext bleiben z. T. auf ein Bit im Klartext beschränkt)
        • Vorteil, falls mit Übertragungsfehlern gerechnet wird
        • Nachteil, da evtl. aktive Angriffe nicht erkannt werden, falls keine weiteren Maßnahmen ergriffen werden
  • Definition Stromchiffre
    • Schlüsselraum: K (meistens K = {0, 1}*)
    • Schlüsselstrom: e1e2e3... ∈ K
    • Klartext: m1m2m3... ∈ K
    • Verschlüsselung: ci = E(ei, mi)
    • Entschlüsselung: mi = D(di, ci), wobei di = ei-1
  • Anmerkungen
    • Meistens ist der Schlüsselstrom symmetrisch, also di = ei für alle i
  • Weitere Klassifizierung von Stromchiffren:
    • Synchron
      • Schlüsselstrom basiert nur auf Initialisierung (i. d. R. durch den Schlüssel) und dem daraus resultierenden Zustand
      • Kann zeitgleich für Ver-/Entschlüsselung ohne Kenntnis des Klar-/Chiffretexts berechnet werden
      • Bitfehler wirken sich nicht auf weitere Bits aus
      • Einfügen/Löschen von Bits desynchronisiert Ver-/Entschlüsselung komplett
    • Selbst-synchronisierend
      • Schlüsselstrom basiert auf Initialisierung und einer begrenzten Anzahl der letzten Chiffre-Bits
      • Kann erst nach Erhalt der Chiffre-Bits berechnet werden
      • Bitfehler wirken sich auf höchstens so viele Bits aus, wie Chiffre-Bits verwendet werden
      • Einfügen/Löschen von Bits beeinflusst nicht mehr Bits als bei einem Bitfehler
      • Bessere statistische Eigenschaften (Diffusion)

Vernam-Chiffre

  • Als Vernam-Chiffre wird eine Klasse von Stromchiffren über dem Alphabet A = {0, 1} bezeichnet
  • Nachricht und Schlüsselstrom sind gleich lang: m = m1m2...mt, k = k1k2...kt
  • Ver- und Entschlüsselung wird durch XOR mit dem Schlüsselstrom realisiert:
    • ci = ki ⊕ mi, mit 1 ≤ i ≤ t
    • mi = ki ⊕ ci, mit 1 ≤ i ≤ t
  • Wenn der Schlüsselstrom absolut zufällig und gleichverteilt gewählt wurde und der Schlüssel nur einmal verwendet wird, spricht man vom Vernam One-Time-Pad.
    • Bietet perfekte Sicherheit
    • Problem der Schlüsselverteilung, da sehr große Schlüssel nötig
    • Angreifbar, falls ein Schlüssel doppelt verwendet wird:
      • c ⊕ c' = (m ⊕ k) ⊕ (m' ⊕ k) = m ⊕ m'
      • Mit m ⊕ m' kann dann weitere Kryptoanalyse betrieben werden.

Lineare Feedback-Shift-Register (LFSR)

  • Praktische Fragestellungen:
    1. Muss der Schlüssel wirklich so lang sein, wie die Nachricht?
      • Wie lang muss der Schlüssel im Vergleich zur Nachricht sein, damit die Nachricht sicher ist?
    2. Kann statt einem echt zufälligen Schlüssel auch ein pseudozufälliger Schlüssel verwendet werden?
      • Wie kann aus einem kurzen Schlüssel ein langer erzeugt werden, der trotzdem "zufällig" aussieht?
  • Definition binäre additive Stromchiffre (synchrone Stromchiffre)
    • Verallgemeinerung der Vernam-Chiffre
    • Klartext: m1m2m3... ∈ {0, 1}*
    • Chiffretext: c1c2c3... ∈ {0, 1}*
    • Schlüsselstrom: z1z2z3... ∈ {0, 1}*
      • wird erzeugt von einem Schlüsselstromgenerator, welcher mit einem Schlüssel k initialisiert wird
    • Verschlüsselung: ci = zi ⊕ mi
    • Entschlüsselung: mi = zi ⊕ ci
  • Definition LFSR
    • Ein LFSR der Länge L hat L Bit-Register sL-1sL-2...s0, welches den aktuellen Zustand speichert. Die initialie Belegung der Register ist der initiale Zustand.
    • Es ist getaktet, und mit jedem Takt werden die Register-Inhalte eine Stelle nach rechts verschoben: si-1←si für 0 < i ≤ L-1
    • Das linkeste Register-Bit (Feedback-Bit) ergibt sich aus der XOR-Summe der vorherigen Bitwerte bestimmter Register
  • Eigenschaften von LFSR
    • Die Wahl der rückgekoppelten Registerwerte kann als Polynom im Restklassenring (Z/2Z) aufgefasst werden:
      C(D) = 1 + c1D + c2D2 + ... + cLDL ∈ (Z/2Z)[D] ist das Rückkopplungspolynom (connection polynomial)
    • Grad des Polynoms ist gleich L <=> cL = 1 <=> LFSR ist nicht-singulär
    • Die Ausgabe des LFSRs kann als Rekursion aufgefasst werden:
      sj = (c1sj-1 + c2sj-2 + ... + cLsj-L) mod 2 für j ≥ L
    • Der Ausgabestrom eines LFSRs ist periodisch.
    • Durch den initialen Zustand der Register ist die Ausgabefolge eindeutig festgelegt.
    • Der initiale Null-Zustand erzeugt nur Nullen im Ausgabestrom.

Periodenlänge

  • Einschub: Polynome über endlichen Körpern
    • Ein Polynom f in einer Variable x über einem Körper K ist ein Term der Form:
      f(x) = anxn + an-1xn-1 + ... + a1x + a0
    • f hat Grad n, falls an ≠ 0.
    • Polynome über Körpern können addiert, subrahiert, multipliziert und dividiert werden.
    • K[x] bezeichnet alle Polynome über dem Körper K in der Variablen x.
    • Ist p eine Primzahl (z. B. 2) und f ein Polynom über (Z/pZ)[x], dann heisst f irreduzibel über (Z/pZ), wenn f nicht als Produkt zweier anderer Polynome g, h ∈ (Z/pZ)[x] geschrieben werden kann.
      • Irreduzibilität vergleichbar der Definition von Primzahlen über Z
    • Sei f ein irreduzibles Polynom von Grad n in (Z/pZ)[x]. Wenn das Gruppenelement x ein Erzeuger der multiplikativen Gruppe (Z/f(x)Z)*, dann wird f als primitives Polynom bezeichnet.
      • Potenzierung von x mod (Z/f(x)Z) liefert alle pn-1 von null verschiedenen Restklassen
  • Periodizität des Ausgabestroms
    • Wenn das LFSR nicht-singulär ist (Grad des Polynoms ist L), dann beginnt die Periode immer mit dem ersten Bit, andernfalls kann der Periode eine feste Anzahl nicht-periodischer Bits vorausgehen.
    • Gegeben ein LFSR der Länge L. Sei das Rückkopplungspolynom C(D) vom Grad L eine primitives Polynom in (Z/2Z)[D]. Dann erzeugen alle 2L-1 von null verschiedenen Initialisierungen der Register des LFSRs einen Ausgabestrom mit der maximal möglichen Periode von 2L-1. Ein solches LFSR wird LFSR maximaler Länge genannt.
    • Bsp.: LFSR maximaler Länge mit L = 32
      • Bistrom hat Periodenlänge 232-1 = 4.294.967.295 Bit
      • Entspricht 512 MB nicht-periodische Bitfolge
  • Zusammenfassung: Für ein gutes Rückkopplungspolynom f(x) muss gelten:
    • Grad f = L
    • f(x) ist irreduzibel in (Z/2Z)
    • x ist ein Erzeuger der multiplikativen Gruppe (Z/f(x)Z)*

Lineare Komplexität

  • Begrifflichkeiten
    • Betrachtung von binären Sequenzen
      • s = s0s1s2... ist ein unendlicher Bitstrom
      • sn = s0s1...sn-1 ist ein endlicher Bitstrom der Länge n
  • Lineare Komplexität L(s) einer Sequenz s
    • L(s) ist die Länge des kürzesten LFSRs, welches die Sequenz unendliche s durch irgend einen initialen Zustand erzeugt.
    • Gibt es kein solches LFSR, dann ist L(s) = ∞
    • Per Definition ist L(000...0) = 0.
    • Analog ist L(sn) die Länge des kürzesten LFSRs, welches die endliche Sequenz sn bei irgend einen initialen Zustand als erste n Bits erzeugt.
  • Eigenschaften der linearen Komplexität
    • Wenn s periodisch ist mit Periodenlänge N, dann gilt L(s) ≤ N.
    • Für alle n ≥ 1 gilt 0 ≤ L(sn) ≤ n
    • Wenn das Rückkopplungspolynom C(D) eines LFSRs irreduzibel ist in (Z/2Z) und Grad L hat, dann erzeugen alle von null verschiedenen initialen Zustände einen Ausgabestrom, welcher die lineare Komplexität L besitzt.
  • Lineares Komplexitätsprofil
    • Betrachte, wie sich die lineare Komplexität einer unendlichen Sequenz s entwickelt, wenn nur die vordersten i Bits von s betrachtet werden, wobei i schrittweise erhöht wird.
    • Sei si die Sequenz der ersten i Bits von s, also si = s0s1...si-1. Die Folge L(s0)L(s1)L(s2)... der linearen Komplexitäten der Sequenzen si für i ≥ 0 bilden das lineare Komplexitätsprofil.
    • Zur Vereinfachung verwenden wir ab sofort die Schreibweise Li := L(si)
  • Eigenschaften des lineares Komplexitätsprofils
    • Wenn i > j, dann gilt Li ≥ Lj.
      • Lineare Komplexität ist monoton steigend.
    • Li+1 > Li ist nur genau dann möglich, wenn Li ≤ i/2.
      • Im Graphen ist zu sehen, dass die lineare Komplexität nur zunimmt, wenn sie zuvor unterhalb der Geraden x/2 gewesen ist.
    • Wenn Li+1 > Li, dann gilt Li+1 + Li = i + 1.
      • Wenn die lineare Komplexität ansteigt, dann "springt" sie symmetrisch über die Gerade x/2.
  • Bedeutung der linearen Komplexität
    • Eine folge hat eine "gute" lineare Komplexität (im Sinne der Pseudozufälligkeit), wenn die sie der Gerade x/2 einigermaßen gut folgt.
    • Mögliche verbale Beschreibung: Die Bitfolge ist so "zufällig" aufgebaut, dass man sie durch ein LFSR nicht einfacher beschreiben kann, als dem Zustandsspeicher weitere Bits hinzuzufügen und so den Zustandsraum zu vergrößern.
  • Konstruktion eines LFSRs
    • Gegeben sei eine binäre Sequenz sn = s0s1...sn-1 der Länge n. Gesucht ist ein LFSR der minimalen Länge L = L(sn), welches sn erzeugt.
    • Idee: Konstruiere das LFSR iterativ, indem nach und nach LFSRs gesucht werden, welche die ersten 1, 2, 3, ..., n Bits von sn erzeugen. Dabei bezeichne Li und Ci(D) die Länge bzw. das Polynom des LFSRs der i-ten Iteration.
      • Beginne mit L0 = 0, C0(D) = 1
      • Wenn das aktuelle LFSR, welches si erzeugt hat, auch si+1 erzeugt, dann gilt L(si) = L(si+1)
      • Andernfalls muss die Länge Li+1 evtl. erhöht werden, auf alle Fälle muss das Polynom Ci+1(D) angepasst werden:
        Ci+1(D) = Ci(D) + Cj(D)·Di-j, wobei j die Iteration ist, bei der die Komplexität das letzte mal gestiegen war.
  • Berlekamp-Massey-Algorithmus
    • Eingabe: binäre Sequenz sn = s0s1...sn-1 der Länge n
    • Ausgabe: Ein LFSR der minimalen Länge L = L(sn), welches sn erzeugt
    1. L := 0 // Aktuelle Länge des LFSRs
    2. C(D) := 1 // Akutelles Polynom
    3. i := 0 // Akutelle Iteration
    4. j := -1 // Iteration, bei zuletzt L(j-1) < L(j) war
    5. C'(D) := 1 // Polynom der Iteration j
    6. for i := 0 to n - 1 do
      1. delta := si + Σk=1L cksi-k mod 2
      2. if (delta = 1) then
        1. T(D) := C(D)
        2. C(D) := C(D) + C'(D)·Di-j
        3. if (L ≤ i/2) then // entspricht: (L < i + 1 - L)
          1. L := i + 1 - L
          2. j := i
          3. C'(D) := T(D)
    7. return (L, C(D))
    • Algorithmus hat Laufzeit O(n2)
  • Erkenntnisse aus dem Berlekamp-Massey-Algorithmus
    • Wenn eine (unendliche) Bitsequenz die lineare Komplexität L hat, dann ein erzeugendes LFSR dafür gefunden werden, wenn 2L Bits der Folge beobachtet wurden.
    • Intuition dahinter:
      • Wenn L Bits der Folge beobachtet wurden, so erhält man den Zustand, in den sich das LFSR zuvor befunden hatte
      • Die nächsten L + 1 bis 2L Bits entstehen durch eine rekursive Funktion aus den vorangegangenen L Bits im Schieberegister.
      • Somit kann ein LGS aufgestellt werden, um die Koeffizienten c0, c1, ..., cL-1 des Polynoms zu bestimmen:
        Σi=0L-1 cisi - sL = 0
        Σi=0L-1 cisi+1 - sL+1 = 0
        ...
        Σi=0L-1 cisi+L-1 - s2L-1 = 0
      • Man erhält ein LGS aus L Gleichungen mit L Unbekannten, welches gelöst werden kann.
  • Weiteres mögliches Komplexitätsmaß: Turing-Kolmogorov-Chaitin-Komplexität
    • TKC-Komplexität ist die Länge des kürzesten Turing-Programms, welches eine Sequenz sn als Ausgabe produzieren kann.
    • Dieses Komplexitätsmaß soll leicht berechenbare Pseudo-Zufälligkeit aufdecken
    • Praktisch kaum verwendbar, da kein effizientes Verfahren bekannt ist, um TKC-Komplexität zu berechnen (genauer: die TKC-Komplexität ist nicht berechenbar).

Statistische Eigenschaften

  • Die lineare Komplexität alleine ist kein gutes Maß für die "Zufälligkeit" einer Sequenz.
    • Bsp.: Für sn = 000...01 ist L(sn) = n, die Folge ist aber keineswegs zufällig.
  • Deshalb Durchführen von statistischen Tests, um die Verteilung der Nullen und Einsen in der Sequenz zu überprüfen
    • Diese Tests sind nur ein Ausschlusskriterium für schlechte Sequenzen und garantieren noch keine gute Sequenz (notwendige aber nicht hinreichende Bedingungen)!
  • Es gibt viel statistische Tests für Zufallszahlenfolgen, hier werden nur die Golomb-Kriterien vorgestellt
  • Im folgenden betrachten wir periodische Sequenzen s = s0s1s2... mit Periodenlänge n.
  • Definitionen
    • Ein Run ist ein Abschnitt von Nullen oder Einsen der Sequenz, der keine Nullen bzw. Einsen mehr voran oder hinterher gehen (maximal mögliche Länge)
    • Ein Run aus Nullen wird Lücke genannt.
    • Ein Run aus Einsen wird Block genannt.
  • Korrelation
    • Untersuche den Zusammenhang zwischen der Sequenz s und der um t Bits verschobenen Sequenz s' = stst+1st+2..., 0 ≤ t < n
    • Die Anzahl der Übereinstimmungen zwischen s und s' wird mit A(t) bezeichnet:
      A(t) = Σi=0n-1 1 - (si ⊕ si+t)
    • Die Anzahl der Nicht-Übereinstimmungen zwischen s und s' wird mit D(t) bezeichnet:
      D(t) = n - A(t)
    • Die Autokorrelationsfunktion C(t) ist wie folgt definiert:
      C(t) = (A(t) - D(t)) / n
    • Wenn s eine Zufallsfolge ist, dann wird erwartet, dass die Anzahl der Übereinstimmungen und der Nicht-Übereinstimmungen nahezu gleich ist, so dass C(t) für 0 < t < n null oder zumindest sehr klein ist.
  • Golomb-Kriterien für periodische Zufallsfolgen s mit Periodenlänge n
    1. In jedem Zyklus der Folge s unterscheidet sich die Anzahl der Nullen von der Anzahl der Einsen höchstens um eins.
    2. In jedem Zyklus der Folge s haben mindestens 1/2i aller Runs die Länge i (solange es zwei oder mehr Runs dieser Länge gibt). Für jede dieser Längen i ist die Anzahl der Lücken und der Blöcke fast gleich.
    3. Die Autokorrelationsfunktion C(t) ist konstant für 1 ≤ t < n.
    • Genügt eine Sequenz den Golomb-Kriterien, so wird sie als Pseudo-Rauschen (pseudo-noise, PN) bezeichnet.
  • Statistische Eigenschaften von LFSR-erzeugten Folgen
    • Erinnerung:
      • Ein primitives Polynom ist ein irreduzibles Polynom, dessen multiplikative Gruppe vom Gruppenelement x erzeugt wird.
      • Ein LFSR maximaler Länge ist ein LFSR der Länge L, welches ein primitives Rückkopplungspolynom vom Grad L hat.
    • Der Ausgabestrom eines LFSRs maximaler Länge erfüllt die Golomb-Kriterien, ist also ein PN-Folge.
    • Die Verteilung der Bitmuster fester Länge in einem solchen Ausgabestrom ist nahezu uniform.
      • D. h. die Verteilung aller Kombinationen von einzelnen Bits, Bitpaaren, -trippel, usw. in jeder Teilfolge kommt nahezu gleich oft vor.

Komposition von Stromchiffren

  • LFSRs in Kryptosystemen
    • Vorteile:
      • Einfaches Konzept
      • leicht in Hardware zu implementieren, besonders in eingebetteten Systemen
      • Schnelle Berechnung
    • Nachteile:
      • Durch lineares Verhalten sehr einfach für Kryptoanalyse (Known-Plaintext der Länge 2L genügt)
    • Anforderungen an ein LFSR
      1. lange Periode
      2. hohe lineare Komplexität
      3. gute statistische Eigenschaften
  • Komposition von Kryptosystemen aus LFSRs
    • Es gibt mehrere Möglichkeiten, die Linearität von LFSR zu zerstören:
      1. Verknüpfung der Ausgaben mehrerer LFSR über eine nicht-linearen Funktion (nicht-lineare Kombination)
      2. Eine nicht-lineare Filterfunktion auf die Ausgabe eines LFSRs anwenden
      3. Verwende die Ausgabe eines LFSRs als Taktgeber für ein oder mehrerer andere LFSR
    • Dabei werden folgende Anforderungen an ein auf LFSR basierendes Kryptosystem gestellt:
      1. Eine möglichst lange Periode
      2. Eine möglichst hohe lineare Komplexität
      3. Gute statistische Eigenschaften
      4. Erfüllung all dieser Eigenschaften für alle möglichen geheimen Schlüssel
  • Geheimer Schlüssel und Rückkopplungspolynom
    • Das Rückkopplungspolynom eines LFSR-basierten Kryptosystems kann entweder geheim oder öffentlich sein.
      • Geheimes Polynom
        • Polynom ist Teil des geheimen Schlüssels
        • Wird i. A. zufällig und gleichverteilt aus der Menge aller primitiven Polynome mit Grad L gewählt
      • Öffentliches Polynom
        • Polynom ist im Kryptosystem festgelegt
        • Der geheime Schlüssel besteht i. d. R. aus dem initialen Zustand des/der LFSR.
        • Anfälliger gegen bestimmte statistische Analysen
        • Kryptoanalyse wird durch mögliche Vorberechnungen erleichtert

Nicht-lineare Kombinationen

  • Man verwendet mehrere LFSR parallel, deren Ausgänge über eine nicht-lineare Funktion verknüpft werden. Der Ausgang dieser Funktion bilden den Schlüsselstrom.
  • Es kann gezeigt werden:
    • Gegeben sind n LFSR maximaler Periodenlänge mit paarweise verschiedenen Längen L1, L2, ..., Ln. Ihre Ausgänge sind über eine nicht-lineare Funktion f(x1, x2, ..., xn) verknüpft. Dann beträgt die lineare Komplexität des Ausgabestroms von f genau f(L1, L2, ..., Ln) in Z (nicht in Z/2Z)
  • Beispiel: Geffe-Generator
    • f(x1, x2, x3) = x1x2 ⊕ x2x3 ⊕ x3 hat die lineare Komplexität L1L2 + L2L3 + L3
    • Ist anfällig für Korrelationsattacken, soll aber nicht weiter vertieft werden.
  • Beispiel: Summationsgenerator
    • Es werden n verschiedene LFSR verwendet, deren Längen L1, L2, ..., Ln zueinander paarweise prim sind.
    • Generator hat zusätzlich einen Speicher für einen Carry CZ.
    • Der Schlüssel besteht dann aus den n initialen Zuständen sowie der Anfangsbelegung C0 des Carrys.
    • Der Generator durchläuft immer folgenden Zyklus. zi ist das i-te Ausgabebit, Ci ist der Carry in der i-ten Iteration:
      1. Die LFSR werden einen Takt weitergeschaltet.
      2. In Iteration i werden die Ausgabebits x1, ... xn zusammen mit dem vorherigen Carry zur Summe Si in Z aufaddiert:
        Si = x1 + x2 + ... + xn + Ci-1, SiZ
      3. Es wird zi = Si mod 2 berechnet.
      4. Es wird Ci = floor(Si / 2) berechnet ("floor()" rundet auf die nächst kleinere ganze Zahl ab.
    • Die Periode des Ausgabestroms beträgt Πi=1n (2Li - 1)
    • Die lineare Komplexität ist nahezu genauso groß

Nicht-lineare Filterfunktionen

  • Hier wird ein einzelnes LFSR verwendet. Die Bits aller L Register werden in einer nicht-linearen Funktion f(x1, x2, ..., xL) kombiniert.
  • Sei m die nicht-lineare Ordnung von f. Das ist die maximale Anzahl Terme, die in f miteinander multipliziert werden.
  • Die maximale lineare Komplexität eines solchen Systems ist Lm = Σi=1m (L über i) < 2L.

Taktgesteuerte Kombinationen von LFSR

  • Idee: Ein LFSR steuert durch seine Ausgabesequenz den Takt von anderen LFSR. Damit ist der lineare Zusammenhang zwischen Zustand eines LFSRs und der Ausgabesequenz zerstört.
  • Beispiel: Alternating-Step-Generator
    • Drei LFSR R1, R2, R3 maximaler Länge, deren Längen L1, L2 und L3 paarweise teilerfremd sind.
    1. R1 wird regulär getaktet und steuert den Takt von R2 und R3:
      • Wenn das Ausgabebit von R1 null ist, dann wird R2 einmal getaktet.
      • Wenn das Ausgabebit von R1 eins ist, dann wird R3 einmal getaktet.
    2. Die Ausgaben von R2 und R3 werden mit XOR verknüpft und bildet den Schlüsselstrom.
    • Der Schlüsselstrom s des Alterning-Step-Generator hat
      • eine Periode von 2L1-1 · (2L2 - 1) · (2L2 - 1)
      • eine lineare Komplexität L(s) von (L2 + L3) · 2L1-1 < L(s) ≤ (L2 + L3) · 2L1.
      • eine fast uniforme Verteilung von Bitmustern der gleichen Länge.
  • Beispiel: Shrinking-Generator
    • Zwei LFSR R1, R2 maximaler Länge, deren Längen L1 und L2 teilerfremd sind.
    1. Beide LFSR werden gleich getaktet.
    2. Wenn das Ausgabebit von R1 eins ist, dann wird das aktuelle Ausgabebit von R2 als Zeichen für den Schlüsselstrom verwendet.
    3. Wenn das Ausgabebit von R1 null ist, dann wird das aktuelle Ausgabebit von R2 verworfen.
    • Muss ca. 2n mal iteriert werden, um einen Schlüsselstrom der Länge n zu erzeugen, da nur etwa die Hälfte der Bits von R2 verwendet wird.
    • Der Schlüsselstrom s des Shrinking-Generators hat
      • eine Periodenlänge von (2L2 - 1) · 2L1-1
      • eine lineare Komplexität L(s) von L2 · 2L1-2 < L(s) ≤ L2 · 2L1-1.
      • eine fast uniforme Verteilung von Bitmustern der gleichen Länge.

Algorithmen basierend auf LFSR

A5 (GSM)

E0 (Bluetooth)

Zuletzt geändert am 02 Juli 2006 21:08 Uhr von chrschn