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.
AWS SDKConcepts de chiffrement de base
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 chiffrement des AWS bases de donnéesSDK.
Pour savoir comment les composants du chiffrement de AWS base de données SDK interagissent, voirFonctionnement du SDK AWS de chiffrement de base de données.
Pour en savoir plus sur le chiffrement des AWS bases de donnéesSDK, consultez les rubriques suivantes.
-
Découvrez comment le chiffrement AWS de base de données SDK 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 matérielle que les méthodes de chiffrement ajoutent à votre dossier.
-
Découvrez les actions cryptographiques qui indiquent au service de chiffrement SDK de la AWS base de données les champs à chiffrer et à signer.
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, connue sous le nom de 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 chiffrement AWS de base de données chiffre chaque champ avec une clé de données unique. Il chiffre ensuite chaque clé de données sous la clé d'encapsulation que vous spécifiez. 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 chiffrer 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 chiffrement AWS de base de données SDK stocke toutes les clés de données cryptées à côté des 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 chiffrées.
- Combinaison des points forts de plusieurs algorithmes
-
Pour chiffrer vos données, le chiffrement de AWS base de données SDK utilise par défaut une suite d'algorithmes comprenant un chiffrement GCM symétrique, une fonction de dérivation de clé HMAC basée sur la base (HKDF) et une signature. AES 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 intrinsèque des rôles. Pour combiner les points forts de chacun, vous pouvez chiffrer la clé de données avec le chiffrement par 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 KMS trousseau de clés, vous pouvez choisir de combiner les forces de plusieurs algorithmes en spécifiant une clé asymétrique RSA AWS KMS key comme clé d'encapsulation. Vous pouvez également utiliser une KMS clé de chiffrement symétrique.
Clé de données
Une clé de données est une clé de chiffrement que le chiffrement de AWS base de données SDK utilise pour chiffrer les champs d'un enregistrement 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 chiffrement AWS de base de données SDK utilise une clé de données unique pour chiffrer chaque attribut.
Il n'est pas nécessaire 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 chiffrement AWS SDK de base de données fonctionne 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 chiffrement AWS de base de données les chiffre sous une ou plusieurs clés de chiffrement appelées clés d'encapsulation. Une fois que le chiffrement AWS de base de données SDK utilise 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 chiffrement AWS de base de donnéesSDK, 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 de clés
Chaque clé de données chiffré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 chiffrement de la AWS base de données d'SDKidentifier les clés d'encapsulation valides lors du déchiffrement.
Clé d'emballage
Une clé d'encapsulation est une clé de chiffrement SDK utilisée par AWS Database Encryption pour chiffrer la clé de données qui chiffre vos enregistrements. Chaque clé de données peut être chiffré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.
![Chiffrer une clé de données avec plusieurs clés d'encapsulation](images/dbesdk-wrapping-key.png)
Le chiffrement AWS de base de données SDK prend en charge plusieurs clés d'encapsulation couramment utilisées, telles que AWS Key Management Service(AWS KMS) les clés de chiffrement symétriques (y compris KMS les clés multirégionales) et AWS KMS les clés asymétriques, RSAKMSles clés brutes AES GCM (Advanced Encryption Standard/Galois Counter Mode) et les clés brutes. RSA Nous vous recommandons d'utiliser des KMS clés dans la mesure du possible. Pour choisir la clé d'encapsulation à utiliser, consultez la section Sélection des clés d'encapsulation.
Lorsque vous utilisez le chiffrement des enveloppes, vous devez protéger vos clés d'emballage contre tout accès non autorisé. Vous pouvez le faire 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 ceux proposés par AWS CloudHSM . -
Utilisez d'autres outils et services de gestion clés.
Si vous n'avez pas de système de gestion des clés, nous vous le recommandons AWS KMS. Le chiffrement AWS de base de données SDK 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 trousseaux de clés fournis par le chiffrement AWS SDK de base de données 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 MAC clés utilisées pour calculer les codes d'authentification des messages basés sur le hachage (HMACs) contenus dans la signature. Lorsque vous définissez un trousseau 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 fournissant et protégeant les clés d'emballage. Lors du chiffrement, le chiffrement AWS de base de données SDK utilise toutes les clés d'encapsulation spécifiées dans le trousseau de clés pour chiffrer la clé de données. Pour obtenir de l'aide sur le choix et l'utilisation des trousseaux de clés SDK définis par le chiffrement de AWS base de données, consultez la section Utilisation des trousseaux de clés.
Actions cryptographiques
Les actions cryptographiques indiquent au crypteur les actions à effectuer sur chaque champ d'un enregistrement.
Les valeurs des actions cryptographiques 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.
-
Signer et inclure dans le contexte de chiffrement — Incluez le champ dans le contexte de signature et de chiffrement.
Par défaut, les clés de partition et de tri sont les seuls attributs inclus dans le contexte de chiffrement. Vous pouvez envisager de définir des champs supplémentaires
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
afin que le fournisseur d'ID de clé de branche pour votre jeu de clés AWS KMS hiérarchique puisse identifier la clé de branche requise pour le déchiffrement à partir du contexte de chiffrement. Pour plus d'informations, consultez le fournisseur d'ID de clé de branche.Note
Pour utiliser l'action
SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
cryptographique, vous devez utiliser la version 3.3 ou ultérieure du chiffrement SDK de AWS base de données. Déployez la nouvelle version sur tous les lecteurs avant de mettre à jour votre modèle de données pour l'inclureSIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
. -
Ne rien faire : ne chiffrez pas et n'incluez pas le champ dans la signature.
Pour tous les champs susceptibles 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 Signer uniquement ou Signer et inclure dans le contexte de chiffrement. Si vous spécifiez des attributs Sign et incluez dans le contexte de chiffrement, les attributs de partition et de tri doivent également être Signer et inclure dans le contexte de chiffrement. Il n'est pas nécessaire de spécifier des actions cryptographiques pour la description du matériau. Le chiffrement AWS de base de données signe SDK 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 chiffrement de AWS base de données SDK pour protéger vos enregistrements, vous ne pouvez pas remplacer un champ existant ENCRYPT_AND_SIGN
par un SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
champ existantDO_NOTHING
, ni modifier l'action cryptographique assignée à un DO_NOTHING
champ existant. SIGN_ONLY
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 en un seul déploiement.
Description du matériau
La description du matériau sert d'en-tête à un enregistrement crypté. Lorsque vous cryptez et signez des champs avec le chiffrement de AWS base de donnéesSDK, le crypteur enregistre la description du matériel pendant qu'il assemble le matériel cryptographique et stocke la description du matériel dans un nouveau champ (aws_dbe_head
) qu'il ajoute à votre enregistrement.
La description matérielle 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 les algorithmes de chiffrement, le contexte de chiffrement et les instructions de chiffrement et de signature. Le crypteur enregistre la description du matériel lorsqu'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ériel comme guide.
Le stockage des clés de données chiffré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 chiffrées indépendamment des données qu'elles chiffrent.
Pour des informations techniques sur la description du matériau, voirFormat de description du matériau.
Contexte de chiffrement
Pour améliorer la sécurité de vos opérations cryptographiques, le chiffrement de AWS base de données SDK 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 chiffrement AWS de base de données SDK 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é cryptographiquement à l'enregistrement chiffré, de sorte que le même contexte de chiffrement est requis pour déchiffrer le champ.
Si vous utilisez un AWS KMS trousseau de clés, le chiffrement AWS de base de données utilise SDK également le contexte de chiffrement pour fournir des données authentifiées supplémentaires (AAD) dans les appels auxquels le trousseau de clés est envoyé. AWS KMS
Chaque fois que vous utilisez la suite d'algorithmes par défaut, le gestionnaire de matériel cryptographique (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ériel cryptographique (CMM) assemble le matériel cryptographique utilisé pour chiffrer, déchiffrer et signer vos données. Chaque fois que vous utilisez la suite d'algorithmes par défaut, le matériel cryptographique inclut des clés de données chiffrées et en texte brut, des clés de signature symétriques et une clé de signature asymétrique. Vous n'interagissez jamais CMM directement avec eux. Les méthodes de chiffrement et de déchiffrement s'en occupent pour vous.
Comme il CMM agit comme un lien entre le chiffrement de AWS base de données SDK et un trousseau de clés, il constitue un point idéal pour la personnalisation et l'extension, par exemple pour le soutien à l'application des politiques. Vous pouvez spécifier explicitement unCMM, mais ce n'est pas obligatoire. Lorsque vous spécifiez un trousseau de clés, le chiffrement AWS de base de données SDK crée une valeur par défaut CMM pour vous. Par défaut, le CMM matériel de chiffrement ou de déchiffrement est extrait du trousseau 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.
Le chiffrement AWS de base de données SDK utilise le chiffrement d'enveloppe. Il chiffre 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 chiffrer vos données, le chiffrement de AWS base de données SDK 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 chiffrement AWS de base de données SDK 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 trousseau de clés que vous fournissez à une opération de chiffrement et de déchiffrement détermine la manière dont la clé de données symétrique est chiffrée et déchiffrée. Vous pouvez choisir un trousseau de clés utilisant un chiffrement symétrique, tel qu'un AWS KMS trousseau avec une KMS clé de chiffrement symétrique, ou un trousseau de clés doté d'une AWS KMS clé asymétrique. RSA KMS
Engagement clé
Le chiffrement AWS de base de données SDK prend en charge l'engagement des clés (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, l'engagement clé garantit que seule la clé de données qui a chiffré votre enregistrement sera utilisée pour le déchiffrer. Le chiffrement AWS de base de données SDK inclut un engagement clé pour toutes les opérations de chiffrement et de déchiffrement.
La plupart des chiffrements symétriques modernes (y comprisAES) chiffrent le texte en clair sous une seule clé secrète, comme la clé de données unique que le chiffrement de AWS base de données SDK 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 avec une autre clé échoue généralement. Bien que cela soit difficile, il est techniquement possible de déchiffrer un texte chiffré sous 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 chiffrement AWS de base de données chiffre SDK 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é créé manuellement peut en fait contenir différentes clés de données, chacune chiffrée par une clé d'encapsulation différente. Par exemple, si un utilisateur déchiffre l'enregistrement chiffré, 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 chiffrement de AWS base de données SDK inclut l'engagement des clés lors du chiffrement et du déchiffrement. La méthode de cryptage lie cryptographiquement la clé de données unique qui a produit le texte chiffré à l'engagement de clé, un code d'authentification de message basé sur le hachage (HMAC) calculé sur la description du matériel à l'aide d'une dérivation de la clé de données. Ensuite, il enregistre l'engagement clé dans la description du matériel. Lorsqu'il déchiffre un enregistrement avec une clé d'engagement, le chiffrement de AWS base de données SDK 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
Le SDK chiffrement AWS de base de données chiffre vos données à l'aide d'un algorithme de chiffrement authentifié, AES -GCM, et le processus de déchiffrement vérifie l'intégrité et l'authenticité d'un message crypté sans utiliser de signature numérique. 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é, ce qui pourrait poser un problème de sécurité. Par exemple, si vous utilisez un AWS KMS key comme clé d'encapsulation, un utilisateur kms:Decrypt
autorisé peut créer des textes chiffrés chiffrés sans appeler. kms:Encrypt
Pour éviter ce problème, la suite d'algorithmes par défaut ajoute une signature Elliptic Curve Digital Signature Algorithm (ECDSA) aux enregistrements chiffrés. La suite d'algorithmes par défaut chiffre les champs de votre enregistrement marqués à ENCRYPT_AND_SIGN
l'aide d'un algorithme de cryptage authentifié, AES -. GCM Ensuite, il calcule à la fois les codes d'authentification des messages basés sur le hachage (HMACs) et les ECDSA signatures asymétriques sur les champs de votre enregistrement marquésENCRYPT_AND_SIGN
, SIGN_ONLY
et. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT
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 chiffrement AWS de base de données SDK génère une clé privée temporaire et une paire de clés publiques pour chaque enregistrement chiffré. Le chiffrement AWS de base de données SDK stocke la clé publique dans la description matérielle et supprime la clé privée. Cela garantit que personne ne peut créer une autre signature vérifiant avec la clé publique. 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, empêchant ainsi les utilisateurs qui ne peuvent que déchiffrer des champs de modifier la clé publique ou d'affecter la vérification de signature.
Le chiffrement AWS de base de données inclut SDK toujours la HMAC vérification. ECDSAles signatures numériques sont activées par défaut, mais elles ne sont pas obligatoires. Si les utilisateurs qui chiffrent les données et ceux qui les déchiffrent jouissent de la même confiance, vous pouvez envisager d'utiliser une suite d'algorithmes qui n'inclut pas de signatures numériques pour améliorer vos performances. Pour plus d'informations sur la sélection d'autres suites d'algorithmes, voir Choisir une suite d'algorithmes.
Note
Si un trousseau de clés ne fait pas de distinction entre les crypteurs et les déchiffreurs, les signatures numériques ne fournissent aucune valeur cryptographique.
AWS KMS les trousseaux de clés, y compris le trousseau de RSA AWS KMS clés asymétrique, peuvent faire la distinction entre les crypteurs et les décrypteurs en fonction de politiques et de politiques clés. AWS KMS IAM
En raison de leur nature cryptographique, les trousseaux de clés suivants ne peuvent pas faire la distinction entre les crypteurs et les déchiffreurs :
-
AWS KMS Porte-clés hiérarchique
-
Porte-clés AWS KMS ECDH
-
AESPorte-clés brut
-
RSAPorte-clés brut
-
ECDHPorte-clés brut