Hardware-Zufallsgenerator für USB 2.0 Highspeed oder PCI

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Hardware-Zufallsgenerator für USB 2.0 Highspeed oder PCI

Beitrag von hardfalcon »

Wenn mal jemand von euch nen echten (Hardware-)Zufallsgenerator bauen will, hier wäre eine recht einfache Lösung:
http://www.kielnet.net/home/julien.thom ... 232WEB.htm

Das Prinzip ist im Grunde, dass man eine leichte Überspannung auf eine Z-Diode gibt, das daraus resultierende thermische Rauschen noch etwas "aufbläst" und dann digitalisiert. Ich habs noch nicht selber gebaut, aber laut der verlinkten Seite ist das Teil geschwindigkeitsmässig wohl nur für die Serielle Schnittstelle bei ca 56KBaud brauchbar...

Kennt jemand von euch da vielleicht ne Alternative (am Besten für den USB2.0-Port (Highspeedvariante mit max. 480MBit/s) oder als PCI-Karte :mrgreen: )?
Zuletzt geändert von hardfalcon am 12.09.2007 00:45, insgesamt 3-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

dass "weißes rauschen" einen echten zufallswert ergibt, ist ein alter hut.
jeder synthy, der echtes weißes rauschen erzeugt, und dessen OSC direkt auslesbar ist, kann dir einen echten zufallswert liefern.
das haben wir schon damals aufm C64 gemacht... :mrgreen:

jede versuchsanordnung, mit der du ein rauschen erzeugen und digitalisieren kannst,
kannst du an jede schnittstelle anschließen, bei der du technisch dazu in der lage bist.
also ist es im grunde schnuppe, ob du dass ans modem, an COM, an LPT oder sonstwo anschließt.

an USB wird von daher schwieriger, weil es kein simpler port ist, wo man mal eben was anstöpselt.

und mit der geschwindigkeit hat das nichts zu tun.
der momentanwert des rauschens ändert sich physikalisch extrem schnell,
frag mich nicht in welchem bereich, wird wohl mit den schwingungen der atome im bauteil zusammenhängen.

die auslesegeschwindigkeit ist nur darin beschränkt, wie schnell deine schaltung das signal digitalisiert.
wenn das über eine cascade gemacht wird, hat das selber ja auch keinen echten zeitverlust.

es ist auch egal, wie langsam du es ausliest.
deine schaltung erzeugt die werte auf maximaler physikalischer geschwindigkeit.
ob du nun jeden tausendsten oder jeden millionsten wert ausliest,
ändert nichts an der zufälligkeit der erzeugung.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Hmmm, auf der Seite steht folgendes:
Netter Nebeneffekt meiner Methode: Der Zufallsgenerator antwortet automatisch in derselben Geschwindigkeit, mit der der PC-seitige UART seine Takt-Zeichen gesendet hat. Bis zu einer hardwarebedingten Maximalgeschwindigkeit kann man den XR232 daher mit jeder gültigen seriellen Baudrate ansprechen, ohne dass am Gerät irgendetwas neu konfiguriert werden müsste. (Welche Controllerlösung wäre jemals so flexibel gewesen?)

Dieses Protokoll funktionierte bei allen bisher aufgebauten Geräten problemlos bis ca. 57.600 Bd, und zwar auch unter größeren Bauteiletoleranzen. Langsamstes Glied in der Übertragungskette sind die Optokoppler: Mit ausgesuchten Exemplaren des CNY17-I habe ich auch schon einen Betrieb bis 115.200 Bd hinbekommen, aber es schien sich um "Ausreißerexemplare" zu handeln. Ein weiteres Tuning auf wesentlich höhere Baudraten wäre mit der aktuellen Rauschquelle auch garnicht sinnvoll, weil deren Bandbreite auf wenige hundert Kilohertz begrenzt ist.
Ohne Optokoppler riskiere ich doch starke "Zufälligkeitseinbußen", insbesondere wenn ich das ganze für den USB-Port machen will (wofür ich nämlich mit nem 40Mhz-Taktgeber (Quartz) arbeiten müsste...)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ok... ich hab mir die beschreibung nicht durchgelesen,
weil ich eh grad knapp in der zeit war, und hardware-zufallszahlen eigentlich kenne.

also...
normalerweise stellt ein hardware-generator an einem port ständig wechselnde zustände zur verfügung.
egal, welcher port und wie schnell man zugreifen kann.

er "antwortet" nicht, er stellt seine information an einen port, egal, ob sie gelesen wird oder nicht.

die vorgabe, dass der erzeuger sich am port ausrichtet, ist schon mal etwas,
was ihn in der zufälligkeit einschränken würde.

ein weißes rauschen könntest du mit einem Kosmos-Elektronik-Labor-Baukasten aus den 70ern bauen,
und wenn du dazu noch ne kaskade anbaust, um es auf 8-pol zu digitalisieren,
könntest du es über DIN/COM reinziehen, und dein computer hat ne zufallszahl,
und deiner schaltung ist das egal, ob der computer überhaupt eingeschaltet ist.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Mir kommt es halt auf die Geschwindigkeit an. Ich will einen "USB 2.0 Highspeed Hardware-Zufallsgenerator" (im Klartext: da sollen theoretisch bis zu 480MBit/s ohne "Zufälligkeitseinbußen" rauskommen). Die eigentliche Herkunft des Zufalls stellt weniger das Problem dar als vielmehr der Aufbau der "USB 2.0 Highspeed"-Schnittstelle, und der Weg, den das Rauschen von der Diode zum USB-Port durchläuft (Digitalisierung, Optokoppler (oder gibts da ne Alternative?)).
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

öhm.. denk das doch mal anders herum durch...

eine an einem Port anliegende Zufallszahl ist keine datenübertragung.

hast du irgendeine im blassensten vorstellbare anwendung, wo du
> bis zu 480MBit/s
d.h. 6 millionen verschiedene Zufallszahlen pro sekunde brauchst?

der eigentliche Gag bei der Hardware-Zufallszahl ist doch,
dass sie an einem Port als ständig wechselnder zustand anliegt,
und von deiner Anwendung bei bedarf abgefragt werden kann.

die datenübertragungsgeschwindigkeit deines Ports spielt dabei keine ROLEX!

der erzeuger des Rauschens ist ein analoges system.
wenn du ein analoges system dementsprechend effektiv aufbaust,
dann kann es seinen zustand in pikosekunden ändern.
wenn die anordnung zum digitalisieren mitzieht, dann liegt das digitale ergebnis ebenso schnell an.
das ist genau das, was er mit "Bis zu einer hardwarebedingten Maximalgeschwindigkeit" meinte.

wenn die USB-schnittstelle nicht in der Lage ist,
unabhängig von Protokolldaten einen reinen Portzustand darzustellen,
dann ist sie dafür einfach nicht geeignet, zu hoch entwickelt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Ich will mit dem Ding nachher /dev/random und /dev/urandom ersetzen (können), um z.B. eine Festplatte mit maximaler Geschwindigkeit mit Zufallsdaten zu überschreiben (bei Anwendungen wie Truecrypt oder cryptsetup sollte man bekanntermaßen /dev/null ja nicht verwenden...). Du kannst dir sicherlich vorstellen, dass mir für sowas 56kBd etwas zu langsam wären... :wink:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ok... nach einigem nachdenken muss ich was ergänzen.

die mögliche Portfrequenz hängt natürlich von der möglichen Geschwindigkeit des verwendeten A/D-wandlers ab.

das was du als Übertragungsrate kennst,
ist im endeffekt die Portfrequenz oder Portrate,
also die mögliche geschwindigkeit der Zustandsänderungen,
multipliziert mit der Portbreite.

wenn ich einen Port habe, der 8bit breit ist, muss ich 60M mal in der sekunde den zustand ändern können,
um einen durchsatz von 480MBit/s zu erreichen.
bei 64bit portbreite, brauche ich nur noch 7.5M Portfrequenz.

also, du brauchst einen A/D-Wandler, der auf der gewünschten Portbreite arbeitet,
und dann noch die gewünschte frequenz leisten kann.

der Kern bleibt gleich:
dein schwingungserzeuger ist analog, er stellt für jede beliebig kleine zeitdifferenz Delta-t gegen 0 einen anderen zustand zur verfügung.

-------------------
[edit]
dein post kam beim schreiben

also, für plattenüberschreiben wäre es sicher nicht tödlich, wenn du 2x hintereinander die selbe zufallszahl verwendest... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Abgesehen vom AD-Wandler kommen ja wie gesagt noch die Probleme der Entkopplung des Analogteils vom PC (ich will ja nich, dass die ganzen Störsignale, die über die Masse (PC-Gehäuse) laufen, mir in meinen Zufallsgenerator reinhauen...)
Optokoppler scheinen defintiv zu langsam zu sein, die schnellsten, die ich bis jetzt im Netz gefunden habe, schaffen 15MBd/s. :|

//EDIT: Alternativ zu USB 2.0 käme natürlich noch die PCI-Schnittstelle in Frage, aber die ist vermutlich noch wesnetlich schwieriger zu handhaben als USB2.0, oder?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wie gesagt... ich kenn das ganze eh nur theoretisch, aber ich kenne es nicht vom störungsrauschen, sondern von bewußt erzeugtem weißen rauschen in einem oszillator - kein plan, wie so ne schaltung aussehen müßte.

aber "optokoppler" brauchst du doch nur fürs übersetzen eines optischen signals, oder versteh ich den begriff falsch?

also, der gag, das rauschen über eine flackernde LED zu erzeugen ist ja ganz nett, aber kaum effektiv.

eine schaltung für weißes rauschen liefert ein analoges signal.
(keine ahnung wie die aussieht, ich bin damals drei kapitel nach dem Schmitt-Trigger ausgestiegen, und den krieg ich heut auch nimmer zusammengebaut)

dieses signal ist eine potentialschwankung an einem Pol gegen masse, d.h. ein Potential "zufällig" wechselnd z.b. zwischen +5 und -5 V, wenn 5V deine Nennspannung des systems ist.
diese potentialschwankung geschieht momentan und unverzögert.

du brauchst jetzt einen A/D-wandler, der das potential in einen digitalen wert gewünschter bitbreite übersetzt.
der weg über einen optokoppler ist dort nur spielerei meiner ansicht nach.

PS:
und zu den Störsignalen:
das weiße Rauschen ist das pure Chaos. das kann man nicht stören, höchstens ordnen, und das auch nicht merklich für deine anordnung.
da müßtest du schon ein fettes sinus-signal mit erheblicher feldstärke an dein gehäuse legen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten