~~NOTOC~~
====== 1. Izgradnja PKI infrastrukture ======
**Scenariji:** 6 \\
**FFI funkcije:** ~45 \\
**Status:** ⏳ Planirano
Ova kategorija obuhvaća sve scenarije za izgradnju i upravljanje Public Key Infrastructure (PKI) s podrškom za Post-Quantum kriptografiju. Od kreiranja Root-CA preko višerazinskih CA hijerarhija do konfiguracije servisa za opoziv (CRL/OCSP).
----
===== Scenariji =====
^ ID ^ Scenarij ^ Opis ^ Složenost ^ Status ^
| [[.:root_ca_erstellen|1.1]] | Kreiranje Root-CA | Samopotpisani Root-CA s ML-DSA-65 | ⭐⭐⭐⭐ | ⏳ |
| [[.:intermediate_ca_erstellen|1.2]] | Kreiranje Intermediate-CA | Podređeni CA potpisan od Root-a | ⭐⭐⭐ | ⏳ |
| [[.:ca_hierarchie_aufbauen|1.3]] | Izgradnja CA hijerarhije | Višerazinska PKI struktura | ⭐⭐⭐⭐ | ⏳ |
| [[.:trust_store_konfigurieren|1.4]] | Konfiguracija Trust Store-a | Upravljanje pouzdanim CA-ovima | ⭐⭐ | ⏳ |
| [[.:certificate_policy_definieren|1.5]] | Definiranje Certificate Policy | Postavljanje pravila izdavanja | ⭐⭐⭐ | ⏳ |
| [[.:crl_ocsp_infrastruktur|1.6]] | CRL/OCSP infrastruktura | Postavljanje servisa za opoziv | ⭐⭐⭐⭐ | ⏳ |
----
===== Pregled arhitekture =====
flowchart TB
subgraph ROOT["🔐 Root-CA (Scenarij 1.1)"]
R[("Root-CA
ML-DSA-65/87
20 godina")]
end
subgraph INTERMEDIATE["📜 Intermediate-CA (Scenarij 1.2)"]
I1["Intermediate-CA
Server
10 godina"]
I2["Intermediate-CA
Klijent
10 godina"]
I3["Intermediate-CA
CodeSign
10 godina"]
end
subgraph ENDENTITY["🎫 Certifikati krajnjih entiteta"]
E1["Server certifikati
TLS/HTTPS"]
E2["Klijentski certifikati
mTLS/Auth"]
E3["CodeSign certifikati
Potpisivanje"]
end
R -->|potpisuje| I1
R -->|potpisuje| I2
R -->|potpisuje| I3
I1 -->|izdaje| E1
I2 -->|izdaje| E2
I3 -->|izdaje| E3
subgraph TRUST["🛡️ Trust Store (Scenarij 1.4)"]
T1["Root-CA certifikati"]
T2["Cross-certifikati"]
end
subgraph REVOCATION["🚫 Opoziv (Scenarij 1.6)"]
CRL["CRL Distribution Points"]
OCSP["OCSP Responder"]
end
R -.->|objavljuje| TRUST
I1 & I2 & I3 -.->|objavljuje| CRL
I1 & I2 & I3 -.->|odgovara| OCSP
----
===== Sektorski specifični zahtjevi =====
Ovisno o sektoru, primjenjuju se različiti zahtjevi za trajanje PKI i usklađenost:
^ Sektor ^ Valjanost Root-CA ^ Posebnosti ^ Regulativa ^
| **Energetika/SCADA** | 25 godina | Životni vijek vjetroagregata, offline CRL | NIS2((NIS2 direktiva (EU) 2022/2555: https://eur-lex.europa.eu/legal-content/HR/TXT/?uri=CELEX:32022L2555)), KRITIS-VO |
| **Zdravstvo** | 20 godina | gematik OID-ovi, ePA kompatibilnost | GDPR čl. 32, DiGAV |
| **Automobilska industrija** | 30 godina | V2X-PKI, pseudonimni certifikati | UN R155((UNECE R155: https://unece.org/transport/documents/2021/03/standards/un-regulation-no-155-cyber-security-and-cyber-security)), ISO 21434 |
| **Industrija 4.0** | 20 godina | OT/IT razdvajanje, IEC 62443 | NIS2, Uredba o strojevima |
| **Standardni IT** | 15 godina | Uobičajena Enterprise PKI | BSI IT-Grundschutz |
----
===== Vrste ključeva za CA =====
^ Tip CA ^ Preporučeni algoritam ^ Valjanost ^ Obrazloženje ^
| Root-CA | ML-DSA-65 ili ML-DSA-87 | 15-25 godina | Najviša sigurnost, rijetko korišten |
| Intermediate-CA | ML-DSA-65 | 8-12 godina | Ravnoteža sigurnosti i performansi |
| OCSP Responder | ML-DSA-44 | 1-3 godine | Često potpisivanje, kritične performanse |
**Hibridna preporuka:** Za prijelazno razdoblje mogu se koristiti hibridni ključevi (ECDSA P-384 + ML-DSA-65) kako bi se osigurala kompatibilnost s klasičnim sustavima.
----
===== Važne ekstenzije za CA certifikate =====
==== Root-CA ====
^ Ekstenzija ^ Vrijednost ^ Critical ^
| Basic Constraints | CA=true, pathLen=1 ili 2 | ✅ Da |
| Key Usage | keyCertSign, cRLSign | ✅ Da |
| Subject Key Identifier | SHA-256(publicKey) | ❌ Ne |
==== Intermediate-CA ====
^ Ekstenzija ^ Vrijednost ^ Critical ^
| Basic Constraints | CA=true, pathLen=0 | ✅ Da |
| Key Usage | keyCertSign, cRLSign | ✅ Da |
| Subject Key Identifier | SHA-256(publicKey) | ❌ Ne |
| Authority Key Identifier | SKI Root-CA | ❌ Ne |
| CRL Distribution Points | URL do CRL-a | ❌ Ne |
| Authority Info Access | OCSP URL, CA Issuers URL | ❌ Ne |
| Certificate Policies | Policy OID | ❌ Ne |
----
===== Sigurnosne napomene =====
**Kritični zahtjevi za rad CA:**
* **Root-CA privatni ključ:** Pohraniti offline (Air-Gapped HSM ili šifrirani USB stick u sefu)
* **Intermediate-CA privatni ključ:** HSM ili snažno šifriran s hardverskim tokenom
* **Lozinke:** Minimalno 20 znakova, visoka entropija, sigurno pohranjeno
* **Audit logging:** Protokolirati sve CA operacije
* **Backup:** Šifrirane sigurnosne kopije na odvojenim lokacijama
* **Key Ceremony:** Dokumentiran proces za Root-CA operacije
**Nikada:**
* Pohranjivati Root-CA privatni ključ na mrežno povezanim sustavima
* CA lozinke u čistom tekstu u skriptama/konfiguracijama
* Izdavati CA certifikate bez pathLength ograničenja
* Koristiti samopotpisane certifikate krajnjih entiteta u produkciji
----
===== Tipičan tijek rada =====
flowchart TB
subgraph P1["1️⃣ PRIPREMA"]
V1["Pripremiti Air-Gapped sustav"]
V2["Dokumentirati Certificate Policy"]
V3["Definirati DN strukturu"]
V4["Planirati razdoblja valjanosti"]
end
subgraph P2["2️⃣ KREIRANJE ROOT-CA"]
R1["ML-DSA-65/87 par ključeva"]
R2["Samopotpisani certifikat"]
R3["Šifriranje privatnog ključa"]
R4["Izvoz Root certifikata"]
end
subgraph P3["3️⃣ INTERMEDIATE-CA"]
I1["ML-DSA-65 par ključeva"]
I2["Kreiranje CSR-a"]
I3["Root potpisuje certifikat"]
I4["Online deployment"]
end
subgraph P4["4️⃣ TRUST I OPOZIV"]
T1["Konfiguracija Trust Store-a"]
T2["CRL Distribution Points"]
T3["OCSP Responder"]
T4["Objava prvog CRL-a"]
end
subgraph P5["5️⃣ RAD"]
B1["Izdavanje certifikata"]
B2["Ažuriranje CRL-ova"]
B3["OCSP odgovori"]
B4["Nadzor audit logova"]
end
P1 ==> P2 ==> P3 ==> P4 ==> P5
style P1 fill:#e3f2fd
style P2 fill:#e8f5e9
style P3 fill:#fff8e1
style P4 fill:#fce4ec
style P5 fill:#f3e5f5
----
===== Brzi početak koda =====
==== Minimalni primjer: Kreiranje Root-CA (C#) ====
using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ;
using var ctx = PqCryptoContext.Initialize();
// Root-CA s ML-DSA-65
using var rootKey = ctx.GenerateKeyPair(PqAlgorithm.MlDsa65);
var rootDn = new DnBuilder().AddCN("My Root CA").AddO("My Org").AddC("DE").Build();
using var rootCert = ctx.CreateRootCertificate(rootKey, rootDn,
validYears: 20,
extensions: new ExtBuilder()
.BasicConstraints(ca: true, pathLen: 1)
.KeyUsage(KeyUsageFlags.KeyCertSign | KeyUsageFlags.CrlSign)
.SubjectKeyIdentifier(rootKey)
.Build()
);
// Spremanje
File.WriteAllText("root-ca.crt.pem", rootCert.ToPem());
File.WriteAllText("root-ca.key.pem", rootKey.ToEncryptedPem("SecurePassword123!"));
→ //Potpuni primjer:// [[.:root_ca_erstellen|Scenarij 1.1]]
----
===== Povezane kategorije =====
^ Kategorija ^ Odnos ^
| [[hr:int:pqcrypt:szenarien:csr:start|2. CSR]] | Kreiranje CSR-a za Intermediate-CA |
| [[hr:int:pqcrypt:szenarien:zertifikate:start|3. Izdavanje certifikata]] | Potpisivanje certifikata krajnjih entiteta od strane CA |
| [[hr:int:pqcrypt:szenarien:validierung:start|5. Validacija]] | Validacija certifikata prema Trust Store-u |
| [[hr:int:pqcrypt:szenarien:widerruf:start|6. Opoziv]] | CRL/OCSP operacije |
| [[hr:int:pqcrypt:szenarien:schluessel:start|11. Upravljanje ključevima]] | Upravljanje, rotacija i uništavanje CA ključeva |
----
<< [[hr:int:pqcrypt:szenarien:start|← Pregled scenarija]] | [[.:root_ca_erstellen|1.1 Kreiranje Root-CA →]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>kategorija pki root-ca intermediate-ca trust-store crl ocsp}}