Einführung:
Computer erzeugen Zahlen nach festen Regeln und liefern von sich aus keinen echten Zufall. Für Anwendungen wie Verschlüsselung reicht das aber nicht aus. Unser Projekt SwissRNG nutzt deshalb eine physikalische Entropiequelle, nämlich Wasser, das über ein 3D-gedrucktes Wasserfallmodell fliesst. Aus den Bewegungen des Wassers werden Zufallszahlen erzeugt, statistisch validiert und über eine Schnittstelle sowie ein Dashboard bereitgestellt.

Projektziel:
Ziel war die Entwicklung eines Systems, das Zufallszahlen aus einer physikalischen Quelle gewinnt und deren statistische Qualität nach anerkannten Standards nachweist. Die Zahlen sollten zudem über eine standardisierte Schnittstelle zugänglich gemacht werden. Das gesamte System sollte dabei eigenständig und vorführbar sein, ohne Abhängigkeiten von externer Infrastruktur.
Umsetzung:
Im Zentrum steht ein 3D-gedrucktes Modell des Mürrenbach-Wasserfalls. Eine Kamera, montiert unterhalb der Aufprallzone, filmt das auftreffende Wasser. Aus den Helligkeitsunterschieden aufeinanderfolgender Frames werden Rohbits gewonnen, die anschliessend mit SHA-512 gehasht werden, um eine verlässliche Zufallsquelle zu erhalten. Die gesamte Pipeline läuft auf einem Raspberry Pi 3B und sammelt pro Durchlauf 10 Millionen Bits.
Resultat:
Die erzeugten Zufallszahlen bestehen die vollständige NIST-SP-800-22-Testsuite bis auf eine Ausnahme. Über eine API im Stil des NIST Randomness Beacon sind die Zahlen extern abrufbar. Auf einem Dashboard werden die Daten zusäzlich visualisiert. Eine Kuh verändert ihr Fellmuster abhängig von der generierten Zufallszahl, ergänzt druch die direkte Anzeige der NIST-Testresultate. Das Projekt zeigt, wie sich physikalische Prozesse, statistische Validierung und Visualisierung zu einem vollständigen, eigenständigen System verbinden lassen.
Projektteam: Til Fassbind, Leonardo Fischer, Juliano Siegenthaler, Alexander Türler
Blogautor: T. Fassbind