Concepts du kit Kit SDK de chiffrement AWS - Kit SDK de chiffrement AWS

Si nous fournissons une traduction de la version anglaise du guide, la version anglaise du guide aura préséance en cas de contradiction. La traduction sera une traduction automatique.

Concepts du kit Kit SDK de chiffrement AWS

Cette section présente les concepts utilisés dans le kit Kit SDK de chiffrement AWS, et fournit un glossaire et une référence.

Clés de données

Une clé de donnée est une clé de chiffrement utilisée par le kit Kit SDK de chiffrement AWS pour chiffrer vos données. Chaque clé de données est un tableau d'octets qui respecte les exigences concernant les clés cryptographiques. À moins que vous n'utilisiez la mise en cache des clés de données, le kit Kit SDK de chiffrement AWS utilise une clé de données unique pour chiffrer chaque message.

Afin de protéger vos clés de données, le kit Kit SDK de chiffrement AWS les chiffre sous une ou plusieurs clés de chiffrement de clé, appelées clés principales ou clés d'encapsulage. Après utilisation de vos clés de données en texte brut par le kit Kit SDK de chiffrement AWS pour chiffrer vos données, il les supprime de la mémoire dès que possible. Ensuite, il stocke les clés de données chiffrées ainsi que les données chiffrées dans le message chiffré renvoyé par les opérations de chiffrement.

Lorsque vous utilisez le kit Kit SDK de chiffrement AWS, vous n'avez pas besoin de générer, d'implémenter, de développer, de protéger ou d'utiliser des clés de données ou des clés principales. Le kit Kit SDK de chiffrement AWS se charge de ces tâches à votre place lorsque vous appelez les opérations de chiffrement et de déchiffrement.

Toutefois, lorsque vous sélectionnez votre fournisseur de clés principales (Java et Python) ou votre porte-clés (C et JavaScript), vous déterminez la source de vos clés principales. Vous décidez également si votre clé de données en texte brut est chiffrée par une ou plusieurs clés principales.

Astuce

Dans le kit Kit SDK de chiffrement AWS, nous différencions les clés de données des clés de chiffrement des données. Plusieurs des suites d'algorithmes prises en charge, y compris la suite par défaut, utilisent une fonction de dérivation de clés qui empêche que la clé de données atteigne ses limites de chiffrement. La fonction de dérivation de clés utilise la clé de données en tant qu'entrée et renvoie une clé de chiffrement des données, qui est utilisée pour chiffrer les données. C'est pour cette raison que nous indiquons souvent que les données sont chiffrées « sous » une clé de données plutôt que « par » la clé de données.

Clé principale

Une clé principale, également appelée clé d'encapsulage, est une clé de chiffrement qui est utilisée pour chiffrer les clés de données. Chaque clé de données en texte brut peut être chiffrée sous une ou plusieurs clés principales.

Lorsque vous utilisez le kit Kit SDK de chiffrement AWS, vous n'avez pas besoin de générer, d'implémenter, de développer, de protéger ou d'utiliser des clés de données ou des clés principales. Le kit Kit SDK de chiffrement AWS se charge de ces tâches à votre place lorsque vous appelez les opérations de chiffrement et de déchiffrement. Toutefois, dans les implémentations Java et Python, vous devez spécifier un gestionnaire de matériaux de chiffrement ou un fournisseur de clés principales qui fournit les clés principales. Dans les implémentations C et JavaScript, vous spécifiez un porte-clés qui interagit avec des clés d'encapsulage pour vous et renvoie des clés de données.

Le kit Kit SDK de chiffrement AWS fournit plusieurs clés principales ou clés d'encapsulage couramment utilisées, telles les clés principales client (CMKs) AWS Key Management Service (AWS KMS) symétriques, les clés AES-GCM (Advanced Encryption Standard/Galois Counter Mode) et les clés RSA. Vous pouvez également étendre ou implémenter vos propres clés principales et clés d'encapsulage.

Gestionnaire de matériaux de chiffrement

Le gestionnaire des matériaux de chiffrement (CMM) assemble les matériaux de chiffrement qui sont utilisés pour chiffrer et déchiffrer les données. Les matériaux de chiffrement incluent des clés de données en texte brut et chiffrées, ainsi que, éventuellement, une clé de signature de message. Vous pouvez utiliser le CMM par défaut fourni par le kit Kit SDK de chiffrement AWS ou écrire un CMM personnalisé. Vous pouvez spécifier un CMM, mais vous n'interagissez jamais avec directement. Les méthodes de chiffrement et de déchiffrement s'en occupent pour vous.

Le CMM par défaut obtient les matériaux de chiffrement ou de déchiffrement du fournisseur de clés principales (Java et Python) ou le porte-clés (C ou JavaScript) que vous spécifiez. Pour cela, il peut être nécessaire d'appeler un service de chiffrement, comme AWS Key Management Service (AWS KMS).

Vous pouvez spécifier un CMM et un fournisseur de clés principales ou un porte-clés, mais ce n'est pas obligatoire. Si vous spécifiez un fournisseur de clés principales ou un porte-clés, le kit Kit SDK de chiffrement AWS crée un CMM par défaut pour vous.

Dans la mesure où le CMM sert de lien entre le kit SDK et un porte-clés ou un fournisseur de clés principales, il représente un élément idéal pour la personnalisation et l'extension, par exemple pour prendre en charge la mise en cache et l'application des stratégies. Le kit Kit SDK de chiffrement AWS fournit un CMM de mise en cache pour prendre en charge la mise en cache des clés de données.

Fournisseur de clés principales (Java et Python)

Dans les kits Kit SDK de chiffrement AWS pour Java et Kit SDK de chiffrement AWS pour Python, un fournisseur de clés principales renvoie des clés principales ou des objets qui identifient ou représentent des clés principales. Chaque clé principale est associée à un fournisseur de clés principales, mais un fournisseur de clés principales fournit généralement plusieurs clés principales.

Lorsque vous utilisez les implémentations Java et Python du kit Kit SDK de chiffrement AWS, vous devez spécifier un gestionnaire de matériaux de chiffrement (CMM) ou un fournisseur de clés principales, mais vous n'avez pas besoin de concevoir ou d'implémenter votre propre fournisseur de clés principales. Si vous spécifiez un fournisseur de clés principales, le kit SDK crée un CMM par défaut pour vous en fonction du fournisseur de clés principales que vous spécifiez.

Master key providers dans Java et Python sont compatibles avec les porte-clés dans le Kit SDK de chiffrement AWS pour C et le Kit SDK de chiffrement AWS pour JavaScript, soumis aux contraintes linguistiques. Cependant, vous devez spécifier les mêmes éléments de clé et utiliser un porte-clés qui est compatible avec le fournisseur de clés principales. Pour de plus amples informations, veuillez consulter Compatibilité du porte-clés.

Porte-clés (C et JavaScript)

Un porte-clés génère, chiffre et déchiffre des clés de données. Chaque porte-clés est généralement associé à une clé d'encapsulage ou à un service fournissant et protégeant les clés d'encapsulage. Vous pouvez utiliser le porte-clés fourni par le kit Kit SDK de chiffrement AWS fournit ou personnaliser vos propres porte-clés compatibles. Les porte-clés sont pris en charge uniquement dans les kits Kit SDK de chiffrement AWS pour C et Kit SDK de chiffrement AWS pour JavaScript.

Vous pouvez utiliser un seul porte-clés ou combiner des porte-clés du même type ou de types différents dans un porte-clés multiple. Le porte-clés multiple renvoie une copie de la clé de données chiffrée par chacune des clés d'encapsulage dans chacun des porte-clés qui composent le porte-clés multiple. Lorsque vous utilisez un porte-clés multiple pour chiffrer des données, vous pouvez déchiffrer les données à l'aide d'un porte-clés configurée avec l'une des clés d'encapsulage du porte-clés multiple.

Pour en savoir plus sur l'utilisation des porte-clés, consultez Utilisation des porte-clés.

Les porte-clés en C et JavaScript sont compatibles avec les fournisseurs de clés principales dans le kit Kit SDK de chiffrement AWS pour Java et dans le kit Kit SDK de chiffrement AWS pour Python. Cependant, vous devez spécifier les mêmes éléments de clé et utiliser un porte-clés compatible avec le fournisseur de clés principales, soumis aux contraintes linguistiques. Toute incompatibilité mineure due à des contraintes de langage est expliquée dans la rubrique relative à l'implémentation du langage. Pour de plus amples informations, veuillez consulter Compatibilité du porte-clés.

Suite d'algorithmes

Le kit Kit SDK de chiffrement AWS prend en charge plusieurs suites d'algorithmes. Toutes les suites prises en charge utilisent l'algorithme AES (Advanced Encryption Standard) en tant qu'algorithme principal et l'associent à d'autres algorithmes et valeurs.

Le kit Kit SDK de chiffrement AWS établit une suite d'algorithmes recommandée en tant que suite par défaut pour toutes les opérations de chiffrement. La valeur par défaut peut évoluer à mesure que les normes et les bonnes pratiques s'améliorent. Vous pouvez spécifier une autre suite d'algorithmes dans les demandes de chiffrement de données ou lorsque vous créez un gestionnaire des matériaux de chiffrement (CMM). Il est cependant préférable d'utiliser la valeur par défaut, sauf si votre situation exige une autre suite. La valeur par défaut actuelle est AES-GCM avec une fonction de dérivation de clés pour l'extraction et le développement basée sur HMAC (HKDF), la signature ECDSA (Elliptic Curve Digital Signature Algorithm) et une clé de chiffrement de 256 bits.

Si vous spécifiez une suite d'algorithmes, nous vous conseillons d'utiliser une suite d'algorithmes qui utilise une fonction de dérivation de clés et un algorithme de signature de messages. Les suites d'algorithmes qui ne disposent pas de ces fonctionnalité sont uniquement prises en charge dans le cadre de la rétrocompatibilité.

Contexte de chiffrement

Pour améliorer la sécurité de vos opérations de chiffrement, incluez un contexte de chiffrement dans toutes les demandes de chiffrement de données. L'utilisation d'un contexte de chiffrement est facultative, mais nous vous recommandons un contexte cryptographique dans le cadre des bonnes pratiques.

Un contexte de chiffrement est un ensemble de paires nom-valeur qui contient des données non secrètes arbitraires authentifiées supplémentaires. Le contexte de chiffrement peut contenir toutes les données que vous choisissez, mais il comprend généralement les données qui sont utiles pour la journalisation et le suivi, telles que les données relatives au type de fichier, à l'objectif ou à la propriété. Lorsque vous chiffrez des données, 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. Le kit Kit SDK de chiffrement AWS comprend le contexte de chiffrement en texte brut dans l'en-tête du message chiffré qu'il renvoie.

Le contexte de chiffrement que le kit Kit SDK de chiffrement AWS utilise se compose du contexte de chiffrement que vous spécifiez et de la paire de clés publique gestionnaire des matériaux de chiffrement (CMM) ajoute. Plus précisément, chaque fois que vous utilisez un algorithme de chiffrement avec signature, le CMM ajoute une paire nom-valeur au contexte de chiffrement et qui se compose d'un nom réservé, aws-crypto-public-key, et d'une valeur qui représente la clé de vérification publique. Le nom aws-crypto-public-key dans le contexte de chiffrement est réservé par le kit Kit SDK de chiffrement AWS et ne peut pas être utilisé en tant que nom d'une autre paire dans le contexte de chiffrement. Pour plus d'informations, consultez AAD dans la Référence de format de message.

L'exemple de contexte de chiffrement suivant se compose de deux paires de contexte de chiffrement spécifiées dans la requête et de la paire de clés publique que le CMM ajoute.

"Purpose"="Test", "Department"="IT", aws-crypto-public-key=<public key>

Pour déchiffrer les données, vous transmettez le message chiffré. Dans la mesure où le kit Kit SDK de chiffrement AWS peut extraire le message chiffré de l'en-tête de ce même message, vous n'êtes pas tenu de fournir le contexte de chiffrement séparément. Cependant, le contexte de chiffrement peut vous aider à confirmer que vous déchiffrez le bon message chiffré.

  • Dans l'interface de ligne de commande du kit Kit SDK de chiffrement AWS, si vous fournissez un contexte de chiffrement dans une commande de déchiffrement, le CLI vérifie que les valeurs sont présentes dans le contexte de chiffrement du message chiffrer avant de renvoyer les données en texte brut.

  • Dans d'autres langages, la réponse de déchiffrement inclut le contexte de chiffrement et les données en texte brut. La fonction de déchiffrement de votre application doit toujours vérifier que le contexte de chiffrement de la réponse de déchiffrement comprend le contexte de chiffrement dans la requête de chiffrement (ou un sous-ensemble) avant de renvoyer les données en texte brut.

Lorsque vous choisissez un contexte de chiffrement, n'oubliez pas qu'il ne s'agit pas d'un secret. Le contexte de chiffrement est affiché en texte brut dans l'en-tête du message chiffré renvoyé par le kit SDK. Si vous utilisez AWS Key Management Service, le contexte de chiffrement peut également s'afficher en texte brut dans les enregistrements et les journaux d'audit, par exemple AWS CloudTrail.

Pour obtenir des exemples de vérification d'un contexte de chiffrement dans votre code, consultez :

Message chiffré

Lorsque vous chiffrez des données avec le kit Kit SDK de chiffrement AWS, il renvoie un message chiffré.

Un message chiffré est une structure de données formatée mobile qui comprend les données chiffrées ainsi que les copies chiffrées des clés de données, l'ID de l'algorithme et, éventuellement, un contexte de chiffrement et un message de signature. Les opérations de chiffrement du kit Kit SDK de chiffrement AWS renvoient un message chiffré et les opérations de déchiffrement utilisent un message chiffré en tant qu'entrée.

Le fait d'associer les données chiffrées et leurs clés de données chiffrées simplifie l'opération de déchiffrement et vous évite de devoir stocker et gérer des clés de données chiffrées indépendamment des données qui sont chiffrées.

Pour obtenir des informations techniques sur les messages chiffrés, consultez Format de message chiffré.