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 on the Curve25519 in PureEdDSA Modus, bei dem Rohdaten anstelle von gehashten 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:
- Aus der zu signierenden Nachricht wird ein Digest 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. Auf symmetrische Verschlüsselung und asymmetrische Signatur beschränkt. |
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. Auf symmetrische Verschlüsselung und asymmetrische Signatur beschränkt. |
Alle Schlüsselzwecke werden für Schlüssel mit dem Schutzniveau SOFTWARE
oder HSM
unterstützt.