Questa guida mostra come verificare le attestazioni per le chiavi Cloud HSM, che vengono sempre archiviate in un modulo di sicurezza hardware (HSM). Questa guida si applica sia alle chiavi Cloud HSM multi-tenant sia a quelle single-tenant.
Panoramica
Nella crittografia, un'attestazione è una dichiarazione leggibile dalla macchina e verificabile a livello di programmazione che un software fa su se stesso. Le attestazioni sono un componente importante del Trusted Computing e potrebbero essere richieste per motivi di conformità
Per visualizzare e verificare le attestazioni, richiedi una 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 da 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 di attestazione e sul funzionamento della verifica o come modello per una soluzione personalizzata.
Gli esempi in questo argomento sono progettati per gli ambienti Linux, inclusa la Cloud Shell. Per seguire le istruzioni sui client macOS o Windows, potrebbe essere necessario apportare modifiche.
Prima di iniziare
- Se necessario, crea una chiave Cloud HSM in un keyring in una regione supportata da Cloud HSM.
Scarica e installa gli script per l'analisi dei valori dell'attestazione. dal produttore dell'HSM. Scarica ciascuno di questi script:
verify_pubkey.pyparse_v1.pyparse_v2.py
Esamina la documentazione sull'utilizzo degli script, fornita nella stessa posizione.
Scarica e installa lo script per la verifica delle attestazioni e i relativi prerequisiti ed esamina la documentazione dello script.
Verifica dell'attestazione
La procedura di verifica dell'attestazione può essere eseguita automaticamente tramite la Google Cloud console 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 Google Cloud console
Puoi verificare l'attestazione tramite la Google Cloud console, che aprirà Cloud Shell e la precompila con gli snippet di codice necessari per eseguire l'intera procedura di verifica dell'attestazione.
Vai alla pagina Gestione chiavi nella Google Cloud console.
Seleziona il keyring contenente la chiave che vuoi attestare, quindi seleziona la chiave.
Fai clic su Altro more_vert per la versione della chiave che vuoi attestare e seleziona Verifica attestazione.
Nella finestra di dialogo Verifica attestazione, fai clic su Apri Cloud Shell. Verrà aperta Cloud Shell e verrà precompilata con lo snippet di codice necessario per eseguire l'intera procedura di verifica.
Esamina 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.
Esegui lo snippet di codice per verificare l'attestazione.
Verifica manuale dell'attestazione
Prima di verificare manualmente l'attestazione, è necessario scaricare l'attestazione, le catene di certificati e lo script di verifica dell'attestazione.
Scarica l'attestazione e le catene di certificati.
Console
Vai alla pagina Gestione chiavi nella Google Cloud console.
Seleziona il keyring contenente la chiave che vuoi attestare, quindi seleziona la chiave.
Fai clic su Altro more_vert per la versione della chiave che vuoi attestare e seleziona Verifica attestazione.
Nella finestra di dialogo Verifica attestazione, fai clic su Scarica bundle attestazione. Verrà scaricato un file ZIP contenente l'attestazione e le catene di certificati.
Estrai l'attestazione e le catene di certificati dal bundle di attestazione.
gcloud
Fai clic su Attiva Cloud Shell nella parte superiore di la finestra della console.
All'interno di un nuovo frame nella parte inferiore de
lla 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.
Al prompt della riga di comando di Cloud Shell, utilizza il
gcloud kms keys versions describecomando per recuperare l'attestazione per la chiave che vuoi attestare. Il flag--attestation-filespecifica 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] \
Al prompt della riga di comando di Cloud Shell, utilizza il comando
gcloud kms keys versions get-certificate-chainper recuperare le catene di certificati per la chiave che vuoi attestare. Il--output-fileflag specifica il percorso e il nome 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] \
Scarica lo script per la verifica delle attestazioni e i relativi prerequisiti ed esamina 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 degli script per analizzare i valori di un'attestazione e verificare la chiave pubblica per una coppia di chiavi asimmetriche. Prima di poter analizzare l'attestazione , è necessario decomprimerla con il seguente comando prima che possa essere analizzata.
Decomprimi l'attestazione compressa.
gzip -d < compressed_attestation.dat > attestation.dat
Questi link rimandano direttamente a istruzioni specifiche del produttore dell'HSM:
- Verifica della chiave pubblica di una coppia di chiavi asimmetriche
- Analisi dei valori dell'attestazione
Le istruzioni per l'analisi del valore dell'attestazione includono un riferimento ai campi generali dell'attestazione, non specifici per le chiavi HSM in Cloud HSM.
Le sezioni che seguono illustrano come verificare le informazioni sulle chiavi che sono specifiche di Cloud HSM.
Verifica dell'ID versione della chiave
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 0x0102
campo o del campo ID chiave nel file di attestazione. L'ID chiave è composto da due
hash SHA-256 concatenati in formato esadecimale. Il secondo deve corrispondere
al nome risorsa della chiave.
Recupera l'ID risorsa della versione della chiave per la versione della chiave. Puoi utilizzare la 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
Nella riga di comando, assegna
resource_nameall'ID risorsa della versione della chiave che hai appena recuperato.RESOURCE_NAME="projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name/cryptoKeyVersions/key-version"
Poiché lo script di analisi scarica tutti i campi di attestazione in formato esadecimale, l'ID chiave è stato formattato due volte in formato esadecimale. (Una volta durante la creazione di keyID, l'altra durante l'analisi dell'attestazione). Per verificare che il nome risorsa corrisponda all'ID chiave, converti il nome risorsa in un hash SHA-256 esadecimale, 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}')"Lo script di analisi scarica tutti i campi di attestazione in formato esadecimale e l'ID chiave viene codificato in formato esadecimale internamente una seconda volta. Imposta la variabile di ambiente
KEYID_HEXsul valore dell'ID chiave con un livello di codifica esadecimale decodificato:KEYID_HEX=$(grep -m 1 0x0102 /path/to/parsed/attestation.dat | awk '{print $2}' | xxd -p -r)Confronta i valori di
RESOURCE_NAME_HEXeKEYID_HEXcome 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 viene chiuso con il codice
0.
Verifica di altre proprietà della chiave
Puoi visualizzare varie proprietà della chiave, che corrispondono ai campi dello standard PKCS #11. Utilizza i seguenti esempi riportati di seguito come guide per verificare altre proprietà della chiave.
Se una chiave è estraibile , viene memorizzato nel campo
0x0102dell'output analizzato. Per determinare se una chiave è estraibile, esamina il campo0x0162. Un valore di\x01ètruee 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) viene 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 dal modo in cui 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, allora il meccanismo di importazione garantisce che la chiave sia protetta durante il processo di importazione e in Cloud HSM in seguito.
grep '0x0163:' /path/to/parsed/attestation.dat
Il tipo di chiave viene memorizzato nel campo
0x0100. I tipi di chiave sono documentati in lo standard PCKS#11 con il prefissoCKK_*. Ad esempio, una chiave AES ha un tipo di\x1f.grep '0x0100:' /path/to/parsed/attestation.dat
Informazioni aggiuntive
Verifichi un'attestazione per determinare se una versione della chiave è stata creata all'interno di un HSM.