En este tema, se muestra cómo verificar las certificaciones de las claves de Cloud HSM, que siempre se almacenan en un módulo de seguridad de hardware (HSM).
Resumen
En criptografía, una certificación es una declaración que una pieza de software hace sobre sí mismo, que es legible por computadora y que se puede comprobar de manera programática. Las certificaciones son un componente importante de la computación de confianza y se pueden necesitar por razones de cumplimiento.
Para ver y verificar las certificaciones, solicita una declaración de certificación con firma criptográfica del HSM, junto con las cadenas de certificados usadas para firmarla. La declaración de certificación es producida por el hardware de HSM y firmada por certificados propiedad de Google y el fabricante de HSM.
Después de descargar la declaración de certificación y las cadenas de certificados, puedes comprobar sus atributos o verificar la validez de la certificación con las cadenas de certificados.
La secuencia de comandos de certificación es una secuencia de comandos de Python de código abierto que desarrolló Google. Puedes ver el código fuente de la secuencia de comandos para obtener más información sobre el formato de certificación y cómo funciona la verificación, o como modelo para una solución personalizada.
Los ejemplos de este tema están diseñados para entornos de Linux, incluido Cloud Shell. Para seguir los pasos en clientes de macOS o Windows, es posible que necesites realizar modificaciones.
Antes de comenzar
- Si es necesario, crea una clave de Cloud HSM en un llavero de claves en una región compatible con Cloud HSM.
Descarga e instala las secuencias de comandos para analizar los valores de la certificación del fabricante del HSM. Descarga cada una de estas secuencias de comandos:
verify_pubkey.py
parse_v1.py
parse_v2.py
Revisa la documentación para usar las secuencias de comandos, que se proporciona en la misma posición.
Descarga e instala la secuencia de comandos para verificar certificaciones y sus requisitos previos, y revisa la documentación de la secuencia de comandos.
Verifica la certificación
El proceso de verificación de certificación se puede realizar automáticamente a través de la consola de Google Cloud o de forma manual. Para ello, descarga el paquete de certificación y la secuencia de comandos de verificación de certificación, y ejecútalos de forma local o en Cloud Shell.
Verifica las certificaciones a través de la consola de Google Cloud
Puedes verificar la certificación a través de la consola de Google Cloud, que abrirá un Cloud Shell y lo prepropagará con los fragmentos de código necesarios para realizar todo el proceso de verificación.
Ve a la página Administración de claves en la consola de Google Cloud.
Selecciona el llavero de claves que contiene la clave que deseas certificar y, luego, selecciona la clave.
Haz clic en Más more_vert para la versión de clave que deseas certificar y selecciona Verificar certificación.
En el diálogo Verificar certificación, haz clic en Abrir Cloud Shell. Esto abrirá Cloud Shell y lo prepropagará con el fragmento de código necesario para realizar todo el proceso de verificación.
Inspecciona el fragmento de código prepropagado en Cloud Shell. El fragmento descarga la secuencia de comandos de verificación de certificación y sus dependencias, ejecuta los comandos de gcloud para descargar la certificación y las cadenas de certificados, y, luego, ejecuta la secuencia de comandos para verificar la certificación.
Ejecuta el fragmento de código para verificar la certificación.
Verifica la certificación de forma manual
La certificación, las cadenas de certificados y la secuencia de comandos de verificación de certificación deben descargarse antes de verificar la certificación de forma manual.
Descarga las cadenas de certificación y de certificados.
Console
Ve a la página Administración de claves en la consola de Google Cloud.
Selecciona el llavero de claves que contiene la clave que deseas certificar y, luego, selecciona la clave.
Haz clic en Más more_vert para la versión de clave que deseas certificar y selecciona Verificar certificación.
En el diálogo Verificar certificación, haz clic en Descargar paquete de certificación. Se descargará un archivo ZIP que contiene las cadenas de certificación y de certificados.
Extrae las cadenas de certificación y de certificados del paquete de certificación.
gcloud
Haz clic en Activar Cloud Shell en la parte superior de la ventana de la consola.
Se abrirá una sesión de Cloud Shell en un marco nuevo en la parte inferior de la consola, en la que se mostrará una línea de comandos. La sesión del shell puede tardar unos segundos en inicializarse.
En la línea de comandos de Cloud Shell, usa el comando
gcloud kms keys versions describe
para recuperar la certificación de la clave que quieres certificar. La marca--attestation-file
especifica la ruta de acceso y el destino del nombre del archivo para la certificación recuperada.gcloud kms keys versions describe key-version \ --key key-name \ --location location \ --keyring keyring-name \ --attestation-file [attestation-file] \
En la línea de comandos de Cloud Shell, usa el comando
gcloud kms keys versions get-certificate-chain
para recuperar las cadenas de certificación de la clave que quieres certificar. La marca--output-file
especifica la ruta de acceso y el destino del nombre del archivo para la certificación recuperada.gcloud kms keys versions get-certificate-chain key-version \ --key key-name \ --location location \ --keyring keyring-name \ --output-file [certificates-file] \
Descarga la secuencia de comandos para verificar las certificaciones y sus requisitos previos, y consulta la documentación de la secuencia de comandos para verificar la certificación en el archivo de certificación con los certificados del archivo de certificados.
Analiza los valores de certificación
La documentación del fabricante del HSM incluye instrucciones completas para usar sus secuencias de comandos para analizar los valores de una certificación y verificar la clave pública de un par de claves asimétricas. La certificación se deberá descomprimir con el siguiente comando antes de que se pueda analizar.
Descomprime la certificación comprimida.
gzip -d < compressed_attestation.dat > attestation.dat
Estos vínculos dirigen directamente a instrucciones específicas del fabricante del HSM:
- Cómo verificar la clave pública de un par de claves asimétricas
- Cómo analizar los valores de la certificación
Las instrucciones para analizar el valor de la certificación incluyen una referencia de campos generales en la certificación, no específicos de las claves de HSM en Cloud HSM.
En las siguientes secciones, se muestra cómo verificar la información sobre tus claves que es específica de Cloud HSM.
Verifica el ID de versión de la clave
Puedes verificar si la certificación contiene el hash SHA-256 del ID de recurso de la versión de clave. El nombre de recurso de la clave forma parte del campo 0x0102
o del campo de ID de clave en el archivo de certificación. El ID de clave se compone de dos resúmenes de hash SHA-256 concatenados en formato hexadecimal. El segundo debe coincidir con el nombre del recurso de la clave.
Obtén el ID de recurso de la versión de clave. Puedes usar la consola de Google Cloud para obtener el ID de recurso de la versión de clave o ejecutar el siguiente comando:
gcloud kms keys versions list \ --location location \ --keyring key-ring-name \ --key key-name
En la línea de comandos, asigna
resource_name
al ID de recurso de la versión de clave que acabas de recuperar.RESOURCE_NAME="projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name/cryptoKeyVersions/key-version"
Ya que la secuencia de comandos de análisis vuelca todos los campos de certificación en formato hexadecimal, el ID de clave se habría formateado en formato hexadecimal dos veces (una vez durante la creación de keyID y la otra durante el análisis de la certificación). Para verificar que el nombre del recurso coincida con el ID de clave, convierte el nombre del recurso en un resumen hexadecimal SHA-256, revierte una conversión hexadecimal del ID de clave en el archivo de certificación y compara los dos.
RESOURCE_NAME_HEX="$(echo -n ${RESOURCE_NAME} | openssl dgst -sha256 -hex | awk '{print $2}')"
La secuencia de comandos de análisis vuelca todos los campos de certificación en formato hexadecimal y el ID de clave se codifica de manera interna y hexadecimal una vez más. Configura la variable de entorno
KEYID_HEX
en el valor del ID de clave con una capa de codificación hexadecimal decodificado:KEYID_HEX=$(grep -m 1 0x0102 /path/to/parsed/attestation.dat | awk '{print $2}' | xxd -p -r)
Compara los valores de
RESOURCE_NAME_HEX
yKEYID_HEX
como cadenas:test ${RESOURCE_NAME_HEX} == ${KEYID_HEX:(-64)} || echo "Values don't match"
Si los valores coinciden, no se muestra ningún resultado y el comando finaliza con el código
0
.
Verifica otras propiedades de la clave
Puedes ver varias propiedades de clave, que corresponden a los campos del estándar PKCS #11. Usa los siguientes ejemplos como guías para verificar otras propiedades de la clave.
Si una clave se puede extraer se almacena en el campo
0x0102
del resultado analizado. Para determinar si una clave se puede extraer, examina el campo0x0162
. Un valor de\x01
estrue
y un valor de\x00
esfalse
.Las claves de Cloud HSM no se pueden extraer.
grep '0x0162:' /path/to/parsed/attestation.dat
Cómo entró la clave en el HSM (si se creó directamente o se importó) se almacena en el campo
0x0163
. Si la clave se creó de forma local en el HSM, el campo se establece en\x01
. El campo de una clave importada se establece en\x00
.Puedes inferir algunos datos a partir de cómo la clave llegó al HSM. Si la clave se creó en Cloud HSM, significa que nunca se almacenó sin encriptar fuera de un HSM. Si se importó la clave, el mecanismo de importación garantiza que esta esté protegida en tránsito durante el proceso de importación y, luego, dentro de Cloud HSM.
grep '0x0163:' /path/to/parsed/attestation.dat
El tipo de una clave se almacena en el campo
0x0100
. Los tipos de claves se documentan en el estándar PCKS#11 con el prefijoCKK_*
. Por ejemplo, una clave AES tiene un tipo de\x1f
.grep '0x0100:' /path/to/parsed/attestation.dat
Información adicional
Puedes verificar una certificación para determinar si una versión de clave se creó dentro de un HSM.