Objectifs et algorithmes des clés

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 la clé (SDK) Objectif de la clé (API) Méthodes acceptées
Chiffrement symétrique encryption ENCRYPT_DECRYPT cryptoKeys.encrypt, cryptoKeys.decrypt
Signature asymétrique signature asymétrique ASYMMETRIC_SIGN cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
Chiffrement asymétrique Chiffrement asymétrique ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey

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 cet objectif emploient 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.

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.

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 via l'algorithme.

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_CURVE] est la courbe elliptique ;
  • [DIGEST_ALGORITHM] est 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_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

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_ALGORITHM] est l'algorithme de remplissage ;
  • [MODULUS_BIT_LENGTH] est la longueur en bits de la clé ;
  • [DIGEST_ALGORITHM] est l'algorithme de condensé.

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 RSASSA-PSS avec une clé de 3 072 bits et un condensé SHA-256
rsa_sign_pss_4096_sha256 RSA_SIGN_PSS_4096_SHA256 RSASSA-PSS avec une clé de 4 096 bits et un condensé SHA-256
rsa_sign_pss_4096_sha512 RSA_SIGN_PSS_4096_SHA512 RSASSA-PSS avec une clé de 4 096 bits et un condensé SHA-512
rsa_sign_pkcs1_2048_sha256 RSA_SIGN_PKCS1_2048_SHA256 RSASSA-PKCS1 v1_5 avec une clé de 2 048 bits et un condensé SHA-256
rsa_sign_pkcs1_3072_sha256 RSA_SIGN_PKCS1_3072_SHA256 RSASSA-PKCS1 v1_5 avec une clé de 3 072 bits et un condensé SHA-256
rsa_sign_pkcs1_4096_sha256 RSA_SIGN_PKCS1_4096_SHA256 RSASSA-PKCS1 v1_5 avec une clé de 4 096 bits et un condensé SHA-256
rsa_sign_pkcs1_4096_sha512 RSA_SIGN_PKCS1_4096_SHA512 RSASSA-PKCS1 v1_5 avec une clé de 4 096 bits et un condensé SHA-512

Pour le schéma de signature probabiliste (PSS, Probabilistic Signature Scheme), la longueur de salage utilisée est égale à la longueur de l'algorithme de condensé. Par exemple, RSA_SIGN_PSS_2048_SHA256 utilise PSS avec une longueur de salage de 256 bits. De plus, pour PSS, l'algorithme de condensé spécifié dans le nom de l'algorithme est également employé pour la fonction de génération de masque (MGF1). Par exemple, si vous utilisez RSA_SIGN_PSS_2048_SHA256, vous devez soumettre un hachage SHA-256 des données à signer, et Cloud KMS emploie SHA-256 en interne comme algorithme de hachage pour MGF1 lors du calcul de la signature.

Algorithmes de chiffrement asymétrique

L'objectif de clé ASYMMETRIC_DECRYPT permet le chiffrement RSA. Le format d'un algorithme ASYMMETRIC_DECRYPT est le suivant :

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

Où :

  • [PADDING_ALGORITHM] est l'algorithme de remplissage ;
  • [MODULUS_BIT_LENGTH] est la longueur en bits de la clé ;
  • [DIGEST_ALGORITHM] est l'algorithme de condensé.

Le tableau suivant répertorie les algorithmes possibles pour les clés RSA ayant l'objectif ASYMMETRIC_DECRYPT. 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_decrypt_oaep_2048_sha256 RSA_DECRYPT_OAEP_2048_SHA256 RSAES-OAEP avec une clé de 2 048 bits et un condensé SHA-256
rsa_decrypt_oaep_3072_sha256 (recommandé) RSA_DECRYPT_OAEP_3072_SHA256 RSAES-OAEP avec une clé de 3 072 bits et un condensé SHA-256
rsa_decrypt_oaep_4096_sha256 RSA_DECRYPT_OAEP_4096_SHA256 RSAES-OAEP avec une clé de 4 096 bits et un condensé SHA-256
rsa_decrypt_oaep_4096_sha512 RSA_DECRYPT_OAEP_4096_SHA512 RSAES-OAEP avec une clé de 4 096 bits et un condensé SHA-512

Tous ces algorithmes utilisent le remplissage OAEP (Optimal Asymmetric Encryption Padding) avec la fonction de génération de masque MGF1. MGF1 nécessite un algorithme de condensé. Dans Cloud KMS, la fonction de condensé à utiliser avec MGF1 est spécifiée dans le nom de l'algorithme de la clé. Par exemple, avec l'algorithme RSA_DECRYPT_OAEP_3072_SHA256, vous devez utiliser SHA-256 avec MGF1 lors du chiffrement des données.

Recommandations relatives aux algorithmes

Pour la signature numérique, il est recommandé d'utiliser des algorithmes de signature à courbe elliptique. EC_SIGN_P256_SHA256 est l'algorithme à courbe elliptique recommandé. Si vous envisagez d'utiliser des algorithmes de signature RSA, RSA_SIGN_PSS_3072_SHA256 est recommandé.

Pour le chiffrement asymétrique, RSA_DECRYPT_OAEP_3072_SHA256 est l'algorithme recommandé.

Pour obtenir la liste des valeurs d'algorithme utilisables avec l'outil gcloud, reportez-vous à la section --default-algorithm.

Niveaux de protection

Le niveau de protection indique comment sont effectuées les opérations de chiffrement. Une fois que vous avez créé une clé, vous ne pouvez pas modifier le niveau de protection.

Niveau de protection Description
SOFTWARE Les opérations de chiffrement sont effectuées dans le logiciel.
HSM Les opérations de chiffrement sont effectuées dans un module HSM.
EXTERNAL Les opérations de chiffrement sont effectuées à l'aide d'une clé stockée dans un gestionnaire de clés externe. Limité au chiffrement symétrique.

Tous les objectifs de clé sont compatibles avec les clés dotées du niveau de protection SOFTWARE ou HSM.