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.
AWSConcepts du SDK de chiffrement de base de données
Notre bibliothèque de chiffrement côté client a été renommée AWS Database Encryption SDK. Ce guide du développeur fournit toujours des informations sur le client de chiffrement DynamoDB. |
Cette rubrique explique les concepts et la terminologie utilisés dans le SDK AWS Database Encryption.
Pour savoir comment les composants du SDK de chiffrement AWS de base de données interagissent, consultezFonctionnement du SDK AWS de chiffrement de base de données.
Pour en savoir plus sur le SDK AWS Database Encryption, consultez les rubriques suivantes.
-
Découvrez comment le SDK AWS Database Encryption utilise le chiffrement d'enveloppe pour protéger vos données.
-
Découvrez les éléments du chiffrement des enveloppes : les clés de données qui protègent vos enregistrements et les clés d'encapsulation qui protègent vos clés de données.
-
Découvrez les porte-clés qui déterminent les clés d'emballage que vous utilisez.
-
Découvrez le contexte de chiffrement qui renforce l'intégrité de votre processus de chiffrement.
-
Découvrez la description du matériel que les méthodes de chiffrement ajoutent à votre enregistrement.
-
Découvrez les actions cryptographiques qui indiquent au SDK de chiffrement de AWS base de données quels champs doivent être chiffrés et signés.
Rubriques
Chiffrement d'enveloppe
La sécurité de vos données chiffrées dépend partiellement de la protection de la clé de données capable de les déchiffrer. Le chiffrement de la clés de données en vue de sa protection est un bonne pratique reconnue. Pour ce faire, vous avez besoin d'une autre clé de chiffrement, appelée clé de chiffrement ou clé d'encapsulation. La pratique consistant à utiliser une clé d'encapsulation pour chiffrer des clés de données est connue sous le nom de chiffrement d'enveloppe.
- Protection des clés de données
-
Le SDK AWS Database Encryption chiffre chaque champ à l'aide d'une clé de données unique. Il chiffre ensuite chaque clé de données sous la clé d'encapsulation que vous avez spécifiée. Il stocke les clés de données cryptées dans la description du matériau.
Pour spécifier votre clé d'emballage, vous utilisez un porte-clés.
- Chiffrer les mêmes données sous plusieurs clés d'encapsulation
-
Vous pouvez crypter la clé de données à l'aide de plusieurs clés d'encapsulation. Vous souhaiterez peut-être fournir des clés d'encapsulation différentes pour différents utilisateurs, ou des clés d'encapsulation de différents types ou à différents emplacements. Chacune des clés d'encapsulation chiffre la même clé de données. Le SDK AWS Database Encryption stocke toutes les clés de données cryptées ainsi que les champs cryptés de la description du matériel.
Pour déchiffrer les données, vous devez fournir au moins une clé d'encapsulation capable de déchiffrer les clés de données cryptées.
- Combinaison des points forts de plusieurs algorithmes
-
Pour crypter vos données, par défaut, le SDK AWS Database Encryption utilise une suite d'algorithmes avec un chiffrement symétrique AES-GCM, une fonction de dérivation de clés basée sur HMAC (HKDF) et une signature ECDSA. Pour chiffrer la clé de données, vous pouvez spécifier un algorithme de chiffrement symétrique ou asymétrique adapté à votre clé d'encapsulation.
En règle générale, les algorithmes de chiffrement à clé symétrique sont plus rapides et produisent des textes chiffrés plus petits que le chiffrement asymétrique et le chiffrement de clé publique. Mais les algorithmes à clé publique assurent une séparation inhérente des rôles. Pour combiner les points forts de chacun, vous pouvez chiffrer la clé de données à l'aide d'un chiffrement à clé publique.
Nous vous recommandons d'utiliser l'un des AWS KMS porte-clés dans la mesure du possible. Lorsque vous utilisez le AWS KMSporte-clés, vous pouvez choisir de combiner les points forts de plusieurs algorithmes en spécifiant un RSA asymétrique AWS KMS key comme clé d'encapsulation. Vous pouvez également utiliser une clé KMS de chiffrement symétrique.
Clé de données
Une clé de données est une clé de chiffrement que le SDK AWS de chiffrement de base de données utilise pour chiffrer les champs d'un enregistrement qui sont marqués ENCRYPT_AND_SIGN
dans les actions cryptographiques. Chaque clé de données est un tableau d'octets qui respecte les exigences concernant les clés cryptographiques. Le SDK AWS Database Encryption utilise une clé de données unique pour chiffrer chaque attribut.
Vous n'avez pas besoin de spécifier, de générer, d'implémenter, d'étendre, de protéger ou d'utiliser des clés de données. Le SDK AWS Database Encryption fait ce travail pour vous lorsque vous appelez les opérations de chiffrement et de déchiffrement.
Pour protéger vos clés de données, le SDK AWS Database Encryption les chiffre à l'aide d'une ou de plusieurs clés de chiffrement appelées clés d'encapsulation. Une fois que le SDK de chiffrement de AWS base de données a utilisé vos clés de données en texte brut pour chiffrer vos données, il les supprime de la mémoire dès que possible. Stocke ensuite la clé de données cryptée dans la description du matériau. Pour plus de détails, consultez Fonctionnement du SDK AWS de chiffrement de base de données.
Astuce
Dans le SDK AWS de chiffrement de base de données, nous distinguons les clés de données des clés de chiffrement de données. Il est recommandé que toutes les suites d'algorithmes prises en charge utilisent une fonction de dérivation clé
Chaque clé de données cryptée inclut des métadonnées, notamment l'identifiant de la clé d'encapsulation qui l'a chiffrée. Ces métadonnées permettent au SDK AWS Database Encryption d'identifier les clés d'encapsulation valides lors du déchiffrement.
Clé d'emballage
Une clé d'encapsulation est une clé de chiffrement que le SDK AWS de chiffrement de base de données utilise pour chiffrer la clé de données qui chiffre vos enregistrements. Chaque clé de données peut être cryptée sous une ou plusieurs clés d'encapsulation. Vous déterminez quelles clés d'encapsulation sont utilisées pour protéger vos données lorsque vous configurez un trousseau de clés.

Le SDK AWS Database Encryption prend en charge plusieurs clés d'encapsulation couramment utilisées, telles que AWS Key Management Service(AWS KMS) les clés KMS de chiffrement symétriques (y compris les clés multirégionales) et AWS KMS les clés RSA KMS asymétriques, les clés AES-GCM brutes (Advanced Encryption Standard/Galois Counter Mode) et les clés RSA brutes. Nous vous recommandons d'utiliser des clés KMS dans la mesure du possible. Pour choisir la clé d'encapsulation à utiliser, reportez-vous à la section Sélection des clés d'encapsulation.
Lorsque vous utilisez le chiffrement d'enveloppe, vous devez protéger vos clés d'encapsulation contre tout accès non autorisé. Pour ce faire, vous pouvez procéder de l'une des manières suivantes :
-
Utilisez un service conçu à cet effet, tel que AWS Key Management Service(AWS KMS)
. -
Utilisez un module de sécurité matériel (HSM)
tel que celui proposé par AWS CloudHSM . -
Utilisez d'autres outils et services de gestion clés.
Si vous ne disposez pas de système de gestion de clés, nous vous recommandons d'utiliser AWS KMS. Le SDK AWS Database Encryption s'intègre AWS KMS pour vous aider à protéger et à utiliser vos clés d'encapsulation.
Porte-clés
Pour spécifier les clés d'encapsulation que vous utilisez pour le chiffrement et le déchiffrement, vous utilisez un trousseau de clés. Vous pouvez utiliser les trousses de clés fournies par le SDK AWS Database Encryption ou concevoir vos propres implémentations.
Un porte-clés génère, chiffre et déchiffre des clés de données. Il génère également les clés MAC utilisées pour calculer les codes d'authentification des messages basés sur le hachage (HMAC) contenus dans la signature. Lorsque vous définissez un jeu de clés, vous pouvez spécifier les clés d'encapsulation qui chiffrent vos clés de données. La plupart des porte-clés contiennent au moins une clé d'emballage ou un service qui fournit et protège les clés d'emballage. Lors du chiffrement, le SDK AWS Database Encryption utilise toutes les clés d'encapsulation spécifiées dans le jeu de clés pour chiffrer la clé de données. Pour obtenir de l'aide sur le choix et l'utilisation des trousses de clés définies par le SDK AWS de chiffrement de base de données, consultez la section Utilisation des trousseaux de clés.
Actions cryptographiques
Les actions cryptographiques indiquent au chiffreur les actions à effectuer sur chaque champ d'un enregistrement.
Les valeurs d'action cryptographique peuvent être l'une des suivantes :
-
Chiffrer et signer — Chiffrez le champ. Incluez le champ crypté dans la signature.
-
Signer uniquement : incluez le champ dans la signature.
-
Ne rien faire — Ne chiffrez pas et n'incluez pas le champ dans la signature.
Pour tout champ susceptible de stocker des données sensibles, utilisez Chiffrer et signer. Pour les valeurs de clé primaire (par exemple, une clé de partition et une clé de tri dans une table DynamoDB), utilisez Sign only. Il n'est pas nécessaire de spécifier des actions cryptographiques pour la description du matériau. Le SDK AWS Database Encryption signe automatiquement le champ dans lequel la description du matériau est stockée.
Choisissez vos actions cryptographiques avec soin. En cas de doute, utilisez Chiffrer et signer. Une fois que vous avez utilisé le SDK AWS Database Encryption pour protéger vos enregistrements, vous ne pouvez pas remplacer un SIGN_ONLY
champ ENCRYPT_AND_SIGN
ou existant par un champ existantDO_NOTHING
, ni modifier l'action cryptographique attribuée à un champ existantDO_NOTHING
. Toutefois, vous pouvez toujours apporter d'autres modifications à votre modèle de données. Par exemple, vous pouvez ajouter ou supprimer des champs chiffrés dans le cadre d'un déploiement unique.
Description du matériau
La description du matériau sert d'en-tête à un enregistrement crypté. Lorsque vous chiffrez et signez des champs à l'aide du SDK de chiffrement de AWS base de données, le chiffreur enregistre la description du matériel au fur et à mesure qu'il assemble le matériel cryptographique et stocke la description du matériau dans un nouveau champ (aws_dbe_head
) qu'il ajoute à votre enregistrement.
La description du matériel est une structure de données formatée portable qui contient des copies cryptées des clés de données et d'autres informations, telles que des algorithmes de chiffrement, un contexte de cryptage et des instructions de chiffrement et de signature. Le chiffreur enregistre la description du matériel au fur et à mesure qu'il assemble le matériel cryptographique pour le chiffrement et la signature. Plus tard, lorsqu'il doit assembler du matériel cryptographique pour vérifier et déchiffrer un champ, il utilise la description du matériau comme guide.
Le stockage des clés de données cryptées à côté du champ crypté rationalise l'opération de déchiffrement et vous évite d'avoir à stocker et à gérer les clés de données cryptées indépendamment des données qu'elles chiffrent.
Pour des informations techniques sur la description du matériau, reportez-vous à la sectionFormat de description du matériau.
Contexte de chiffrement
Pour améliorer la sécurité de vos opérations cryptographiques, le SDK AWS Database Encryption inclut un contexte de chiffrement dans toutes les demandes de chiffrement et de signature d'un enregistrement.
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 SDK AWS Database Encryption inclut le nom logique de votre base de données et les valeurs de clé primaire (par exemple, une clé de partition et une clé de tri dans une table DynamoDB) dans le contexte de chiffrement. Lorsque vous chiffrez et signez un champ, le contexte de chiffrement est lié de manière cryptographique à l'enregistrement crypté, de sorte que le même contexte de cryptage est requis pour déchiffrer le champ.
Si vous utilisez un jeu de AWS KMS clés, le SDK AWS de chiffrement de base de données utilise également le contexte de chiffrement pour fournir des données authentifiées (AAD) supplémentaires dans les appels que le jeu de clés effectue. AWS KMS
Chaque fois que vous utilisez la suite d'algorithmes par défaut, le gestionnaire de matériaux cryptographiques (CMM) ajoute une paire nom-valeur au contexte de chiffrement composée d'un nom réservé et d'une valeur représentant la clé de vérification publique. aws-crypto-public-key
La clé de vérification publique est enregistrée dans la description du matériau.
Gestionnaire de matériaux de chiffrement
Le gestionnaire de matériaux cryptographiques (CMM) assemble les matériaux cryptographiques utilisés pour chiffrer, déchiffrer et signer vos données. Chaque fois que vous utilisez la suite d'algorithmes par défaut, les matériaux cryptographiques incluent du texte brut et des clés de données cryptées, des clés de signature symétriques et une clé de signature asymétrique. Vous n'interagissez jamais directement avec le CMM. Les méthodes de chiffrement et de déchiffrement s'en occupent pour vous.
Comme le CMM fait office de liaison entre le SDK de chiffrement de AWS base de données et un jeu de clés, il constitue un point idéal pour la personnalisation et l'extension, par exemple pour la prise en charge de l'application des politiques. Vous pouvez spécifier une CMM de manière explicite, mais ce n'est pas obligatoire. Lorsque vous spécifiez un jeu de clés, le SDK AWS Database Encryption crée un CMM par défaut pour vous. Le CMM par défaut obtient les éléments de chiffrement ou de déchiffrement à partir du jeu de clés que vous spécifiez. Pour cela, il peut être nécessaire d'appeler un service de chiffrement, comme AWS Key Management Service (AWS KMS).
Chiffrement symétrique et asymétrique
Le chiffrement symétrique utilise la même clé pour chiffrer et déchiffrer les données.
Le chiffrement asymétrique utilise une paire de clés de données liées mathématiquement. L'une des clés de la paire chiffre les données ; seule l'autre clé de la paire peut les déchiffrer. Pour plus de détails, consultez la section Algorithmes AWS cryptographiques du Guide des services et outils de chiffrement.
Le SDK AWS Database Encryption utilise le chiffrement des enveloppes. Il crypte vos données à l'aide d'une clé de données symétrique. Il chiffre la clé de données symétrique avec une ou plusieurs clés d'encapsulation symétriques ou asymétriques. Il ajoute une description matérielle à l'enregistrement qui inclut au moins une copie cryptée de la clé de données.
- Chiffrement de vos données (chiffrement symétrique)
-
Pour crypter vos données, le SDK AWS Database Encryption utilise une clé de données symétrique et une suite d'algorithmes qui inclut un algorithme de chiffrement symétrique. Pour déchiffrer les données, le SDK AWS Database Encryption utilise la même clé de données et la même suite d'algorithmes.
- Chiffrement de votre clé de données (chiffrement symétrique ou asymétrique)
-
Le jeu de clés que vous fournissez pour une opération de chiffrement et de déchiffrement détermine la manière dont la clé de données symétrique est cryptée et déchiffrée. Vous pouvez choisir un jeu de clés qui utilise un chiffrement symétrique, tel qu'un jeu de AWS KMS clés avec une clé KMS de chiffrement symétrique, ou un jeu qui utilise un cryptage asymétrique, tel qu'un jeu de AWS KMS clés avec une clé RSA KMS asymétrique.
Engagement clé
Le SDK AWS Database Encryption prend en charge l'engagement par clé (parfois appelé robustesse), une propriété de sécurité qui garantit que chaque texte chiffré ne peut être déchiffré qu'en un seul texte clair. Pour ce faire, Key Commitment garantit que seule la clé de données qui a chiffré votre enregistrement sera utilisée pour le déchiffrer. Le SDK AWS Database Encryption inclut un engagement clé pour toutes les opérations de chiffrement et de déchiffrement.
La plupart des chiffrements symétriques modernes (y compris AES) chiffrent le texte en clair à l'aide d'une clé secrète unique, comme la clé de données unique que le SDK de chiffrement de AWS base de données utilise pour chiffrer chaque champ de texte en clair marqué dans un enregistrement. ENCRYPT_AND_SIGN
Le déchiffrement de cet enregistrement avec la même clé de données renvoie un texte en clair identique à l'original. Le déchiffrement à l'aide d'une clé différente échoue généralement. Bien que cela soit difficile, il est techniquement possible de déchiffrer un texte chiffré à l'aide de deux clés différentes. Dans de rares cas, il est possible de trouver une clé capable de déchiffrer partiellement le texte chiffré en un texte clair différent, mais toujours intelligible.
Le SDK AWS Database Encryption chiffre toujours chaque attribut sous une clé de données unique. Il peut chiffrer cette clé de données sous plusieurs clés d'encapsulation, mais les clés d'encapsulation chiffrent toujours la même clé de données. Néanmoins, un enregistrement chiffré sophistiqué conçu manuellement peut en fait contenir différentes clés de données, chacune chiffrée par une clé d'encapsulage différente. Par exemple, si un utilisateur déchiffre l'enregistrement crypté, il renvoie 0x0 (faux) tandis qu'un autre utilisateur qui déchiffre le même enregistrement crypté obtient 0x1 (vrai).
Pour éviter ce scénario, le SDK AWS Database Encryption inclut un engagement clé lors du chiffrement et du déchiffrement. La méthode de chiffrement lie cryptographiquement la clé de données unique qui a produit le texte chiffré à l'engagement de la clé, un code d'authentification des messages basé sur le hachage (HMAC) calculé sur la base de la description du matériau à l'aide d'une dérivation de la clé de données. Ensuite, il enregistre l'engagement clé dans la description du matériau. Lorsqu'il déchiffre un enregistrement avec un engagement de clé, le SDK AWS de chiffrement de base de données vérifie que la clé de données est la seule clé pour cet enregistrement crypté. Si la vérification de la clé de données échoue, l'opération de déchiffrement échoue.
Signatures numériques
Pour garantir l'authenticité des données lors de leur transfert entre les systèmes, vous pouvez appliquer une signature numérique à l'enregistrement. Les signatures numériques sont toujours asymétriques. Vous utilisez votre clé privée pour créer la signature et l'ajouter à l'enregistrement d'origine. Votre destinataire utilise une clé publique pour vérifier que l'enregistrement n'a pas été modifié depuis que vous l'avez signé. Vous devez utiliser des signatures numériques si les utilisateurs qui chiffrent les données et ceux qui les déchiffrent ne jouissent pas de la même confiance.
Le SDK AWS Database Encryption chiffre vos données à l'aide d'un algorithme de chiffrement authentifié, AES-GCM, mais comme AES-GCM utilise des clés symétriques, toute personne capable de déchiffrer la clé de données utilisée pour déchiffrer le texte chiffré pourrait également créer manuellement un nouveau texte chiffré chiffré, ce qui pourrait poser un problème de sécurité.
Pour éviter ce problème, la suite d'algorithmes par défaut ajoute une signature ECDSA (Elliptic Curve Digital Signature Algorithm) aux enregistrements chiffrés. La suite d'algorithmes par défaut chiffre les champs de votre enregistrement marqués à l'ENCRYPT_AND_SIGN
aide d'un algorithme de chiffrement authentifié, AES-GCM. Il calcule ensuite à la fois les codes d'authentification des messages basés sur le hachage (HMAC) et les signatures ECDSA asymétriques sur les champs de votre enregistrement marqués et. ENCRYPT_AND_SIGN
SIGN_ONLY
Le processus de déchiffrement utilise les signatures pour vérifier qu'un utilisateur autorisé a chiffré l'enregistrement.
Lorsque la suite d'algorithmes par défaut est utilisée, le SDK AWS de chiffrement de base de données génère une paire de clés privées et publiques temporaires pour chaque enregistrement chiffré. Le SDK AWS Database Encryption stocke la clé publique dans la description du document et supprime la clé privée, et personne ne peut créer une autre signature vérifiant à l'aide de la clé publique. Étant donné que l'algorithme lie la clé publique à la clé de données cryptée en tant que données authentifiées supplémentaires dans la description du matériel, un utilisateur qui peut uniquement déchiffrer des enregistrements ne peut pas modifier la clé publique.
Le SDK AWS de chiffrement de base de données inclut toujours la vérification HMAC. Les signatures numériques ECDSA sont activées par défaut, mais ne sont pas obligatoires. Si les utilisateurs qui chiffrent les données et ceux qui les déchiffrent bénéficient de la même confiance, vous pouvez envisager d'utiliser une suite d'algorithmes qui n'inclut pas de signatures numériques afin d'améliorer vos performances. Pour plus d'informations sur la sélection de suites d'algorithmes alternatives, voir Choix d'une suite d'algorithmes.