Esta página se ha traducido con Cloud Translation API.
Switch to English

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 con firma criptográfica del HSM, junto con el conjunto de certificados usados 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 los certificados, verifica la validez de los certificados en el conjunto y, luego, la declaración de certificación.

El fabricante de HSM define el formato de la declaración de certificación. No es posible verificar una certificación con Cloud Console, la API de Cloud KMS o la herramienta de gcloud. La verificación es independiente de Google,

La secuencia de comandos de attestation es una secuencia de comandos Python de código abierto desarrollada por Google. Puedes ver el código fuente de la secuencia de comandos a fin de obtener más información sobre el formato de la certificación y cómo funciona la verificación, o como un modelo para una solución personalizada.

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

Antes de comenzar

Descarga los artefactos

Antes de certificar una clave, debes descargar los certificados y la declaración de certificación.

Descarga los certificados

La firma de una certificación puede verificarse mediante un conjunto de certificados que conduzca a los certificados raíz de Google y al fabricante de HSM, y firmarse por las autoridades certificadas (CA) de Google y del fabricante de HSM.

  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 el certificado raíz de Google.

    curl -O https://www.gstatic.com/cloudhsm/roots/global_1498867200.pem
    
  4. Descarga y extrae el certificado raíz y las claves públicas del fabricante de HSM.

    curl -O https://www.marvell.com/content/dam/marvell/en/public-collateral/security-solutions/liquid_security_certificate.zip
    
    unzip liquid_security_certificate.zip
    

    El certificado se extrae en liquid_security_certificate.crt y la clave pública se extrae en liquid_security_certificate.txt.

Descarga la declaración de certificación

Puedes descargar la certificación para una versión de clave criptográfica mediante Google Cloud Console o la línea de comandos. La declaración de certificación se descarga directamente del dispositivo HSM que contiene la clave.

Console

  1. Ve a la página Claves criptográficas en Cloud Console.

    Ir a la página Claves criptográficas

  2. Selecciona el llavero de claves que contiene la clave que quieres certificar y, luego, selecciónala.

  3. Haz clic en Más para 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 esa razón, el texto del marcador de posición está rodeado de 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 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 el formato de certificación de la clave que quieres certificar.

    gcloud kms keys versions describe key-version \
      --key key-name \
      --location location \
      --keyring keyring-name
    

    El resultado de este comando muestra el formato de la certificación de la versión de clave, que necesitarás para el siguiente paso.

  3. En la línea de comandos de Cloud Shell, usa el comando gcloud kms keys versions describe a fin de recuperar la certificación de la clave que quieres certificar, con el formato de certificación que recuperaste en el ejemplo anterior mediante attestation-format. paso. La marca --attestation-file especifica la ruta de acceso y el destino del nombre del archivo para la certificación recuperada. Cada parte del nombre del archivo está separada por un guion. Por esa razón, el texto del marcador de posición está rodeado de caracteres de corchetes ([ y ]).

    gcloud kms keys versions describe key-version \
     --key key-name \
     --location location \
     --keyring keyring-name \
     --attestation-file \
     [keyring-name]-[key-name]-[key-version]-[attestation-format]-attestation.dat
    

Verifica la firma de la certificación

Para verificar la firma criptográfica de una certificación, puedes usar una secuencia de comandos de código abierto.

También puedes verificar la clave pública para un par de claves asimétricas.

Analiza los valores de certificación

En la documentación del fabricante del HSM se 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 para un par de claves asimétricas. Se debe descomprimir la certificación con el siguiente comando antes de que se pueda analizar.

  • Descomprime la compresión comprimida.

    gzip -d < compressed_attestation.dat > attestation.dat
    

Estos 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 campos generales en la certificación, no específicas de las claves de HSM en Cloud HSM.

En las siguientes secciones, se ilustra cómo verificar información sobre tus claves específicas de Cloud HSM.

Verifica el ID de la 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:

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

Verifica otras propiedades de la clave

Puedes ver varias propiedades 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 campo 0x0162. Un valor de \x01 es true y un valor de \x00 es false.

    Las claves de Cloud HSM no se pueden extraer.

    grep '0x0162:' /path/to/parsed/attestation.dat
    
  • Cómo se originó la clave en HSM (ya sea que se haya creado directamente o importada) en un campo 0x0163. Si la clave se creó de manera local en HSM, el campo se configura como \x01. El campo de una clave importada se establece en \x00.

    Puedes inferir algunos datos sobre cómo llegó la clave al HSM. Si la clave se creó en Cloud HSM, significa que nunca se almacenó la clave sin encriptar un HSM. Si se importó la clave, el mecanismo de importación garantiza que esté protegida en tránsito durante el proceso de importación y en Cloud HSM después.

    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 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. Debido a que la verificación es intencionalmente independiente de Google, no puedes verificar una certificación con Cloud Console, la API de Cloud KMS o la herramienta de gcloud.