Zweck: Sichere, auditierbare Generierung von CA-Schlüsseln
Teilnehmer: Mindestens 3-4 Personen (geteilte Kontrolle)
Dauer: 2-4 Stunden
Formales Verfahren zur Generierung von CA-Schlüsseln mit geteilter Verantwortung und Audit-Trail.
| Grund | Beschreibung |
| ——- | ————– |
| Compliance | ISO 27001, BSI-Grundschutz, WebTrust |
| Geteilte Kontrolle | Kein Einzelner hat vollständigen Zugriff |
| Auditierbarkeit | Dokumentierter, überprüfbarer Prozess |
| Integrität | Nachweis korrekter Schlüsselgenerierung |
| Rolle | Verantwortung | Min. Anzahl |
| ——- | ————— | ————- |
| Ceremony Lead | Leitet Prozess, dokumentiert | 1 |
| Crypto Officer | Hält Key Share, führt Aktionen aus | 2+ |
| Auditor/Witness | Beobachtet, signiert Protokoll | 1 |
| IT Security | Genehmigt, überwacht Compliance | 1 (optional) |
| # | Aufgabe | Verantwortlich | ✓ |
| — | ——— | —————- | — |
| 1 | Raum reservieren (keine Fenster, CCTV) | Ceremony Lead | ☐ |
| 2 | HSM/Air-Gap-System vorbereiten | IT | ☐ |
| 3 | Teilnehmer bestätigt | Lead | ☐ |
| 4 | Smartcards/USB-Sticks bereitstellen | Lead | ☐ |
| 5 | Protokoll-Vorlage drucken | Lead | ☐ |
| 6 | Fotografen/Video organisieren (optional) | Lead | ☐ |
1. Alle Teilnehmer identifizieren (Ausweis prüfen) 2. Protokoll starten mit: - Datum, Uhrzeit, Ort - Alle Anwesenden (Name, Rolle, Unterschrift) 3. Mobiltelefone abgeben 4. Zweck der Ceremony erklären 5. Rollen bestätigen
# Air-Gap-System prüfen # 1. Netzwerk deaktiviert? ip link show # Keine aktiven Interfaces # 2. BIOS-Boot-Log prüfen dmesg | grep -i network # 3. HSM-Status prüfen (falls verwendet) /opt/hsm/bin/status # Erwartetes Ergebnis: Uninitialisiert oder Ready
#!/bin/bash # key-ceremony-generate.sh echo "=== ROOT CA KEY GENERATION ===" echo "Datum: $(date -Iseconds)" echo "System: $(hostname)" # 1. Entropy-Qualität prüfen echo "" echo "--- Entropy Check ---" cat /proc/sys/kernel/random/entropy_avail # Erwartetes Ergebnis: > 3000 # 2. Root-CA Schlüssel generieren echo "" echo "--- Key Generation ---" # ECDSA P-384 (Klassisch) openssl ecparam -genkey -name secp384r1 -noout -out root-ca-ecdsa.key echo "ECDSA P-384: $(openssl ec -in root-ca-ecdsa.key -text -noout 2>&1 | head -1)" # ML-DSA-87 (Post-Quantum) - falls OpenSSL 3.6+ openssl genpkey -algorithm ML-DSA-87 -out root-ca-mldsa.key 2>/dev/null if [ $? -eq 0 ]; then echo "ML-DSA-87: Generated" else echo "ML-DSA-87: Not available (OpenSSL < 3.6)" fi # 3. Key-Fingerprints protokollieren echo "" echo "--- Key Fingerprints ---" openssl ec -in root-ca-ecdsa.key -pubout -outform DER 2>/dev/null | sha256sum # Protokollieren: SHA256 = ... # 4. CSR erstellen (für Cross-Certification oder Self-Signed) echo "" echo "--- CSR Generation ---" openssl req -new -key root-ca-ecdsa.key \ -out root-ca.csr \ -subj "/CN=Example Organization Root CA/O=Example Organization/C=DE" # 5. Self-Signed Root erstellen echo "" echo "--- Self-Signed Certificate ---" openssl x509 -req -in root-ca.csr \ -signkey root-ca-ecdsa.key \ -out root-ca.pem \ -days 9125 \ -extfile root-ca.ext \ -sha384 # Zertifikat prüfen openssl x509 -in root-ca.pem -text -noout | head -30
# Shamir Secret Sharing echo "=== KEY SPLIT ===" # 5 Shares, 3 benötigt zur Wiederherstellung cat root-ca-ecdsa.key | ssss-split -t 3 -n 5 -w root-ca-share # Shares auf Smartcards/USB schreiben for i in 1 2 3 4 5; do echo "Share $i → Smartcard/USB $i" # cp root-ca-share-$i /mnt/smartcard-$i/ done # Original-Key sicher löschen shred -vfz -n 3 root-ca-ecdsa.key rm root-ca-ecdsa.key
# 1. Zertifikat kann signieren? echo "Test-Signatur..." echo "test" | openssl dgst -sha384 -sign root-ca-ecdsa.key 2>/dev/null && echo "OK" # 2. Key Shares kombinierbar? ssss-combine -t 3 << EOF <Share-1> <Share-2> <Share-3> EOF > /tmp/restored.key # Vergleich diff <(openssl ec -in /tmp/restored.key -pubout) <(openssl ec -in root-ca-ecdsa.key -pubout)
1. Key Shares in Tamper-Evident-Bags versiegeln 2. Jeder Crypto Officer erhält seinen Share 3. Backup-Shares in Safe(s) 4. Seriennummern der Bags protokollieren 5. Übergabe-Unterschriften sammeln
1. Alle temporären Dateien sicher löschen shred -vfz -n 3 /tmp/*.key /tmp/*.pem 2. System herunterfahren (Air-Gap) 3. Protokoll vervollständigen: - Ende-Uhrzeit - Alle Unterschriften - Foto-/Video-Index 4. Protokoll versiegeln und archivieren
KEY CEREMONY PROTOCOL ===================== Ceremony-ID: KC-2024-001 Datum: ________________ Beginn: _______ Ende: _______ Ort: ____________________________ TEILNEHMER: | Name | Rolle | ID-Nr. | Unterschrift | |------|-------|--------|--------------| | | | | | | | | | | | | | | | | | | | | SCHLÜSSEL-DETAILS: - Algorithmus: ECDSA P-384 / ML-DSA-87 - Key-ID: _______________ - Public Key Hash (SHA256): ______________________ - Zertifikats-Serial: _______________ - Gültigkeit: _______ bis _______ KEY SHARES: | Share | Bag-Nr. | Treuhänder | Übergabe-Unterschrift | |-------|---------|------------|----------------------| | 1 | | | | | 2 | | | | | 3 | | | | | 4 | | | | | 5 | | | | VERIFIKATION: [ ] Entropy > 3000 [ ] Key erfolgreich generiert [ ] Zertifikat selbst-signiert [ ] Key Shares erstellt (3-of-5) [ ] Shares verifiziert [ ] Original-Key gelöscht [ ] Shares verteilt und versiegelt ABSCHLUSS: [ ] Temporäre Dateien gelöscht [ ] System heruntergefahren [ ] Protokoll vollständig _______________________________ Ceremony Lead Unterschrift _______________________________ Auditor/Witness Unterschrift
# Luna HSM Key Ceremony /usr/safenet/lunaclient/bin/lunacm << 'EOF' # Partition erstellen partition create -label "Root-CA" # Key generieren partition contents -slot 0 generateKeyPair -keyType ECDSA -curvetype secp384r1 -label "root-ca-2024" # Backup erstellen partition backup -serialNumber <HSM-Serial> EOF
| # | Prüfpunkt | ✓ |
| — | ———– | — |
| 1 | Mindestens 3 Personen anwesend | ☐ |
| 2 | Identitäten verifiziert | ☐ |
| 3 | Air-Gap-System geprüft | ☐ |
| 4 | Entropy ausreichend | ☐ |
| 5 | Schlüssel generiert | ☐ |
| 6 | Shares erstellt und verteilt | ☐ |
| 7 | Shares verifiziert | ☐ |
| 8 | Original-Key sicher gelöscht | ☐ |
| 9 | Protokoll unterschrieben | ☐ |
| 10 | Protokoll archiviert | ☐ |
« ← CA Backup/Restore | → Notfall-Revocation »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional