Cerimonia delle chiavi

Scopo: Generazione sicura e verificabile delle chiavi CA
Partecipanti: Minimo 3-4 persone (controllo condiviso)
Durata: 2-4 ore

Procedura formale per la generazione delle chiavi CA con responsabilità condivisa e traccia di audit.


Perché la cerimonia delle chiavi?

Motivo Descrizione
——–————-
Compliance ISO 27001, BSI-Grundschutz, WebTrust
Controllo condiviso Nessuno ha accesso completo individualmente
Verificabilità Processo documentato e verificabile
Integrità Prova di corretta generazione della chiave

Ruoli

flowchart LR subgraph ROLES["👥 RUOLI"] R1[Ceremony Lead] R2[Crypto Officer 1] R3[Crypto Officer 2] R4[Auditor/Testimone] end subgraph KEYS["🔑 CHIAVI"] K1[PIN Admin HSM] K2[PIN Partizione] K3[Smartcard 1] K4[Smartcard 2] end R1 --> K1 R2 --> K2 & K3 R3 --> K4 R4 -.->|Osserva| R1 & R2 & R3

Ruolo Responsabilità Min. numero
——-—————-————-
Ceremony Lead Guida il processo, documenta 1
Crypto Officer Detiene Key Share, esegue azioni 2+
Auditor/Testimone Osserva, firma protocollo 1
IT Security Approva, supervisiona compliance 1 (opzionale)

Preparazione

Checklist 24h prima

# Attività Responsabile
———-————–
1 Prenotare sala (senza finestre, CCTV) Ceremony Lead
2 Preparare HSM/Sistema Air-Gap IT
3 Partecipanti confermati Lead
4 Preparare smartcard/chiavette USB Lead
5 Stampare template protocollo Lead
6 Organizzare fotografo/video (opzionale) Lead

Materiale

  • Laptop Air-Gap o HSM
  • Smartcard per Key Share
  • Chiavette USB (nuove, sigillate)
  • Fotocamera per documentazione
  • Buste Tamper-Evident
  • Moduli protocollo
  • Penne (non cancellabili)

Svolgimento della cerimonia

Fase 1: Apertura (15 min)

1. Identificare tutti i partecipanti (verificare documento)
2. Avviare protocollo con:
   - Data, ora, luogo
   - Tutti i presenti (nome, ruolo, firma)
3. Consegnare telefoni cellulari
4. Spiegare scopo della cerimonia
5. Confermare ruoli

Fase 2: Verifica hardware (30 min)

# Verifica sistema Air-Gap
# 1. Rete disattivata?
ip link show  # Nessuna interfaccia attiva
 
# 2. Verifica log boot BIOS
dmesg | grep -i network
 
# 3. Verifica stato HSM (se utilizzato)
/opt/hsm/bin/status
# Risultato atteso: Non inizializzato o Pronto

Fase 3: Generazione chiavi (60 min)

#!/bin/bash
# key-ceremony-generate.sh
 
echo "=== GENERAZIONE CHIAVE ROOT CA ==="
echo "Data: $(date -Iseconds)"
echo "Sistema: $(hostname)"
 
# 1. Verifica qualità entropia
echo ""
echo "--- Verifica entropia ---"
cat /proc/sys/kernel/random/entropy_avail
# Risultato atteso: > 3000
 
# 2. Generazione chiave Root-CA
echo ""
echo "--- Generazione chiave ---"
 
# ECDSA P-384 (Classico)
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) - se 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: Generato"
else
    echo "ML-DSA-87: Non disponibile (OpenSSL < 3.6)"
fi
 
# 3. Protocollare fingerprint chiavi
echo ""
echo "--- Fingerprint chiavi ---"
openssl ec -in root-ca-ecdsa.key -pubout -outform DER 2>/dev/null | sha256sum
# Protocollare: SHA256 = ...
 
# 4. Creazione CSR (per Cross-Certification o Self-Signed)
echo ""
echo "--- Generazione CSR ---"
openssl req -new -key root-ca-ecdsa.key \
    -out root-ca.csr \
    -subj "/CN=Example Organization Root CA/O=Example Organization/C=DE"
 
# 5. Creazione Root Self-Signed
echo ""
echo "--- Certificato Self-Signed ---"
openssl x509 -req -in root-ca.csr \
    -signkey root-ca-ecdsa.key \
    -out root-ca.pem \
    -days 9125 \
    -extfile root-ca.ext \
    -sha384
 
# Verifica certificato
openssl x509 -in root-ca.pem -text -noout | head -30

Fase 4: Suddivisione chiave (30 min)

# Shamir Secret Sharing
echo "=== SUDDIVISIONE CHIAVE ==="
 
# 5 share, 3 necessari per il ripristino
cat root-ca-ecdsa.key | ssss-split -t 3 -n 5 -w root-ca-share
 
# Scrivere share su smartcard/USB
for i in 1 2 3 4 5; do
    echo "Share $i → Smartcard/USB $i"
    # cp root-ca-share-$i /mnt/smartcard-$i/
done
 
# Cancellazione sicura chiave originale
shred -vfz -n 3 root-ca-ecdsa.key
rm root-ca-ecdsa.key

Fase 5: Verifica (20 min)

# 1. Il certificato può firmare?
echo "Test firma..."
echo "test" | openssl dgst -sha384 -sign root-ca-ecdsa.key 2>/dev/null && echo "OK"
 
# 2. Key Share combinabili?
ssss-combine -t 3 << EOF
<Share-1>
<Share-2>
<Share-3>
EOF > /tmp/restored.key
 
# Confronto
diff <(openssl ec -in /tmp/restored.key -pubout) <(openssl ec -in root-ca-ecdsa.key -pubout)

Fase 6: Custodia (15 min)

1. Sigillare Key Share in buste Tamper-Evident
2. Ogni Crypto Officer riceve il proprio share
3. Share di backup in cassaforte/i
4. Protocollare numeri di serie delle buste
5. Raccogliere firme di consegna

Fase 7: Chiusura (15 min)

1. Cancellazione sicura di tutti i file temporanei
   shred -vfz -n 3 /tmp/*.key /tmp/*.pem

2. Spegnere sistema (Air-Gap)

3. Completare protocollo:
   - Ora di fine
   - Tutte le firme
   - Indice foto/video

4. Sigillare e archiviare protocollo

Template protocollo

PROTOCOLLO CERIMONIA CHIAVI
===========================

ID-Cerimonia: KC-2024-001
Data: ________________
Inizio: _______ Fine: _______
Luogo: ____________________________

PARTECIPANTI:
| Nome | Ruolo | N. ID | Firma |
|------|-------|-------|-------|
|      |       |       |       |
|      |       |       |       |
|      |       |       |       |
|      |       |       |       |

DETTAGLI CHIAVE:
- Algoritmo: ECDSA P-384 / ML-DSA-87
- Key-ID: _______________
- Hash chiave pubblica (SHA256): ______________________
- Seriale certificato: _______________
- Validità: _______ fino a _______

KEY SHARE:
| Share | N. Busta | Depositario | Firma consegna |
|-------|----------|-------------|----------------|
| 1     |          |             |                |
| 2     |          |             |                |
| 3     |          |             |                |
| 4     |          |             |                |
| 5     |          |             |                |

VERIFICA:
[ ] Entropia > 3000
[ ] Chiave generata con successo
[ ] Certificato self-signed
[ ] Key Share creati (3-of-5)
[ ] Share verificati
[ ] Chiave originale cancellata
[ ] Share distribuiti e sigillati

CHIUSURA:
[ ] File temporanei cancellati
[ ] Sistema spento
[ ] Protocollo completo

_______________________________
Firma Ceremony Lead

_______________________________
Firma Auditor/Testimone

Cerimonia chiavi HSM

# Luna HSM Key Ceremony
/usr/safenet/lunaclient/bin/lunacm << 'EOF'
 
# Creazione partizione
partition create -label "Root-CA"
 
# Generazione chiave
partition contents -slot 0
generateKeyPair -keyType ECDSA -curvetype secp384r1 -label "root-ca-2024"
 
# Creazione backup
partition backup -serialNumber <HSM-Serial>
 
EOF

Checklist

# Punto di verifica
——————-
1 Almeno 3 persone presenti
2 Identità verificate
3 Sistema Air-Gap verificato
4 Entropia sufficiente
5 Chiave generata
6 Share creati e distribuiti
7 Share verificati
8 Chiave originale cancellata in sicurezza
9 Protocollo firmato
10 Protocollo archiviato

Documentazione correlata


« ← Backup/Restore CA | → Revoca di emergenza »


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

Zuletzt geändert: il 30/01/2026 alle 01:32