QuarkDash: Hybrides Post-Quanten-Protokoll in TypeScript für Hochlastsysteme
QuarkDash kombiniert Ring-LWE für post-quanten-sicheren Schlüsselaustausch, Stromchiffren ChaCha20 oder Gimli, SHAKE-256 für Schlüsselableitung und MAC sowie Schutz vor Replay- und Timing-Angriffen. Öffentlicher Schlüssel ~2 KB, privater ~1 KB. Sitzungsaufbau dauert ~8-9 ms auf durchschnittlichen CPUs. Ideal für Client-Server-Systeme ohne Architekturbindung.
Auswahl der Primitiven in QuarkDash
Ring-LWE für Schlüsselaustausch
Ring-LWE nutzt Polynomringe mit Parametern N=256, Q=7681, ω=7. Bietet 128-Bit-Post-Quanten-Sicherheit. Polynommultiplikation via NTT in O(N log N). Schlüsselgenerierung: ~12 ms, Kapselung/Dekapselung ~8-9 ms.
Symmetrische Verschlüsselung
- ChaCha20: 20 Runden, 256-Bit-Schlüssel, 12-Byte-Nonce. Extrem schnell in Software, resistent gegen Timing-Angriffe.
- Gimli: 24 Runden, 384-Bit-Zustand, 256-Bit-Sicherheit. Übertrifft ChaCha20 auf 32-Bit-Architekturen, schlanker Code für IoT.
KDF und MAC mit SHAKE-256
SHAKE-256 (Keccak-basiert) für quantensichere Schlüsselableitung und Authentifizierung. KDF: SHAKE256(salt || sharedSecret || "session-key", 64) → sessionKey (32 Bytes) + macKey (32 Bytes). MAC: SHAKE256(macKey || header || ciphertext, 32) mit vergleichszeitkonstanter Überprüfung.
Protokollablauf Schritt für Schritt
Schlüsselgenerierung
- Wähle a ∈ Z_Q^N.
- Kleine s, e mit Koeffizienten {-1,0,1}.
- b = a ⊗ s + e (NTT).
- Öffentlich: (a, b), privat: s.
KEM für Sitzung
Initiator:
- u = a ⊗ s' + e'.
- sharedSecret aus b ⊗ s'.
Empfänger: sharedSecret aus u ⊗ s.
Nachrichtenverschlüsselung
- header = timestamp (8 Bytes) || sequence (4 Bytes).
- ciphertext = streamCipher.encrypt(plaintext, sessionKey, nonce).
- mac = SHAKE256(macKey || header || ciphertext, 32).
- Paket: header || ciphertext || mac.
Nachrichtenentschlüsselung
- Paket parsen.
- MAC prüfen (zeitkonstant).
- Timestamp innerhalb 5 Minuten prüfen.
- Sequence einzigartig sicherstellen (Fenster 1000).
- plaintext = streamCipher.decrypt(ciphertext).
Sicherheitsmaßnahmen
- Post-Quanten-Resistenz: Ring-LWE ohne bekannte Quantenbrüche, SHAKE-256 hält Grover-Algorithmus stand.
- Side-Channel-Schutz: Zeitkonstante Vergleiche, sicheres Key-Zeroing, keine geheimsabhängigen Branches.
- Forward Secrecy: Ephemere Sitzungsschlüssel.
- Replay-Schutz: Timestamp + Sequence.
Gesamtsicherheit: 128-256 Bit gegen klassische/quantale Bedrohungen.
Leistungsbenchmarks
Sitzungsaufbau (ms, Durchschnitt 1000 Läufe)
| Operation | QuarkDash (ChaCha20) | QuarkDash (Gimli) | ECDH P-256 | RSA-2048 |
|----------|----------------------|-------------------|------------|----------|
| Schlüsselgenerierung | 12.3 | 12.1 | 1.2 | 48 |
| KEM Kapselung | 8.7 | 8.5 | 3.4 | 42 |
| KEM Dekapselung | 9.2 | 9.0 | 3.4 | 0.1 |
Durchsatz (MB/s)
| Größe | ChaCha20 | Gimli | AES-256-GCM | ECIES |
|--------|----------|-------|-------------|-------|
| 1 KB | 125 | 132 | 117 | 10 |
| 1 MB | 2380 | 2630 | 1176 | 48 |
| 10 MB | 2450 | 2710 | 1200 | 50 |
Overhead: öffentlicher Schlüssel 2 KB, privater 1 KB, Paketoverhead 44 Bytes.
Vergleich mit Alternativen
- Vs AES: QuarkDash integriert KEM, Forward Secrecy, Replay-Schutz. ChaCha20 schlägt AES in Software ohne Hardware-Beschleunigung.
- Vs ECC: Shor-resistent, geringerer Paketoverhead (44 vs 61 Bytes), schneller bei großen Nutzlasten.
Das Protokoll ist für TypeScript in Web-Apps optimiert, mit SHAKE-256-Emulation auf Keccak.
Wichtige Erkenntnisse
- Ring-LWE (N=256, Q=7681) für 128-Bit-PQC mit NTT-Multiplikation.
- Doppelchiffren: ChaCha20 für Software, Gimli für IoT.
- SHAKE-256 KDF/MAC mit zeitkonstanten Operationen.
- Replay-Schutz via Timestamp + Sequence (Fenster 1000).
- Benchmarks: bis 2710 MB/s Verschlüsselung, Sitzungen ~9 ms.
— Editorial Team
Noch keine Kommentare.