Daten mit Cloud KMS (asymmetrisch) signieren und verifizieren

Daten mit Cloud KMS (asymmetrisch) signieren und verifizieren

Informationen zu diesem Codelab

subjectZuletzt aktualisiert: Juni 25, 2021
account_circleVerfasst von sethvargo

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. Es unterstützt die Verschlüsselung, Entschlüsselung, Signatur und Überprüfung mit einer Vielzahl von Schlüsseltypen und ‑quellen, einschließlich Cloud HSM für auf Hardware gesicherte Schlüssel. In dieser Anleitung erfahren Sie, wie Sie Daten mit asymmetrischen Cloud KMS-Schlüsseln signieren und verifizieren.

  • Cloud KMS API aktivieren
  • So erstellen Sie einen Schlüsselbund
  • Crypto-Schlüssel für die asymmetrische Signatur/Bestätigung erstellen

2. Einrichtung und Anforderungen

Einrichtung der Umgebung im eigenen Tempo

  1. 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.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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. Sie wird später in diesem Codelab als PROJECT_ID bezeichnet.

  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.

Die Ausführung dieses Codelabs sollte nur wenige Kosten verursachen, wenn überhaupt. Folgen Sie unbedingt der Anleitung im Abschnitt „Bereinigen“, um Ressourcen herunterzufahren, damit keine weiteren Kosten anfallen. Neuen Nutzern der Google Cloud Platform steht das kostenlose Testprogramm mit einem Guthaben von 300$ zur Verfügung.

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:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Minuten dauern. Wenn der Vorgang abgeschlossen ist, sollte in etwa Folgendes angezeigt werden:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

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. Führen Sie alle Befehle, sofern nicht anders angegeben, ü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 muss nur einmal pro Projekt durchgeführt werden. 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 Befehls wird ein Erfolg gemeldet.

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 in der global-Region einen Schlüsselbund mit dem Namen my-keyring:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Erstellen Sie jetzt einen Kryptoschlüssel mit dem Namen my-asymmetric-signing-key und dem Zweck asymmetric-signing im 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. Signaturdaten

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 zu signierenden Daten und verwenden Sie das Befehlszeilentool gcloud, 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 auf dem Laufwerk in data.txt.sig gespeichert. Wenn Sie die data.txt.sig-Datei öffnen, stellen Sie fest, 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 Überprüfung nicht direkt durch. Stattdessen bietet es Zugriff auf einen öffentlichen Schlüssel und Sie verifizieren Daten mit diesem öffentlichen Schlüssel über die Public-Key-Kryptografie. Bei asymmetrischen Schlüsseln kann die Überprüfung vollständig offline erfolgen und erfordert keinen Zugriff auf Cloud KMS oder andere Google Cloud APIs. Die Überprüfung 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 aus 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

Prüfen Sie die Signatur mit dem openssl-Befehlszeilentool anhand des öffentlichen Schlüssels:

$ openssl dgst -sha256 \
    -verify ./key.pub \
    -signature ./data.txt.sig ./data.txt

In der Console wird eine Erfolgsmeldung angezeigt, 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 Signatur/Bestätigung ist nur ein kleiner Teil seiner Funktionen.

Aufräumen

Wenn Sie mit der explorativen Datenanalyse fertig sind, sollten Sie Ihr Projekt löschen.

  • Rufen Sie die Cloud Platform Console auf.
  • Wählen Sie das Projekt aus, das Sie beenden möchten, und klicken Sie oben auf „Löschen“. Dadurch wird das Projekt zum Löschen geplant.

Weitere Informationen

Lizenz

Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.