~~NOTOC~~ ====== 1. PKI-Infrastruktur aufbauen ====== **Szenarien:** 6 \\ **FFI-Funktionen:** ~45 \\ **Status:** ⏳ Geplant Diese Kategorie umfasst alle Szenarien zum Aufbau und zur Verwaltung einer Post-Quantum-fähigen Public Key Infrastructure (PKI). Von der Erstellung einer Root-CA über mehrstufige CA-Hierarchien bis hin zur Konfiguration von Revocation-Diensten (CRL/OCSP). ---- ===== Szenarien ===== ^ ID ^ Szenario ^ Beschreibung ^ Komplexität ^ Status ^ | [[.:root_ca_erstellen|1.1]] | Root-CA erstellen | Selbstsignierte Root-CA mit ML-DSA-65 | ⭐⭐⭐⭐ | ⏳ | | [[.:intermediate_ca_erstellen|1.2]] | Intermediate-CA erstellen | Untergeordnete CA von Root signiert | ⭐⭐⭐ | ⏳ | | [[.:ca_hierarchie_aufbauen|1.3]] | CA-Hierarchie aufbauen | Mehrstufige PKI-Struktur | ⭐⭐⭐⭐ | ⏳ | | [[.:trust_store_konfigurieren|1.4]] | Trust Store konfigurieren | Vertrauenswürdige CAs verwalten | ⭐⭐ | ⏳ | | [[.:certificate_policy_definieren|1.5]] | Certificate Policy definieren | Ausstellungsrichtlinien festlegen | ⭐⭐⭐ | ⏳ | | [[.:crl_ocsp_infrastruktur|1.6]] | CRL/OCSP-Infrastruktur | Revocation-Dienste einrichten | ⭐⭐⭐⭐ | ⏳ | ---- ===== Architektur-Übersicht ===== flowchart TB subgraph ROOT["🔐 Root-CA (Szenario 1.1)"] R[("Root-CA
ML-DSA-65/87
20 Jahre")] end subgraph INTERMEDIATE["📜 Intermediate-CAs (Szenario 1.2)"] I1["Intermediate-CA
Server
10 Jahre"] I2["Intermediate-CA
Client
10 Jahre"] I3["Intermediate-CA
CodeSign
10 Jahre"] end subgraph ENDENTITY["🎫 End-Entity-Zertifikate"] E1["Server-Certs
TLS/HTTPS"] E2["Client-Certs
mTLS/Auth"] E3["CodeSign-Certs
Signierung"] end R -->|signiert| I1 R -->|signiert| I2 R -->|signiert| I3 I1 -->|ausstellt| E1 I2 -->|ausstellt| E2 I3 -->|ausstellt| E3 subgraph TRUST["🛡️ Trust Store (Szenario 1.4)"] T1["Root-CA Zertifikate"] T2["Cross-Zertifikate"] end subgraph REVOCATION["🚫 Revocation (Szenario 1.6)"] CRL["CRL Distribution Points"] OCSP["OCSP Responder"] end R -.->|publiziert| TRUST I1 & I2 & I3 -.->|veröffentlicht| CRL I1 & I2 & I3 -.->|antwortet| OCSP
---- ===== Branchenspezifische Anforderungen ===== Je nach Branche gelten unterschiedliche Anforderungen an PKI-Lebensdauern und Compliance: ^ Branche ^ Root-CA Gültigkeit ^ Besonderheiten ^ Regulierung ^ | **Energie/SCADA** | 25 Jahre | WKA-Lebensdauer, Offline-CRL | NIS2((NIS2-Richtlinie (EU) 2022/2555: https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32022L2555)), KRITIS-VO | | **Healthcare** | 20 Jahre | gematik-OIDs, ePA-kompatibel | DSGVO Art. 32, DiGAV | | **Automotive** | 30 Jahre | V2X-PKI, Pseudonym-Zertifikate | UN R155((UNECE R155: https://unece.org/transport/documents/2021/03/standards/un-regulation-no-155-cyber-security-and-cyber-security)), ISO 21434 | | **Industrie 4.0** | 20 Jahre | OT/IT-Trennung, IEC 62443 | NIS2, Maschinenverordnung | | **Standard IT** | 15 Jahre | Übliche Enterprise-PKI | BSI IT-Grundschutz | ---- ===== Schlüsseltypen für CAs ===== ^ CA-Typ ^ Empfohlener Algorithmus ^ Gültigkeit ^ Begründung ^ | Root-CA | ML-DSA-65 oder ML-DSA-87 | 15-25 Jahre | Höchste Sicherheit, selten verwendet | | Intermediate-CA | ML-DSA-65 | 8-12 Jahre | Balance Sicherheit/Performance | | OCSP-Responder | ML-DSA-44 | 1-3 Jahre | Häufige Signierung, Performance kritisch | **Hybrid-Empfehlung:** Für Übergangsphase können Hybrid-Schlüssel (ECDSA P-384 + ML-DSA-65) verwendet werden, um Kompatibilität mit klassischen Systemen zu gewährleisten. ---- ===== Wichtige Extensions für CA-Zertifikate ===== ==== Root-CA ==== ^ Extension ^ Wert ^ Critical ^ | Basic Constraints | CA=true, pathLen=1 oder 2 | ✅ Ja | | Key Usage | keyCertSign, cRLSign | ✅ Ja | | Subject Key Identifier | SHA-256(publicKey) | ❌ Nein | ==== Intermediate-CA ==== ^ Extension ^ Wert ^ Critical ^ | Basic Constraints | CA=true, pathLen=0 | ✅ Ja | | Key Usage | keyCertSign, cRLSign | ✅ Ja | | Subject Key Identifier | SHA-256(publicKey) | ❌ Nein | | Authority Key Identifier | SKI der Root-CA | ❌ Nein | | CRL Distribution Points | URL zur CRL | ❌ Nein | | Authority Info Access | OCSP URL, CA Issuers URL | ❌ Nein | | Certificate Policies | Policy OID | ❌ Nein | ---- ===== Sicherheitshinweise ===== **Kritische Anforderungen für CA-Betrieb:** * **Root-CA Private Key:** Offline speichern (Air-Gapped HSM oder verschlüsselter USB-Stick im Tresor) * **Intermediate-CA Private Key:** HSM oder stark verschlüsselt mit Hardware-Token * **Passwörter:** Mindestens 20 Zeichen, hohe Entropie, sicher verwahrt * **Audit-Logging:** Alle CA-Operationen protokollieren * **Backup:** Verschlüsselte Backups an getrennten Standorten * **Key Ceremony:** Dokumentierter Prozess für Root-CA-Operationen **Niemals:** * Root-CA Private Key auf vernetzten Systemen speichern * CA-Passwörter im Klartext in Skripten/Configs * CA-Zertifikate ohne pathLength-Beschränkung ausstellen * Selbstsignierte End-Entity-Zertifikate in Produktion verwenden ---- ===== Typischer Workflow ===== flowchart TB subgraph P1["1️⃣ VORBEREITUNG"] V1["Air-Gapped System vorbereiten"] V2["Certificate Policy dokumentieren"] V3["DN-Struktur festlegen"] V4["Gültigkeitszeiträume planen"] end subgraph P2["2️⃣ ROOT-CA ERSTELLEN"] R1["ML-DSA-65/87 Schlüsselpaar"] R2["Selbstsigniertes Zertifikat"] R3["Private Key verschlüsseln"] R4["Root-Zertifikat exportieren"] end subgraph P3["3️⃣ INTERMEDIATE-CA"] I1["ML-DSA-65 Schlüsselpaar"] I2["CSR erstellen"] I3["Root signiert Zertifikat"] I4["Online deployen"] end subgraph P4["4️⃣ TRUST & REVOCATION"] T1["Trust Stores konfigurieren"] T2["CRL Distribution Points"] T3["OCSP-Responder"] T4["Erste CRL publizieren"] end subgraph P5["5️⃣ BETRIEB"] B1["Zertifikate ausstellen"] B2["CRLs aktualisieren"] B3["OCSP-Responses"] B4["Audit-Logs überwachen"] end P1 ==> P2 ==> P3 ==> P4 ==> P5 style P1 fill:#e3f2fd style P2 fill:#e8f5e9 style P3 fill:#fff8e1 style P4 fill:#fce4ec style P5 fill:#f3e5f5 ---- ===== Code-Schnellstart ===== ==== Minimales Beispiel: Root-CA erstellen (C#) ==== using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; using var ctx = PqCryptoContext.Initialize(); // Root-CA mit ML-DSA-65 using var rootKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65); var rootDn = new DnBuilder().AddCN("My Root CA").AddO("My Org").AddC("DE").Build(); using var rootCert = ctx.CreateRootCertificate(rootKey, rootDn, validYears: 20, extensions: new ExtBuilder() .BasicConstraints(ca: true, pathLen: 1) .KeyUsage(KeyUsageFlags.KeyCertSign | KeyUsageFlags.CrlSign) .SubjectKeyIdentifier(rootKey) .Build() ); // Speichern File.WriteAllText("root-ca.crt.pem", rootCert.ToPem()); File.WriteAllText("root-ca.key.pem", rootKey.ToEncryptedPem("SecurePassword123!")); → //Vollständiges Beispiel:// [[.:root_ca_erstellen|Szenario 1.1]] ---- ===== Verwandte Kategorien ===== ^ Kategorie ^ Beziehung ^ | [[de:int:pqcrypt:szenarien:csr:start|2. CSR]] | CSR-Erstellung für Intermediate-CAs | | [[de:int:pqcrypt:szenarien:zertifikate:start|3. Zertifikate ausstellen]] | End-Entity-Zertifikate von CA signieren | | [[de:int:pqcrypt:szenarien:validierung:start|5. Validierung]] | Zertifikate gegen Trust Store validieren | | [[de:int:pqcrypt:szenarien:widerruf:start|6. Widerruf]] | CRL/OCSP-Operationen | | [[de:int:pqcrypt:szenarien:schluessel:start|11. Schlüsselmanagement]] | CA-Schlüssel verwalten, rotieren, vernichten | ---- << [[de:int:pqcrypt:szenarien:start|← Szenarien-Übersicht]] | [[.:root_ca_erstellen|1.1 Root-CA erstellen →]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>kategorie pki root-ca intermediate-ca trust-store crl ocsp}}