Verifica delle attestazioni

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

Panoramica

Nella crittografia, un'attestazione è un'affermazione leggibile da macchina e programmabile che un software realizza su se stessa. Le attestazioni sono una componente importante del computing attendibile e potrebbero essere necessarie per motivi di conformità.

Per visualizzare e verificare le attestazioni, devi richiedere un'istruzione di attestazione firmata con la crittografia tramite HSM, nonché le catene di certificati utilizzate per firmarla. La dichiarazione di attestazione è prodotta dall'hardware HSM e firmata da certificati di proprietà di Google e del produttore 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 attestazione è uno script Python open source sviluppato da Google. Puoi visualizzare il codice sorgente per lo script per saperne 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, tra cui Cloud Shell. Per seguire i client macOS o Windows, potrebbe essere necessario apportare modifiche.

Prima di iniziare

Verifica dell'attestazione

Il processo di verifica dell'attestazione può essere eseguito automaticamente tramite Google Cloud Console o manualmente, scaricando il bundle di attestazione e lo script di verifica dell'attestato ed eseguendolo in locale o in Cloud Shell.

Verifica delle attestazioni tramite Google Cloud Console

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

  1. Vai alla pagina Gestione chiavi in Google Cloud Console.

    Vai alla pagina Gestione delle chiavi

  2. Seleziona il keyring contenente il codice che vuoi verificare, 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 l'interfaccia a riga di comando gcloud. In questo modo, Cloud Shell verrà aperto 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'attestato e le sue 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.

Verifica manuale dell'attestazione in corso...

L'attestazione, le catene di certificati e lo script di verifica delle attestazioni devono essere scaricati prima della verifica manuale dell'attestazione.

  1. Scarica le catene di attestazioni e certificati.

    console

    1. Vai alla pagina Gestione chiavi in Google Cloud Console.

      Vai alla pagina Gestione delle chiavi

    2. Seleziona il keyring contenente il codice che vuoi verificare, 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 Scarica pacchetto di attestazione. Verrà scaricato un file ZIP contenente le catene di attestazione e certificato.

    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 Una sessione di Cloud Shell si apre all'interno di un nuovo frame nella parte inferiore della console e mostra un prompt della riga di comando. L'inizializzazione della sessione della shell può richiedere alcuni secondi.

      Sessione Cloud Shell

    2. Nel prompt della riga di comando di Cloud Shell, utilizza il comando gcloud kms keys versions describe per recuperare l'attestazione per la chiave che vuoi attestare. Il flag --attestation-file specifica il percorso e la destinazione del nome file 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 flag --output-file specifica il percorso e la destinazione del nome file 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 suoi prerequisiti e consulta la documentazione relativa allo script per verificare l'attestazione nel file di attestazione utilizzando i certificati nel file dei certificati.

Verifica dell'attestazione utilizzando pacchetti di certificati

I pacchetti di certificati sono stati utilizzati per verificare l'attestazione prima dell'introduzione delle catene di certificati per ogni versione della chiave. Ti consigliamo di verificare manualmente l'attestazione utilizzando catene di certificati poiché abbiamo intenzione di ritirare i pacchetti di certificati in futuro.

  1. Scarica il pacchetto di certificati che contiene il certificato radice di Google.

    curl -O https://www.gstatic.com/cloudhsm/cloud-kms-prod-[location]-google.pem
    
  2. Scarica il bundle di certificati che porta al certificato radice del produttore HSM.

    curl -O https://www.gstatic.com/cloudhsm/cloud-kms-prod-[location]-cavium.pem
    
  3. Scarica l'attestazione.

    console

    1. Vai alla pagina Gestione chiavi in Google Cloud Console.

      Vai alla pagina Gestione delle chiavi

    2. Seleziona il keyring contenente il codice che vuoi verificare, quindi seleziona la chiave.

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

    4. Nella finestra di dialogo Ottieni attestazione, fai clic su Scarica. Il file di attestazione viene scaricato nel sistema locale.

      Il formato del nome del file di attestazione è [keyring-name]-[key-name]-[key-version]-[attestation-format]-attestation.dat. Ogni parte del nome del file è separata da un trattino. Per questo motivo, il testo segnaposto è racchiuso tra parentesi quadre ([ e ]).

    gcloud

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

      Attiva Cloud Shell Una sessione di Cloud Shell si apre all'interno di un nuovo frame nella parte inferiore della console e mostra un prompt della riga di comando. L'inizializzazione della sessione della shell può richiedere alcuni secondi.

      Sessione Cloud Shell

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

      gcloud kms keys versions describe key-version \
       --key key-name \
       --location location \
       --keyring keyring-name \
       --attestation-file [attestation-file] \
      
  4. Scarica lo script per la verifica delle attestazioni con pacchetti di certificati e i suoi prerequisiti e consulta la documentazione relativa allo script per verificare l'attestazione nel file di attestazione con entrambi i pacchetti di certificati.

Analisi dei valori dell'attestazione

La documentazione del produttore HMS include istruzioni complete per l'utilizzo degli script per analizzare i valori di un'attestazione e verificare la chiave pubblica per una coppia di chiavi asimmetriche. L'attestazione dovrà essere decriptata con il comando seguente prima di poter essere analizzata.

  • Decomprimi l'attestazione compressa.

    gzip -d < compressed_attestation.dat > attestation.dat
    

Questi link rimandano direttamente a istruzioni specifiche del produttore HSM:

Le istruzioni per analizzare il valore dell'attestazione includono un riferimento dei campi generali nell'attestazione, non specifico delle chiavi HSM in Cloud HSM.

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

Verifica l'ID versione del token

Puoi verificare se l'hash SHA-256 dell'ID risorsa della versione della chiave è presente nell'attestazione. Il nome risorsa della chiave fa parte del campo 0x0102 o del campo ID chiave nel file di attestazione. L'ID chiave è composto da due digest 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 per la versione. Puoi utilizzare Google Cloud Console per recuperare l'ID risorsa della versione della chiave oppure 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. Dato che lo script di analisi scarica tutti i campi di attestazione in formato esadecimale, l'ID chiave è stato formattato in formato esadecimale due volte. (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, inverti 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 scarica tutti i campi di attestazione in formato esadecimale e l'ID chiave è codificato internamente con esadecimale una seconda volta. Imposta la variabile di ambiente KEYID_HEX sul valore dell'ID chiave con un livello di codifica esadecimale decodificata:

    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 corrispondenti ai campi nello standard PKCS #11. Utilizza gli esempi riportati di seguito come guide per verificare altre proprietà della chiave.

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

    Le chiavi di Cloud HSM non sono estrabili.

    grep '0x0162:' /path/to/parsed/attestation.dat
    
  • Come la chiave è stata inserita nell' HSM (sia che sia stata creata direttamente o importata) è archiviata nel campo 0x0163. Se la chiave è stata creata localmente su HSM, il campo è impostato su \x01. Un campo della chiave importata è impostato su \x00.

    Puoi ricavare alcune informazioni dal modo in cui la chiave proveniva dall'HSM. Se la chiave è stata creata in Cloud HSM, significa che la chiave 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 in transito durante il processo di importazione e successivamente in Cloud HSM.

    grep '0x0163:' /path/to/parsed/attestation.dat
    
  • Un tipo di 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 \x1f.

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

Informazioni aggiuntive

Puoi verificare un'attestazione per determinare se una versione della chiave è stata creata all'interno di un HSM.