In diesem Thema erfahren Sie, wie Sie die folgenden symmetrischen Schlüsselvorgänge ausführen:
- Text oder binäre Klartextinhalte lokal oder mit Cloud KMS verschlüsseln
- Chiffretexte lokal oder mit Cloud KMS entschlüsseln
Wenn Sie stattdessen einen regulären symmetrischen Schlüsselvorgang (nicht unverarbeitet) ausführen möchten, Siehe Daten mit einem symmetrischen Schlüssel verschlüsseln und entschlüsseln.
Mit der Rohsymmetrischen Verschlüsselung können Sie Ihre Daten lokal oder mit Cloud KMS verschlüsseln und entschlüsseln und verschlüsselte Daten zwischen verschiedenen Bibliotheken und Dienstanbietern verschieben, ohne sie zuerst entschlüsseln zu müssen. Diese Funktion hängt davon ab, ob am Ort der Ausführung auf den Schlüssel zugegriffen werden kann. Wenn Sie die Geheimtexte außerhalb von Google Cloud verwenden möchten, müssen Sie einen importierten Schlüssel verwenden, da in Cloud KMS generierte Schlüssel nicht exportiert werden können. Diese Verschlüsselungsalgorithmen generieren Standard-Chiffrentexte, die mit jedem Standard-Entschlüsselungsservice entschlüsselt werden können. Folgende symmetrische Rohdaten werden unterstützt: Verschlüsselungsalgorithmen:
AES-128-GCM
AES-256-GCM
AES-128-CBC
AES-256-CBC
AES-128-CTR
AES-256-CTR
Beachten Sie die folgenden Punkte zu diesen Rohverschlüsselungsalgorithmen:
AES-GCM
bietet eine Authentifizierung auf Basis der zusätzlichen Authenticated Data (AAD) und generiert ein Authentifizierungs-Tag. Dies ist der empfohlene Verschlüsselungsalgorithmus. Daten, die mitAES-GCM
-Algorithmen verschlüsselt wurden, können ohne die bereitgestellte zusätzliche Authentifizierungsdaten nicht entschlüsselt werden.Für
AES-CBC
muss die Größe des Klartexts ein Vielfaches des Blocks sein Größe (16 Byte). Wenn der Klartext kein Vielfaches der Blockgröße ist, müssen Sie ihn vor der Verschlüsselung auffüllen. Andernfalls schlägt der Vorgang fehl und es wird ein Fehler angezeigt, der auf das Problem hinweist.AES-CBC
undAES-CTR
sind keine authentifizierten Verschlüsselungsschemata. Das bedeutet, dass das Risiko eines versehentlichen Missbrauchs höher ist. Sie werden angeboten, um ältere Versionen und Interoperabilitätsanforderungen zu unterstützen, und sollten mit Vorsicht verwendet werden. Um einen zufälligen Missbrauch zu verhindern, sollten Sie erfordert die folgenden IAM-Berechtigungen:cloudkms.cryptoKeyVersions.manageRawAesCbcKeys
fürAES-CBC
.cloudkms.cryptoKeyVersions.manageRawAesCtrKeys
fürAES-CTR
.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihren Schlüssel zuzuweisen, um die Berechtigungen zu erhalten, die Sie zur Verwendung der Rohverschlüsselung benötigen:
-
Nur verschlüsseln:
Cloud KMS CryptoKey-Verschlüsseler (
roles/cloudkms.cryptoKeyEncrypter
) -
Nur entschlüsseln:
Cloud KMS CryptoKey-Entschlüsseler (
roles/cloudkms.cryptoKeyDecrypter
) -
Zum Verschlüsseln und Entschlüsseln:
Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler (
roles/cloudkms.cryptoKeyEncrypterDecrypter
)
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Zusätzliche Rollen für nicht authentifizierte Rohverschlüsselungsalgorithmen
- Für die Verwendung von
AES-CBC
-Schlüsseln: Cloud KMS-Expertenverwalter von unbearbeiteten AES-CBC-Schlüsseln (roles/cloudkms.expertRawAesCbc
) - Für die Verwendung von
AES-CTR
-Schlüsseln: Cloud KMS-Expertenverwalter von unbearbeiteten AES-CTR-Schlüsseln (roles/cloudkms.expertRawAesCtr
)
Hinweis
- Gewähren Sie den gewünschten Hauptkonten die oben genannten Berechtigungen für die Rohsymmetrische Verschlüsselung.
- Erstellen Sie einen Schlüsselbund wie unter Schlüsselbunde beschrieben.
- Erstellen und importieren Sie einen Rohschlüssel für die symmetrische Verschlüsselung, wie unter Schlüssel erstellen und Schlüssel importieren beschrieben.
Verschlüsseln
gcloud
Wenn Sie Cloud KMS in der Befehlszeile verwenden möchten, müssen Sie zuerst die neueste Version der Google Cloud CLI installieren oder ein Upgrade ausführen.
gcloud kms raw-encrypt \ --location LOCATION \ --keyring KEY_RING \ --key KEY_NAME \ --version KEY_VERSION \ --plaintext-file INPUT_FILE_PATH \ --ciphertext-file OUTPUT_FILE_PATH
Ersetzen Sie Folgendes:
LOCATION
: der Cloud KMS-Standort des Schlüsselbunds.KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthält.KEY_NAME
: Der Name des Schlüssels, der für die Verschlüsselung verwendet werden soll.KEY_VERSION
: Die ID der Schlüsselversion, die für die Verschlüsselung verwendet werden soll.INPUT_FILE_PATH
: der lokale Dateipfad zum Lesen der Klartextdaten.OUTPUT_FILE_PATH
: der lokale Dateipfad zum Speichern der verschlüsselten Ausgabe.
Wenn Sie Informationen zu allen Flags und möglichen Werten erhalten möchten, führen Sie den Befehl mit dem Flag --help
aus.
API
In diesen Beispielen wird curl als HTTP-Client verwendet, um die Verwendung der API zu demonstrieren. Weitere Informationen zur Zugriffssteuerung finden Sie unter Auf die Cloud KMS API zugreifen.
Wenn Sie JSON und die REST API verwenden, müssen Inhalte mit base64 codiert sein, bevor sie von Cloud KMS verschlüsselt werden können.
Verwenden Sie die Methode rawEncrypt
, um Klartextdaten zu verschlüsseln:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:rawEncrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"plaintext": "BASE64_ENCODED_INPUT", "additionalAuthenticatedData": "BASE64_ENCODED_AAD"}'
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das den Schlüsselbund enthält.LOCATION
: der Cloud KMS-Standort des Schlüsselbunds.KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthält.KEY_NAME
: Der Name des Schlüssels, der für die Verschlüsselung verwendet werden soll.KEY_VERSION
: Die ID der Schlüsselversion, die für die Verschlüsselung verwendet werden soll.BASE64_ENCODED_INPUT
: Die base64-codierten Klartextdaten, die Sie verschlüsseln möchten.BASE64_ENCODED_AAD
: die base64-codierte zusätzliche authentifizierte Daten, die zur Gewährleistung der Integrität und Authentizität verwendet werden, Zusicherungen. Dieses Feld gilt nur für dieAES-GCM
-Algorithmen.
Die Ausgabe ist ein JSON-Objekt, das den verschlüsselten Geheimtext und den zugehörigen Initialisierungsvektor als base64-codierte Strings enthält.
Decrypt
gcloud
Um Cloud KMS in der Befehlszeile zu verwenden, Installieren Sie die Google Cloud CLI oder führen Sie ein Upgrade auf die neueste Version durch.
gcloud kms raw-decrypt \ --location LOCATION \ --keyring KEY_RING \ --key KEY_NAME \ --version KEY_VERSION \ --ciphertext-file INPUT_FILE_PATH \ --plaintext-file OUTPUT_FILE_PATH
Ersetzen Sie Folgendes:
LOCATION
: der Cloud KMS-Standort des Schlüsselbunds.KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthält.KEY_NAME
: Der Name des Schlüssels, der für die Verschlüsselung verwendet werden soll.KEY_VERSION
: Die ID der Schlüsselversion, die für die Verschlüsselung verwendet werden soll.INPUT_FILE_PATH
: Der lokale Dateipfad zum Geheimtext, den Sie entschlüsseln möchten.OUTPUT_FILE_PATH
: der lokale Dateipfad, in dem Sie den entschlüsselten Klartext speichern möchten.
Wenn Sie Informationen zu allen Flags und möglichen Werten erhalten möchten, führen Sie den Befehl mit dem Flag --help
aus.
API
In diesen Beispielen wird curl als HTTP-Client verwendet, um die Verwendung der API zu demonstrieren. Weitere Informationen zur Zugriffssteuerung finden Sie unter Auf die Cloud KMS API zugreifen.
Wenn Sie die REST API verwenden, müssen Inhalte base64-codiert sein, bevor sie von Cloud KMS entschlüsselt werden können.
Verwenden Sie die Methode rawDecrypt
, um die verschlüsselten Daten zu entschlüsseln:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:rawDecrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data '{"ciphertext": "BASE64_ENCODED_DATA", "additionalAuthenticatedData": "BASE64_ENCODED_AAD", "initializationVector": "BASE64_ENCODED_IV"}'
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das den Schlüsselbund enthält.LOCATION
: der Cloud KMS-Standort des Schlüsselbunds.KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthält.KEY_NAME
: Name des Schlüssels, der für die Entschlüsselung verwendet werden soll.KEY_VERSION
: die ID der Schlüsselversion, die für die Entschlüsselung verwendet werden soll.BASE64_ENCODED_DATA
: Der base64-codierte Geheimtext, der entschlüsselt werden soll.BASE64_ENCODED_AAD
: Die base64-codierten zusätzlichen authentifizierten Daten, die bei der Verschlüsselung der Daten verwendet wurden. Dieses Feld gilt nur für dieAES-GCM
-Algorithmen.BASE64_ENCODED_IV
: die base64-codierte Initialisierung Vektor, der bei der Verschlüsselung der Daten verwendet wurde.
Die Ausgabe ist ein JSON-Objekt, das den entschlüsselten Klartext als base64-codierten String.
Nächste Schritte
- Weitere Informationen zum Importieren einer Schlüsselversion
- Weitere Informationen zu Umschlagverschlüsselung
- Daten mit Cloud KMS Codelab verschlüsseln und entschlüsseln