OPEN BETA
OPEN BETA
QUANTENKRYPTOGRAPHIE-AUDIT

PQC Readiness

Multi-Port TLS-Scan mit Hybrid-KEX-Erkennung, Zertifikat-Signatur-OID-Analyse und hostbasierter PQC-Readiness-Bewertung gemäß NIST FIPS 203/204/205 und BSI TR-02102-1.

6Ports gescannt
FIPS 203ML-KEM-Erkennung
FIPS 204ML-DSA-Erkennung
4-stufigReadiness-Bewertung
HarvestNow decrypt later

// Das Quanten-Bedrohungsmodell

Shors Algorithmus auf einem kryptographisch relevanten Quantencomputer (CRQC) kann RSA-Moduli faktorisieren und diskrete Logarithmprobleme in polynomialer Zeit lösen — was RSA, ECDSA, ECDH und klassisches Diffie-Hellman unsicher macht. Grovers Algorithmus halbiert die effektive Sicherheit symmetrischer Chiffren und reduziert AES-128 auf ~64-Bit-Sicherheit. Der "Harvest now, decrypt later"-Angriff ist bereits aktiv: Angreifer archivieren TLS-Traffic heute, um ihn zu entschlüsseln, sobald CRQCs verfügbar sind.

Von Shor gebrochene Algorithmen

  • RSA (alle Schlüsselgrößen, inkl. RSA-4096)
  • ECDSA / ECDH (alle Kurven)
  • Klassisches DHE (FFDHE-2048, FFDHE-4096)
  • DSA
  • ElGamal-Verschlüsselung

Von Grover geschwächte Algorithmen

  • AES-128 → effektiv ~64-Bit-Sicherheit
  • AES-192 → effektiv ~96-Bit-Sicherheit
  • AES-256 → effektiv ~128-Bit (noch akzeptabel)
  • SHA-256 Kollisionsresistenz → halbiert
  • HMAC-SHA256 → geschwächte Authentisierung

Zeitplan-Schätzungen

  • NSA / CISA: Migration vor 2030 planen
  • BSI TR-02102-1 2024: PQC-Migration für neue Deployments ab 2025 verpflichtend
  • IBM: 100.000-Qubit-System-Roadmap bis 2033
  • Harvest-Now-Angriffe: bereits von Geheimdiensten dokumentiert
  • Langlebige Geheimnisse (z.B. PKI-Roots): sofort migrieren

// YADS PQC-Scanner-Architektur

Der YADS PQC-Scanner führt auf jedem offenen TLS-Port eine mehrstufige Probe durch — mit einer 4-Tool-Probe-Hierarchie, um KEX-Gruppe und Zertifikat-Signatur-Algorithmus mit maximaler Abdeckung zu extrahieren. Ergebnisse werden pro Port in einem strukturierten Dict gespeichert und ermöglichen unabhängiges Scoring für jeden Dienst.

StufeToolExtrahierte DatenFallback-Bedingung
1Nmap ssl-enum-ciphersCipher Suites, TLS-Version, KEX-GruppennameNmap nicht verfügbar oder Ziel blockiert Probes
2sslyze 6.xAkzeptierte Cipher Suites, ECDHE-Gruppen, TLS 1.3 Key-Share-Gruppensslyze-Timeout oder TLS-Alert
3openssl s_clientParst Server Temp Key: Zeile — extrahiert KEX-Gruppe verbatimopenssl nicht verfügbar
4Python ssl stdlibCipher-Name, Protokollversion aus SSLSocket.cipher()Finaler Fallback, immer verfügbar

Standard-Ports: 443, 8443, 993 (IMAPS), 465 (SMTPS), 587 (STARTTLS), 636 (LDAPS). Jeder Port wird zuerst per TCP geprüft (2s Timeout), bevor ein TLS-Probe versucht wird.

PQC_KEX_GROUPS = { # Hybride ML-KEM-Gruppen (NIST FIPS 203, RFC draft-ietf-tls-mlkem) "X25519MLKEM768": PQCLevel.HYBRID, "SecP256r1MLKEM768": PQCLevel.HYBRID, "X25519MLKEM1024": PQCLevel.HYBRID, "mlkem512": PQCLevel.PQC_ONLY, "mlkem768": PQCLevel.PQC_ONLY, "mlkem1024": PQCLevel.PQC_ONLY, # Klassisch (verwundbar) "prime256v1": PQCLevel.CLASSICAL, "secp384r1": PQCLevel.CLASSICAL, "x25519": PQCLevel.CLASSICAL, "x448": PQCLevel.CLASSICAL, } PQC_CERT_SIG_OIDS = { # ML-DSA (NIST FIPS 204) "1.3.6.1.4.1.2.267.12.4.4": "ML-DSA-44", "1.3.6.1.4.1.2.267.12.6.5": "ML-DSA-65", "1.3.6.1.4.1.2.267.12.8.7": "ML-DSA-87", # SLH-DSA (NIST FIPS 205) "2.16.840.1.101.3.4.3.20": "SLH-DSA-SHA2-128s", "2.16.840.1.101.3.4.3.27": "SLH-DSA-SHAKE-256f", # Falcon (NIST Round 3 Alternate) "1.3.9999.3.6": "Falcon-512", "1.3.9999.3.9": "Falcon-1024", }

// PQC Readiness Score

Jeder gescannte Port erhält einen unabhängigen Readiness-Level. Der Host-Level-Score ist das Minimum über alle offenen TLS-Ports — ein einziger ungeschützter Port zieht den gesamten Host nach unten.

ScoreLevelKEX-BedingungZertifikat-Bedingung
4 — BereitVollständiges PQCML-KEM-768 oder höher (FIPS 203, nicht-hybrid)ML-DSA oder SLH-DSA Zertifikat-Signatur
3 — HybridTransitionalX25519MLKEM768 oder äquivalente Hybrid-Gruppe erkanntKlassisches Zertifikat akzeptabel (Hybrid-KEX schützt den Schlüsselaustausch)
2 — KlassischVerwundbarNur ECDHE oder DHE — keine PQC-KEX-Gruppe advertised oder gewähltBeliebiges klassisches Zertifikat (RSA/EC)
1 — VeraltetKritischTLS 1.0/1.1 oder statischer RSA-SchlüsselaustauschSHA-1- oder MD5-signiertes Zertifikat
0 — Nicht gescanntUnbekanntPort geschlossen, TLS-Alert oder Timeout bei allen 4 Probe-StufenN/A

Beispiel Readiness-Verteilung für eine Flotte von 50 Hosts:

Level 4 — Vollständiges PQC
2
Level 3 — Hybrid (X25519MLKEM768)
6
Level 2 — Nur klassisches ECDHE
35
Level 1 — TLS 1.0/1.1 oder RSA-KEX
7

// Dependency-Constraints

Der PQC-Scanner hat strikte Python-Dependency-Constraints wegen sslyzes gepinnter cryptography-Anforderung. Ein Verstoß führt zu stillen Build-Fehlern.

PaketErforderliche VersionGrund
sslyze≥ 6.1.0TLS 1.3-Gruppen-Enumeration, ML-KEM-Awareness
cryptography≥ 43.0.0, < 45sslyze 6.x Hard-Dependency — cryptography ≥ 45 bricht nassl-Build
nasslvon sslyze gepinntOpenSSL-Bindings für sslyze-Cipher-Enumeration
openssl (System)≥ 3.2.0X25519MLKEM768-Gruppen-Support benötigt OpenSSL 3.2+ zur Laufzeit
# requirements.txt — cryptography-Version NICHT ändern cryptography>=43.0.0,<45 # sslyze 6.x Constraint — cryptography>=46 bricht nassl sslyze>=6.1.0 # openssl muss >= 3.2.0 auf dem Host sein für ML-KEM-Gruppen-Erkennung

// PQC Trend-Tracking

YADS speichert tägliche PQC-Readiness-Scores pro Ziel in der PQCTrend-Tabelle — für flotten-weites Fortschritts-Tracking während Organisationen auf Post-Quanten-Algorithmen migrieren.

Modell-FeldTypBeschreibung
target_idFK → TargetZiel, zu dem dieser Trend-Eintrag gehört
tenant_idFK → TenantTenant-Isolation
dateDateTag der Aggregation (UTC)
pqc_scoreFloat 0–4Readiness-Level an diesem Tag
hybrid_portsJSONDict Port → KEX-Gruppe für Hybrid-aktivierte Ports
pqc_cert_sigStringPQC-Zertifikat-Signatur-Algorithmus wenn erkannt, sonst null

Trend-Daten speisen das PQC-Dashboard unter /pqc/report mit einem Chart.js Dual-Axis-Diagramm: linke Achse = Host-Anzahl pro Level, rechte Achse = flotten-durchschnittlicher PQC-Score. Endpoint GET /pqc/trend/data gibt 90-Tage-Historie gruppiert nach Datum zurück.