Inhaltsverzeichnis

Key Ceremony

Svrha: Sigurno, revizijsko generiranje CA ključeva
Sudionici: Minimalno 3-4 osobe (podijeljena kontrola)
Trajanje: 2-4 sata

Formalni postupak za generiranje CA ključeva s podijeljenom odgovornošću i revizijskim tragom.


Zašto Key Ceremony?

Razlog Opis
——–——
Usklađenost ISO 27001, BSI-Grundschutz, WebTrust
Podijeljena kontrola Nitko nema potpuni pristup
Revizijska sposobnost Dokumentirani, provjerljivi proces
Integritet Dokaz ispravnog generiranja ključeva

Uloge

flowchart LR subgraph ROLES["ULOGE"] R1[Voditelj ceremonije] R2[Crypto Officer 1] R3[Crypto Officer 2] R4[Revizor/Svjedok] end subgraph KEYS["KLJUČEVI"] K1[HSM Admin PIN] K2[Partition PIN] K3[Smartcard 1] K4[Smartcard 2] end R1 --> K1 R2 --> K2 & K3 R3 --> K4 R4 -.->|Promatra| R1 & R2 & R3

Uloga Odgovornost Min. broj
——-————-———–
Voditelj ceremonije Vodi proces, dokumentira 1
Crypto Officer Drži Key Share, izvršava akcije 2+
Revizor/Svjedok Promatra, potpisuje zapisnik 1
IT Security Odobrava, nadzire usklađenost 1 (opciono)

Priprema

Kontrolna lista 24h prije

# Zadatak Odgovoran Gotovo
——————–——–
1 Rezervirati prostoriju (bez prozora, CCTV) Voditelj
2 Pripremiti HSM/Air-Gap sustav IT
3 Sudionici potvrđeni Voditelj
4 Pripremiti Smartcards/USB-ove Voditelj
5 Ispisati predložak zapisnika Voditelj
6 Organizirati fotografa/video (opciono) Voditelj

Materijal


Tijek ceremonije

Faza 1: Otvaranje (15 Min)

1. Identificirati sve sudionike (provjera osobne iskaznice)
2. Započeti zapisnik s:
   - Datum, vrijeme, mjesto
   - Svi prisutni (ime, uloga, potpis)
3. Predati mobitele
4. Objasniti svrhu ceremonije
5. Potvrditi uloge

Faza 2: Verifikacija hardvera (30 Min)

# Provjera Air-Gap sustava
# 1. Mreža deaktivirana?
ip link show  # Nema aktivnih sučelja
 
# 2. Provjera BIOS-boot-loga
dmesg | grep -i network
 
# 3. Provjera statusa HSM (ako se koristi)
/opt/hsm/bin/status
# Očekivani rezultat: Uninitialized ili Ready

Faza 3: Generiranje ključeva (60 Min)

#!/bin/bash
# key-ceremony-generate.sh
 
echo "=== GENERIRANJE ROOT CA KLJUČA ==="
echo "Datum: $(date -Iseconds)"
echo "Sustav: $(hostname)"
 
# 1. Provjera kvalitete entropije
echo ""
echo "--- Provjera entropije ---"
cat /proc/sys/kernel/random/entropy_avail
# Očekivani rezultat: > 3000
 
# 2. Generiranje Root-CA ključa
echo ""
echo "--- Generiranje ključa ---"
 
# ECDSA P-384 (klasični)
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) - ako je 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: Generirano"
else
    echo "ML-DSA-87: Nije dostupno (OpenSSL < 3.6)"
fi
 
# 3. Zapisivanje Key-Fingerprints
echo ""
echo "--- Key Fingerprints ---"
openssl ec -in root-ca-ecdsa.key -pubout -outform DER 2>/dev/null | sha256sum
# Zapisati: SHA256 = ...
 
# 4. Stvaranje CSR-a
echo ""
echo "--- Generiranje CSR-a ---"
openssl req -new -key root-ca-ecdsa.key \
    -out root-ca.csr \
    -subj "/CN=Example Organization Root CA/O=Example Organization/C=HR"
 
# 5. Stvaranje samopotpisanog Root certifikata
echo ""
echo "--- Samopotpisani certifikat ---"
openssl x509 -req -in root-ca.csr \
    -signkey root-ca-ecdsa.key \
    -out root-ca.pem \
    -days 9125 \
    -extfile root-ca.ext \
    -sha384
 
# Provjera certifikata
openssl x509 -in root-ca.pem -text -noout | head -30

Faza 4: Podjela ključa (30 Min)

# Shamir Secret Sharing
echo "=== PODJELA KLJUČA ==="
 
# 5 Shares, 3 potrebna za vraćanje
cat root-ca-ecdsa.key | ssss-split -t 3 -n 5 -w root-ca-share
 
# Zapisivanje Shares na Smartcards/USB
for i in 1 2 3 4 5; do
    echo "Share $i -> Smartcard/USB $i"
done
 
# Sigurno brisanje originalnog ključa
shred -vfz -n 3 root-ca-ecdsa.key
rm root-ca-ecdsa.key

Faza 5: Verifikacija (20 Min)

# 1. Može li certifikat potpisati?
echo "Test potpisa..."
echo "test" | openssl dgst -sha384 -sign root-ca-ecdsa.key 2>/dev/null && echo "OK"
 
# 2. Mogu li se Key Shares kombinirati?
ssss-combine -t 3 << EOF
<Share-1>
<Share-2>
<Share-3>
EOF > /tmp/restored.key

Faza 6: Pohrana (15 Min)

1. Zapečatiti Key Shares u Tamper-Evident vrećice
2. Svaki Crypto Officer dobiva svoj Share
3. Backup Shares u sef(ove)
4. Zapisati serijske brojeve vrećica
5. Prikupiti potpise primopredaje

Faza 7: Zatvaranje (15 Min)

1. Sigurno obrisati sve privremene datoteke
   shred -vfz -n 3 /tmp/*.key /tmp/*.pem

2. Isključiti sustav (Air-Gap)

3. Završiti zapisnik:
   - Završno vrijeme
   - Svi potpisi
   - Indeks fotografija/videa

4. Zapečatiti i arhivirati zapisnik

Predložak zapisnika

ZAPISNIK KEY CEREMONY
=====================

ID ceremonije: KC-2024-001
Datum: ________________
Početak: _______ Završetak: _______
Mjesto: ____________________________

SUDIONICI:
| Ime | Uloga | ID br. | Potpis |
|-----|-------|--------|--------|
|     |       |        |        |
|     |       |        |        |
|     |       |        |        |

DETALJI KLJUČA:
- Algoritam: ECDSA P-384 / ML-DSA-87
- Key-ID: _______________
- Hash javnog ključa (SHA256): ______________________
- Serijski broj certifikata: _______________
- Valjanost: _______ do _______

KEY SHARES:
| Share | Br. vrećice | Povjerenik | Potpis primopredaje |
|-------|-------------|------------|---------------------|
| 1     |             |            |                     |
| 2     |             |            |                     |
| 3     |             |            |                     |
| 4     |             |            |                     |
| 5     |             |            |                     |

VERIFIKACIJA:
[ ] Entropija > 3000
[ ] Ključ uspješno generiran
[ ] Certifikat samopotpisan
[ ] Key Shares stvoreni (3-of-5)
[ ] Shares verificirani
[ ] Originalni ključ obrisan
[ ] Shares distribuirani i zapečaćeni

ZATVARANJE:
[ ] Privremene datoteke obrisane
[ ] Sustav isključen
[ ] Zapisnik potpun

_______________________________
Voditelj ceremonije - Potpis

_______________________________
Revizor/Svjedok - Potpis

Kontrolna lista

# Točka provjere Gotovo
—————-——–
1 Minimalno 3 osobe prisutne
2 Identiteti verificirani
3 Air-Gap sustav provjeren
4 Dovoljna entropija
5 Ključ generiran
6 Shares stvoreni i distribuirani
7 Shares verificirani
8 Originalni ključ sigurno obrisan
9 Zapisnik potpisan
10 Zapisnik arhiviran

Povezana dokumentacija


« <- CA Backup/Restore | -> Hitni opoziv »


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