Key Ceremony

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.


Warum Key Ceremony?

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

Rollen

flowchart LR subgraph ROLES["👥 ROLLEN"] R1[Ceremony Lead] R2[Crypto Officer 1] R3[Crypto Officer 2] R4[Auditor/Witness] end subgraph KEYS["🔑 SCHLÜSSEL"] K1[HSM Admin PIN] K2[Partition PIN] K3[Smartcard 1] K4[Smartcard 2] end R1 --> K1 R2 --> K2 & K3 R3 --> K4 R4 -.->|Beobachtet| R1 & R2 & R3

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)

Vorbereitung

Checkliste 24h vorher

# 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

Material

  • Air-Gap-Laptop oder HSM
  • Smartcards für Key Shares
  • USB-Sticks (neu, versiegelt)
  • Kamera für Dokumentation
  • Tamper-Evident-Bags
  • Protokoll-Formulare
  • Stifte (nicht löschbar)

Ceremony-Ablauf

Phase 1: Eröffnung (15 Min)

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

Phase 2: Hardware-Verifikation (30 Min)

# 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

Phase 3: Schlüsselgenerierung (60 Min)

#!/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

Phase 4: Key Split (30 Min)

# 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

Phase 5: Verifikation (20 Min)

# 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)

Phase 6: Verwahrung (15 Min)

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

Phase 7: Abschluss (15 Min)

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

Protokoll-Vorlage

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

HSM Key Ceremony

# 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

Checkliste

# 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

Verwandte Dokumentation


« ← CA Backup/Restore | → Notfall-Revocation »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: den 29.01.2026 um 15:13