Chaque clé Cloud Key Management Service a un objectif, qui définit les capacités cryptographiques de la clé. L'objectif détermine également les algorithmes acceptés pour les versions de la clé. Chaque algorithme définit les paramètres à employer pour chaque opération de chiffrement. Toute clé est également dotée d'un niveau de protection qui indique si les opérations de chiffrement sont effectuées dans le logiciel ou dans un module matériel de sécurité (HSM, Hardware Security Module).
Objectifs des clés
Cloud KMS propose des objectifs de clés pour les scénarios suivants :
| Scénario | Objectif de clé (SDK) | Objectif de clé (API) | Méthodes acceptées |
|---|---|---|---|
| Chiffrement symétrique | encryption |
ENCRYPT_DECRYPT |
cryptoKeys.encrypt, cryptoKeys.decrypt |
| Chiffrement symétrique brut | raw-encryption |
RAW_ENCRYPT_DECRYPT |
cryptoKeys.rawEncrypt, cryptoKeys.rawDecrypt |
| Signature asymétrique | asymmetric-signing |
ASYMMETRIC_SIGN |
cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey |
| Chiffrement asymétrique | asymmetric-encryption |
ASYMMETRIC_DECRYPT |
cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey |
| Mécanismes d'encapsulation de clé | key-encapsulation |
KEY_ENCAPSULATION |
cryptoKeyVersions.decapsulate, cryptoKeyVersions.getPublicKey |
| Signature MAC | mac |
MAC |
cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify |
Lorsque vous créez une clé, vous définissez son objectif et son algorithme. Vous pouvez modifier l'algorithme lorsque vous créez des versions de la clé, en fonction du champ d'application de son objectif. Ce dernier ne peut pas être modifié.
Deux clés ayant le même objectif peuvent utiliser des algorithmes sous-jacents différents, mais elles doivent être compatibles avec le même ensemble d'opérations.
Algorithmes de chiffrement symétrique
L'objectif de clé ENCRYPT_DECRYPT permet le chiffrement symétrique. Toutes les clés ayant pour objectif ENCRYPT_DECRYPT utilisent l'algorithme GOOGLE_SYMMETRIC_ENCRYPTION. lequel n'utilise aucun paramètre. Cet algorithme emploie des clés AES-256 (Advanced Encryption Standard, 256 bits) en mode GCM (Galois Counter Mode), complétées avec des métadonnées internes de Cloud KMS.
Les algorithmes de chiffrement symétrique tels qu'AES-256 sont généralement considérés comme sûrs face à l'informatique quantique. Vous pouvez continuer à utiliser le chiffrement symétrique.
Algorithmes de signature asymétrique
L'objectif de clé ASYMMETRIC_SIGN permet la signature asymétrique. Les clés ayant cet objectif emploient des algorithmes différents selon qu'elles acceptent la signature à courbe elliptique ou la signature RSA.ASYMMETRIC_SIGN
Dans le cas d'une clé ayant l'objectif ASYMMETRIC_SIGN, vous pouvez basculer entre différentes tailles de clés et différents schémas de signature en modifiant l'algorithme.
Les algorithmes de signature asymétrique qui utilisent des courbes elliptiques et RSA sont vulnérables aux attaques des futurs ordinateurs quantiques. Pour la non-répudiation à long terme de vos signatures, choisissez plutôt un algorithme de signature asymétrique post-quantique.
Algorithmes de signature à courbe elliptique
Le format d'un algorithme de signature à courbe elliptique est le suivant :
EC_SIGN_ELLIPTIC_CURVE_DIGEST_ALGORITHM
Où :
ELLIPTIC_CURVEest la courbe elliptique ;DIGEST_ALGORITHMest l'algorithme de condensé.
Le tableau suivant répertorie les algorithmes possibles pour les clés à courbe elliptique ayant l'objectif ASYMMETRIC_SIGN. Utilisez les noms d'algorithme en minuscules avec la commande gcloud et les noms en majuscules avec l'API Cloud Key Management Service.
| Algorithme (SDK) | Algorithme (API) | Description |
|---|---|---|
ec-sign-ed25519 |
EC_SIGN_ED25519 |
EdDSA sur Curve25519 en mode PureEdDSA, qui prend des données brutes en entrée au lieu de données hachées |
ec-sign-p256-sha256 **(recommandé)** |
EC_SIGN_P256_SHA256 |
ECDSA sur la courbe P-256 avec un condensé SHA-256 |
ec-sign-p384-sha384 |
EC_SIGN_P384_SHA384 |
ECDSA sur la courbe P-384 avec un condensé SHA-384 |
ec-sign-secp256k1-sha256 |
EC_SIGN_SECP256K1_SHA256 |
ECDSA sur la courbe Secp256k1 avec un condensé SHA-256 |
Algorithmes de signature RSA
Le format d'un algorithme de signature RSA est le suivant :
RSA_SIGN_PADDING_ALGORITHM_MODULUS_BIT_LENGTH_DIGEST_ALGORITHM
Où :
PADDING_ALGORITHMest l'algorithme de remplissage ;MODULUS_BIT_LENGTHest la longueur en bits de la clé ;DIGEST_ALGORITHMest l'algorithme de condensé.
Notez que certains algorithmes sont formatés comme suit :
RSA_SIGN_RAW_PADDING_ALGORITHM_MODULUS_BIT_LENGTH
et omettent l'algorithme de condensé. Ces algorithmes sont une variante de la signature PKCS #1 qui omet l'encodage dans un condensé DigestInfo. Dans la variante :
- Un condensé est calculé sur le message qui sera signé.
- Le remplissage PKCS #1 est appliqué directement au condensé.
- Une signature du condensé complété est calculée à l'aide de la clé privée RSA.
Le tableau suivant répertorie les algorithmes possibles pour les clés RSA ayant l'objectif ASYMMETRIC_SIGN. Utilisez les noms d'algorithme en minuscules avec la commande gcloud et les noms en majuscules avec l'API Cloud Key Management Service.
| Algorithme (SDK) | Algorithme (API) | Description |
|---|---|---|
rsa-sign-pss-2048-sha256 |
RSA_SIGN_PSS_2048_SHA256 |
RSASSA-PSS avec une clé de 2 048 bits et un condensé SHA-256 |
rsa-sign-pss-3072-sha256(recommandé) |
RSA_SIGN_PSS_3072_SHA256 |