In questa pagina viene illustrato l'uso dei campi dell'API Cloud Key Management Service per rilevare e prevenire modifiche non intenzionali dei dati durante il trasferimento tra i sistemi client di Cloud KMS. Queste linee guida integrano i modi in cui Google Cloud protegge automaticamente i tuoi dati at-rest e nel trasporto pubblico.
Protezione automatica dei dati
Tutti i dati su Google Cloud vengono criptati automaticamente in transito e at-rest entro in Google Cloud.
Cloud KMS adotta misure aggiuntive per proteggere le chiavi di crittografia at-rest crittografando ogni chiave di crittografia con un'altra chiave di crittografia denominata chiave di crittografia della chiave (KEK). Per saperne di più su questa tecnica, consulta: crittografia busta.
Ogni operazione crittografica di Cloud KMS include controlli automatici il danneggiamento dei dati. Se viene rilevata un'attività danneggiata, l'operazione viene interrotta e viene registrato un errore dettagliato.
Queste protezioni automatiche sono importanti, ma non impediscono l'utilizzo il danneggiamento dei dati. Ad esempio, la corruzione dei dati durante la crittografia può comportare che non possono essere decriptati.
Questo argomento illustra come rilevare e prevenire il danneggiamento dei dati lato client al minimo il rischio di perdita di dati.
Calcolo e verifica dei checksum
La richiesta e la risposta di ogni operazione crittografica includono
Checksum CRC32C
come plaintext_crc32c
. Puoi calcolare il checksum e confrontare
i valori calcolati e restituiti.
Sul server, l'API Cloud Key Management Service imposta campi booleani, come
verified_plaintext_crc32c
, a true
per indicare che ha ricevuto i contenuti pertinenti
checksum e restituisce un errore INVALID_ARGUMENT
se il checksum non corrisponde
il valore calcolato dal server.
Durante il calcolo e il confronto dei checksum, tieni presente le seguenti linee guida:
- Calcola i checksum, utilizzando una codifica binaria, non appena i dati vengono inviati o ricevuto.
- Non archiviare checksum in testo non crittografato da o verso l'API Cloud Key Management Service. Per
Ad esempio, non archiviare i contenuti non crittografati del
Campi
EncryptRequest.plaintext_crc32c
oDecryptResponse.plaintext_crc32c
. Per tenere traccia di un checksum, serializzalo insieme ai dati pertinenti e passare l'oggetto composto a Cloud KMS per la crittografia. Quando decriptare i dati, puoi verificare il checksum rispetto alla data prevista valore. - Se un'operazione di decrittografia genera checksum non corrispondenti, progetta il tuo di riprovare l'operazione un numero limitato di volte, nel caso in cui problemi temporanei.
- Se un'operazione di crittografia determina checksum non corrispondenti per la crittografia (il testo crittografato), ignora il risultato criptato e riprova.
Per le richieste di crittografia:
Se includi il campo di checksum nella richiesta, il server imposta una query campo di verifica nella risposta a
true
per indicare che ha ricevuto il checksum e ha tentato di verificarne il valore.Se includi il campo di checksum, ma la risposta imposta il campo di verifica su
false
, il server non ha ricevuto il campo di checksum e altre informazioni potrebbero presenti nella risposta. Riprova a inviare la richiesta un numero limitato di volte nel caso l'errore è temporaneo.Se il checksum è stato ricevuto ma non corrisponde, viene restituito un errore
INVALID_ARGUMENT
restituito. L'errore include il nome del campo e il checksum che non sono stati corrispondono. Ad esempio:The checksum in field plaintext_crc32c did not match the data in field plaintext.
Riprova a inviare la richiesta un numero limitato di volte nel caso in cui l'errore sia temporaneo.
Per le richieste di decriptazione, puoi calcolare un checksum e confrontarlo con
valore di DecryptResponse.plaintext_crc32c
nella risposta.
I seguenti campi di checksum sono inclusi nelle richieste e nelle risposte da tramite l'API Cloud Key Management Service.
Campo nella richiesta | Campo di risposta |
---|---|
EncryptRequest.plaintext_crc32c |
EncryptResponse.verified_plaintext_crc32c |
EncryptionRequest.additional_authenticated_data_crc32c |
EncryptionResponse.verified_additional_authenticated_data_crc32c |
AsymmetricSignRequest.digest_crc32c |
AsymmetricSignResponse.verified_digest_crc32c |
AsymmetricSignRequest.signature_crc32c |
AsymmetricSignResponse.verified_signature_crc32c |
AsymmetricSignRequest.signature_crc32c |
AsymmetricSignResponse.verified_signature_crc32c |
Non applicabile | GetPublicKeyResponse.pem_crc32c |
Non applicabile | DecryptResponse.plaintext_crc32c |
MacSignRequest.data_crc32c |
MacSignResponse.verified_data_crc32c |
MacVerifyRequest.data_crc32c |
MacVerifyResponse.verified_data_crc32c |
MacVerifyRequest.mac_crc32c |
MacVerifyResponse.verified_mac_crc32c |
Non applicabile | MacVerifyResponse.verified_success_integrity |
Verifica dei nomi delle risorse in corso...
Risposte per
Cripta,
GetPublicKey,
AsymmetricSign,
MacSign,
e
MacVerify,
includi un campo name
contenente il nome dell'API Cloud Key Management Service pertinente
. Puoi confrontare il valore del campo name
con quello previsto,
ed eliminare i risultati che non corrispondono.
Diagramma di verifica dei dati
Questo diagramma mostra quando verificare ogni tipo di dati relativo alla crittografia operazioni e quando verificare i dati di ogni tipo di origine. Puoi inoltre visualizzare Un riepilogo dei campi di verifica dei dati.
Riepilogo del campo di verifica dei dati
Utilizza queste tabelle durante la progettazione dell'applicazione per determinare quali campi che puoi utilizzare per verificare i dati prima e dopo ogni operazione crittografica.
Cripta
API | Verifica dell'input lato server | Verifica delle risorse lato client | Verifica dell'output lato client | Verifica lato client dell'input lato server |
---|---|---|---|---|
EncryptRequest |
plaintext_crc32c , additional_authenticated_data_crc32c |
|||
EncryptResponse |
name |
ciphertext_crc32c |
verified_plaintext_crc32c , verified_additional_authenticated_data_crc32c |
Decripta
API | Verifica dell'input lato server | Verifica delle risorse lato client | Verifica dell'output lato client | Verifica lato client dell'input lato server |
---|---|---|---|---|
DecryptRequest |
ciphertext_crc32c , additional_authenticated_data_crc32c |
|||
DecryptResponse |
plaintext_crc32c |
AsymmetricSign
API | Verifica dell'input lato server | Verifica delle risorse lato client | Verifica dell'output lato client | Verifica lato client dell'input lato server |
---|---|---|---|---|
AsymmetricSignRequest |
digest_crc32c |
|||
AsymmetricSignResponse |
name |
signature_crc32c |
verified_digest_crc32c |
AsymmetricDecrypt
API | Verifica dell'input lato server | Verifica delle risorse lato client | Verifica dell'output lato client | Verifica lato client dell'input lato server |
---|---|---|---|---|
AsymmetricDecryptRequest |
ciphertext_crc32c |
|||
AsymmetricDecryptResponse |
plaintext_crc32c |
verified_ciphertext_crc32c |
PublicKey
API | Verifica dell'input lato server | Verifica delle risorse lato client | Verifica dell'output lato client | Verifica lato client dell'input lato server |
---|---|---|---|---|
PublicKey |
name |
pem_crc32c |
MacSign
API | Verifica dell'input lato server | Verifica delle risorse lato client | Verifica dell'output lato client | Verifica lato client dell'input lato server |
---|---|---|---|---|
MacSignRequest |
data_crc32c |
|||
MacSignResponse |
mac_crc32c |
verified_data_crc32c |
MacVerify
API | Verifica dell'input lato server | Verifica delle risorse lato client | Verifica dell'output lato client | Verifica lato client dell'input lato server | |
---|---|---|---|---|---|
MacVerifyRequest |
data_crc32c |
mac_crc32c |
|||
MacVerifyResponse |
verified_data_crc32c |
verified_mac_crc32c |
verified_success_integrity |
Passaggi successivi
- Scopri di più sulle soluzioni simmetriche e crittografia asimmetrica
- Scopri di più su criptare i dati dell'applicazione
- Utilizza Cloud Audit Logs