Concepts du kit AWS Encryption SDK - AWS Encryption SDK

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.

Concepts du kit AWS Encryption SDK

Cette section présente les concepts utilisés dans le kit AWS Encryption SDK, et fournit un glossaire et une référence. Il est conçu pour vous aider à comprendre son AWS Encryption SDK fonctionnement et les termes que nous utilisons pour le décrire.

Vous avez besoin d'aide ?

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

AWS Encryption SDKChiffre chaque message avec une clé de données unique. Il chiffre ensuite la clé de données sous la clé d'encapsulation que vous spécifiez. Il stocke la clé de données cryptée avec les données cryptées dans le message crypté qu'il renvoie.

Pour spécifier votre clé d'encapsulation, vous utilisez un porte-clés ou un fournisseur de clés principales.


                            Chiffrement des enveloppes avec AWS Encryption SDK
Chiffrer les mêmes données sous plusieurs clés d'encapsulation

Vous pouvez chiffrer la clé de données sous 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. Il AWS Encryption SDK stocke toutes les clés de données cryptées avec les données cryptées dans le message crypté.

Pour déchiffrer les données, vous devez fournir une clé d'encapsulation capable de déchiffrer l'une des clés de données chiffrées.


                            Chaque clé d'encapsulation chiffre la même clé de données, ce qui donne une clé de données chiffrée pour chaque clé d'encapsulation
Combinaison des points forts de plusieurs algorithmes

Pour chiffrer vos données, il AWS Encryption SDK utilise par défaut une suite d'algorithmes sophistiquée avec chiffrement symétrique AES-GCM, fonction de dérivation de clés (HKDF) et signature. 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. Cependant, les algorithmes de clé publique fournissent une séparation inhérente des rôles et facilitent la gestion des clés. Pour combiner les points forts de chacun, vous pouvez chiffrer vos données avec un chiffrement par clé symétrique, puis chiffrer la clé de données avec un chiffrement par clé publique.

Clé de données

Une clé de donnée est une clé de chiffrement utilisée par le kit AWS Encryption SDK 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 AWS Encryption SDK utilise une clé de données unique pour chiffrer chaque message.

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 kit AWS Encryption SDK se charge de ces tâches à votre place lorsque vous appelez les opérations de chiffrement et de déchiffrement.

Pour protéger vos clés de données, elles sont AWS Encryption SDK chiffrées à l'aide d'une ou de plusieurs clés de chiffrement appelées clés d'encapsulation ou clés principales. Après utilisation de vos clés de données en texte brut par le kit AWS Encryption SDK 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. Pour plus de détails, consultez Fonctionnement du kit AWS Encryption SDK.

Astuce

Dans le kit AWS Encryption SDK, 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.

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 d'identifier plus facilement les clés AWS Encryption SDK d'encapsulation valides lors du déchiffrement.

Clé d'emballage

Une clé d'encapsulation est une clé de chiffrement AWS Encryption SDK utilisée pour chiffrer la clé de données qui chiffre vos données. Chaque clé de données en texte brut 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 ou un fournisseur de clés principales.

Note

La clé encapsulée fait référence aux clés d'un trousseau de clés ou d'un fournisseur de clés principales. La clé principale est généralement associée à la MasterKey classe que vous instanciez lorsque vous utilisez un fournisseur de clé principale.

Il AWS Encryption SDK prend en charge plusieurs clés d'encapsulation couramment utilisées, telles que AWS Key Management Service (AWS KMS) symétriques AWS KMS keys(y compris les clés KMS multirégionales), les clés brutes AES-GCM (Advanced Encryption Standard/Galois Counter Mode) et les clés RSA brutes. Vous pouvez également étendre ou implémenter vos propres 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 :

Si vous ne disposez pas de système de gestion de clés, nous vous recommandons d'utiliser AWS KMS. Il s'AWS Encryption SDKintègre AWS KMS pour vous aider à protéger et à utiliser vos clés d'emballage. Cependant, AWS Encryption SDK il ne nécessite AWS aucun AWS service.

Fournisseurs de porte-clés et de clés principales

Pour spécifier les clés d'encapsulation que vous utilisez pour le chiffrement et le déchiffrement, vous utilisez un jeu de clés (C, C#/.NET et JavaScript) ou un fournisseur de clés principales (Java, Python, CLI). Vous pouvez utiliser les trousseaux de clés et les fournisseurs de clés principales AWS Encryption SDK fournis ou concevoir vos propres implémentations. AWS Encryption SDKIl fournit des porte-clés et des fournisseurs de clés principales compatibles entre eux sous réserve de contraintes linguistiques. Pour plus de détails, consultez Compatibilité du porte-clés.

Un porte-clés génère, chiffre et déchiffre des clés de données. 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. Vous pouvez également définir un porte-clés sans clés enveloppantes ou un porte-clés plus complexe avec des options de configuration supplémentaires. Pour obtenir de l'aide sur le choix et l'utilisation des porte-clés qu'ils AWS Encryption SDK définissent, reportez-vous Utilisation des porte-clés à la section. Les porte-clés sont pris en charge en C, C#/.NET et dans la version 3. JavaScript x duKit SDK de chiffrement AWS pour Java.

Un fournisseur de clés principales est une alternative au trousseau de clés. Le fournisseur de clés principales renvoie les clés d'encapsulage (ou clés principales) que vous spécifiez. 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. Les fournisseurs de clés principales sont pris en charge en Java, Python et dans la CLI de AWS chiffrement.

Vous devez spécifier un trousseau de clés (ou un fournisseur de clés principales) pour le chiffrement. Vous pouvez spécifier le même trousseau de clés (ou fournisseur de clés principales), ou un autre, pour le déchiffrement. Lors du chiffrement, il AWS Encryption SDK utilise toutes les clés d'encapsulation que vous spécifiez pour chiffrer la clé de données. Lors du déchiffrement, il AWS Encryption SDK utilise uniquement les clés d'encapsulation que vous spécifiez pour déchiffrer une clé de données cryptée. La spécification des clés d'encapsulage pour le déchiffrement est facultative, mais c'est une AWS Encryption SDK bonne pratique.

Pour plus de détails sur la spécification des clés d'encapsulage, consultezSélection des clés d'emballage.

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 AWS Encryption SDK comprend le contexte de chiffrement en texte brut dans l'en-tête du message chiffré qu'il renvoie.

Le contexte de chiffrement AWS Encryption SDK utilisé comprend le contexte de chiffrement que vous spécifiez et une paire de clés publiques ajoutée par le gestionnaire de matériel cryptographique (CMM). 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 AWS Encryption SDK 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 AWS Encryption SDK 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 AWS Encryption SDK, 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 implémentations de langage de programmation, la réponse de déchiffrement inclut le contexte de chiffrement et les données en texte clair. 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.

Note

Avec la version 4. x du AWS Encryption SDK pour .NET et la version 3. x du Kit SDK de chiffrement AWS pour Java, vous pouvez exiger un contexte de chiffrement dans toutes les demandes de chiffrement avec le contexte de chiffrement requis CMM.

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 clair dans l'en-tête du message chiffré renvoyéAWS Encryption 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 des exemples de soumission et de vérification d'un contexte de chiffrement dans votre code, consultez les exemples de votre langage de programmation préféré.

Message chiffré

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

Un message chiffré est une structure de données formatée portable qui inclut les données chiffrées ainsi que des copies chiffrées des clés de données, l'identifiant de l'algorithme et, éventuellement, un contexte de chiffrement et une signature numérique. Les opérations de chiffrement du kit AWS Encryption SDK 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é.

Suite d'algorithmes

Il AWS Encryption SDK utilise une suite d'algorithmes pour chiffrer et signer les données contenues dans le message crypté renvoyé par les opérations de chiffrement et de déchiffrement. Le kit AWS Encryption SDK 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 AWS Encryption SDK é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 suite d'algorithmes alternative dans les demandes de chiffrement de données ou lors de la création d'un gestionnaire de matériel cryptographique (CMM), mais à moins qu'une alternative ne soit requise dans votre situation, il est préférable d'utiliser la suite par défaut. La valeur par défaut actuelle est AES-GCM avec une fonction de dérivation de extract-and-expand clé basée sur HMAC (HKDF), un engagement de clé, une signature ECDSA (Elliptic Curve Digital Signature Algorithm) et une clé de chiffrement 256 bits.

Si votre application nécessite des performances élevées et que les utilisateurs qui chiffrent les données et ceux qui les déchiffrent jouissent de la même confiance, vous pouvez envisager de spécifier une suite d'algorithmes sans signature numérique. Cependant, nous recommandons vivement une suite d'algorithmes qui inclut un engagement clé et une fonction de dérivation clé. Les suites d'algorithmes dépourvues de ces fonctionnalités ne sont prises en charge que pour des raisons de rétrocompatibilité.

Gestionnaire de matériaux de chiffrement

Le gestionnaire de matériel cryptographique (CMM) assemble le matériel cryptographique utilisé 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 n'interagissez jamais directement avec le CMM. Les méthodes de chiffrement et de déchiffrement s'en occupent pour vous.

Vous pouvez utiliser le CMM par défaut ou le CMM de mise en cache qu'il AWS Encryption SDK fournit, ou écrire un CMM personnalisé. Et vous pouvez spécifier un CMM, mais ce n'est pas obligatoire. Lorsque vous spécifiez un trousseau de clés ou un fournisseur de clés principales, un CMM par défaut est AWS Encryption SDK créé pour vous. Le CMM par défaut obtient le matériel de chiffrement ou de déchiffrement auprès du trousseau de clés ou du fournisseur de clés principales que vous spécifiez. Pour cela, il peut être nécessaire d'appeler un service de chiffrement, comme AWS Key Management Service (AWS KMS).

Étant donné que le CMM fait office de liaison entre le AWS Encryption SDK et un trousseau de clés (ou fournisseur de clés principales), il constitue un point idéal pour la personnalisation et l'extension, notamment pour le soutien à l'application des politiques et à la mise en cache. Le kit AWS Encryption SDK fournit un CMM de mise en cache pour prendre en charge la mise en cache des clés de données.

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, voir Algorithmes cryptographiques dans le AWSGuide des services et outils cryptographiques.

AWS Encryption SDKUtilise le cryptage des enveloppes. 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 renvoie un message crypté qui inclut les données cryptées et 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, il AWS Encryption 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, il AWS Encryption 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 ou le fournisseur de clé principale 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 fournisseur de trousseau ou de clé principale qui utilise un chiffrement symétrique, tel qu'un trousseau de AWS KMS clés, ou un fournisseur qui utilise un chiffrement asymétrique, tel qu'un trousseau de clés RSA brut ou. JceMasterKey

Engagement clé

Le AWS Encryption SDK support key commitment (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 des clés garantit que seule la clé de données qui a chiffré votre message sera utilisée pour le déchiffrer. Le chiffrement et le déchiffrement avec un engagement clé constituent une bonne pratique. AWS Encryption SDK

La plupart des chiffrements symétriques modernes (y compris AES) chiffrent un texte en clair avec une clé secrète unique, telle que la clé de données unique AWS Encryption SDK utilisée pour chiffrer chaque message en texte clair. Le déchiffrement de ces données avec la même clé de données renvoie un texte en clair identique à l'original. Le déchiffrement avec une autre clé échouera généralement. Cependant, il est 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 quelques octets de texte chiffré en un texte clair différent, mais toujours intelligible.

Il chiffre AWS Encryption SDK toujours chaque message en texte brut sous une clé de données unique. Il peut chiffrer cette clé de données sous plusieurs clés d'encapsulation (ou clés principales), mais les clés d'encapsulation chiffrent toujours la même clé de données. Néanmoins, un message chiffré sophistiqué conçu 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 le message chiffré, il renvoie 0x0 (faux) tandis qu'un autre utilisateur qui déchiffre le même message crypté obtient 0x1 (vrai).

Pour éviter ce scénario, le AWS Encryption SDK support prend en charge l'engagement clé lors du chiffrement et du déchiffrement. Lorsque le AWS Encryption SDK chiffre un message avec engagement de clé, il lie cryptographiquement la clé de données unique qui a produit le texte chiffré à la chaîne d'engagement de clé, un identifiant de clé de données non secret. Ensuite, il stocke la chaîne d'engagement clé dans les métadonnées du message crypté. Lorsqu'il déchiffre un message avec une clé d'engagement, il AWS Encryption SDK vérifie que la clé de données est la seule et unique clé pour ce message crypté. Si la vérification de la clé de données échoue, l'opération de déchiffrement échoue.

Support pour les engagements clés est introduit dans la version 1.7. x, qui peut déchiffrer les messages avec un engagement clé, mais ne le chiffrera pas avec un engagement clé. Vous pouvez utiliser cette version pour déployer pleinement la capacité de déchiffrer le texte chiffré avec un engagement clé. La version 2.0. x inclut une prise en charge complète des principaux engagements. Par défaut, il chiffre et déchiffre uniquement avec un engagement clé. Il s'agit d'une configuration idéale pour les applications qui n'ont pas besoin de déchiffrer le texte chiffré par les versions antérieures du. AWS Encryption SDK

Bien que le chiffrement et le déchiffrement avec engagement clé soient une bonne pratique, nous vous laissons décider du moment de leur utilisation et du rythme auquel vous les adoptez. À partir de la version 1.7. x, AWS Encryption SDK prend en charge une politique d'engagement qui définit la suite d'algorithmes par défaut et limite les suites d'algorithmes pouvant être utilisées. Cette politique détermine si vos données sont cryptées et déchiffrées avec un engagement clé.

L'engagement clé se traduit par un message crypté légèrement plus volumineux (+ 30 octets) et son traitement prend plus de temps. Si votre application est très sensible à la taille ou aux performances, vous pouvez choisir de ne pas participer à l'engagement clé. Mais ne le faites que si vous le devez.

Pour plus d'informations sur la migration vers les versions 1.7. x et 2.0. x, y compris leurs principales caractéristiques d'engagement, voirMigrer votreAWS Encryption SDK. Pour obtenir des informations techniques sur les principaux engagements, voir Référence relative aux algorithmes du kit AWS Encryption SDK etRéférence Format des messages du kit AWS Encryption SDK.

Politique d'engagement

Une politique d'engagement est un paramètre de configuration qui détermine si votre application chiffre et déchiffre avec un engagement clé. Le chiffrement et le déchiffrement avec un engagement clé constituent une bonne pratique. AWS Encryption SDK

La politique d'engagement repose sur trois valeurs.

Note

Il se peut que vous deviez faire défiler le tableau horizontalement ou verticalement pour voir le tableau dans son intégralité.

Valeurs de la politique d'engagement
Valeur Chiffre avec un engagement clé Chiffre sans engagement de clé Déchiffre avec un engagement clé Déchiffre sans engagement clé
ForbidEncryptAllowDecrypt
RequireEncryptAllowDecrypt
RequireEncryptRequireDecrypt

Le paramétrage de la politique d'engagement est introduit dans AWS Encryption SDK la version 1.7. x. Il est valide dans tous les langages de programmation pris en charge.

  • ForbidEncryptAllowDecryptdéchiffre avec ou sans engagement clé, mais il ne chiffrera pas avec engagement clé. Il s'agit de la seule valeur valide pour la politique d'engagement dans la version 1.7. x et il est utilisé pour toutes les opérations de chiffrement et de déchiffrement. Il est conçu pour préparer tous les hôtes exécutant votre application à déchiffrer avec clé d'engagement avant qu'ils ne rencontrent un texte chiffré avec clé d'engagement.

  • RequireEncryptAllowDecryptchiffre toujours avec clé d'engagement. Il peut être déchiffré avec ou sans engagement clé. Cette valeur, introduite dans la version 2.0. x, vous permet de commencer à chiffrer avec un engagement clé, tout en déchiffrant les anciens textes chiffrés sans engagement clé.

  • RequireEncryptRequireDecryptchiffre et déchiffre uniquement avec un engagement clé. Cette valeur est la valeur par défaut pour la version 2.0. x. Utilisez cette valeur lorsque vous êtes certain que tous vos textes chiffrés sont chiffrés avec une clé d'engagement.

Le paramètre de politique d'engagement détermine les suites d'algorithmes que vous pouvez utiliser. À partir de la version 1.7. x, AWS Encryption SDK prend en charge les suites d'algorithmes pour l'engagement des clés, avec ou sans signature. Si vous spécifiez une suite d'algorithmes qui entre en conflit avec votre politique d'engagement, une erreur est AWS Encryption SDK renvoyée.

Pour obtenir de l'aide pour définir votre politique d'engagement, consultezDéfinition de votre politique d'engagement.

Signatures numériques

Pour garantir l'intégrité d'un message numérique lorsqu'il passe d'un système à l'autre, vous pouvez appliquer une signature numérique au message. Les signatures numériques sont toujours asymétriques. Vous utilisez votre clé privée pour créer la signature et l'ajouter au message d'origine. Votre destinataire utilise une clé publique pour vérifier que le message n'a pas été modifié depuis que vous l'avez signé.

AWS Encryption SDKChiffre vos données à l'aide d'un algorithme de cryptage 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 une AWS KMS clé comme clé d'encapsulation, cela signifie qu'il est possible pour un utilisateur disposant des autorisations KMS Decrypt de créer des textes chiffrés sans appeler KMS Encrypt.

Pour éviter ce problème, il est possible d'AWS Encryption SDKajouter une signature ECDSA (Elliptic Curve Digital Signature Algorithm) à la fin des messages chiffrés. Lorsqu'une suite d'algorithmes de signature est utilisée, une clé privée temporaire et une paire de clés publiques sont générées pour chaque message chiffré. AWS Encryption SDK Il AWS Encryption SDK stocke la clé publique dans le contexte de chiffrement de la clé de données et supprime la clé privée, et personne ne peut créer une autre signature vérifiant avec 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 l'en-tête du message, un utilisateur qui ne peut que déchiffrer des messages ne peut pas modifier la clé publique.

La vérification des signatures entraîne un coût de performance significatif lors du déchiffrement. Si les utilisateurs qui chiffrent les données et ceux qui les déchiffrent jouissent de la même confiance, envisagez d'utiliser une suite d'algorithmes qui n'inclut pas la signature.