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.
// 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.
| Stufe | Tool | Extrahierte Daten | Fallback-Bedingung |
|---|---|---|---|
| 1 | Nmap ssl-enum-ciphers | Cipher Suites, TLS-Version, KEX-Gruppenname | Nmap nicht verfügbar oder Ziel blockiert Probes |
| 2 | sslyze 6.x | Akzeptierte Cipher Suites, ECDHE-Gruppen, TLS 1.3 Key-Share-Gruppen | sslyze-Timeout oder TLS-Alert |
| 3 | openssl s_client | Parst Server Temp Key: Zeile — extrahiert KEX-Gruppe verbatim | openssl nicht verfügbar |
| 4 | Python ssl stdlib | Cipher-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 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.
| Score | Level | KEX-Bedingung | Zertifikat-Bedingung |
|---|---|---|---|
| 4 — Bereit | Vollständiges PQC | ML-KEM-768 oder höher (FIPS 203, nicht-hybrid) | ML-DSA oder SLH-DSA Zertifikat-Signatur |
| 3 — Hybrid | Transitional | X25519MLKEM768 oder äquivalente Hybrid-Gruppe erkannt | Klassisches Zertifikat akzeptabel (Hybrid-KEX schützt den Schlüsselaustausch) |
| 2 — Klassisch | Verwundbar | Nur ECDHE oder DHE — keine PQC-KEX-Gruppe advertised oder gewählt | Beliebiges klassisches Zertifikat (RSA/EC) |
| 1 — Veraltet | Kritisch | TLS 1.0/1.1 oder statischer RSA-Schlüsselaustausch | SHA-1- oder MD5-signiertes Zertifikat |
| 0 — Nicht gescannt | Unbekannt | Port geschlossen, TLS-Alert oder Timeout bei allen 4 Probe-Stufen | N/A |
Beispiel Readiness-Verteilung für eine Flotte von 50 Hosts:
// Dependency-Constraints
Der PQC-Scanner hat strikte Python-Dependency-Constraints wegen sslyzes gepinnter cryptography-Anforderung. Ein Verstoß führt zu stillen Build-Fehlern.
| Paket | Erforderliche Version | Grund |
|---|---|---|
| sslyze | ≥ 6.1.0 | TLS 1.3-Gruppen-Enumeration, ML-KEM-Awareness |
| cryptography | ≥ 43.0.0, < 45 | sslyze 6.x Hard-Dependency — cryptography ≥ 45 bricht nassl-Build |
| nassl | von sslyze gepinnt | OpenSSL-Bindings für sslyze-Cipher-Enumeration |
| openssl (System) | ≥ 3.2.0 | X25519MLKEM768-Gruppen-Support benötigt OpenSSL 3.2+ zur Laufzeit |
// 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-Feld | Typ | Beschreibung |
|---|---|---|
target_id | FK → Target | Ziel, zu dem dieser Trend-Eintrag gehört |
tenant_id | FK → Tenant | Tenant-Isolation |
date | Date | Tag der Aggregation (UTC) |
pqc_score | Float 0–4 | Readiness-Level an diesem Tag |
hybrid_ports | JSON | Dict Port → KEX-Gruppe für Hybrid-aktivierte Ports |
pqc_cert_sig | String | PQC-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.