Verifica delle attestazioni

Questo argomento mostra come verificare le attestazioni per le chiavi Cloud HSM, che vengono sempre archiviate in un modulo di sicurezza hardware (HSM).

Panoramica

In crittografia, un'attestazione è un'affermazione leggibile da un computer e dimostrabile tramite programmazione che un software fa su di sé. Le attestazioni sono un componente importante del calcolo attendibile e potrebbero essere richieste per motivi di conformità.

Per visualizzare e verificare le attestazioni, richiedi un'dichiarazione di attestazione firmata crittograficamente dall'HSM, insieme alle catene di certificati utilizzate per firmarla. La dichiarazione di attestazione viene prodotta dall'hardware HSM e firmata con certificati di proprietà di Google e del produttore dell'HSM.

Dopo aver scaricato la dichiarazione di attestazione e le catene di certificati, puoi controllare i relativi attributi o verificare la validità dell'attestazione utilizzando le catene di certificati.

Lo script di attestazione è uno script Python open source sviluppato da Google. Puoi visualizzare il codice sorgente dello script per scoprire di più sul formato dell'attestazione e sul funzionamento della verifica oppure come modello per una soluzione personalizzata.

Gli esempi in questo argomento sono progettati per ambienti Linux, inclusa la Cloud Shell. Per seguire la procedura sui client macOS o Windows, potresti dover apportare modifiche.

Prima di iniziare

Verifica dell'attestazione

La procedura di verifica dell'attestazione può essere eseguita automaticamente tramite la console Google Cloud o manualmente scaricando il bundle di attestazione e lo script di verifica dell'attestazione ed eseguendolo localmente o in Cloud Shell.

Verifica delle attestazioni tramite la console Google Cloud

Puoi verificare l'attestazione tramite la console Google Cloud, che aprirà Cloud Shell e la precompilerà con gli snippet di codice necessari per eseguire l'intera procedura di verifica dell'attestazione.

  1. Vai alla pagina Gestione delle chiavi nella console Google Cloud.

    Vai alla pagina Gestione chiavi

  2. Seleziona il mazzo di chiavi contenente la chiave che vuoi attestare, quindi seleziona la chiave.

  3. Fai clic su Altro per la versione della chiave che vuoi attestare e seleziona Verifica attestazione.

  4. Nella finestra di dialogo Verifica attestazione, fai clic su Apri Cloud Shell. Verrà aperta Cloud Shell e verrà precompilato con lo snippet di codice necessario per completare l'intera procedura di verifica.

  5. Controlla lo snippet di codice precompilato in Cloud Shell. Lo snippet scarica lo script di verifica dell'attestazione e le relative dipendenze, esegue i comandi gcloud per scaricare l'attestazione e le catene di certificati, quindi esegue lo script per verificare l'attestazione.

  6. Esegui lo snippet di codice per verificare l'attestazione.

Verificare manualmente l'attestazione

L'attestazione, le catene di certificati e lo script di verifica dell'attestazione devono essere scaricati prima di verificare manualmente l'attestazione.

  1. Scarica le catene di attestazioni e certificati.

    Console

    1. Vai alla pagina Gestione delle chiavi nella console Google Cloud.

      Vai alla pagina Gestione chiavi

    2. Seleziona il portachiavi contenente la chiave che vuoi attestare, quindi la chiave.

    3. Fai clic su Altro per la versione della chiave che vuoi attestare e seleziona Verifica attestazione.

    4. Nella finestra di dialogo Verifica attestazione, fai clic su Scarica pacchetto di attestazione. Verrà scaricato un file ZIP contenente le catene di attestazioni e certificati.

    5. Estrai le catene di attestazioni e certificati dal bundle di attestazione.

    gcloud

    1. Fai clic su Attiva Cloud Shell nella parte superiore della finestra della console.

      Attiva Cloud Shell All'interno di un nuovo frame nella parte inferiore della console si apre una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Potrebbe essere necessario attendere qualche secondo per l'inizializzazione della sessione della shell.

      Sessione di Cloud Shell

    2. Nel prompt della riga di comando di Cloud Shell, utilizza il comando gcloud kms keys versions describe per recuperare l'attestazione della chiave che vuoi attestare. Il flag --attestation-file specifica il percorso e il nome file di destinazione per l'attestazione recuperata.

      gcloud kms keys versions describe key-version \
       --key key-name \
       --location location \
       --keyring keyring-name \
       --attestation-file [attestation-file] \
      
    3. Nel prompt della riga di comando di Cloud Shell, utilizza il comando gcloud kms keys versions get-certificate-chain per recuperare le catene di certificati per la chiave che vuoi attestare. Il --output-file flag specifica il percorso e il nome del file di destinazione per i certificati recuperati.

      gcloud kms keys versions get-certificate-chain key-version \
       --key key-name \
       --location location \
       --keyring keyring-name \
       --output-file [certificates-file] \
      
  2. Scarica lo script per la verifica delle attestazioni e i relativi prerequisiti, quindi consulta la documentazione dello script per verificare l'attestazione nel file di attestazione utilizzando i certificati nel file dei certificati.

Analisi dei valori dell'attestazione

La documentazione del produttore dell'HSM include istruzioni complete per l'utilizzo dei relativi script per analizzare i valori di un'attestazione e verificare la chiave pubblica di una coppia di chiavi asimmetriche. Prima di poter essere analizzata, la certificazione dovrà essere decompresa con il seguente comando.

  • Decomprimere l'attestazione compressa.

    gzip -d < compressed_attestation.dat > attestation.dat
    

Questi link rimandano direttamente a istruzioni specifiche del produttore dell'HSM:

Le istruzioni per l'analisi del valore dell'attestazione includono un riferimento ai campi generici dell'attestazione, non specifici per le chiavi HSM in Cloud HSM.

Le sezioni seguenti illustrano come verificare le informazioni sulle chiavi specifiche di Cloud HSM.

Verificare l'ID versione della chiave

Puoi verificare se l'hash SHA-256 dell'ID risorsa della versione della chiave è presente nell'attestazione. Il nome della risorsa della chiave fa parte del campo 0x0102 o del campo ID chiave nel file di attestazione. L'ID chiave è composto da due digest di hash SHA-256 concatenati in formato esadecimale. Il secondo deve corrispondere al nome della risorsa della chiave.

  1. Recupera l'ID risorsa della versione della chiave. Puoi utilizzare la console Google Cloud per ottenere l'ID risorsa della versione della chiave o eseguire il seguente comando:

    gcloud kms keys versions list \
       --location location \
       --keyring key-ring-name \
       --key key-name
    
  2. Nella riga di comando, assegna resource_name all'ID risorsa della versione della chiave appena recuperato.

    RESOURCE_NAME="projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name/cryptoKeyVersions/key-version"
    
  3. Poiché lo script di analisi esegue il dump di tutti i campi di attestazione in formato esadecimale, l'ID chiave è stato formattato in formato esadecimale due volte. (una volta durante la creazione del keyID, l'altra durante l'analisi dell'attestazione). Per verificare che il nome della risorsa corrisponda all'ID chiave, converti il nome della risorsa in un digest esadecimale SHA-256, ripristina una conversione esadecimale dell'ID chiave nel file di attestazione e confronta i due.

    RESOURCE_NAME_HEX="$(echo -n ${RESOURCE_NAME} | openssl dgst -sha256 -hex | awk '{print $2}')"
    
  4. Lo script di analisi esegue il dump di tutti i campi di attestazione in formato esadecimale e l'ID chiave viene codificato internamente in esadecimale una seconda volta. Imposta la variabile di ambiente KEYID_HEX sul valore dell'ID chiave con un livello di decodifica della codifica esadecimale:

    KEYID_HEX=$(grep -m 1 0x0102 /path/to/parsed/attestation.dat | awk '{print $2}' | xxd -p -r)
    
  5. Confronta i valori di RESOURCE_NAME_HEX e KEYID_HEX come stringhe:

    test  ${RESOURCE_NAME_HEX} == ${KEYID_HEX:(-64)} || echo "Values don't match"
    

    Se i valori corrispondono, non viene restituito alcun output e il comando esce con il codice 0.

Verificare altre proprietà della chiave

Puoi visualizzare varie proprietà chiave, che corrispondono ai campi dello standard PKCS #11. Utilizza i seguenti esempi come guida per verificare altre proprietà della chiave.

  • L'estrazione di una chiave è memorizzata nel campo 0x0102 dell'output analizzato. Per determinare se una chiave è estraibile, esamina il campo 0x0162. Un valore di \x01 è true e un valore di \x00 è false.

    Le chiavi Cloud HSM non sono estraibili.

    grep '0x0162:' /path/to/parsed/attestation.dat
    
  • Il modo in cui la chiave è stata inserita nell'HSM (se è stata creata direttamente o importata) è memorizzato nel campo 0x0163. Se la chiave è stata creata localmente sull'HSM, il campo è impostato su \x01. Il campo di una chiave importata è impostato su \x00.

    Puoi dedurre alcune informazioni da come la chiave è stata inserita nell'HSM. Se la chiave è stata creata in Cloud HSM, significa che non è mai stata archiviata non criptata al di fuori di un HSM. Se la chiave è stata importata, il meccanismo di importazione garantisce che la chiave sia protetta durante il transito durante la procedura di importazione e in seguito in Cloud HSM.

    grep '0x0163:' /path/to/parsed/attestation.dat
    
  • Il tipo di una chiave è memorizzato nel campo 0x0100. I tipi di chiavi sono documentati nello standard PCKS#11 con prefisso CKK_*. Ad esempio, una chiave AES ha un tipo di \x1f.

    grep '0x0100:' /path/to/parsed/attestation.dat
    

Informazioni aggiuntive

Verifi chi un'attestazione per determinare se è stata creata una versione di una chiave all'interno di un HSM.