Partager via


Gestion des clés dans azure Cloud HSM

Une gestion efficace des clés est essentielle pour optimiser les performances, la sécurité et l’efficacité du HSM cloud Azure. Cet article fournit des bonnes pratiques et des recommandations pour gérer les limites de stockage de clés, la sécurité de l’habillage de clé, les attributs clés et les stratégies de mise en cache.

Gérer la limite de stockage des clés

Les modules de sécurité matériels (HSM) ont des limites sur le nombre maximal de jetons et de clés de session qui peuvent être stockés à un moment donné. Pour plus d’informations sur ces limites, reportez-vous aux limites du service HSM Cloud Azure.

Pour éviter de dépasser les limites de service Azure Cloud HSM, envisagez d’utiliser une ou plusieurs des stratégies suivantes pour une gestion efficace des clés :

  • Rotation des clés : faites pivoter les clés fréquemment pour vous assurer que les anciennes clés sont remplacées et que l’espace est libéré pour les nouvelles clés. La rotation fréquente permet de maintenir le HSM dans les limites de stockage tout en conservant la sécurité.
  • Hiérarchie de clés : utilisez une hiérarchie de clés dans laquelle vous utilisez des clés primaires pour chiffrer d’autres clés. Cette hiérarchie réduit le nombre de clés qui doivent être stockées directement dans le HSM.
  • Partage et réutilisation de clés : pour les applications avec plusieurs sessions ou jetons, envisagez de partager des clés ou de les réutiliser pour réduire le nombre total stocké.
  • Suppression de clé : une fois que vous n’avez plus besoin d’une clé (par exemple, après la fin d’une session), assurez-vous qu’elle est supprimée de manière sécurisée pour libérer de l’espace pour les nouvelles clés.

Remarque

Attendez 24 heures après la création d’une clé pour vous assurer que la synchronisation et les sauvegardes au sein de votre déploiement HSM cloud Azure sont terminées.

Gérer l'enveloppement des clés

Vous utilisez l’attribut EXTRACTABLE dans Azure Cloud HSM pour marquer les clés comme extractibles ou non extensibles. Par défaut, les clés HSM sont définies comme extractibles. Vous pouvez exporter des clés extractibles à partir du HSM via l’habillage de clé, qui chiffre les clés. Les clés nécessitent ensuite un déchiffrement via la même clé de chiffrement avant d'être utilisées.

En revanche, les clés non réductibles ne peuvent pas être exportées à partir d’Azure Cloud HSM dans des circonstances quelconques. Une fois que vous avez défini des clés comme non réductibles, il n’existe aucun moyen de les modifier pour les extraire. Il est essentiel de déterminer soigneusement si vous avez besoin que vos clés soient extractibles et définissez l’attribut de clé en conséquence.

Si votre application nécessite un enveloppement de clé, nous vous conseillons d’utiliser l’enveloppement de clé approuvé. Cette approche restreint les utilisateurs HSM à envelopper et déballer uniquement les clés qu'un administrateur a explicitement désignées comme approuvées.

  • EXTRACTABLE=0: Les clés créées avec l’attribut EXTRACTABLE défini 0 ne peuvent pas être exportées, sauf en tant qu’objets masqués. Ils sont idéaux pour les clés que vous ne souhaitez jamais faire sortir du HSM.

  • WRAP_WITH_TRUSTED=1: Par défaut, les clés extrayables créées via le Kit de développement logiciel (SDK) HSM Cloud Azure utilisent le wrapping de clé approuvé. Toutefois, la spécification PKCS#11 définit WRAP_WITH_TRUSTED à CK_FALSE (0) par défaut. Sans habillage de clé approuvé, un utilisateur de chiffrement peut exporter le matériel privé d’une clé sans autorisation. Toute personne ayant accès à une application cliente et qui utilise ces clés peut les exporter en texte clair.

Table de prise en charge des attributs de clé des fournisseurs HSM cloud Azure

Fournisseur de HSM Azure Cloud Attributs par défaut pour les clés privées et symétriques Prend en charge la valeur EXTRACTABLE=0 Prend en charge la configuration de WRAP_WITH_TRUSTED au sein du fournisseur Valeur WRAP_WITH_TRUSTED par défaut
azcloudhsm_util EXTRACTABLE, !WRAP_WITH_TRUSTED Oui Oui 1 (0 peut être défini via des paramètres)
PKCS#11 EXTRACTABLE, !WRAP_WITH_TRUSTED Oui Oui 0 (spécifié dans la spécification PKCS#11, mais peut être défini dans l’API sur 1)
CNG/KSP EXTRACTABLE, !WRAP_WITH_TRUSTED Non Non 1
Moteur OpenSSL EXTRACTABLE, !WRAP_WITH_TRUSTED Non Non 1
JCE !EXTRACTABLE, !PERSISTANT, !WRAP_WITH_TRUSTED Oui Non 1

Les clés que vous créez à l’aide de l’API de chiffrement : le fournisseur CNG (Next Generation) est toujours défini sur EXTRACTABLE. Vous pouvez utiliser l’outil CavImportKey.exe pour importer des clés à partir d’autres outils Azure Cloud HSM dans le fournisseur CNG via leurs handles de clés. Cette importation crée une clé dans le fournisseur de stockage de clés (KSP) à partir de handles de clés existants.

Pour les autorités de certification qui utilisent CNG ou KSP en tant que fournisseur, toutes les clés générées au sein du fournisseur CNG sont toujours marquées comme extractibles. Si une clé est marquée comme TRUSTED sur le HSM (comme une clé de chiffrement de clé générée par l’utilisateur), elle peut être utilisée pour extraire le texte en clair de la clé privée de ces clés, même après la WRAP_WITH_TRUSTED modification.

Dans ce cas, nous vous recommandons d’utiliser azcloudhsm_util pour générer la clé si vous ne souhaitez pas qu’elle soit marquée comme EXTRACTABLE. Nous vous recommandons d’utiliser getAttribute pour vérifier que les clés générées ont les attributs souhaités.

Utiliser des attributs clés pour gérer les autorisations de clé

Utilisez des attributs clés pour gérer les fonctionnalités clés telles que les autorisations. Lorsque vous générez une clé, utilisez des attributs de clé pour spécifier des autorisations qui autorisent ou limitent des opérations spécifiques pour cette clé. Nous vous conseillons de générer des clés uniquement avec les attributs nécessaires à leur objectif.

Par exemple, une clé AES (Advanced Encryption Standard) utilisée pour le chiffrement ne doit pas avoir la possibilité d’encapsuler des clés en dehors du HSM. Pour plus d’informations sur les attributs du Kit de développement logiciel (SDK) HSM Cloud Azure, consultez les guides d’intégration.

Optimiser la latence en mettant en cache des objets clés

Pour réduire la latence, envisagez de mettre en cache des objets clés dans la mesure du possible. Dans les recherches de clés, chaque HSM de votre cluster HSM Cloud Azure est interrogé. Cette opération est coûteuse et n’est pas mise à l’échelle efficacement. La méthode pour les recherches de clés dépend du fournisseur :

  • Pour PKCS#11, les recherches clés utilisent l’API C_FindObjects .
  • Pour Java Cryptography Extension (JCE), les recherches de clés utilisent la KeyStore valeur.

Pour des performances optimales, nous vous conseillons d’utiliser des commandes de recherche de clés (telles que findKey et key list) une seule fois au démarrage de l’application. Stockez l’objet clé retourné dans la mémoire de l’application. Lorsque vous avez besoin de cet objet clé ultérieurement, récupérez-le à partir du cache au lieu de l’interroger avec chaque opération. L’interrogation de celle-ci entraîne une baisse significative des performances.