Verifica certificaciones

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 firmada con anterioridad desde el HSM, junto con las cadenas de certificados que se usan 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 verificar 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 código abierto de Python desarrollada por 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 un modelo de una solución personalizada.

Los ejemplos de este tema están diseñados para entornos de Linux, incluido Cloud Shell. Para continuar con los clientes de macOS o Windows, es posible que debas realizar modificaciones.

Antes de comenzar

Verifica la certificación

El proceso de verificación de certificación se puede realizar de forma automática a través de Google Cloud Console o de forma manual, mediante la descarga del paquete de certificación y la secuencia de comandos de verificación de certificación, y su ejecución local o en la nube. Shell.

Verifica las certificaciones a través de Cloud Console

Puedes verificar la certificación a través de Cloud Console, que abrirá un Cloud Shell y lo prepropagará con los fragmentos de código necesarios para realizar todo el proceso de verificación.

  1. Ve a la página Llaveros de claves criptográficas en Cloud Console.

    Ir a la página Llaveros de claves criptográficas

  2. Selecciona el llavero de claves que contiene la clave que deseas certificar y, luego, selecciona la clave.

  3. Haz clic en Más en la versión de clave que deseas certificar y selecciona Verificar certificación.

  4. En el cuadro de diálogo Verificar certificación, haz clic en Abrir CLI de gcloud. Esto abrirá Cloud Shell y lo prepropagará con el fragmento de código necesario para completar todo el proceso de verificación.

  5. Inspeccionar el fragmento de código prepropagado en Cloud Shell El fragmento descarga la secuencia de comandos de verificación de certificaciones y sus dependencias, ejecuta los comandos de gcloud para descargar las cadenas de certificados y certificaciones, y, luego, ejecuta la secuencia de comandos a fin de verificar la certificación.

  6. 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 certificaciones deben descargarse antes de verificar la certificación de forma manual.

  1. Descarga las cadenas de certificación y certificado.

    Console

    1. Ve a la página Llaveros de claves criptográficas en Cloud Console.

      Ir a la página Llaveros de claves criptográficas

    2. Selecciona el llavero de claves que contiene la clave que deseas certificar y, luego, selecciona la clave.

    3. Haz clic en Más en la versión de clave que deseas certificar y selecciona Verificar certificación.

    4. En el diálogo Verify Attestation, haz clic en Download Attestation Bundle. Esta acción descargará un archivo ZIP que contiene las cadenas de certificación y de certificado.

    5. Extrae las cadenas de certificación y certificado del paquete de certificación.

    gcloud

    1. Haz clic en Activar Cloud Shell en la parte superior de la ventana de la consola.

      Activar Cloud ShellSe 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.

      Sesión de Cloud Shell

    2. 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] \
      
    3. 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] \
      
  2. Descarga la secuencia de comandos para verificar certificaciones y sus requisitos, y revisa la documentación de la secuencia de comandos para verificar la certificación en el archivo de certificación con los certificados en el archivo de certificados.

Verifica la certificación mediante paquetes de certificados

Los paquetes de certificados se usaban a fin de verificar la certificación antes de que se introdujeran cadenas de certificados para cada versión de clave. Recomendamos seguir las instrucciones anteriores para verificar la certificación mediante cadenas de certificados, ya que tenemos pensado dar de baja los paquetes de certificados en el cuarto trimestre de 2022.

  1. Descarga el conjunto de certificados que dirige el certificado raíz de Google.

    curl -O https://www.gstatic.com/cloudhsm/cloud-kms-prod-[location]-google.pem
    
  2. Descarga el conjunto de certificados que lleva al certificado raíz del fabricante de HSM.

    curl -O https://www.gstatic.com/cloudhsm/cloud-kms-prod-[location]-cavium.pem
    
  3. Descarga la certificación.

    Console

    1. Ve a la página Llaveros de claves criptográficas en Cloud Console.

      Ir a la página Llaveros de claves criptográficas

    2. Selecciona el llavero de claves que contiene la clave que deseas certificar y, luego, selecciona la clave.

    3. Haz clic en Más en la versión de clave que deseas certificar y selecciona Obtener certificación.

    4. En el diálogo Obtener certificación, haz clic en Descargar. El archivo de certificación se descarga en tu sistema local.

      El nombre del archivo de certificación tiene el siguiente formato: [keyring-name]-[key-name]-[key-version]-[attestation-format]-attestation.dat. Cada parte del nombre del archivo está separada por un guion. Por ese motivo, el texto de los marcadores de posición está rodeado por caracteres de corchetes ([ y ]).

    gcloud

    1. Haz clic en Activar Cloud Shell en la parte superior de la ventana de la consola.

      Activar Cloud ShellSe 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 de shell puede tomar unos segundos en inicializarse.

      Sesión de Cloud Shell

    2. 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] \
      
  4. Descarga la secuencia de comandos para verificar certificaciones con paquetes de certificados y sus requisitos, y revisa la documentación de la secuencia de comandos para verificar la certificación en el archivo de certificación con ambos paquetes de certificados.

Analiza los valores de certificación

La documentación del fabricante de HSM incluye instrucciones completas para usar sus secuencias de comandos a fin de analizar los valores de una certificación y verificar la clave pública de un par de claves asimétricas. La certificación deberá descomprimirse con el siguiente comando para poder analizarla.

  • Descomprime la certificación comprimida.

    gzip -d < compressed_attestation.dat > attestation.dat
    

Los vínculos van directamente a instrucciones específicas del fabricante de HSM:

Las instrucciones para analizar el valor de la certificación incluyen una referencia de los campos generales en la certificación, que no son específicas de las claves de HSM en Cloud HSM.

En las siguientes secciones, se ilustra 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.

  1. Obtén el ID de recurso de la versión de clave. Puedes usar Cloud Console para obtener el ID de recurso de la versión de clave o ejecutar el siguiente comando de :

    gcloud kms keys versions list \
       --location location \
       --keyring key-ring-name \
       --key key-name
    
  2. 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"
    
  3. 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}')"
    
  4. 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)
    
  5. Compara los valores de RESOURCE_NAME_HEX y KEYID_HEX como strings:

    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 se cierra con el código 0.

Verifique otras propiedades de la clave

Puedes ver varias propiedades clave, que corresponden a los campos en el 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 se puede extraer una clave, examina el campo 0x0162. El valor de \x01 es true y el valor de \x00 es false.

    No se pueden extraer las claves de Cloud HSM.

    grep '0x0162:' /path/to/parsed/attestation.dat
    
  • Cómo se almacena la clave en el HSM (si se creó directamente o se importó) en el campo 0x0163. Si la clave se creó de forma local en 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 llegó la clave al HSM. Si la clave se creó en Cloud HSM, significa que nunca se almacenó sin encriptar fuera de un HSM. Si la clave se importó, el mecanismo de importación garantiza que la clave esté protegida en tránsito durante el proceso de importación y, luego, dentro de Cloud HSM.

    grep '0x0163:' /path/to/parsed/attestation.dat
    
  • Un tipo de clave se almacena en el campo 0x0100. Los tipos de claves se documentan en el estándar PCKS#11 con el prefijo CKK_*. 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.