Ci sono dei limiti a ciò che un HSM firmerà?

3

Per un'applicazione di criptovaluta, considero che la funzione principale di un HSM è di generare / memorizzare le chiavi; per lo più si limitano a firmare i dati che gli vengono forniti? Ma cosa lo controlla? Sarà felice di firmare qualsiasi cosa venga richiesta tramite l'API pkc11 / jce? Oppure ci possono essere delle policy che puoi applicare quando autorizzi HSM a firmare determinate cose ma non altre?

Principalmente avevo ipotizzato che un HSM potesse fornire uno stop-gap per non mantenere il pieno controllo fisico, come ad esempio in un datacenter condiviso.

Quindi, per esempio, consideriamo un bitcoin miner con un HSM per fare la firma per la generazione di blocchi. Qualche applicazione nel sistema operativo potrebbe inviare una transazione bitcoin all'HSM da firmare, il che consente di trasferire 100bitcoin in un altro indirizzo?

Per il mio scenario, sembra che il fatto che "le chiavi private non abbandonino mai l'HSM", che è quello che vedo sempre come il punto di forza di un HSM, non fa davvero nulla per te.

Forse in quel caso usi un TPM? con o senza HSM? ma i TPM non hanno vulnerabilità?

    
posta Optical Carrier 07.05.2018 - 06:39
fonte

1 risposta

3

Un HSM non fornisce molto più della protezione della chiave privata. Questa è già una protezione strong in quanto significa che la chiave privata non può essere rubata semplicemente e inosservata (e quindi utilizzata in modo improprio): se l'utente malintenzionato vuole rubare la chiave privata, non solo avrà bisogno di avere un accesso fisico all'HSM una volta (che è già una protezione strong) ma per tutte le transazioni poiché l'HSM non può essere clonato.

Inoltre HSM di solito è protetto da un segreto (es. PIN, passphrase ...) che a seconda della configurazione deve essere fornito una volta per tutte le transazioni sull'attivazione iniziale dell'HSM (cioè dopo averlo collegato, dopo il riavvio del sistema) ...) o per ogni transazione. Quest'ultimo è più sicuro ma non pratico in tutti i casi, cioè potrebbe essere pratico se l'HSM è utilizzato in un'autorità di certificazione per firmare nuovi certificati, ma è probabilmente poco pratico se l'HSM viene utilizzato per proteggere la chiave privata di un server web.

... Could some application in the OS submit a bitcoin transaction to the HSM to be signed...

Lo stesso HSM non ha idea di cosa stia firmando. L'intelligence se alcuni dati devono essere firmati in primo luogo (ad esempio se alcune transazioni di criptovaluta sono valide) devono essere fornite dall'utente di HSM. Nella maggior parte dei casi la logica per implementare tale funzionalità è troppo complessa per essere implementata sul computer piuttosto piccolo che è l'HSM (o smart card) - se è chiaro come tali controlli automatici dovrebbero essere eseguiti in primo luogo.

Se ad esempio si utilizza un HSM (nessun PIN richiesto) firma le transazioni criptovalute e lo si utilizza su un sistema complesso in cui è probabile che bug o errata configurazione consentano l'accesso agli autori di attacchi, è probabile che si debba riconsiderare l'architettura del sistema. Potrebbe essere più utile utilizzare HSM invece di un sistema separato e minimale che implementa solo i controlli necessari su cosa dovrebbe essere firmato e fornisce un'API minima e sicura per il sistema più complesso.

Maybe in that case use a TPM? with or without the HSM? but dont TPMs have vulnerabilities?

Un TPM è solo un tipo speciale di HSM con circa gli stessi limiti. TPM può avere vulnerabilità tanto quanto HSM o smart card potrebbero avere. Ma tutti questi insieme sono sistemi minimi che sono più facili da controllare per le vulnerabilità rispetto ai sistemi più grandi. Questa non significa che i bug non si verificano mai , ma è molto meno probabile.

    
risposta data 07.05.2018 - 06:53
fonte

Leggi altre domande sui tag