Schlüsselzwecke und Algorithmen

Jeder Cloud Key Management Service-Schlüssel hat einen Zweck, der die kryptografischen Funktionen des Schlüssels definiert. Durch den Zweck wird außerdem bestimmt, welche Algorithmen für die Versionen des Schlüssels unterstützt werden. Der Algorithmus legt fest, welche Parameter für einzelne kryptografische Vorgänge verwendet werden müssen. Jeder Schlüssel hat außerdem ein Schutzniveau, das angibt, ob kryptografische Vorgänge auf Software-Ebene oder in einem Hardware-Sicherheitsmodul (Hardware Security Module, HSM) ausgeführt werden.

Schlüsselzwecke

Cloud KMS bietet Schlüsselzwecke für folgende Szenarien:

Szenario Schlüsselzweck (SDK) Schlüsselzweck (API) Unterstützte Methoden
Symmetrische Verschlüsselung encryption ENCRYPT_DECRYPT cryptoKeys.encrypt, cryptoKeys.decrypt
Symmetrische Verschlüsselung raw-encryption RAW_ENCRYPT_DECRYPT cryptoKeys.rawEncrypt, cryptoKeys.rawDecrypt
Asymmetrische Signatur asymmetric-signing ASYMMETRIC_SIGN cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
Asymmetrische Verschlüsselung asymmetric-encryption ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
MAC-Signatur mac MAC cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify

Wenn Sie einen Schlüssel erstellen, legen Sie den Zweck und den Algorithmus dieses Schlüssels fest. Je nach Zweck können Sie den Algorithmus ändern, wenn Sie neue Schlüsselversionen erstellen. Der Zweck selbst kann nicht geändert werden.

Zwei Schlüssel mit demselben Zweck können unterschiedliche zugrunde liegende Algorithmen verwenden, müssen aber denselben Satz von kryptografischen Vorgängen unterstützen.

Symmetrische Verschlüsselungsalgorithmen

Der Schlüsselzweck ENCRYPT_DECRYPT ermöglicht die symmetrische Verschlüsselung. Alle Schlüssel mit dem Schlüsselzweck ENCRYPT_DECRYPT verwenden den Algorithmus GOOGLE_SYMMETRIC_ENCRYPTION. Bei diesem Algorithmus werden keine Parameter verwendet. Er nutzt AES-Schlüssel (Advanced Encryption Standard) mit 256 Bit im Galois Counter Mode (GCM), die mit Cloud KMS-internen Metadaten aufgefüllt sind.

Asymmetrische Signaturalgorithmen

Der Schlüsselzweck ASYMMETRIC_SIGN ermöglicht asymmetrische Signaturen. Schlüssel mit dem Schlüsselzweck ASYMMETRIC_SIGN verwenden unterschiedliche Algorithmen. Dies richtet sich danach, ob der Schlüssel Elliptische-Kurven-Signaturen oder RSA-Signaturen unterstützt.

Bei einem Schlüssel mit dem Zweck ASYMMETRIC_SIGN können Sie mithilfe des Algorithmus zwischen Schlüsseln unterschiedlicher Größe und verschiedenen Signaturschemata wechseln.

Elliptische-Kurven-Signaturalgorithmen

So sieht das Format eines Elliptische-Kurven-Signaturalgorithmus aus:

EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]

Dabei gilt:

  • [ELLIPTIC_CURVE] ist die elliptische Kurve
  • [DIGEST_ALGORITHM] ist der Digest-Algorithmus

Die folgende Tabelle enthält die möglichen Algorithmen für Elliptische-Kurven-Schlüssel mit dem Zweck ASYMMETRIC_SIGN. Verwenden Sie für die Algorithmusnamen Kleinbuchstaben mit dem gcloud-Befehl und Großbuchstaben mit der Cloud Key Management Service API.

Algorithmus (SDK) Algorithmus (API) Beschreibung
ec-sign-ed25519 EC_SIGN_ED25519 EdDSA auf der Curve25519 im PureEdDSA-Modus, bei dem Rohdaten anstelle von Hash-Daten als Eingabe verwendet werden
ec-sign-p256-sha256 **(empfohlen)** EC_SIGN_P256_SHA256 ECDSA auf der P-256-Kurve mit einem SHA-256-Digest
ec-sign-p384-sha384 EC_SIGN_P384_SHA384 ECDSA auf der P-384-Kurve mit einem SHA-384-Digest
ec-sign-secp256k1-sha256 EC_SIGN_SECP256K1_SHA256 ECDSA auf der Secp256k1-Kurve mit einem SHA-256-Digest

RSA-Signaturalgorithmen

So sieht das Format eines RSA-Signaturalgorithmus aus:

RSA_SIGN_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]

Dabei gilt:

  • [PADDING_ALGORITHM] ist der Padding-Algorithmus
  • [MODULUS_BIT_LENGTH] ist die Bitlänge des Schlüssels
  • [DIGEST_ALGORITHM] ist der Digest-Algorithmus

Beachten Sie: einige Algorithmen sind formatiert als

RSA_SIGN_RAW_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]

und lassen den Digest-Algorithmus weg. Diese Algorithmen sind Varianten der PKCS #1-Signatur, bei der die Codierung in eine DigestInfo weggelassen wird. In der Variante:

  • Wird ein Digest für die zu signierende Nachricht berechnet.
  • Wird das PKCS #1-Padding direkt auf den Digest angewendet.
  • wird unter Verwendung des privaten RSA-Schlüssels eine Signatur des gepaddeten Digests berechnet.

Die folgende Tabelle enthält die möglichen Algorithmen für RSA-Schlüssel mit dem Zweck ASYMMETRIC_SIGN. Verwenden Sie für die Algorithmusnamen Kleinbuchstaben mit dem gcloud-Befehl und Großbuchstaben mit der Cloud Key Management Service API.

Algorithmus (SDK) Algorithmus (API) Beschreibung
rsa-sign-pss-2048-sha256 RSA_SIGN_PSS_2048_SHA256 RSASSA-PSS-2048-Bit-Schlüssel mit einem SHA-256-Digest
rsa-sign-pss-3072-sha256 (empfohlen) RSA_SIGN_PSS_3072_SHA256 RSASSA-PSS-3072-Bit-Schlüssel mit einem SHA-256-Digest
rsa-sign-pss-4096-sha256 RSA_SIGN_PSS_4096_SHA256 RSASSA-PSS-4096-Bit-Schlüssel mit einem SHA-256-Digest
rsa-sign-pss-4096-sha512 RSA_SIGN_PSS_4096_SHA512 RSASSA-PSS-4096-Bit-Schlüssel mit einem SHA-512-Digest
rsa-sign-pkcs1-2048-sha256 RSA_SIGN_PKCS1_2048_SHA256 RSASSA-PKCS1 v1_5 mit einem 2048-Bit-Schlüssel und einem SHA-256-Digest
rsa-sign-pkcs1-3072-sha256 RSA_SIGN_PKCS1_3072_SHA256 RSASSA-PKCS1 v1_5 mit einem 3072-Bit-Schlüssel und einem SHA-256-Digest
rsa-sign-pkcs1-4096-sha256 RSA_SIGN_PKCS1_4096_SHA256 RSASSA-PKCS1 v1_5 mit einem 4096-Bit-Schlüssel und einem SHA-256-Digest
rsa-sign-pkcs1-4096-sha512 RSA_SIGN_PKCS1_4096_SHA512 RSASSA-PKCS1 v1_5 mit einem 4096-Bit-Schlüssel und einem SHA-512-Digest
rsa-sign-raw-pkcs1-2048 RSA_SIGN_RAW_PKCS1_2048 RSASSA-PKCS1-v1_5-Signatur ohne Codierung mit einem 2048-Bit-Schlüssel
rsa-sign-raw-pkcs1-3072 RSA_SIGN_RAW_PKCS1_3072 RSASSA-PKCS1-v1_5-Signatur ohne Codierung mit einem 3072-Bit-Schlüssel
rsa-sign-raw-pkcs1-4096 RSA_SIGN_RAW_PKCS1_4096 RSASSA-PKCS1-v1_5-Signatur ohne Codierung mit einem 4096-Bit-Schlüssel

Die verwendete Salt-Länge für das probabilistische Signaturschema (Probabilistic Signature Scheme, PSS) entspricht der Länge des Digest-Algorithmus. RSA_SIGN_PSS_2048_SHA256 verwendet z. B. ein PSS mit einer Salt-Länge von 256 Bits. Bei PSS wird der im Algorithmusnamen angegebene Digest-Algorithmus auch für die Maskengenerierungsfunktion (MGF1) verwendet. Wenn Sie beispielsweise RSA_SIGN_PSS_2048_SHA256 einsetzen, senden Sie einen SHA-256-Hash der Daten, die signiert werden sollen. Cloud KMS verwendet intern SHA-256 als Hash-Algorithmus für MGF1 beim Berechnen der Signatur.

Asymmetrische Verschlüsselungsalgorithmen

Der Schlüsselzweck ASYMMETRIC_DECRYPT ermöglicht die RSA-Verschlüsselung. So sieht das Format eines ASYMMETRIC_DECRYPT-Algorithmus aus:

RSA_DECRYPT_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]

Dabei gilt:

  • [PADDING_ALGORITHM] ist der Padding-Algorithmus
  • [MODULUS_BIT_LENGTH] ist die Bitlänge des Schlüssels
  • [DIGEST_ALGORITHM] ist der Digest-Algorithmus

Die folgende Tabelle enthält die möglichen Algorithmen für RSA-Schlüssel mit dem Zweck ASYMMETRIC_DECRYPT. Verwenden Sie für die Algorithmusnamen Kleinbuchstaben mit dem gcloud-Befehl und Großbuchstaben mit der Cloud Key Management Service API.

Algorithmus (SDK) Algorithmus (API) Beschreibung
rsa-decrypt-oaep-2048-sha1 RSA_DECRYPT_OAEP_2048_SHA1 RSAES-OAEP-2048-Bit-Schlüssel mit SHA-1-Digest.
rsa-decrypt-oaep-2048-sha256 RSA_DECRYPT_OAEP_2048_SHA256 RSAES-OAEP-2048-Bit-Schlüssel mit einem SHA-256-Digest
rsa-decrypt-oaep-3072-sha1 RSA_DECRYPT_OAEP_3072_SHA1 RSAES-OAEP-3072-Bit-Schlüssel mit SHA-1-Digest.
rsa-decrypt-oaep-3072-sha256 (empfohlen) RSA_DECRYPT_OAEP_3072_SHA256 RSAES-OAEP-3072-Bit-Schlüssel mit einem SHA-256-Digest
rsa-decrypt-oaep-4096-sha1 RSA_DECRYPT_OAEP_4096_SHA1 RSAES-OAEP-4096-Bit-Schlüssel mit einem SHA-1-Digest
rsa-decrypt-oaep-4096-sha256 RSA_DECRYPT_OAEP_4096_SHA256 RSAES-OAEP-4096-Bit-Schlüssel mit einem SHA-256-Digest
rsa-decrypt-oaep-4096-sha512 RSA_DECRYPT_OAEP_4096_SHA512 RSAES-OAEP-4096-Bit-Schlüssel mit einem SHA-512-Digest

Alle diese Algorithmen verwenden OAEP (Optimal Asymmetric Encryption Padding) mit der Maskengenerierungsfunktion MGF1. MGF1 erfordert einen Digest-Algorithmus. In Cloud KMS wird die Digest-Funktion, die mit MGF1 verwendet werden soll, als Teil des Algorithmusnamens für den Schlüssel angegeben. Wenn Sie beispielsweise den Algorithmus RSA_DECRYPT_OAEP_3072_SHA256 verwenden, sollten Sie SHA-256 mit MGF1 zum Verschlüsseln von Daten nutzen.

MAC-Signaturalgorithmen

Der MAC-Schlüsselzweck ermöglicht die symmetrische MAC-Signatur. Schlüssel mit dem MAC-Schlüsselzweck unterstützen derzeit nur die HMAC-Signatur.

HMAC-Signaturalgorithmen

So sieht das Format eines HMAC-Signaturalgorithmus aus:

HMAC_[HASH_ALGORITHM]

Dabei gilt:

  • [HASH_ALGORITHM] ist der Hash-Algorithmus

Folgende Tabelle enthält die derzeit verfügbaren HMAC-Algorithmen für Schlüssel mit MAC-Zwecken. Verwenden Sie für die Algorithmusnamen Kleinbuchstaben mit dem gcloud-Befehl und Großbuchstaben mit der Cloud Key Management Service API.

Algorithmus (SDK) Algorithmus (API) Beschreibung
hmac-sha1 HMAC_SHA1 HMAC mit einem SHA-1-Digest
hmac-sha224 HMAC_SHA224 HMAC mit einem SHA-224-Digest
hmac-sha256 (empfohlen) HMAC_SHA256 HMAC mit einem SHA-256-Digest
hmac-sha384 HMAC_SHA384 HMAC mit einem SHA-384-Digest
hmac-sha512 HMAC_SHA512 HMAC mit einem SHA-512-Digest

Algorithmus-Empfehlungen

Beim digitalen Signieren wird empfohlen, Elliptische-Kurven-Signaturalgorithmen zu verwenden. EC_SIGN_P256_SHA256 ist der empfohlene Elliptische-Kurven-Algorithmus. Wenn Sie RSA-Signaturalgorithmen verwenden, lautet der empfohlene RSA-Signaturalgorithmus RSA_SIGN_PSS_3072_SHA256.

Für die asymmetrische Verschlüsselung wird der Algorithmus RSA_DECRYPT_OAEP_3072_SHA256 empfohlen.

Für die MAC-Signatur wird der Algorithmus HMAC_SHA256 empfohlen.

Eine Liste der unterstützten Algorithmuswerte für die gcloud CLI finden Sie unter --default-algorithm.

Schutzniveaus

Das Schutzniveau gibt an, wie kryptografische Vorgänge ausgeführt werden. Nachdem Sie einen Schlüssel erstellt haben, können Sie das Schutzniveau nicht mehr ändern.

Schutzniveau Beschreibung
SOFTWARE Kryptografische Vorgänge werden auf Software-Ebene ausgeführt.
HSM Kryptografische Vorgänge werden in einem HSM ausgeführt.
EXTERN Kryptografische Vorgänge werden mit einem Schlüssel ausgeführt, der in einem externen Schlüsselmanager gespeichert ist, der über das Internet mit Google Cloud verbunden ist. Beschränkt auf symmetrische Verschlüsselung und asymmetrische Signatur.
EXTERNAL_VPC Kryptografische Vorgänge werden mit einem Schlüssel ausgeführt, der in einem externen Schlüsselmanager gespeichert ist, der über eine Virtual Private Cloud (VPC) mit Google Cloud verbunden ist. Beschränkt auf symmetrische Verschlüsselung und asymmetrische Signatur.

Alle Schlüsselzwecke werden für Schlüssel mit dem Schutzniveau SOFTWARE oder HSM unterstützt.