~~NOTOC~~ ====== 1. Costruzione dell'infrastruttura PKI ====== **Scenari:** 6 \\ **Funzioni FFI:** ~45 \\ **Stato:** In pianificazione Questa categoria comprende tutti gli scenari per la costruzione e la gestione di una Public Key Infrastructure (PKI) compatibile con Post-Quantum. Dalla creazione di una Root-CA alle gerarchie CA multilivello fino alla configurazione dei servizi di revoca (CRL/OCSP). ---- ===== Scenari ===== ^ ID ^ Scenario ^ Descrizione ^ Complessità ^ Stato ^ | [[.:root_ca_erstellen|1.1]] | Creare Root-CA | Root-CA autofirmata con ML-DSA-65 | Alta | In pianificazione | | [[.:intermediate_ca_erstellen|1.2]] | Creare Intermediate-CA | CA subordinata firmata dalla Root | Media | In pianificazione | | [[.:ca_hierarchie_aufbauen|1.3]] | Costruire gerarchia CA | Struttura PKI multilivello | Alta | In pianificazione | | [[.:trust_store_konfigurieren|1.4]] | Configurare Trust Store | Gestire CA affidabili | Media | In pianificazione | | [[.:certificate_policy_definieren|1.5]] | Definire Certificate Policy | Stabilire policy di emissione | Media | In pianificazione | | [[.:crl_ocsp_infrastruktur|1.6]] | Infrastruttura CRL/OCSP | Configurare servizi di revoca | Molto alta | In pianificazione | ---- ===== Panoramica dell'architettura ===== flowchart TB subgraph ROOT["Root-CA (Scenario 1.1)"] R[("Root-CA
ML-DSA-65/87
20 anni")] end subgraph INTERMEDIATE["Intermediate-CA (Scenario 1.2)"] I1["Intermediate-CA
Server
10 anni"] I2["Intermediate-CA
Client
10 anni"] I3["Intermediate-CA
CodeSign
10 anni"] end subgraph ENDENTITY["Certificati End-Entity"] E1["Server-Certs
TLS/HTTPS"] E2["Client-Certs
mTLS/Auth"] E3["CodeSign-Certs
Firma"] end R -->|firma| I1 R -->|firma| I2 R -->|firma| I3 I1 -->|emette| E1 I2 -->|emette| E2 I3 -->|emette| E3 subgraph TRUST["Trust Store (Scenario 1.4)"] T1["Certificati Root-CA"] T2["Cross-certificati"] end subgraph REVOCATION["Revoca (Scenario 1.6)"] CRL["CRL Distribution Points"] OCSP["OCSP Responder"] end R -.->|pubblica| TRUST I1 & I2 & I3 -.->|pubblica| CRL I1 & I2 & I3 -.->|risponde| OCSP
---- ===== Requisiti specifici per settore ===== A seconda del settore si applicano requisiti diversi per le durate PKI e la conformità: ^ Settore ^ Validità Root-CA ^ Particolarità ^ Regolamentazione ^ | **Energia/SCADA** | 25 anni | Durata impianti eolici, CRL offline | NIS2((Direttiva NIS2 (UE) 2022/2555: https://eur-lex.europa.eu/legal-content/IT/TXT/?uri=CELEX:32022L2555)), KRITIS-VO | | **Sanità** | 20 anni | OID gematik, compatibile ePA | GDPR Art. 32, DiGAV | | **Automotive** | 30 anni | V2X-PKI, certificati pseudonimi | UN R155((UNECE R155: https://unece.org/transport/documents/2021/03/standards/un-regulation-no-155-cyber-security-and-cyber-security)), ISO 21434 | | **Industria 4.0** | 20 anni | Separazione OT/IT, IEC 62443 | NIS2, Regolamento Macchine | | **IT Standard** | 15 anni | PKI Enterprise standard | BSI IT-Grundschutz | ---- ===== Tipi di chiave per CA ===== ^ Tipo CA ^ Algoritmo consigliato ^ Validità ^ Motivazione ^ | Root-CA | ML-DSA-65 o ML-DSA-87 | 15-25 anni | Massima sicurezza, uso raro | | Intermediate-CA | ML-DSA-65 | 8-12 anni | Equilibrio sicurezza/prestazioni | | OCSP-Responder | ML-DSA-44 | 1-3 anni | Firma frequente, prestazioni critiche | **Raccomandazione ibrida:** Per la fase di transizione si possono utilizzare chiavi ibride (ECDSA P-384 + ML-DSA-65) per garantire la compatibilità con i sistemi classici. ---- ===== Estensioni importanti per certificati CA ===== ==== Root-CA ==== ^ Estensione ^ Valore ^ Critical ^ | Basic Constraints | CA=true, pathLen=1 o 2 | Sì | | Key Usage | keyCertSign, cRLSign | Sì | | Subject Key Identifier | SHA-256(publicKey) | No | ==== Intermediate-CA ==== ^ Estensione ^ Valore ^ Critical ^ | Basic Constraints | CA=true, pathLen=0 | Sì | | Key Usage | keyCertSign, cRLSign | Sì | | Subject Key Identifier | SHA-256(publicKey) | No | | Authority Key Identifier | SKI della Root-CA | No | | CRL Distribution Points | URL alla CRL | No | | Authority Info Access | URL OCSP, URL CA Issuers | No | | Certificate Policies | OID Policy | No | ---- ===== Note sulla sicurezza ===== **Requisiti critici per l'operatività CA:** * **Chiave privata Root-CA:** Conservare offline (HSM air-gapped o chiavetta USB crittografata in cassaforte) * **Chiave privata Intermediate-CA:** HSM o fortemente crittografata con token hardware * **Password:** Almeno 20 caratteri, alta entropia, conservazione sicura * **Audit-Logging:** Protocollare tutte le operazioni CA * **Backup:** Backup crittografati in sedi separate * **Key Ceremony:** Processo documentato per le operazioni Root-CA **Mai:** * Conservare la chiave privata Root-CA su sistemi connessi alla rete * Password CA in chiaro in script/configurazioni * Emettere certificati CA senza limitazione pathLength * Utilizzare certificati end-entity autofirmati in produzione ---- ===== Workflow tipico ===== flowchart TB subgraph P1["1. PREPARAZIONE"] V1["Preparare sistema air-gapped"] V2["Documentare Certificate Policy"] V3["Definire struttura DN"] V4["Pianificare periodi di validità"] end subgraph P2["2. CREARE ROOT-CA"] R1["Coppia chiavi ML-DSA-65/87"] R2["Certificato autofirmato"] R3["Crittografare chiave privata"] R4["Esportare certificato root"] end subgraph P3["3. INTERMEDIATE-CA"] I1["Coppia chiavi ML-DSA-65"] I2["Creare CSR"] I3["Root firma certificato"] I4["Deploy online"] end subgraph P4["4. TRUST & REVOCATION"] T1["Configurare Trust Store"] T2["CRL Distribution Points"] T3["OCSP-Responder"] T4["Pubblicare prima CRL"] end subgraph P5["5. OPERATIVITÀ"] B1["Emettere certificati"] B2["Aggiornare CRL"] B3["Risposte OCSP"] B4["Monitorare audit log"] 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 ---- ===== Quick start codice ===== ==== Esempio minimo: Creare Root-CA (C#) ==== using WvdS.Security.Cryptography.X509Certificates.Extensions.PQ; using var ctx = PqCryptoContext.Initialize(); // Root-CA con 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() ); // Salvare File.WriteAllText("root-ca.crt.pem", rootCert.ToPem()); File.WriteAllText("root-ca.key.pem", rootKey.ToEncryptedPem("SecurePassword123!")); → //Esempio completo:// [[.:root_ca_erstellen|Scenario 1.1]] ---- ===== Categorie correlate ===== ^ Categoria ^ Relazione ^ | [[it:int:pqcrypt:szenarien:csr:start|2. CSR]] | Creazione CSR per Intermediate-CA | | [[it:int:pqcrypt:szenarien:zertifikate:start|3. Emissione certificati]] | Certificati end-entity firmati dalla CA | | [[it:int:pqcrypt:szenarien:validierung:start|5. Validazione]] | Validare certificati contro Trust Store | | [[it:int:pqcrypt:szenarien:widerruf:start|6. Revoca]] | Operazioni CRL/OCSP | | [[it:int:pqcrypt:szenarien:schluessel:start|11. Gestione chiavi]] | Gestire, ruotare, distruggere chiavi CA | ---- << [[it:int:pqcrypt:szenarien:start|Panoramica scenari]] | [[.:root_ca_erstellen|1.1 Creare Root-CA]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>categoria pki root-ca intermediate-ca trust-store crl ocsp}}