Inhaltsverzeichnis

Ceremonija ključev

Namen: Varna, preverljiva generacija CA ključev
Udeleženci: Najmanj 3-4 osebe (deljena kontrola)
Trajanje: 2-4 ure

Formalni postopek za generacijo CA ključev z deljeno odgovornostjo in revizijsko sledjo.


Zakaj ceremonija ključev?

Razlog Opis
——–——
Skladnost ISO 27001, BSI-Grundschutz, WebTrust
Deljena kontrola Nihče nima popolnega dostopa
Preverljivost Dokumentiran, preverljiv proces
Integriteta Dokaz pravilne generacije ključev

Vloge

flowchart LR subgraph ROLES["VLOGE"] R1[Vodja ceremonije] R2[Kriptografski uradnik 1] R3[Kriptografski uradnik 2] R4[Revizor/priča] end subgraph KEYS["KLJUČI"] K1[HSM Admin PIN] K2[Partition PIN] K3[Pametna kartica 1] K4[Pametna kartica 2] end R1 --> K1 R2 --> K2 & K3 R3 --> K4 R4 -.->|Opazuje| R1 & R2 & R3

Vloga Odgovornost Min. število
——-————-————–
Vodja ceremonije Vodi proces, dokumentira 1
Kriptografski uradnik Ima delež ključa, izvaja akcije 2+
Revizor/priča Opazuje, podpiše zapisnik 1
IT varnost Odobri, nadzoruje skladnost 1 (opcijsko)

Priprava

Kontrolni seznam 24h prej

# Naloga Odgovoren
——–———–
1 Rezervacija prostora (brez oken, CCTV) Vodja ceremonije
2 Priprava HSM/sistema brez povezave IT
3 Udeleženci potrjeni Vodja
4 Priprava pametnih kartic/USB ključev Vodja
5 Tiskanje predloge zapisnika Vodja
6 Organizacija fotografa/videa (opcijsko) Vodja

Material


Potek ceremonije

Faza 1: Otvoritev (15 min)

1. Identifikacija vseh udeležencev (preverjanje osebnega dokumenta)
2. Začetek zapisnika z:
   - Datum, čas, kraj
   - Vsi prisotni (ime, vloga, podpis)
3. Oddaja mobilnih telefonov
4. Razlaga namena ceremonije
5. Potrditev vlog

Faza 2: Preverjanje strojne opreme (30 min)

# Preverjanje sistema brez povezave
# 1. Ali je omrežje deaktivirano?
ip link show  # Ni aktivnih vmesnikov
 
# 2. Preverjanje BIOS zagonskega dnevnika
dmesg | grep -i network
 
# 3. Preverjanje statusa HSM (če se uporablja)
/opt/hsm/bin/status
# Pričakovan rezultat: Neinicializiran ali Pripravljen

Faza 3: Generacija ključev (60 min)

#!/bin/bash
# key-ceremony-generate.sh
 
echo "=== GENERACIJA ROOT CA KLJUČA ==="
echo "Datum: $(date -Iseconds)"
echo "Sistem: $(hostname)"
 
# 1. Preverjanje kakovosti entropije
echo ""
echo "--- Preverjanje entropije ---"
cat /proc/sys/kernel/random/entropy_avail
# Pričakovan rezultat: > 3000
 
# 2. Generacija Root-CA ključa
echo ""
echo "--- Generacija ključa ---"
 
# ECDSA P-384 (klasično)
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-kvantno) - če 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: Generiran"
else
    echo "ML-DSA-87: Ni na voljo (OpenSSL < 3.6)"
fi
 
# 3. Zapisovanje prstnih odtisov ključev
echo ""
echo "--- Prstni odtisi ključev ---"
openssl ec -in root-ca-ecdsa.key -pubout -outform DER 2>/dev/null | sha256sum
# Zapisati: SHA256 = ...
 
# 4. Ustvarjanje CSR (za navzkrižno potrditev ali samopodpis)
echo ""
echo "--- Generacija 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. Ustvarjanje samopodpisanega Root
echo ""
echo "--- Samopodpisan certifikat ---"
openssl x509 -req -in root-ca.csr \
    -signkey root-ca-ecdsa.key \
    -out root-ca.pem \
    -days 9125 \
    -extfile root-ca.ext \
    -sha384
 
# Preverjanje certifikata
openssl x509 -in root-ca.pem -text -noout | head -30

Faza 4: Delitev ključa (30 min)

# Shamirjeva delitev skrivnosti
echo "=== DELITEV KLJUČA ==="
 
# 5 deležev, 3 potrebni za obnovitev
cat root-ca-ecdsa.key | ssss-split -t 3 -n 5 -w root-ca-share
 
# Pisanje deležev na pametne kartice/USB
for i in 1 2 3 4 5; do
    echo "Delež $i → Pametna kartica/USB $i"
    # cp root-ca-share-$i /mnt/smartcard-$i/
done
 
# Varno brisanje originalnega ključa
shred -vfz -n 3 root-ca-ecdsa.key
rm root-ca-ecdsa.key

Faza 5: Preverjanje (20 min)

# 1. Ali certifikat lahko podpisuje?
echo "Testni podpis..."
echo "test" | openssl dgst -sha384 -sign root-ca-ecdsa.key 2>/dev/null && echo "OK"
 
# 2. Ali se deleži ključa lahko združijo?
ssss-combine -t 3 << EOF
<Delež-1>
<Delež-2>
<Delež-3>
EOF > /tmp/restored.key
 
# Primerjava
diff <(openssl ec -in /tmp/restored.key -pubout) <(openssl ec -in root-ca-ecdsa.key -pubout)

Faza 6: Hramba (15 min)

1. Zapečatenje deležev ključev v vreče z dokazilom poseganja
2. Vsak kriptografski uradnik prejme svoj delež
3. Rezervni deleži v sef(ih)
4. Zapisovanje serijskih številk vrečk
5. Zbiranje podpisov ob predaji

Faza 7: Zaključek (15 min)

1. Varno brisanje vseh začasnih datotek
   shred -vfz -n 3 /tmp/*.key /tmp/*.pem

2. Izklop sistema (brez povezave)

3. Dokončanje zapisnika:
   - Končni čas
   - Vsi podpisi
   - Indeks fotografij/videa

4. Zapečatenje in arhiviranje zapisnika

Predloga zapisnika

ZAPISNIK CEREMONIJE KLJUČEV
===========================

ID ceremonije: KC-2024-001
Datum: ________________
Začetek: _______ Konec: _______
Kraj: ____________________________

UDELEŽENCI:
| Ime | Vloga | Št. dokumenta | Podpis |
|-----|-------|---------------|--------|
|     |       |               |        |
|     |       |               |        |
|     |       |               |        |
|     |       |               |        |

PODROBNOSTI KLJUČA:
- Algoritem: ECDSA P-384 / ML-DSA-87
- ID ključa: _______________
- Zgoščena vrednost javnega ključa (SHA256): ______________________
- Serijska št. certifikata: _______________
- Veljavnost: _______ do _______

DELEŽI KLJUČA:
| Delež | Št. vrečke | Skrbnik | Podpis ob predaji |
|-------|------------|---------|-------------------|
| 1     |            |         |                   |
| 2     |            |         |                   |
| 3     |            |         |                   |
| 4     |            |         |                   |
| 5     |            |         |                   |

PREVERJANJE:
[ ] Entropija > 3000
[ ] Ključ uspešno generiran
[ ] Certifikat samopodpisan
[ ] Deleži ključa ustvarjeni (3-od-5)
[ ] Deleži preverjeni
[ ] Originalni ključ izbrisan
[ ] Deleži razdeljeni in zapečateni

ZAKLJUČEK:
[ ] Začasne datoteke izbrisane
[ ] Sistem izklopljen
[ ] Zapisnik popoln

_______________________________
Podpis vodje ceremonije

_______________________________
Podpis revizorja/priče

HSM ceremonija ključev

# Luna HSM ceremonija ključev
/usr/safenet/lunaclient/bin/lunacm << 'EOF'
 
# Ustvarjanje particije
partition create -label "Root-CA"
 
# Generacija ključa
partition contents -slot 0
generateKeyPair -keyType ECDSA -curvetype secp384r1 -label "root-ca-2024"
 
# Ustvarjanje varnostne kopije
partition backup -serialNumber <HSM-Serial>
 
EOF

Kontrolni seznam

# Kontrolna točka
—————–
1 Prisotne vsaj 3 osebe
2 Identitete preverjene
3 Sistem brez povezave preverjen
4 Entropija zadostna
5 Ključ generiran
6 Deleži ustvarjeni in razdeljeni
7 Deleži preverjeni
8 Originalni ključ varno izbrisan
9 Zapisnik podpisan
10 Zapisnik arhiviran

Povezana dokumentacija


« ← CA varnostna kopija/obnova | → Preklic v sili »


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