====== 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 ====
* Prenosnik brez povezave ali HSM
* Pametne kartice za deleže ključev
* USB ključi (novi, zapečateni)
* Kamera za dokumentacijo
* Vreče z dokazilom poseganja
* Obrazci zapisnika
* Pisala (neizbrisljiva)
----
===== 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
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
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-backup-restore|CA varnostna kopija/obnova]] – Obnovitev ključev
* [[.:notfall-revocation|Preklic v sili]] – Ob kompromitaciji
* [[sl:int:pqcrypt:business:compliance|Skladnost]] – Regulativne zahteve
----
<< [[.:ca-backup-restore|← CA varnostna kopija/obnova]] | [[.:notfall-revocation|→ Preklic v sili]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>key-ceremony hsm audit compliance operator}}