Forum: FPGA, VHDL & Co. Zusammenschalten verschiedener LFSRs


von Martin (Gast)


Lesenswert?

Hallo,
welchen sind hat das Zusammenschalten mehrerer Linear Feed Back Shift 
Register. Ich habe hier ein Blockschaltbild vor mir wo drei LFSRs mit 
unterschiedlichen Polynomen parallel betrieben werden. Aus jedem werden 
willkürlich zwei Ausgangsbits genommen und zu einem 6 bit Ausgangswort 
zusammengefügt. Hat das einen besonderen Sinn. Erhöht sich somit die 
maximale Zykluslänge ? Leider lässt der Author (Semesterarbeit) den Sinn 
und Zweck dieses Vorgehens völlig unbeleuchtet.
Gruss, Matze

von AL_JA (Gast)


Lesenswert?

Hallo,

man nimmt in der Regel nur ein Bit eines LFSR um damit 
Pseudo-Zufallszahlen zu erzeugen, denn andernfalls wird - zusätzlich zu 
der eigentlichen Periodenlänge des LFSR - ein periodisches Signal 
kleinerer Länge generiert.

Bin selbst kein Experte auf dem Gebiet, habe aber vor kurzem  einen 
einfachen Rauschgenerator benötigt, mir hat die englische Wikipedia 
weitergeholfen:

http://en.wikipedia.org/wiki/LFSR -> Xilinx-Link

Vielleicht hatte der Schreiber der Semesterarbeit nur einen sehr kleinen 
CPLD und wollte Logik sparen, aber besser dürften 6 parallele LFSR sein. 
Bei allen kann das gleiche Polynom verwendet werden, allerdings mit 
unterschiedlichen preload-Werten.

Falls Rauschen als Störquelle erzeugt wird, lohnt es sich ein Histogramm 
für die Verteilung und eine FFT (keine unerwünschten Perioden) 
aufzustellen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Hat das einen besonderen Sinn.
Ich tippe auf Hokus-Pokus ;-)

Mit einem z.B. 16 Bit breiten LFSR kann ich maximal 65535 verschiedene 
Zufallszahlen erzeugen. Ich kann mir keine Konstellation vorstellen, in 
der die Aufteilung der Zahlen auf z.B. 2x8 Bit eine bessere 
Zufallsreihenfolge bringen könnte. 16 Bit bleiben 16 Bit.

> wo drei LFSRs mit unterschiedlichen Polynomen parallel betrieben werden.
> Aus jedem werden willkürlich zwei Ausgangsbits genommen und zu
> einem 6 bit Ausgangswort zusammengefügt.
Wenn also jedes der drei LFSR 16 Bit breit wäre, würde ich von einem 48 
Bit LFSR, aus dem willkürlich 6 Bit herausgeschnitten werden, gleich 
gute Ergebnisse erwarten.

von Michael W. (Gast)


Lesenswert?

Ich frage mal nach, auch wenn es ein altes Thema ist:

Lothar M. schrieb:
> Wenn also jedes der drei LFSR 16 Bit breit wäre, würde ich von einem 48
> Bit LFSR, aus dem willkürlich 6 Bit herausgeschnitten werden, gleich
> gute Ergebnisse erwarten.
Hätte das 48er LFSR nicht ein bessere Güte die mit der 2er-Potenz geht?
Das müsste doch gleich erheblich besser sein, um mehrere Bits zu 
gewinnen.
Wäre die Frage, wie man sie gewinnen könnte.

von R. M. (Gast)


Lesenswert?

Dann versuche ich mich mal an einer plausiblen Erklärung.
Solche Konstrukte findet man oft in der Kryptographie,
https://de.wikipedia.org/wiki/Stromverschl%C3%BCsselung
um eine ausreichend hohe Periodenlänge zu erzielen.
Das geht mit einem einzelnen, sehr langen LFSR nicht so gut, weil es 
"gute" und "schlechte" Polynome (Rückführungskombinationen) gibt, die zu 
ermitteln, einen beträchtlichen Aufwand macht. Also nutzt man lieber 
mehrere, kürzere LFSR, mir erwiesen gutem Polynom.

von Michael W. (Gast)


Lesenswert?

ok, das ist nachvollziehbar. Habe ich auch schon mitbekommen, dass sie 
verschiedene Autoren schwer tun, für ihre Polynome statistisch bewiesene 
Angaben zur Qualität zu machen.

Für mich wäre es entscheidend, dass ich mehrere Bits erhalte, die 
unabhängi von einander sind und deren Zusammenführung nicht die Qualität 
des Rauschens reduziert.

von Vancouver (Gast)


Lesenswert?

Es geht dabei vermutlich um kryptografische Sicherheit. Ein LFSR ist 
deterministisch. Kennt man das Polynom und den momentanen Zustand, kann 
man alle Folgezustände berechnen. Kombiniert man hingegen Teilergebnisse 
aus mehreren verschiedenen LFSR, dann geht das nicht mehr so einfach, 
weil man aus dem Gesamtergebnis nicht mehr auf den aktuellen Zustand 
jedes der LFSR zurückrechnen kann, jedenfalls nicht mit nur einem 
Sample. Ein Angreifer braucht dann schon genaue Kenntnis der 
Architektur, um den Folgezsutand zu berechnen.

Besser wäre es, einen richtig guten PRNG zu verwenden (z.B. einen 
Mersenne-Twister) und eine sichere Hashfunktion nachzuschalten. Aber der 
Hardwareaufwand dafür ist natürlich massiv größer.

von J. S. (engineer) Benutzerseite


Lesenswert?

Vancouver schrieb:
> Besser wäre es, einen richtig guten PRNG zu verwenden (z.B. einen
> Mersenne-Twister)
Ja, wobei ein solcher Twister geht im FPGA erstaunlich einfach - mit 
entsprechenden Frequenzen - (BTDT). Weitere "Rüttel-und 
Schüttelmethoden" wären Marsaglia etc.

Man muss sich aber immer fragen, wie sicher die Methode jeweils ist, 
wenn jemand aus der Entwicklertruppe ausscheidet oder ein Angreifer 
sonst wie dazu kommt, zu wissen, wie ein Algo funktioniert. Es ist im 
Sinne der Sicherheit daher oft zweckmäßiger eine einfache Codierung mit 
Verfahren zu wählen, die man dem Prinzip nach erraten kann, die aber von 
einem oder mehreren Schlüsseln abhängig sind, die man regelmäßig 
wechselt. Damit sind Klassifizierungen und das Einrichten von 
Sicherheitshierarchien sehr einfach möglich.

Es ist nur eben etwas mehr Rundherumaufwand nötig wie das geschützte 
Übertragen von Schlüsseln, deren Änderungen und deren Löschungen.

Eine andere Frage ist, wie man ein Signal so aufbereitet, dass es sicher 
decodiert werden kann, als Rauschen aber im normalen Datenstrom gar 
nicht auftaucht, also gar nicht bekannt ist, dass ein System etwas von 
sich gibt.

Auch da gibt es Methoden mit / ohne LSFR.

Markus W. schrieb:
> Für mich wäre es entscheidend, dass ich mehrere Bits erhalte
Das Einfachste sind wohl mehrere unabhängige Generatoren, jedenfalls im 
FPGA. Das ist zumindest die kleinste Lösung. Da ein einzelner Generator 
ein (fast) gleichverteiltes Spektrum (weißes Rauschen) erzeugt, sind die 
Ergebnisse auch "weiss", wenn die Generatoren wirklich unabhängig sind. 
Das sind sie allerdings nicht perfekt, wenn derselbe FPGA Takt verwendet 
wird. Auch nicht, wenn man ihnen einen Teiltakt verpasst.

Kommt eben darauf an, welche Qualität man möchte. Ich habe das damals 
einfach so gemacht, dass ich das Rauschen, das entstand, gemessen habe 
und einen Korrektur-EQ drübergestülpt habe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.