Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Détails de la mise en cache des clés de données
La plupart des applications peuvent utiliser l'implémentation par défaut de la mise en cache des clés de données sans écrire de code personnalisé. Cette section décrit l'implémentation par défaut, ainsi que certaines informations sur les options.
Rubriques
Fonctionnement de la mise en cache des clés de données
Lorsque vous utilisez la mise en cache des clés de données dans une demande afin de chiffrer ou déchiffrer des données, le kit AWS Encryption SDK cherche d'abord dans le cache une clé de données correspondant à la demande. Si le kit trouve une correspondance valide, il utilise la clé de données mise en cache pour chiffrer les données. Sinon, il génère une nouvelle clé de données, comme il le ferait en l'absence de cache.
La mise en cache des clés de données n'est pas utilisée pour les données de taille inconnue, par exemple les données diffusées. Cela permet au CMM de mise en cache d'appliquer correctement le seuil maximal d'octets. Pour éviter ce comportement, ajoutez la taille du message à la demande de chiffrement.
Outre le cache, la mise en cache des clés de données utilise un gestionnaire de matériel cryptographique de mise en cache (CMM de mise en cache). Le CMM de mise en cache est un gestionnaire de matériaux cryptographiques (CMM) spécialisé qui interagit avec un cache et un CMM sous-jacent. (Lorsque vous spécifiez un fournisseur de clés principales ou un trousseau de clés, un CMM par défaut est AWS Encryption SDK créé pour vous.) Le CMM de mise en cache met en cache les clés de données renvoyées par le CMM sous-jacent. Le CMM de mise en cache applique également les seuils de sécurité du cache que vous définissez.
Pour éviter que la mauvaise clé de données ne soit sélectionnée dans le cache, toutes les mises en cache compatibles CMMs nécessitent que les propriétés suivantes du matériel cryptographique mis en cache correspondent au matériel demandé.
-
Contexte de chiffrement (même lorsqu'il est vide)
-
Nom de partition (chaîne identifiant le CMM de mise en cache)
-
(Déchiffrement uniquement) Clés de données de chiffrement
Note
Les clés de données ne sont mises en AWS Encryption SDK cache que lorsque la suite d'algorithmes utilise une fonction de dérivation de clés
Les flux de travail suivants illustrent le traitement d'une demande de chiffrement de données avec et sans mise en cache des clés de données. Ils montrent comment les composants de mise en cache que vous créez, notamment le cache et le CMM de mise en cache, sont utilisés dans le processus.
Chiffrement de données sans mise en cache
Pour obtenir les matériaux de chiffrement sans mise en cache :
-
Une application demande de AWS Encryption SDK chiffrer les données.
La demande indique un fournisseur de clés principales ou un trousseau de clés. AWS Encryption SDK crée un CMM par défaut qui interagit avec votre fournisseur de clés principales ou votre trousseau de clés.
-
Il AWS Encryption SDK demande au CMM du matériel de chiffrement (obtenir du matériel cryptographique).
-
Le CMM demande du matériel cryptographique à son trousseau de clés (C et JavaScript) ou à son fournisseur de clés principales (Java et Python). Cela peut impliquer un appel à un service cryptographique, tel que AWS Key Management Service (AWS KMS). Le CMM renvoie le matériel de chiffrement au AWS Encryption SDK.
-
AWS Encryption SDK Utilise la clé de données en texte brut pour chiffrer les données. Il stocke les données chiffrées et des clés de données chiffrées dans un message chiffré, qu'il renvoie à l'utilisateur.

Chiffrement de données avec mise en cache
Pour obtenir les matériaux de chiffrement sans mise en cache de clé de données :
-
Une application demande de AWS Encryption SDK chiffrer les données.
La demande spécifie un gestionnaire de matériel cryptographique de mise en cache (CMM de mise en cache) qui est associé à un gestionnaire de matériel cryptographique (CMM) sous-jacent. Lorsque vous spécifiez un fournisseur de clés principales ou un trousseau de clés, un CMM par défaut est AWS Encryption SDK créé pour vous.
-
Le SDK demande au CMM de mise en cache spécifié le matériel de chiffrement.
-
Le CMM de mise en cache demande du matériel de chiffrement à partir du cache.
-
Si le cache trouve une correspondance, il met à jour les valeurs d'âge et d'utilisation de l'entrée de cache correspondante et renvoie les matériaux de chiffrement mis en cache au CMM de mise en cache.
Si l'entrée du cache est conforme à ses seuils de sécurité, le CMM de mise en cache la renvoie au SDK. Dans le cas contraire, il indique au cache d'expulser l'entrée et poursuit comme s'il n'y avait pas de correspondance.
-
Si le cache ne trouve pas de correspondance valide, le CMM de mise en cache demande à son CMM sous-jacent de générer une nouvelle clé de données.
Le CMM sous-jacent obtient le matériel cryptographique auprès de son trousseau de clés (C et JavaScript) ou de son fournisseur de clés principales (Java et Python). Pour cela, il peut être nécessaire d'appeler un service, comme AWS Key Management Service. Le CMM sous-jacent renvoie le texte clair et les copies chiffrées de la clé de données au CMM de mise en cache.
Le CMM de mise en cache enregistre les nouveaux matériaux de chiffrement dans le cache.
-
-
Le CMM de mise en cache renvoie les matériaux de chiffrement au. AWS Encryption SDK
-
AWS Encryption SDK Utilise la clé de données en texte brut pour chiffrer les données. Il stocke les données chiffrées et des clés de données chiffrées dans un message chiffré, qu'il renvoie à l'utilisateur.

Création d'un cache de matériaux de chiffrement
AWS Encryption SDK définit les exigences relatives à un cache de matériel cryptographique utilisé pour la mise en cache de clés de données. Il fournit également un cache local, qui est un cache configurable, en mémoire, le moins récemment utilisé (LRU)LocalCryptoMaterialsCache
constructeur en Java et Python, la getLocalCryptographic MaterialsCache fonction en JavaScript ou le aws_cryptosdk_materials_cache_local_new
constructeur en C.
Le cache local inclut une logique pour la gestion de base du cache, y compris l'ajout, l'expulsion et la mise en correspondance des entrées mises en cache, ainsi que la maintenance du cache. Vous n'avez pas besoin d'écrire une logique de gestion de cache personnalisée. Vous pouvez utiliser le cache local tel quel, le personnaliser ou le remplacer par un cache compatible.
Lorsque vous créez un cache local, vous définissez sa capacité, c'est-à-dire le nombre maximum d'entrées que le cache peut contenir. Ce paramètre vous permet de concevoir un cache efficace avec une réutilisation des clés de données limitée.
Les Kit SDK de chiffrement AWS pour Java et fournissent Kit SDK de chiffrement AWS pour Python également un cache de matériaux cryptographiques nul (NullCryptoMaterialsCache). Le NullCryptoMaterialsCache renvoie un échec pour toutes les GET
opérations et ne répond pas aux PUT
opérations. Vous pouvez l' NullCryptoMaterialsCache utiliser pour tester ou pour désactiver temporairement la mise en cache dans une application qui inclut du code de mise en cache.
Dans le AWS Encryption SDK, chaque cache de matériel cryptographique est associé à un gestionnaire de matériel cryptographique de mise en cache (CMM de mise en cache). Le CMM de mise en cache obtient les clés de données du cache, les place dans le cache et applique les seuils de sécurité que vous définissez. Lorsque vous créez un CMM de mise en cache, vous spécifiez le cache qu'il utilise et le CMM sous-jacent ou le fournisseur de clés principales qui génère les clés de données qu'il met en cache.
Création d'un gestionnaire des matériaux de chiffrement de mise en cache
Pour activer la mise en cache des clés de données, vous devez créer un cache et un gestionnaire de matériel cryptographique de mise en cache (CMM de mise en cache). Ensuite, dans vos demandes de chiffrement ou de déchiffrement de données, vous spécifiez un CMM de mise en cache, au lieu d'un gestionnaire de matériel cryptographique (CMM) standard, d'un fournisseur de clés principales ou d'un trousseau de clés.
Il existe deux types de CMMs. Les deux récupèrent des clés de données (et les matériaux de chiffrement associés), mais de différentes façons, comme indiqué ci-dessous :
-
Un CMM est associé à un trousseau de clés (C ou JavaScript) ou à un fournisseur de clés principales (Java et Python). Lorsque le SDK demande au CMM du matériel de chiffrement ou de déchiffrement, le CMM obtient le matériel auprès de son trousseau de clés ou de son fournisseur de clés principales. Dans Java et Python, le CMM utilise ensuite les clés principales pour générer, chiffrer ou déchiffrer les clés de données. En C et C JavaScript, le trousseau de clés génère, chiffre et renvoie le matériel cryptographique.
-
Un CMM de mise en cache est associé à un cache, tel qu'un cache local, et à un CMM sous-jacent. Lorsque le SDK demande au CMM de mise en cache des documents cryptographiques, le CMM de mise en cache essaie de les extraire du cache. S'il ne trouve pas de correspondance, le CMM de mise en cache demande les matériaux à son CMM sous-jacent. Il met ensuite en cache les nouveaux matériaux cryptographiques avant de les renvoyer au mandataire.
Le CMM de mise en cache applique également les seuils de sécurité que vous définissez pour chaque entrée de cache. Étant donné que les seuils de sécurité sont définis et appliqués par le CMM de mise en cache, vous pouvez utiliser n'importe quel cache compatible, même s'il n'est pas conçu pour le matériel sensible.
Qu'est-ce qu'une entrée de cache de clé de données ?
La mise en cache des clés de données stocke les clés de données et les matériaux de chiffrement connexes dans un cache. Chaque entrée comprend les éléments répertoriés ci-dessous. Ces informations peuvent vous être utiles lorsque vous décidez d'utiliser la fonctionnalité de mise en cache des clés de données et lorsque vous définissez des seuils de sécurité pour un gestionnaire de matériel cryptographique de mise en cache (CMM de mise en cache).
Entrées mises en cache pour les demandes de chiffrement
Les entrées qui sont ajoutées à un cache de clé de données suite à une opération de chiffrement incluent les éléments suivants :
-
Clé de données en texte brut
-
Clés de données chiffrées (une ou plusieurs)
-
Clé de signature de message (le cas échéant)
-
Métadonnées, y compris les compteurs d'utilisation pour appliquer les seuils de sécurité
Entrées mises en cache pour les demandes de déchiffrement
Les entrées qui sont ajoutées à un cache de clé de données suite à une opération de déchiffrement incluent les éléments suivants :
-
Clé de données en texte brut
-
Clé de vérification de signature (le cas échéant)
-
Métadonnées, y compris les compteurs d'utilisation pour appliquer les seuils de sécurité
Contexte de chiffrement : sélection des entrées de cache
Vous pouvez spécifier un contexte de chiffrement dans toute demande afin de chiffrer des données. Toutefois, le contexte de chiffrement joue un rôle particulier dans la mise en cache des clés de données. Il vous permet de créer des sous-groupes de clés de données dans votre cache, même lorsque les clés de données proviennent du même CMM de mise en cache.
Un contexte de chiffrement est un ensemble de paires clé-valeur contenant les données non secrètes arbitraires. Pendant le chiffrement, le contexte de chiffrement est lié de façon chiffrée aux données chiffrées. Le même contexte de chiffrement est donc requis pour déchiffrer les données. Dans le AWS Encryption SDK, le contexte de chiffrement est stocké dans le message crypté avec les données chiffrées et les clés de données.
Lorsque vous utilisez un cache de clé de données, vous pouvez également utiliser le contexte de chiffrement pour sélectionner des clés de données mises en cache particulières pour vos opérations de chiffrement. Le contexte de chiffrement est enregistré dans l'entrée de cache avec la clé de données (il fait partie de l'ID de l'entrée de cache). Les clés de données mises en cache sont réutilisées uniquement en cas de correspondance de leurs contextes de chiffrement. Si vous souhaitez réutiliser certaines clés de données pour une demande de chiffrement, spécifiez le même contexte de chiffrement. Si vous souhaitez éviter ces clés de données, spécifiez un autre contexte de chiffrement.
Le contexte de chiffrement est toujours facultatif, mais il est recommandé. Si vous ne spécifiez pas de contexte de chiffrement dans votre demande, un contexte de chiffrement vide est inclus dans l'ID de l'entrée de cache et associé à chaque demande.
Mon application utilise-t-elle des clés de données mises en cache ?
La mise en cache des clés de données est une stratégie d'optimisation très efficace pour certaines applications et charges de travail. Cependant, comme cela comporte un certain risque, il est important de déterminer dans quelle mesure il est susceptible d'être efficace pour votre situation, puis de décider si les avantages l'emportent sur les risques.
Étant donné que la mise en cache des clés de données réutilise les clés de données, l'effet le plus évident est de réduire le nombre d'appels pour générer de nouvelles clés de données. Lorsque la mise en cache des clés de données est implémentée, l' AWS KMS GenerateDataKey
opération n' AWS Encryption SDK appelle l'opération que pour créer la clé de données initiale et lorsque le cache est manquant. Mais la mise en cache améliore les performances de manière perceptible uniquement dans les applications qui génèrent de nombreuses clés de données avec les mêmes caractéristiques, y compris le même contexte de chiffrement et la même suite d'algorithmes.
Pour déterminer si votre implémentation du AWS Encryption SDK utilise réellement des clés de données provenant du cache, essayez les techniques suivantes.
-
Dans les journaux de votre infrastructure de clés principales, vérifiez la fréquence des appels pour créer de nouvelles clés de données. Lorsque la mise en cache des clés de données est efficace, le nombre d'appels pour créer de nouvelles clés doit diminuer sensiblement. Par exemple, si vous utilisez un fournisseur de clés AWS KMS principales ou un trousseau de clés, recherchez les GenerateDataKeyappels dans les CloudTrail journaux.
-
Comparez les messages chiffrés renvoyés par AWS Encryption SDK en réponse à différentes demandes de chiffrement. Par exemple, si vous utilisez le Kit SDK de chiffrement AWS pour Java, comparez l'ParsedCiphertext
objet issu de différents appels de chiffrement. Dans le Kit SDK de chiffrement AWS pour JavaScript, comparez le contenu de la encryptedDataKeys
propriété du MessageHeader. Lorsque les clés de données sont réutilisées, les clés de données chiffrées dans le message chiffré sont identiques.