Blog de Amazon Web Services (AWS)
¿Cómo habilitar un clúster de AWS CloudHSM en la nube de AWS?
Por Omner Barajas, Security Specialist Solutions Architect de AWS
El servicio de AWS CloudHSM dispone de módulos de seguridad de hardware (HSM por sus siglas en inglés) en la nube de AWS, los cuales son dispositivos que procesan operaciones criptográficas y proporcionan almacenamiento seguro de sus claves (también llamadas “llaves”).
Algunas de las tareas que se pueden realizar al utilizar un HSM en el servicio de AWS CloudHSM son:
- Generar, almacenar, importar, exportar y administrar claves criptográficas, incluidas las claves simétricas y los pares de claves asimétricos.
- Utilizar los algoritmos simétricos y asimétricos para cifrar y descifrar datos.
- Utilizar las funciones de hash criptográficas para computar los resúmenes y los códigos de autenticación de mensajes basados en hash (HMAC).
- Firmar criptográficamente los datos (incluida la firma de código) y verificar firmas.
- Generar datos aleatorios seguros criptográficamente.
En esta publicación, mostraré los pasos necesarios para crear un clúster de HSMs y su activación, lo cual lo dejará listo para generar usuarios y llaves criptográficas.
Preparando la infraestructura
La siguiente arquitectura se usará como base para crear un clúster de HSMs en subredes privadas. De igual forma, se utilizará para lanzar una instancia en el servicio de Amazon EC2 que servirá como cliente, para poder conectarnos al clúster.
Creación de un clúster
Un clúster es una colección de HSMs individuales. AWS CloudHSM sincroniza los HSM de cada clúster para que funcionen como una unidad lógica.
Para crear un clúster de HSM utilizando la consola completa los siguientes pasos:
1. Abrir la página del servicio AWS CloudHSM, elegir Crear clúster (Create cluster).
2. Seleccionar las opciones de configuración utilizando la VPC y subredes privadas de acuerdo a la arquitectura mostrada anteriormente, y hacer clic en Siguiente (Next). Es necesario considerar que el servicio de AWS CloudHSM puede no encontrarse disponible en algunas zonas de disponibilidad (AZ) de una región donde el servicio está soportado.
3. Seleccionar el periodo de retención de los respaldos. Una vez concluido, dar clic en Siguiente (Next).
4. Opcionalmente es posible agregar etiquetas para identificar el clúster. Dar clic en Revisar (Review) una vez concluido.
5. Aparecerá un resumen de la información seleccionada; es necesario revisarla a detalle, pues una vez creado el clúster, no es posible cambiar la VPC o hacer modificaciones a las subredes seleccionadas, ya sea cambiarlas o agregar nuevas. Dar clic en crear clúster (Create cluster).
Aparecerá un mensaje indicando que el clúster está siendo creado, y el avance de éste. El clúster pasará a estado no inicializado (Uninitialized) una vez que termine el proceso.
Al crear un clúster, AWS CloudHSM también crea un grupo de seguridad denominado cloudhsm-cluster-clusterID-sg. Este grupo de seguridad contiene una regla TCP preconfigurada que permite las comunicaciones de entrada y de salida del clúster en los puertos 2223-2225. La regla permite que los HSMs del clúster se comuniquen entre sí, por lo que no debe modificarse.
Inicializando el clúster
Para poder inicializar el clúster de CloudHSM es necesario crear primero un HSM. Para este fin se deberán seguir los siguientes pasos en consola:
1. Seleccionar el clúster que se acaba de crear en los pasos anteriores. Dar clic en Acciones (Actions) y seleccionar la opción de inicializar (Initialize).
2. Seleccionar la subred privada a usarse y dar clic en Crear (Create).
El HSM será creado después de algunos minutos.
3. Se debe descargar la Solicitud de Firmado de Certificado (Certificate Signing Request (CSR)) del clúster. Posteriormente deberá firmarse. Opcionalmente, podemos descargar los certificados del HSM que se usaron para generar el CSR, lo que permitirá verificar su autenticidad. Dar clic en Siguiente (Next).
4. El CSR se firmará usando el siguiente procedimiento:
-
- Crear una llave privada (key)
- Utilizar la llave privada para crear un certificado auto firmado (crt)
- Firmar la CSR del clúster (<cluster ID>_CustomerHsmCertificate.crt)
Debe considerarse que los siguientes comandos son para efectos de demostración solamente y se recomiendan para fase de desarrollo y pruebas. Para un clúster de producción, la clave debe crearse de forma segura mediante una fuente de aleatoriedad de confianza. Recomendamos que utilice un HSM externo seguro que esté sin conexión o equivalente y que guarde la clave de forma segura.
5. Continuar con la inicialización del clúster subiendo los certificados que se acaban de generar. Dar clic en Subir e inicializar (Upload and initialize).
La inicialización del clúster tomará algunos minutos.
Creación de un cliente
Para administrar un clúster de AWS CloudHSM, es necesario establecer comunicación con los HSMs. La forma más sencilla de hacerlo es utilizando una instancia Amazon EC2 en la misma VPC que el clúster, aunque podrían realizarse conexiones desde otras VPCs mediante peering, usando VPN o enlaces dedicados a través de AWS Direct Connect.
Es necesario lanzar una instancia de Amazon EC2 con reglas específicas para los Security Groups, tanto de la instancia como del clúster, las cuales permitan la conectividad entre ellos. Para configurar el cliente utiliza los siguientes pasos:
1. Instalar el cliente y las herramientas de línea de comandos de AWS CloudHSM.
2. Editar la configuración del cliente, usando la dirección IP del HSM disponible en la consola.
3. Es necesario copiar el certificado generado en la sección anterior (customerCA.crt) a la misma ruta de los archivos de configuración.
Activación del clúster
Cuando se activa un clúster de AWS CloudHSM, su estado cambiará de inicializado a activo. Para activar el clúster, inicie sesión en el HSM con las credenciales del usuario responsable de criptografía previa (PRECO), el cual es un usuario temporal que sólo existe en el primer HSM de un clúster de AWS CloudHSM con un nombre de usuario y contraseña predeterminados. Al cambiar la contraseña, el usuario PRECO se convierte en un responsable de criptografía (CO).
Una vez que tengamos el cliente instalado y configurado de acuerdo a la sección anterior, procedemos con la activación:
1. Establecer una conexión al HSM utilizando el siguiente comando. Si la conexión es correcta se desplegará un mensaje similar al siguiente:
2. Iniciar sesión con el usuario PRECO y cambiar su contraseña. Podrá confirmar que el tipo de usuario PRECO cambió a CO.
El clúster cambiará al estado Activo (Active) después de unos minutos.
Limpieza del ambiente
Al terminar de usar los recursos creados, es recomendable eliminarlos para evitar incurrir en cargos adicionales. Para eliminar el clúster, se deberá primero eliminar todos los HSMs que contenga.
Un respaldo será creado automáticamente el momento de eliminar el HSM. El respaldo puede ser utilizado después para generar un nuevo clúster.
Conclusiones
Una vez concluido el proceso de activación, el clúster estará listo para generar dispositivos HSMs adicionales, usuarios o llaves criptográficas para sus aplicaciones.
Para empezar a generar y usar claves en el nuevo clúster, se deberá crear un usuario con las herramientas de línea de comando. Con los usuarios de HSM instalados, es posible iniciar sesión, crear y utilizar claves con cualquiera de las siguientes opciones:
- Usar la utilería de administración de claves, una herramienta de línea de comandos.
- Crear una aplicación C utilizando la herramienta Biblioteca de PKCS #11.
- Crear una aplicación Java usando el comando Proveedor de JCE.
- Usar el motor dinámico de OpenSSL directamente desde la línea de comando.
- Utilizar el motor dinámico de OpenSSL para la descarga de TLS con servidores web NGINX y Apache.
- Utilizar los proveedores de GNC y KSP para utilizar AWS CloudHSM como autoridad de certificación (CA) de Microsoft Windows Server.
- Utilizar los proveedores de GNC y KSP para utilizar AWS CloudHSM como Herramienta de Microsoft Sign.
- Utilizar los proveedores de GNC y KSP para la descarga TLS con servidor web de Internet Information Server (IIS).
Sobre el autor
Omner Barajas es Arquitecto de Soluciones Especialista en Seguridad en AWS México.
Sobre los revisores
Daniel García es Arquitecto de Soluciones Especialista en Seguridad en AWS Brasil.
Javier Huerta es Arquitecto de Soluciones Sr. especializado en Mejores Prácticas (Well-Architected) para Latinoamérica.