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.