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 commentAWS Encryption SDKfonctionne 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 cela, vous avez besoin d'une autre clé de chiffrement, appeléeclé de chiffrement de cléouclé d'encapsulage. La pratique qui consiste à utiliser une clé d'encapsulage pour chiffrer des clés de données s'appellechiffrement d'enveloppe.

Protection des clés de données

LeAWS Encryption SDKchiffre chaque message à l'aide d'une clé de données unique. Ensuite, il chiffre la clé de données sous la clé d'encapsulage que vous spécifiez. Il stocke la clé de données chiffrée ainsi que les données chiffrées dans le message chiffré renvoyé.

Pour spécifier votre clé d'encapsulation, vous utilisez unPorte-clésouFournisseur de clés principales.


                            Chiffrement d'enveloppe avec le kitAWS Encryption SDK
Chiffrement des mêmes données sous plusieurs clés d'encapsulage

Vous pouvez chiffrer la clé de données sous plusieurs clés d'encapsulation. Il est possible que vous souhaitiez fournir différentes clés d'encapsulation pour différents utilisateurs, ou encore 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. LeAWS Encryption SDKstocke toutes les clés de données chiffrées ainsi que les données chiffrées dans le message chiffré.

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


                            Chaque clé d'encapsulage chiffre la même clé de données, ce qui entraîne une clé de données chiffrée pour chaque clé d'encapsulage.
Combinaison des points forts de plusieurs algorithmes

Pour chiffrer vos données, par défaut, leAWS Encryption SDKutilise unsuite d'algorithmesavec chiffrement symétrique AES-GCM, une fonction de dérivation de clés (HKDF) et la signature. Pour chiffrer la clé de données, vous pouvez spécifier unalgorithme de chiffrement symétrique ou asymétriqueadapté à votre clé d'enrobage.

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 forces de chaque, vous pouvez chiffrer vos données avec le chiffrement de clé symétrique, puis chiffrer la clé de données avec le chiffrement de 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, leAWS Encryption SDKles crypte sous un ou plusieursclés de chiffrement de cléconnue sous le nomclés d'encapsulageou 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 d'informations, 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, y compris l'identifiant de la clé d'encapsulation qui l'a chiffrée. Ces métadonnées facilitent la tâche duAWS Encryption SDKpour identifier les clés d'encapsulation valides lors du déchiffrement.

Clé d'encapsulage

UNclé d'encapsulageest une clé de chiffrement de clé que leAWS Encryption SDKutilise pour chiffrer leclé de donnéesqui chiffre vos données. Chaque clé de données en texte brut peut être chiffrée sous une ou plusieurs clés d'encapsulage. Vous déterminez quelles clés d'encapsulage sont utilisées pour protéger vos données lorsque vous configurez unPorte-clésouFournisseur de clés principales.

Note

Clé d'encapsulagefait référence aux clés d'un porte-clés ou d'un fournisseur de clés principales. Clé principaleest généralement associé à laMasterKeyclasse que vous instanciez lorsque vous utilisez un fournisseur de clés principales.

LeAWS Encryption SDKprend en charge plusieurs clés d'encapsulation couramment utilisées, telles queAWS Key Management Service(AWS KMS) symétriqueAWS KMS keys(y comprisClés KMS multi-régions), 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 d'encapsulage.

Lorsque vous utilisez le chiffrement d'enveloppe, vous devez protéger vos clés d'encapsulage contre tout accès non autorisé. Vous pouvez le faire de différentes manières :

Si vous ne disposez pas de système de gestion de clés, nous vous recommandons d'utiliser AWS KMS. LeAWS Encryption SDKIntégration de avecAWS KMSpour vous aider à protéger et utiliser vos clés d'encapsulage. Cependant, leAWS Encryption SDKne requiert pasAWSou n'importe quelAWSservice.

Porte-clés et fournisseurs 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 porte-clés (C, C#/.NET et JavaScript) ou un fournisseur de clés maître (Java, Python, CLI). Vous pouvez utiliser les porte-clés et les principaux fournisseurs de clés que leAWS Encryption SDKfournit ou conçoit vos propres implémentations. LeAWS Encryption SDKfournit des porte-clés et des fournisseurs de clés principales compatibles les uns avec les autres soumis à des contraintes linguistiques. Pour plus d'informations, 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 porte-clés, vous pouvez spécifier leclés d'encapsulagequi chiffrent vos clés de données. La plupart des porte-clés spécifient au moins une clé d'encapsulage ou un service fournissant et protégeant les clés d'encapsulage. Vous pouvez également définir un porte-clés sans clé d'encapsulation ou un porte-clés plus complexe avec des options de configuration supplémentaires. Pour obtenir de l'aide pour choisir et utiliser les porte-clés que leAWS Encryption SDKdéfinit, voirUtilisation des porte-clés. Les porte-clés sont pris en charge en C, C#/.NET et JavaScript.

UNFournisseur de clés principalesest une alternative à un porte-clés. Le fournisseur de clés principales renvoie les clés d'encapsulation (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 etAWSCLI de chiffrement.

Vous devez spécifier un porte-clés (ou un fournisseur de clés principales) pour le chiffrement. Vous pouvez spécifier le même porte-clés (ou fournisseur de clé principale), ou un autre, pour le déchiffrement. Lors du chiffrement, leAWS Encryption SDKutilise toutes les clés d'encapsulation spécifiées pour chiffrer la clé de données. Lors du déchiffrement, leAWS Encryption SDKutilise uniquement les clés d'encapsulage que vous spécifiez pour déchiffrer une clé de données chiffrée. La spécification de clés d'encapsulation pour le déchiffrement est facultative, mais il s'agit d'uneAWS Encryption SDK bonne pratique.

Pour plus d'informations sur la spécification des clés d'encapsulage, consultezSélectionner les clés d'encapsulation.

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 que leAWS Encryption SDKse compose du contexte de chiffrement que vous spécifiez et d'une key pair publique que legestionnaire de 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 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 les autres implémentations de langages de programmation, 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 dumessage chiffréque leAWS Encryption SDKrenvoie. 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 soumission et de vérification d'un contexte de chiffrement dans votre code, consultez les exemples de vos préférences.langage de programmation.

Message chiffré

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

Unmessage chiffréest un ordinateur portablestructure de données formatéequi inclut les données chiffrées ainsi que les copies chiffrées des clés de données, l'ID de l'algorithme et, éventuellement, uncontexte de chiffrementet unsignature 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

LeAWS Encryption SDKutilise une suite d'algorithmes pour chiffrer et signer les données dans lemessage chiffréque les opérations de chiffrement et de déchiffrement sont renvoyées. 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 autre suite d'algorithmes dans les demandes de chiffrement de données ou lorsque vous créez unGestionnaire de matériaux de chiffrement (CMM), mais sauf si votre situation exige une autre, il est préférable d'utiliser la valeur par défaut. La valeur par défaut actuelle est AES-GCM avec un système HMAC extract-and-expand fonction de dérivation de clé(HKDF),Engagement clé, unAlgorithme 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 des données et ceux qui déchiffrent des données sont également fiables, vous pouvez envisager de spécifier une suite d'algorithmes sans signature numérique. Cependant, nous recommandons vivement une suite d'algorithmes comprenant un engagement clé et une fonction de dérivation de clés. Les suites d'algorithmes sans ces fonctionnalités sont uniquement prises en charge dans le cadre de la rétrocompatibilité.

Gestionnaire de matériaux de chiffrement

Le gestionnaire de 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 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 kit CMM par défaut ou lemise en cache de CMMque leAWS Encryption SDKfournit ou écrit un CMM personnalisé. Vous pouvez également spécifier un CMM, mais ce n'est pas obligatoire. Lorsque vous spécifiez un porte-clés ou un fournisseur de clés principales, leAWS Encryption SDKcrée une MMT par défaut pour vous. Le module de gestion par défaut obtient les matériaux de chiffrement ou de déchiffrement à partir du porte-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).

Parce que le CMM agit comme une liaison entre lesAWS Encryption SDKet un porte-clés (ou 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 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

chiffrement symétriqueutilise la même clé pour chiffrer et déchiffrer les données.

Chiffrement asymétriqueutilise une key pair de données mathématiquement apparentées. Une clé de la paire chiffre les données ; seule l'autre clé de la paire peut déchiffrer les données. Pour plus d'informations, consultez .Algorithmes cryptographiquesdans leAWSGuide des services et outils cryptographiques.

LeAWS Encryption SDKles usageschiffrement d'enveloppe. Il chiffre vos données avec une clé de données symétrique. Il crypte la clé de données symétrique avec une ou plusieurs clés d'encapsulation symétriques ou asymétriques. Elle renvoie un objetmessage chiffréqui inclut les données chiffrées et au moins une copie chiffrée de la clé de données.

Chiffrement de vos données (chiffrement symétrique)

Pour chiffrer vos données, le kitAWS Encryption SDKutilise un objet symétriqueclé de donnéeset unsuite d'algorithmesqui inclut un algorithme de chiffrement symétrique. Pour déchiffrer les données, leAWS Encryption SDKutilise 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)

LePorte-clésouFournisseur de clés principalesque vous fournissez à une opération de chiffrement et de déchiffrement détermine comment la clé de données symétrique est chiffrée et déchiffrée. Vous pouvez choisir un porte-clés ou un fournisseur de clés principales qui utilise un chiffrement symétrique, tel qu'unAWS KMSporte-clés, ou qui utilise un chiffrement asymétrique, tel qu'un porte-clés RSA brut ouJceMasterKey.

Engagement clé

LeAWS Encryption SDKappuisEngagement clé(parfois connu sous le nom derobustesse), propriété de sécurité qui garantit que chaque texte chiffré ne peut être déchiffré qu'en un seul texte brut. Pour ce faire, l'engagement clé 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é sont desAWS Encryption SDKbonne pratique.

La plupart des chiffrements symétriques modernes (y compris AES) chiffrent un texte brut sous une seule clé secrète, telle que leClé de données uniqueque leAWS Encryption SDKpermet de chiffrer chaque message en texte brut. Le déchiffrement de ces données avec la même clé de données renvoie un texte clair identique à l'original. Le déchiffrement avec une autre clé échoue 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é dans un texte brut différent, mais toujours intelligible.

LeAWS Encryption SDKchiffre toujours chaque message en texte brut sous une seule 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 produit sophistiqué, fabriqué manuellementmessage chiffrépeuvent contenir des clés de données différentes, 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 décryptant le même message chiffré obtient 0x1 (vrai).

Pour éviter ce scénario, leAWS Encryption SDKprend en charge l'engagement clé lors du chiffrement et du déchiffrement. Lorsque leAWS Encryption SDKcrypte un message avec un engagement clé, il lie cryptographiquement la clé de données unique qui a produit le texte chiffré à lachaîne d'engagement clé, un identifiant de clé de données non secret. Ensuite, il stocke la chaîne d'engagement de clé dans les métadonnées du message chiffré. Lorsqu'il décrypte un message avec un engagement clé, leAWS Encryption SDKvérifie que la clé de données est la seule et unique clé de ce message chiffré. Si la vérification des clés de données échoue, l'opération de déchiffrement échoue.

La Support de l'engagement clé est introduite dans la version 1.7.h/24, j/7, qui peut déchiffrer les messages avec un engagement clé, mais ne chiffrera pas avec un engagement clé. Vous pouvez utiliser cette version pour déployer complètement la possibilité de déchiffrer le texte chiffré avec un engagement clé. Version 2.0.h/24, j/7inclut une prise en charge complète de l'engagement clé. Par défaut, il crypte 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 des versions antérieures de laAWS Encryption SDK.

Bien que le chiffrement et le déchiffrement avec un engagement clé soient une bonne pratique, nous vous laissons décider quand il est utilisé et vous permettons d'ajuster le rythme auquel vous l'adoptez. Depuis la version 1.7.h/24, j/7,AWS Encryption SDKprend en charge unpolitique d'engagementqui définit lesuite d'algorithmeset limite les suites d'algorithmes pouvant être utilisées. Cette stratégie détermine si vos données sont chiffrées et déchiffrées avec un engagement clé.

Un engagement clé aboutit à unmessage chiffré légèrement plus grand (+ 30 octets)et prend plus de temps pour le traitement. Si votre application est très sensible à la taille ou aux performances, vous pouvez choisir de refuser l'engagement clé. Mais ne le faites que si vous le devez.

Pour plus d'informations sur la migration vers les versions 1.7.h/24, j/7et 2.0.h/24, j/7, y compris leurs principales caractéristiques d'engagement, voirMigration vers les versions 2.0.h/24, j/7et version ultérieure. Pour obtenir des informations techniques sur l'engagement clé, voirRéférence relative aux algorithmes du kit AWS Encryption SDKetRéférence Format des messages du kit AWS Encryption SDK.

Politique d'engagement

UNpolitique d'engagementest un paramètre de configuration qui détermine si votre application chiffre et déchiffre avecEngagement clé. Le chiffrement et le déchiffrement avec un engagement clé sont desAWS Encryption SDKbonne pratique.

La politique d'engagement comporte trois valeurs.

Note

Vous devrez peut-être faire défiler horizontalement ou verticalement pour voir la table entière.

Les valeurs de stratégie d'engagement
Valeur Crypte avec un engagement clé Crypte sans engagement clé Décrypte avec un engagement clé Décrypte sans engagement clé
Forbiden Crypter Permettre le déchiffrement
Nécessite le chiffrement, autorise le déchiffrement
Nécessite de chiffrer le chiffrement requis

Le cadre de la politique d'engagement est introduit dansAWS Encryption SDKversion 1.7.h/24, j/7. Il est valable dans tous les cas pris en chargeLangages de programmation.

  • ForbidEncryptAllowDecryptdécrypte avec ou sans engagement clé, mais il ne sera pas chiffré avec un engagement clé. Il s'agit de la seule valeur valide pour la stratégie d'engagement dans la version 1.7.h/24, j/7et 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 engagement clé avant qu'ils ne rencontrent un texte chiffré avec un engagement clé.

  • RequireEncryptAllowDecryptcrypte toujours avec un engagement clé. Il peut déchiffrer avec ou sans engagement clé. Cette valeur, introduite dans la version 2.0.h/24, j/7, vous permet de commencer le chiffrement avec un engagement clé, tout en déchiffrant les textes de chiffrement hérités sans engagement clé.

  • RequireEncryptRequireDecryptcrypte et décrypte uniquement avec un engagement clé. Cette valeur est la valeur par défaut pour la version 2.0.h/24, j/7. Utilisez cette valeur lorsque vous êtes certain que tous vos textes chiffrés sont chiffrés avec un engagement clé.

Le paramètre de stratégie d'engagement détermine les suites d'algorithmes que vous pouvez utiliser. Depuis la version 1.7.h/24, j/7, leAWS Encryption SDKappuissuites d'algorithmespour un engagement clé, avec ou sans signature. Si vous spécifiez une suite d'algorithmes qui est en conflit avec votre stratégie d'engagement, leAWS Encryption SDKrenvoie une erreur.

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

Signatures numériques

Pour garantir l'intégrité d'un message numérique au fur et à mesure qu'il passe entre les systèmes, 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é.

LeAWS Encryption SDKchiffre 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 chiffré sans utiliser de signature numérique. Mais comme AES-GCM utilise des clés symétriques, quiconque peut déchiffrer la clé de données utilisée pour déchiffrer le texte chiffré peut également créer manuellement un nouveau texte chiffré, ce qui pose un problème de sécurité potentiel. Par exemple, si vous utilisez unAWS KMScomme clé d'encapsulation, cela signifie qu'il est possible pour un utilisateur disposant des autorisations KMS Decrypt de créer des textes chiffrés chiffrés sans appeler KMS Encrypt.

Pour éviter ce problème, leAWS Encryption SDKprend en charge l'ajout d'une signature ECDSA (Elliptic Curve Digital Signature Algorithm) à la fin des messages chiffrés. Lorsqu'une suite d'algorithmes de signature est utilisée, leAWS Encryption SDKgénère une clé privée temporaire et une key pair publiques pour chaque message chiffré. LeAWS Encryption SDKstocke la clé publique dans le contexte de chiffrement de la clé de données et la supprime, et personne ne peut créer une autre signature qui vérifie avec la clé publique. Étant donné que l'algorithme lie la clé publique à la clé de données chiffrée en tant que données authentifiées supplémentaires dans l'en-tête du message, un utilisateur qui ne peut déchiffrer que des messages ne peut pas modifier la clé publique.

La vérification des signatures ajoute un coût de performance important au déchiffrement. Si les utilisateurs chiffrant des données et les utilisateurs qui déchiffrent des données sont également fiables, envisagez d'utiliser une suite d'algorithmes qui n'inclut pas la signature.