~~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}}