{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreihihldb65ey4yy5iz4ks27j5ztwhpihiptyyxuc6p2vgh225afhue",
    "uri": "at://did:plc:nkxz2ojdvmieg2nhphvputvp/app.bsky.feed.post/3mmiw7dx2ycm2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreiga232akfs5nskkknv3uieiesinh4qma6i5asygf65uhfzlkatho4"
    },
    "mimeType": "image/png",
    "size": 1068686
  },
  "description": "Ich hatte noch einen Quantis USB in der Schublade liegen. Einen Hardware-Quantenzufallsgenerator von ID Quantique aus Genf. Ein Gerät, das echten Zufall erzeugt. Nicht pseudo, nicht algorithmisch, nicht „irgendwie aus Interrupts zusammengewürfelt\", sondern auf Basis von Quantenphysik. Fundamental unvorhersagbar.\n\nNachdem ich in den letzten Beiträgen OpenSSH und Postfix/Dovecot mit Post-Quantum-Kryptografie abgesichert habe, fiel mir wieder ein: PQC schützt die Algorithmen vor […]",
  "path": "/2026/03/03/quantis-usb-alter-quantenzufall-aus-der-schublade/",
  "publishedAt": "2026-05-23T07:24:39.000Z",
  "site": "https://www.kernel-error.de",
  "tags": [
    "Hardware",
    "Linux",
    "Python",
    "Quantenphysik",
    "Security",
    "Verschlüsselung",
    "Zufall",
    "OpenSSH",
    "Postfix/Dovecot mit Post-Quantum-Kryptografie abgesichert",
    "ID Quantique"
  ],
  "textContent": "Ich hatte noch einen Quantis USB in der Schublade liegen. Einen Hardware-Quantenzufallsgenerator von ID Quantique aus Genf. Ein Gerät, das echten Zufall erzeugt. Nicht pseudo, nicht algorithmisch, nicht „irgendwie aus Interrupts zusammengewürfelt“, sondern auf Basis von Quantenphysik. Fundamental unvorhersagbar.\n\nNachdem ich in den letzten Beiträgen OpenSSH und Postfix/Dovecot mit Post-Quantum-Kryptografie abgesichert habe, fiel mir wieder ein: PQC schützt die Algorithmen vor Quantencomputern. Schön und gut. Aber was ist eigentlich mit der Zufallsquelle, die diese Algorithmen füttert? Zeit, das Teil mal wieder anzuschließen und zu schauen, was es taugt.\n\n### Was steckt in dem Gerät?\n\nDer **Quantis USB** von ID Quantique ist ein sogenannter Quantum Random Number Generator, kurz QRNG. Das Prinzip dahinter: Ein Photonendetektor misst quantenoptisches Vakuumrauschen. Das sind Fluktuationen im elektromagnetischen Feld, die nach den Gesetzen der Quantenmechanik fundamental zufällig sind. Nicht „fast zufällig“ oder „praktisch zufällig“, sondern physikalisch beweisbar unvorhersagbar. Das ist ein wichtiger Unterschied zu allem, was ein Algorithmus je leisten kann. Dazu gleich mehr.\n\nDas Gerät selbst ist fast schon enttäuschend simpel. USB 2.0 High-Speed, ein einziger Bulk-IN-Endpoint (0x86), 512 Bytes pro Read, rund 4 Mbit/s Durchsatz. Flashbare Firmware gibt es nicht. Die „Intelligenz“ steckt in der Optik und einem FPGA, nicht in Software. Das Ding macht genau eine Sache, und die macht es gut.\n\nMein Testgerät hat die Seriennummer 132244A410. Der Quantis USB ist inzwischen ein Legacy-Produkt, ID Quantique hat einen Nachfolger mit höherem Durchsatz im Programm. Einen öffentlichen Preis hatte das Gerät nie. „Request a Quote“, wie das bei Nischenprodukten mit Zertifizierungsanforderungen so üblich ist. Das Gerät ist METAS-zertifiziert und war für Kunden gedacht, die Common-Criteria-Anforderungen erfüllen müssen. Vergleichbare QRNGs bewegen sich im Bereich von 900 bis 2.000 Euro. Nicht gerade ein Impulskauf.\n\n### Einrichten unter Linux\n\nAngeschlossen an mein Linux Mint 22.3 (Ubuntu 24.04 Basis) meldet sich das Gerät sofort im Kernel-Log:\n\n\n    $ dmesg | tail\n    usb 1-1: New USB device found, idVendor=0aba, idProduct=0102\n    usb 1-1: Product: Quantis USB\n    usb 1-1: Manufacturer: id Quantique\n    usb 1-1: SerialNumber: 132244A410\n\nKein spezieller Treiber nötig. Das ist ein generisches USB-Bulk-Device, der Kernel erkennt es und das war’s. Die proprietäre `libquantis` von ID Quantique kann man sich komplett sparen. Man kann direkt mit `pyusb` auf den Endpoint zugreifen. So mag ich das.\n\nDamit das auch ohne Root funktioniert, legt man eine udev-Regel an:\n\n\n    # /etc/udev/rules.d/99-quantis.rules\n    SUBSYSTEM==\"usb\", ATTR{idVendor}==\"0aba\", ATTR{idProduct}==\"0102\", MODE=\"0666\", GROUP=\"plugdev\", TAG+=\"uaccess\"\n\nDanach:\n\n\n    $ sudo udevadm control --reload-rules && sudo udevadm trigger\n\nGerät abstecken, wieder anstecken, fertig. Ab jetzt kann jeder Benutzer in der Gruppe `plugdev` auf das Gerät zugreifen.\n\n### Daten lesen mit Python\n\nZum Auslesen reicht das Paket `python3-usb` (pyusb). Installieren via `apt install python3-usb`, falls nicht vorhanden. Dann braucht man erstaunlich wenig Code:\n\n\n    import usb.core, usb.util\n\n    dev = usb.core.find(idVendor=0x0ABA, idProduct=0x0102)\n    dev.set_configuration()\n\n    cfg = dev.get_active_configuration()\n    intf = cfg[(0, 0)]\n    ep = usb.util.find_descriptor(\n        intf,\n        custom_match=lambda e:\n            usb.util.endpoint_direction(e.bEndpointAddress) == usb.util.ENDPOINT_IN\n    )\n\n    data = ep.read(512, timeout=5000)\n    print(f\"{len(data)} Bytes Quantenzufall gelesen\")\n\nDas ist alles. USB öffnen, Configuration setzen, den einen IN-Endpoint finden, 512 Bytes lesen. Fertig. Kein SDK, keine Bibliothek, kein Account, kein Cloud-Dienst. USB rein, Bytes raus.\n\n**Wichtig:** Immer volle 512-Byte-Blöcke lesen (`wMaxPacketSize`). Wer weniger anfordert, bekommt USB-Overflow-Fehler. Das Gerät kennt keine halben Sachen. Es produziert kontinuierlich Zufallsdaten und schiebt sie in den USB-Puffer. Die müssen abgeholt werden, so wie sie kommen.\n\nFür den Test habe ich das Ganze in eine Schleife gepackt und 100.000 Bytes gesammelt. Parallel dazu 100.000 Bytes aus `/dev/urandom`. Beide Datensätze dann durch dieselben statistischen Tests gejagt.\n\n### Der Test: Quantis vs. /dev/urandom\n\nJetzt wird’s spannend. Wie gut ist echter Quantenzufall im Vergleich zum Software-PRNG des Linux-Kernels?\n\nSpoiler: Statistisch seht ihr keinen Unterschied. Und genau das ist der Punkt.\n\nMetrik| Quantis USB| /dev/urandom\n---|---|---\n**Shannon-Entropie**|  7,998513 Bits/Byte| 7,998077 Bits/Byte\n**Maximum (theoretisch)**|  8,000000| 8,000000\n**Effizienz**|  99,9814 %| 99,9760 %\n**Chi² (Byte-Verteilung)**|  205,8| 267,3\n**Erwartet (Chi²)**|  ~255 ± 23| ~255 ± 23\n**Bit-Balance (Anteil Einsen)**|  49,975 %| 50,018 %\n**Serielle Korrelation**|  +0,001230| +0,003801\n**Längster Bit-Run (10 kB)**|  15 Bits| 21 Bits\n**Erwarteter Run**|  ~16| ~16\n\nDie Shannon-Entropie liegt bei beiden Quellen über 99,97 % des theoretischen Maximums von 8 Bit pro Byte. Das ist hervorragend. Die Chi²-Werte zeigen eine gleichmäßige Byte-Verteilung, beide liegen im erwarteten Bereich um 255. Die Bit-Balance ist nahezu perfekt bei 50/50, die serielle Korrelation praktisch null.\n\nIn den einfachen Tests schneidet der Quantis sogar minimal besser ab: niedrigere Korrelation, gleichmäßigere Verteilung, kürzerer maximaler Bit-Run. Aber ehrlich gesagt liegt das im statistischen Rauschen. Bei 100.000 Bytes Sample-Größe kann man keine belastbare Aussage über die Überlegenheit einer Quelle treffen. Man müsste Millionen oder Milliarden Bytes testen und Testsuiten wie die NIST SP 800-22 oder Dieharder durchlaufen lassen, um wirklich statistisch signifikante Unterschiede zu finden.\n\nHeißt das, der Quantis ist überflüssig? Nein. Denn der Unterschied liegt nicht in der Statistik.\n\n### Wo liegt dann der echte Unterschied?\n\nDie spannende Frage ist nicht, _ob_ die Zahlen „zufälliger“ sind, sondern _warum_ sie es sind.\n\n**`/dev/urandom`** verwendet intern **ChaCha20** , einen deterministischen CSPRNG (Cryptographically Secure Pseudo-Random Number Generator). Der initiale Seed kommt aus der Kernel-Entropie: Hardware-Interrupts, Timing-Jitter, Geräte-Events, und seit einigen Jahren auch RDRAND/RDSEED aus der CPU, falls vorhanden. Das funktioniert in der Praxis hervorragend und ist extrem gut untersucht.\n\nAber es bleibt ein Algorithmus mit einem internen State. Wer diesen State kennt (und sei es nur theoretisch), kann alle zukünftigen Outputs berechnen. Das ist kein realistisches Angriffsszenario für euren Laptop. Aber es ist eine fundamentale Eigenschaft: Die Sicherheit von `/dev/urandom` basiert auf **Berechnungsannahmen**. Man nimmt an, dass ChaCha20 nicht effizient invertierbar ist. Stand heute stimmt das. Aber es ist eine Annahme, kein Beweis.\n\nDer **Quantis** hingegen erzeugt Zufall aus Quantenvakuum-Fluktuationen. Da gibt es keinen Algorithmus, keinen State, keinen Seed. Die Unvorhersagbarkeit ist nicht durch die Komplexität eines Algorithmus geschützt, sondern durch die Gesetze der Quantenmechanik. Kein Angreifer, egal mit welcher Rechenleistung und egal mit wie viel Zeit, kann die nächsten Bits vorhersagen. Auch kein Quantencomputer. Das ist nicht berechnungstheoretisch sicher, sondern **informationstheoretisch** sicher. Die höchste Sicherheitskategorie, die es gibt.\n\nKlingt akademisch? Zum Teil. Für den Alltag auf eurem Desktop oder Server reicht `/dev/urandom` völlig aus. Es gibt keinen bekannten praktischen Angriff darauf, und Linux‘ CSPRNG ist schnell, überall verfügbar und gut gewartet.\n\nAber es gibt Szenarien, in denen der Unterschied real zählt:\n\n  * **Erzeugung kryptografischer Schlüssel** mit höchsten Sicherheitsanforderungen\n  * **Seeding von HSMs** (Hardware Security Modules), die selbst keine eigene Entropiequelle haben\n  * **Regulatorische und Zertifizierungsanforderungen** , also Common Criteria, FIPS-Validierung, BSI-Vorgaben\n  * **Wissenschaftliche Experimente** , die physikalisch echten Zufall benötigen (z. B. Quantenoptik, Monte-Carlo-Simulationen)\n  * **Quantenschlüsselaustausch (QKD)** , ein Bereich in dem ID Quantique ebenfalls aktiv ist\n\n\n\n### Das größere Bild: QRNG und PQC\n\nPost-Quantum Cryptography schützt kryptografische Algorithmen davor, von Quantencomputern gebrochen zu werden. ML-KEM für den Schlüsselaustausch, ML-DSA für Signaturen. Das ist die eine Seite der Medaille.\n\nDie andere Seite ist die Zufallsquelle. Ein kryptografischer Algorithmus kann noch so quantensicher sein. Wenn der Zufall, mit dem Schlüssel erzeugt werden, vorhersagbar oder manipulierbar ist, hilft das alles nichts. Der Zufall ist das Fundament, auf dem alles andere aufbaut.\n\nEin QRNG schützt genau diesen Angriffsvektor. Beides zusammen, PQC-Algorithmen **und** eine quantenphysikalische Zufallsquelle, ergibt ein quantum-safe Gesamtsystem. Das ist heute für die meisten von uns Overkill. Aber die Bausteine existieren, sie sind verfügbar, und es schadet nicht zu wissen, wie sie funktionieren.\n\nÜbrigens: Wer jetzt denkt „dann stecke ich den Quantis in meinen Server und bin sicher“, der macht es sich zu einfach. Die Vertrauensfrage verschiebt sich nur. Woher weiß ich, dass das Gerät tatsächlich Quantenzufall liefert und nicht einfach einen internen PRNG hat? Bei einem zertifizierten Gerät wie dem Quantis gibt es dafür Prüfberichte. Aber Vertrauen in Hardware bleibt immer ein Thema. Das ist bei Intel RDRAND nicht anders.\n\n### Einbindung ins System\n\nFür die Vollständigkeit: Der Quantis USB lässt sich über **rng-tools** (`rngd`) als zusätzliche Entropiequelle in den Kernel-Entropiepool einbinden. Für Server mit hohem Entropie-Bedarf, also TLS-Terminierung unter Last, Massenerzeugung von Schlüsseln oder VPN-Gateways, kann das sinnvoll sein.\n\nIch habe das auf meinem Desktop nicht gemacht. Brauche ich dort nicht. Aber die Möglichkeit steht im Raum, falls jemand von euch einen Quantis oder ein vergleichbares Gerät an einen Server hängen möchte.\n\n### Fazit\n\nEin alter Hardware-QRNG, ein USB-Port, ein paar Zeilen Python, und man hat echten Quantenzufall auf dem Tisch. Statistisch nicht unterscheidbar von `/dev/urandom`, aber fundamental anders in der Entstehung. Die Sicherheit kommt nicht aus einem Algorithmus, sondern aus der Physik. Informationstheoretisch statt berechnungstheoretisch. Ein Unterschied, der in den allermeisten Fällen keine praktische Rolle spielt. Aber ein verdammt eleganter.\n\nFür euren Desktop braucht ihr das nicht. Aber verstehen, warum es existiert und wie es sich einordnet, gerade im Kontext von Post-Quantum-Kryptografie, das lohnt sich. Warum denke ich jetzt an CIA und MAD? ;-D\n\nWie haltet ihr es mit euren Zufallsquellen? Vertraut ihr blind auf `/dev/urandom`, oder habt ihr euch schon mal Gedanken über die Entropiequelle dahinter gemacht?",
  "title": "Quantis USB – Alter Quantenzufall aus der Schublade"
}