Un HSM (Hardware Security Module) è un dispositivo hardware specializzato progettato per generare, memorizzare e gestire chiavi crittografiche in modo sicuro, ed eseguire operazioni crittografiche (firma, cifratura, derivazione di chiavi) interamente all’interno del modulo, senza che le chiavi private escano mai dall’hardware in forma non protetta. È la soluzione di riferimento per proteggere le chiavi crittografiche più critiche in infrastrutture enterprise: chiavi root di PKI, chiavi di firma per code signing, chiavi master per sistemi di pagamento, chiavi dei nodi blockchain.
Caratteristiche di sicurezza hardware
Tamper resistance: l’HSM è progettato per resistere fisicamente ai tentativi di estrazione delle chiavi. Le misure tipiche includono rivestimento epossidico che distrugge i circuiti se rimosso, sensori di temperatura, tensione e luce che cancellano le chiavi in caso di tentativo di apertura, e involucri metallici che schermano le emanazioni elettromagnetiche.
Tamper evidence: anche se non riesce a resistere a un attacco fisico sufficientemente sofisticato, l’HSM deve lasciare tracce visibili di qualsiasi tentativo di manomissione, permettendo di rilevare la compromissione.
Zeroization: in caso di rilevamento di manomissione o su comando esplicito, l’HSM cancella istantaneamente tutte le chiavi memorizzate. Le chiavi scompaiono senza possibilità di recupero.
FIPS 140-2/3: la certificazione FIPS 140-2 (e la successiva FIPS 140-3) del NIST definisce quattro livelli di sicurezza per i moduli crittografici, dal livello 1 (requisiti software di base) al livello 4 (resistenza fisica completa agli attacchi). Gli HSM certificati FIPS 140-2 Level 3 sono il requisito standard per la maggior parte dei contesti enterprise regolamentati.
Forme fisiche
PCIe HSM: scheda PCI Express installata direttamente nel server. Alte prestazioni (centinaia di migliaia di operazioni RSA/s), bassa latenza. Usato per CA online, server TLS ad alto traffico.
Network HSM: appliance di rete (rack unit) accessibile in rete da più server. Permette la condivisione delle chiavi tra più applicazioni con gestione centralizzata. Esempi: Thales Luna, Entrust nShield.
USB HSM: dispositivo USB compatto. Prestazioni ridotte, usato per CA offline, code signing, ambienti con volumi bassi.
Cloud HSM: HSM as a Service offerto dai cloud provider — AWS CloudHSM, Azure Dedicated HSM, Google Cloud HSM. Le chiavi rimangono su hardware dedicato nel datacenter del provider, non condiviso con altri clienti. Modello a responsabilità condivisa: il provider gestisce l’hardware fisico, il cliente gestisce le chiavi.
Casi d’uso
CA root offline: la chiave privata della CA root di una PKI è il segreto più critico dell’infrastruttura. Va conservata in un HSM offline, in una cerimonia delle chiavi documentata (key ceremony), con accesso richiesto da più persone contemporaneamente (schema M-of-N: es. 3 persone su 5 devono essere presenti). La CA root firma solo i certificati delle CA intermedie, poi viene spenta e conservata in una cassaforte fisica.
TLS termination: i server web con traffico elevato usano HSM PCIe per eseguire le operazioni RSA/ECDSA del TLS handshake. Le chiavi private del certificato TLS non sono mai nel filesystem del server.
Sistemi di pagamento: le chiavi PINBlock per la cifratura dei PIN delle carte di credito, le chiavi per i messaggi ISO 8583 (rete interbancaria), le chiavi per la crittografia dei dati delle carte (PCI DSS Requirement 3) sono gestite esclusivamente tramite HSM certificati.
Code signing: le chiavi private per la firma di firmware, driver e applicazioni sono protette in HSM. Un driver Windows firmato con una chiave compromessa può essere usato per BYOVD.
HSM vs. TPM
| HSM | TPM | |
|---|---|---|
| Scopo | Operazioni crittografiche enterprise, CA, pagamenti | Root of trust per il singolo sistema |
| Forma | Dispositivo esterno (PCIe, rete, USB) | Chip integrato nella scheda madre |
| Throughput | Molto alto (migliaia di op/s) | Basso (uso occasionale) |
| Costo | Da migliaia a decine di migliaia di euro | Incluso nell’hardware del PC |
| Multi-tenant | Sì (più applicazioni/server) | No (un solo sistema) |