Questo argomento mostra come verificare le attestazioni per le chiavi Cloud HSM, che sono sempre archiviate in un modulo di sicurezza hardware (HSM).
Panoramica
In crittografia, una attestazione è un'affermazione, leggibile da una macchina e in modo programmatico, che un software fa su se stesso. Le attestazioni sono una componente importante dell'informatica affidabile e possono essere necessarie per motivi di conformità.
Per visualizzare e verificare le attestazioni, richiedi all' HSM di una dichiarazione di attestazione firmata in forma criptata, insieme alle 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 di HSM.
Dopo aver scaricato l'istruzione di attestazione e le catene di certificati, puoi verificarne gli 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 saperne di più sul formato dell'attestazione e sul funzionamento della verifica o come modello per una soluzione personalizzata.
Gli esempi in questo argomento sono progettati per gli ambienti Linux, tra cui Cloud Shell. Per seguire i client macOS o Windows, potrebbe essere necessario apportare delle modifiche.
Prima di iniziare
- Se necessario, crea una chiave Cloud HSM su un keyring in una regione supportata da Cloud HSM.
Scarica e installa gli script per l'analisi dei valori dell'attestazione dal produttore dei moduli HSM. Scarica ciascuno di questi script:
verify_pubkey.py
parse_v1.py
parse_v2.py
Consulta la documentazione per l'utilizzo degli script, disponibile nella stessa posizione.
Scarica e installa lo script per la verifica delle attestazioni e dei suoi prerequisiti e controlla la documentazione dello script.
Verifica dell'attestazione
Il processo di verifica dell'attestazione può essere eseguito automaticamente tramite la console Google Cloud o manualmente scaricando il bundle di attestazione e lo script di verifica dell'attestazione ed eseguendolo in locale o in Cloud Shell.
Verifica delle attestazioni tramite la console Google Cloud
Puoi verificare l'attestazione tramite la console Google Cloud, che aprirà una sessione di Cloud Shell e la precompila con gli snippet di codice necessari per eseguire l'intero processo di verifica dell'attestazione.
Vai alla pagina Gestione delle chiavi nella console Google Cloud.
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. Si aprirà Cloud Shell e verrà precompilato con lo snippet di codice necessario per 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 sue dipendenze, esegue i comandi gcloud per scaricare le catene di attestazioni e certificati, quindi esegue lo script per verificare l'attestazione.
Esegui lo snippet di codice per verificare l'attestazione.
Verifica manuale dell'attestazione
L'attestazione, le catene di certificati e lo script di verifica dell'attestazione devono essere scaricati prima di verificare manualmente l'attestazione.
Scarica le catene di attestazioni e certificati.
Console
Vai alla pagina Gestione delle chiavi nella console Google Cloud.
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 di attestazione. Verrà scaricato un file ZIP contenente le catene di attestazioni e certificati.
Estrai le catene di attestazioni e certificati dal bundle di attestazione.
gcloud
Fai clic su Attiva Cloud Shell nella parte superiore della finestra della console.
All'interno di un nuovo frame nella parte inferiore della console si apre una sessione di Cloud Shell che mostra un prompt della riga di comando. L'inizializzazione della sessione della shell può richiedere alcuni secondi.
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] \
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] \
Scarica lo script per la verifica delle attestazioni e dei relativi prerequisiti e consulta la documentazione dello script per verificare l'attestazione nel file di attestazione utilizzando i certificati contenuti nel file.
Analisi dei valori dell'attestazione
La documentazione del produttore HSM include istruzioni complete sull'utilizzo dei suoi script per analizzare i valori di un'attestazione e verificare la chiave pubblica per una coppia di chiavi asimmetrica. L'attestazione dovrà essere decompressa con il comando seguente prima di poter essere analizzata.
Decomprimi l'attestazione compressa.
gzip -d < compressed_attestation.dat > attestation.dat
Questi link rimandano direttamente alle istruzioni specifiche del produttore dei moduli HSM:
- Verificare la chiave pubblica di una coppia di chiavi asimmetrica
- Analizza i valori dell'attestazione
Le istruzioni per analizzare il valore dell'attestazione includono un riferimento ai campi generali nell'attestazione, non specifici alle chiavi HSM in Cloud HSM.
Le seguenti sezioni illustrano come verificare le informazioni sulle chiavi specifiche di Cloud HSM.
Verifica 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 dell'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.
Recupera l'ID risorsa della versione della chiave. Puoi utilizzare la console Google Cloud per recuperare l'ID risorsa della versione della chiave o eseguire questo comando:
gcloud kms keys versions list \ --location location \ --keyring key-ring-name \ --key key-name
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"
Poiché lo script di analisi esegue il dump di tutti i campi di attestazione in formato esadecimale, l'ID della chiave sarebbe 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 valori.
RESOURCE_NAME_HEX="$(echo -n ${RESOURCE_NAME} | openssl dgst -sha256 -hex | awk '{print $2}')"
Lo script di analisi esegue il dump di tutti i campi di attestazione in formato esadecimale e l'ID della chiave viene codificato internamente in formato esadecimale una seconda volta. Imposta la variabile di ambiente
KEYID_HEX
sul 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_HEX
eKEYID_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 viene chiuso con il codice
0
.
Verificare le altre proprietà della chiave
Puoi visualizzare varie proprietà della chiave, che corrispondono ai campi nello standard PKCS #11. Utilizza gli esempi riportati di seguito come guide per verificare altre proprietà della chiave.
L'eventuale estrazione di una chiave viene archiviata nel campo
0x0102
dell'output analizzato. Per determinare se una chiave è estraibile, esamina il campo0x0162
. Il valore\x01
ètrue
, mentre il valore\x00
èfalse
.Le chiavi Cloud HSM non sono estraibili.
grep '0x0162:' /path/to/parsed/attestation.dat
La modalità di inserimento della chiave nell'HSM (creata direttamente o importata) viene archiviata nel campo
0x0163
. Se la chiave è stata creata in locale sull'HSM, il campo è impostato su\x01
. Il campo di una chiave importata è impostato su\x00
.Puoi dedurre alcune informazioni da come è arrivata la chiave sull'HSM. Se la chiave è stata creata in Cloud HSM, significa che non è mai stata archiviata in modo non criptato 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 all'interno di Cloud HSM.
grep '0x0163:' /path/to/parsed/attestation.dat
Il tipo di chiave è memorizzato nel campo
0x0100
. I tipi di chiavi sono documentati nello standard PCKS#11 con prefissoCKK_*
. Ad esempio, una chiave AES ha il tipo\x1f
.grep '0x0100:' /path/to/parsed/attestation.dat
Informazioni aggiuntive
Devi verificare un'attestazione per determinare se una versione della chiave è stata creata all'interno di un HSM.