05 junio 2009

HSM (Hardware Security Modules): ¿Necesidad o lujo?

Aprovechando que hace poco he recibido un curso sobre dispositivos hardware dedicados a tareas criptográficas, me gustaría compartir con vosotros algunas ideas.

Los dispositivos HSM (Hardware Security Module), sirven de ayuda en entornos en los que hay una necesidad de tráfico cifrado. A grandes rasgos, permiten generar claves para certificados de clave pública, permitiendo rutinas con un grado de aleatoriedad muy alto, así como almacenar las contraseñas de acceso a determinados certificados.

Principalmente se pueden adquirir en dos formatos, o una tarjeta PCI que se "pincha" en el servidor concreto o un appliance al cuál se accede vía red para las operaciones criptográficas.




Las causas por las que se hacen útiles estos dispositivos son dos: Seguridad y Rendimiento
  • Seguridad: En aquellos servidores web que llevan a cabo su actividad mediante el protocolo criptográfico SSL, los certificados de clave pública como el que contiene la clave privada (key) son almacenados en el sistema de ficheros del mismo. Evidentemente se ajustan los permisos de dichos ficheros para que sólo sean accesibles por el usuario que ejecuta el servidor Web (y evidentemente root) protegiendo lo máximo posible el acceso a dichos ficheros. Sin embargo, si dicho servidor se viese comprometido, sería posible sacar esos certificados fuera del mismo pudiendo suplantar el servidor por parte de un usuario malicioso dando lugar a un mega-phising (con certificado válido si además hacemos coincidir el nombre del dominio con el que aparece en el certificado original). Evidentemente, y por defecto, esto no es tan sencillo, puesto que además el certificado de clave privado está protegido mediante una clave. Al arranque del servidor web, o le metemos la contraseña mediante la entrada estándar o harcodeamos en algún otro fichero la contraseña del certificado privado o, lo configuramos sin contraseña. La otra opción, es utilizar un módulo HSM para custodiar dicha contraseña, como indicábamos antes. De esta manera, si el servidor es comprometido remotamente, pueden llevarse los certificados, pero no la contraseña que los protege, puesto que se encuentra en el HSM. De la misma forma, si no tenemos HSM configurado, la contraseña que protege el certificado, en algún momento se encuentra en memoria, de manera que haciendo un dump de la misma podemos dar con la contraseña. Utilizando módulos HSM, la contraseña no sale del dispositivo, sino que se le pasa el certificado cifrado mediante su API, y nos devuelve el resultado ya descifrado para poderlo utilizar por la aplicación en concreto.
  • Rendimiento: Además de permitir la generación y custodia de la contraseña de los certificados, efectúan las operaciones criptográficas, que suelen ser tareas que consumen muchísimos ciclos de CPU (debido a la necesidad de generar números primos de gran tamaño), mediante un procesador aparte especializado, de manera que libera al servidor de ese tipo de tareas. En general, la efectividad de los módulos HSM, es mayor en criptografía de clave pública (o asimétrica), que en criptografía simétrica. En las sesiones SSL se hace uso de ambos tipos de criptografía: al principio de la sesión se utiliza clave pública o asimétrica y una vez negociada la clave a utilizar, se utiliza clave simétrica como se ve en la siguiente figura.


Y alguien dirá, ¿y qué hay de la seguridad física? ¿y si me roban el servidor con HSM incluido (ya sea tarjeta o appliance)? Serían capaces de extraer de alguna forma la contraseña que protege el certificado privado, junto a los certificados del sistema de ficheros... Pues no. Una de las características de los dispositivos HSM es que han de ser tamper-resistant, de manera que si se fuerza la tarjeta para sacar la memoria donde se guarda la tarjeta, está se autodestruye y se borra evitando el compromiso.

Dado el precio de este tipo de dispositivos (suelen ser bastante caros), hay que plantearse claramente si es necesaria su adquisición. Aquellas organizaciones que tengan que cumplir con normativa legal FIPS-140-2 Nivel 3, Common Criteria CC EAL 4+, etc,.. o aquellos sitios en los que realmente tienen una alta sensibilidad ante la información que protegen.

4 comments :

Chema Alonso dijo...

Muy buen artículo Lorenzo. Los motores de bases de datos de última generación, entre ellos el SQL Server 2008, permiten cifrar la base de datos con claves delegadas al HSM, de tal manera que el rendimiento es brutal.

Pablo Ruiz (Pci) dijo...

Amigo Lorenzo.. no me puedo creer que en un articulo de HSMs no hagas referencia al "Dispositivo seguro de creación de firma" expresado en la ley 59/2003, que tanto ha traído (y trae) de cabeza al sector de la seguridad informática en relación a la discusión de si "solo un HSM" puede considerarse como tal, o si un software debidamente preparado también ha de considerarse como equivalente al HSM.

Lorenzo Martínez dijo...

Perdonad el retraso pero llevo un día complicado

@Maligno -> Gracias por el aporte. Interesante conocer que SQL Server 2008 permite la integración con HSM para mejorar el rendimiento del DBMS

@Pablo -> supongo que el post ya tenía suficiente literatura como para añadir lo que indicas (que por otra parte y siendo sincero no conocía). Quizá sea interesante para otro post más adelante. Gracias igualmente

Anónimo dijo...

Esto me parece muy bello, pero cómo se puede asegurar que el fabricante no ha diseñado un mecanismo para obtener las claves privadas y se reserva en secreto algunas funciones del API para poder acceder a ellas? No parece que lo vaya a hacer, pero es muy tentador, no?