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)
- Synchron
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:
- 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?
- 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?
- Muss der Schlüssel wirklich so lang sein, wie die Nachricht?
- 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.
- Die Wahl der rückgekoppelten Registerwerte kann als Polynom im Restklassenring (Z/2Z) aufgefasst werden:
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
- Ein Polynom f in einer Variable x über einem Körper K ist ein Term der Form:
- 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
- Betrachtung von binären Sequenzen
- 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.
- Wenn i > j, dann gilt Li ≥ Lj.
- 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
-
L := 0// Aktuelle Länge des LFSRs C(D) := 1// Akutelles Polynomi := 0// Akutelle Iterationj := -1// Iteration, bei zuletzt L(j-1) < L(j) warC'(D) := 1// Polynom der Iteration jfor i := 0 to n - 1 dodelta := si + Σk=1L cksi-k mod 2if (delta = 1) thenT(D) := C(D)C(D) := C(D) + C'(D)·Di-jif (L ≤ i/2) then// entspricht: (L < i + 1 - L)L := i + 1 - Lj := iC'(D) := T(D)
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
- In jedem Zyklus der Folge s unterscheidet sich die Anzahl der Nullen von der Anzahl der Einsen höchstens um eins.
- 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.
- 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.
- Erinnerung:
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
- lange Periode
- hohe lineare Komplexität
- gute statistische Eigenschaften
- Vorteile:
- Komposition von Kryptosystemen aus LFSRs
- Es gibt mehrere Möglichkeiten, die Linearität von LFSR zu zerstören:
- Verknüpfung der Ausgaben mehrerer LFSR über eine nicht-linearen Funktion (nicht-lineare Kombination)
- Eine nicht-lineare Filterfunktion auf die Ausgabe eines LFSRs anwenden
- 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:
- Eine möglichst lange Periode
- Eine möglichst hohe lineare Komplexität
- Gute statistische Eigenschaften
- Erfüllung all dieser Eigenschaften für alle möglichen geheimen Schlüssel
- Es gibt mehrere Möglichkeiten, die Linearität von LFSR zu zerstören:
- 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
- Geheimes Polynom
- Das Rückkopplungspolynom eines LFSR-basierten Kryptosystems kann entweder geheim oder öffentlich sein.
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 C ∈ Z.
- 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:
- Die LFSR werden einen Takt weitergeschaltet.
- 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, Si ∈ Z - Es wird zi = Si mod 2 berechnet.
- 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.
- 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.
- 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.
- Beide LFSR werden gleich getaktet.
- Wenn das Ausgabebit von R1 eins ist, dann wird das aktuelle Ausgabebit von R2 als Zeichen für den Schlüsselstrom verwendet.
- 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
