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