1. Übersicht
Cloud KMS ist ein in der Cloud gehosteter Schlüsselverwaltungsdienst, mit dem Sie kryptografische Schlüssel Ihrer Cloud-Dienste genauso wie lokal bei Ihnen vor Ort verwalten können. Er unterstützt die Verschlüsselung, Entschlüsselung, Signierung und Verifizierung mit einer Vielzahl von Schlüsseltypen und ‑quellen, einschließlich Cloud HSM für hardwaregestützte Schlüssel. In dieser Anleitung erfahren Sie, wie Sie Daten mit asymmetrischen Cloud KMS-Schlüsseln signieren und verifizieren.
Lerninhalte
- Cloud KMS API aktivieren
- Schlüsselbund erstellen
- Kryptografischen Schlüssel für asymmetrische Signierung/Verifizierung erstellen
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder G Suite-Konto haben, müssen Sie eines erstellen.
Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. In diesem Codelab wird er später als PROJECT_ID bezeichnet.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.
Die Durchführung dieses Codelabs sollte wenig oder gar nichts kosten. Folgen Sie den Anweisungen im Abschnitt „Aufräumen“, in dem beschrieben wird, wie Sie Ressourcen herunterfahren, damit Ihnen keine Kosten über diese Anleitung hinaus entstehen. Neue Google Cloud-Nutzer können das kostenlose Testprogramm im Wert von 300$ nutzen.
Cloud Shell starten
In diesem Codelab verwenden Sie Cloud Shell, eine kostenlose virtualisierte Umgebung, die in Google Cloud ausgeführt wird. Klicken Sie in der GCP Console oben rechts in der Symbolleiste auf das Cloud Shell-Symbol:
Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Wenn der Vorgang abgeschlossen ist, sollte etwa Folgendes angezeigt werden:
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf der Google Cloud, wodurch Netzwerkleistung und Authentifizierung deutlich verbessert werden. Sofern nicht anders angegeben, führen Sie alle Befehle über diese Shell aus.
3. Cloud KMS-Dienst aktivieren
Bevor Sie Cloud KMS verwenden können, müssen Sie den Dienst in Ihrem Projekt aktivieren. Dies ist nur einmal pro Projekt erforderlich. Führen Sie den folgenden Befehl aus, um den Cloud KMS-Dienst zu aktivieren:
$ gcloud services enable cloudkms.googleapis.com \
--project "${GOOGLE_CLOUD_PROJECT}"
Die Aktivierung kann bis zu einer Minute dauern. Nach Abschluss des Vorgangs wird eine Erfolgsmeldung angezeigt.
4. KMS-Schlüssel erstellen
Erstellen Sie einen Cloud KMS-Schlüsselbund. In Cloud KMS ist ein Schlüsselbund eine logische Sammlung kryptografischer Schlüssel. Der Schlüsselbund enthält Metadaten zu den Schlüsseln, z. B. ihren Speicherort. Erstellen Sie einen Schlüsselbund mit dem Namen my-keyring in der Region global:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
Erstellen Sie nun einen kryptografischen Schlüssel mit dem Namen my-asymmetric-signing-key und dem Zweck asymmetric-signing in dem gerade erstellten Schlüsselbund.
$ gcloud kms keys create "my-asymmetric-signing-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "asymmetric-signing" \
--default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. Daten signieren
Im Gegensatz zur Verschlüsselung ist für die Entschlüsselung von Daten, die mit einem asymmetrischen Cloud KMS-Schlüssel verschlüsselt wurden, ein Onlinezugriff auf den Cloud KMS-Dienst erforderlich. Entschlüsseln Sie den Geheimtext aus der Datei mit dem gcloud-Befehlszeilentool:
Erstellen Sie eine Datei mit den zu signierenden Daten und verwenden Sie das gcloud-Befehlszeilentool, um die Daten mit dem Cloud KMS-Schlüssel zu signieren:
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-signing-key" \
--version "1" \
--digest-algorithm "sha512" \
--input-file ./data.txt \
--signature-file ./data.txt.sig
Die Signatur wird in data.txt.sig auf dem Laufwerk gespeichert. Wenn Sie die Datei data.txt.sig öffnen, werden Sie feststellen, dass sie seltsame, nicht druckbare Zeichen enthält. Das liegt daran, dass die resultierenden Daten im Binärformat vorliegen.
Wenn Sie die Signatur in einer Datenbank speichern oder als Teil einer HTTP-Anfrage übertragen, müssen Sie die Daten möglicherweise codieren. Ein gängiger Codierungsmechanismus ist Base64.
6. Daten prüfen
Bei asymmetrischen Schlüsseln führt Cloud KMS die Verifizierung nicht direkt aus. Stattdessen wird Zugriff auf einen öffentlichen Schlüssel gewährt und Sie verifizieren Daten mit diesem öffentlichen Schlüssel über die Public-Key-Kryptografie. Bei asymmetrischen Schlüsseln kann die Verifizierung vollständig offline erfolgen und erfordert keinen Zugriff auf Cloud KMS oder andere Google Cloud APIs. Die Verifizierung erfolgt mit einem kryptografischen Tool wie openssl oder mit einer Programmiersprache oder Bibliothek, die Public-Key-Kryptografie unterstützt.
Laden Sie den öffentlichen Schlüssel von Cloud KMS herunter:
$ gcloud kms keys versions get-public-key "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-signing-key" \
--output-file ./key.pub
Verifizieren Sie die Signatur mit dem öffentlichen Schlüssel mit dem openssl-Befehlszeilentool:
$ openssl dgst -sha256 \
-verify ./key.pub \
-signature ./data.txt.sig ./data.txt
In der Console wird eine Erfolgsmeldung angezeigt, die darauf hinweist, dass die digitale Signatur gültig ist.
Verified OK
7. Glückwunsch!
Sie haben die Cloud KMS API aktiviert, einen asymmetrischen Signaturschlüssel erstellt und Daten signiert und verifiziert. Cloud KMS ist ein leistungsstarkes Produkt und die Signierung/Verifizierung ist nur ein kleiner Teil seiner Möglichkeiten.
Aufräumen
Wenn Sie fertig sind, können Sie Ihr Projekt löschen.
- Rufen Sie die Cloud Platform Console auf.
- Wählen Sie das Projekt aus, das Sie herunterfahren möchten, und klicken Sie oben auf „Löschen“. Das Projekt wird dann zur Löschung geplant.
Weitere Informationen
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.