Estoy investigando un proyecto que hace uso de la criptografía. Es una aplicación .net con claves almacenadas en una base de datos de servidor SQL. Para la criptografía, el proyecto utiliza un Hardware Security Module similar a uno descrito en el artículo de wikipedia vinculado.
Me gustaría entender los beneficios de usar un dispositivo HSM en lugar de hacer cifrado / descifrado / firma / verificación y generación de claves en el código .net usando "implementación estándar" como la que se encuentra en .net BCL. Estamos hablando de RSA / DES aquí.
Comprendería si las claves estuvieran almacenadas dentro del dispositivo, pero me cuesta entender las ventajas si las claves se almacenan en otro lugar. Claro, puede estar seguro de que el algoritmo de cifrado no se modifica, pero si se trata de una manipulación indebida que le da miedo, existe un montón de otros códigos que funcionan con los datos antes de que se cifren / después de que se descifre y puedan ser manipulados. Esto se puede decir de casi cualquier proyecto, creo.
Una posible razón que puedo imaginar es el rendimiento, si la aplicación realiza mucha criptografía, sin embargo, no sé si este es el caso del proyecto todavía. Entonces, ¿cuáles podrían ser otros beneficios?