GCP - KMS Enum

Support HackTricks

KMS

Der Cloud Key Management Service dient als sichere Speicherung für kryptografische Schlüssel, die für Operationen wie Verschlüsselung und Entschlüsselung sensibler Daten unerlässlich sind. Diese Schlüssel sind in Schlüsselsätzen organisiert, was eine strukturierte Verwaltung ermöglicht. Darüber hinaus kann die Zugriffskontrolle sorgfältig konfiguriert werden, entweder auf der Ebene des einzelnen Schlüssels oder für den gesamten Schlüsselsatz, um sicherzustellen, dass die Berechtigungen genau mit den Sicherheitsanforderungen übereinstimmen.

KMS-Schlüsselsätze werden standardmäßig als global erstellt, was bedeutet, dass die Schlüssel innerhalb dieses Schlüsselsatzes aus jeder Region zugänglich sind. Es ist jedoch möglich, spezifische Schlüsselsätze in spezifischen Regionen zu erstellen.

Schlüssel-Schutzstufe

  • Software-Schlüssel: Software-Schlüssel werden vollständig in Software von KMS erstellt und verwaltet. Diese Schlüssel sind nicht durch ein Hardware-Sicherheitsmodul (HSM) geschützt und können für Test- und Entwicklungszwecke verwendet werden. Software-Schlüssel werden nicht für die Produktion empfohlen, da sie eine geringe Sicherheit bieten und anfällig für Angriffe sind.

  • Cloud-gehostete Schlüssel: Cloud-gehostete Schlüssel werden in der Cloud von KMS unter Verwendung einer hochverfügbaren und zuverlässigen Infrastruktur erstellt und verwaltet. Diese Schlüssel sind durch HSMs geschützt, aber die HSMs sind nicht einem bestimmten Kunden gewidmet. Cloud-gehostete Schlüssel sind für die meisten Produktionsanwendungen geeignet.

  • Externe Schlüssel: Externe Schlüssel werden außerhalb von KMS erstellt und verwaltet und in KMS importiert, um in kryptografischen Operationen verwendet zu werden. Externe Schlüssel können in einem Hardware-Sicherheitsmodul (HSM) oder einer Softwarebibliothek gespeichert werden, je nach den Vorlieben des Kunden.

Schlüsselzwecke

  • Symmetrische Verschlüsselung/Entschlüsselung: Wird verwendet, um Daten mit einem einzigen Schlüssel für beide Operationen zu verschlüsseln und zu entschlüsseln. Symmetrische Schlüssel sind schnell und effizient für die Verschlüsselung und Entschlüsselung großer Datenmengen.

  • Asymmetrische Signatur: Wird für die sichere Kommunikation zwischen zwei Parteien verwendet, ohne den Schlüssel zu teilen. Asymmetrische Schlüssel kommen in einem Paar, bestehend aus einem öffentlichen Schlüssel und einem privaten Schlüssel. Der öffentliche Schlüssel wird mit anderen geteilt, während der private Schlüssel geheim gehalten wird.

  • Asymmetrische Entschlüsselung: Wird verwendet, um die Authentizität einer Nachricht oder Daten zu überprüfen. Eine digitale Signatur wird mit einem privaten Schlüssel erstellt und kann mit dem entsprechenden öffentlichen Schlüssel überprüft werden.

  • MAC-Signatur: Wird verwendet, um Datenintegrität und Authentizität zu gewährleisten, indem ein Nachrichten-Authentifizierungscode (MAC) mit einem geheimen Schlüssel erstellt wird. HMAC wird häufig für die Nachrichtenauthentifizierung in Netzwerkprotokollen und Softwareanwendungen verwendet.

Rotationszeitraum & Programmierte Zerstörungszeit

Standardmäßig alle 90 Tage, kann jedoch einfach und vollständig angepasst werden.

Der Zeitraum "Programmiert zur Zerstörung" ist die Zeit, seit der der Benutzer die Löschung des Schlüssels beantragt hat, bis der Schlüssel gelöscht wird. Er kann nach der Erstellung des Schlüssels nicht mehr geändert werden (Standard 1 Tag).

Primäre Version

Jeder KMS-Schlüssel kann mehrere Versionen haben, eine davon muss die Standardversion sein, die verwendet wird, wenn keine Version angegeben ist, wenn mit dem KMS-Schlüssel interagiert wird.

Aufzählung

Wenn Sie Berechtigungen zum Auflisten der Schlüssel haben, so können Sie auf diese zugreifen:

# List the global keyrings available
gcloud kms keyrings list --location global
gcloud kms keyrings get-iam-policy <KEYRING>

# List the keys inside a keyring
gcloud kms keys list --keyring <KEYRING> --location <global/other_locations>
gcloud kms keys get-iam-policy <KEY>

# Encrypt a file using one of your keys
gcloud kms encrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global

# Decrypt a file using one of your keys
gcloud kms decrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global

Privilegieneskalation

GCP - KMS Privesc

Nach der Ausnutzung

GCP - KMS Post Exploitation

Referenzen

Unterstütze HackTricks

Last updated