Un HSM no proporciona mucho más que proteger la clave privada. Esto ya es una protección sólida, ya que significa que la clave privada no puede ser robada de manera simple e inadvertida (y, por lo tanto, mal utilizada): si el atacante quiere robar la clave privada, no solo necesitará tener acceso físico al HSM una vez (que es ya una protección sólida) pero para todas las transacciones, ya que el HSM no se puede clonar.
Además, los HSM generalmente están protegidos por un secreto (es decir, PIN, frase de contraseña ...) que, según la configuración, debe proporcionarse una vez para todas las transacciones en la activación inicial del HSM (es decir, después de enchufarlo, después de reiniciar el sistema ...) o para cada transacción. Este último es más seguro pero no práctico en todos los casos, es decir, podría ser práctico si el HSM se usa en una autoridad de certificación para firmar nuevos certificados, pero probablemente no sea práctico si el HSM se usa para proteger la clave privada de un servidor web.
... ¿Podría alguna aplicación en el sistema operativo enviar una transacción de bitcoin al HSM que se firmará ...
El HSM en sí mismo no tiene idea de lo que está firmando. El usuario del HSM debe proporcionar la inteligencia de si algunos datos deben firmarse en primer lugar (es decir, si alguna transacción de criptomoneda es válida). En la mayoría de los casos, la lógica para implementar dicha funcionalidad es demasiado compleja como para implementarla en una computadora bastante pequeña que es el HSM (o tarjeta inteligente), si está claro cómo se deben realizar dichas comprobaciones automáticas en primer lugar.
Si utiliza, por ejemplo, un HSM para firmar automáticamente transacciones criptocurrenales (no se requiere PIN) y lo utiliza en un sistema complejo donde es probable que los errores o la mala configuración permitan el acceso a los atacantes, entonces probablemente debería repensar la arquitectura de su sistema. Podría ser más útil utilizar el HSM en lugar de un sistema mínimo y separado que solo implementa los controles necesarios que deben firmarse y proporciona una API mínima y segura para el sistema más complejo.
Tal vez en ese caso use un TPM? ¿Con o sin el HSM? ¿Pero los TPM no tienen vulnerabilidades?
Un TPM es solo un tipo especial de HSM con aproximadamente las mismas limitaciones. TPM puede tener vulnerabilidades tanto como HSM o las tarjetas inteligentes. Pero todos estos juntos son sistemas mínimos que son más fáciles de auditar para detectar vulnerabilidades que los sistemas más grandes. Esto no significa que los errores nunca ocurran , es mucho menos probable.