Bonnes pratiques pour 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.

Bonnes pratiques pour AWS Encryption SDK

LeAWS Encryption SDKest conçu pour vous faciliter la protection de vos données à l'aide des normes du secteur et des bonnes pratiques. Alors que de nombreuses bonnes pratiques sont sélectionnées pour vous dans les valeurs par défaut, certaines pratiques sont facultatives mais recommandées chaque fois que cela est possible.

Utilisation de la version la plus récente

Dès le début de l'utilisation duAWS Encryption SDK, utilisez la version la plus récente proposée dans votreLangages de programmation. Si vous avez utilisé leAWS Encryption SDK, effectuez la mise à niveau vers chaque version la plus récente dès que possible. Cela garantit que vous utilisez la configuration recommandée et que vous profitez des nouvelles propriétés de sécurité pour protéger vos données. Pour plus de détails sur les versions prises en charge, y compris des conseils pour la migration et le déploiement,Support et maintenanceetVersions du AWS Encryption SDK.

Si une nouvelle version rend obsolète des éléments de votre code, remplacez-les dès que possible. Les avertissements d'obsolescence et les commentaires de code recommandent généralement une bonne alternative.

Pour faciliter les mises à niveau importantes et réduire les risques d'erreur, nous proposons parfois une version temporaire ou transitoire. Utilisez ces versions et la documentation qui l'accompagne pour vous assurer de pouvoir mettre à niveau votre application sans perturber votre flux de production.

Utilisation des valeurs par défaut

LeAWS Encryption SDKintègre les meilleures pratiques dans ses valeurs par défaut. Dans la mesure du possible, utilisez-les. Dans les cas où la valeur par défaut n'est pas pratique, nous proposons des alternatives, telles que des suites d'algorithmes sans signature. Nous offrons également des possibilités de personnalisation aux utilisateurs avancés, tels que des porte-clés personnalisés, des fournisseurs de clés principales et des gestionnaires de matériel cryptographique (GMAO). Utilisez ces alternatives avancées avec prudence et faites vérifier vos choix par un ingénieur en sécurité dans la mesure du possible.

Utilisation d'un contexte de chiffrement

Pour améliorer la sécurité de vos opérations de chiffrement, incluez uncontexte de chiffrementavec une valeur significative 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 fournit des données authentifiées supplémentaires (données AAD) pour le chiffrement authentifié dans leAWS Encryption SDK. Bien qu'il ne s'agit pas d'un secret, le contexte de chiffrement peut vous aider àprotéger l'intégrité et l'authenticitéde vos données cryptées.

DansAWS Encryption SDK, vous ne spécifiez un contexte de chiffrement que lors du chiffrement. Lors du déchiffrement, leAWS Encryption SDKutilise le contexte de chiffrement dans l'en-tête du message chiffré que leAWS Encryption SDKrenvoie. Avant que votre application renvoie des données en texte brut, vérifiez que le contexte de chiffrement que vous avez utilisé pour chiffrer le message est inclus dans le contexte de chiffrement qui a été utilisé pour déchiffrer le message. Pour plus d'informations, consultez les exemples de votre langage de programmation.

Lorsque vous utilisez l'interface de ligne de commande, leAWS Encryption SDKvérifie le contexte de chiffrement pour vous.

Protégez vos clés d'emballage

LeAWS Encryption SDKgénère une clé de données unique pour chiffrer chaque message en texte brut. Ensuite, il crypte la clé de données avec les clés d'encapsulation que vous fournissez. Si vos clés d'encapsulation sont perdues ou supprimées, vos données chiffrées sont irrécupérables. Si vos clés ne sont pas sécurisées, vos données peuvent être vulnérables.

Utilisez des clés d'encapsulation protégées par une infrastructure de clés sécurisée, telle queAWS Key Management Service(AWS KMS). Lorsque vous utilisez des clés AES ou RSA brutes, utilisez une source aléatoire et un stockage durable qui répond à vos exigences de sécurité. Génération et stockage de clés d'encapsulation dans un module de sécurité matérielle (HSM) ou un service qui fournit des HSM, commeAWS CloudHSM, est une bonne pratique.

Utilisez les mécanismes d'autorisation de votre infrastructure de clés pour limiter l'accès à vos clés d'encapsulation aux seuls utilisateurs qui en ont besoin. Mettre en œuvre les principes des meilleures pratiques, tels que le moindre privilège. Lorsque vous utilisezAWS KMS keys, utilisez des stratégies de clés et des stratégies IAM qui mettent en œuvrePrincipes de bonnes pratiques.

Spécifiez vos clés d'emballage

C'est toujours une bonne pratique despécifiez vos clés d'emballageexplicitement lors du déchiffrement, ainsi que du chiffrement. Lorsque vous le faites, leAWS Encryption SDKutilise uniquement les clés que vous spécifiez. Cette pratique garantit que vous n'utilisez que les clés de chiffrement que vous souhaitez utiliser. PourAWS KMSenrubannage des clés, il améliore également les performances en vous empêchant d'utiliser par inadvertance des clés dans un autreCompte AWSou Region, ou en tentant de déchiffrer avec des clés que vous n'êtes pas autorisé à utiliser.

Lors du chiffrement, les trousseaux de clés et les fournisseurs de clés principales queAWS Encryption SDKles fournitures nécessitent que vous spécifiiez des clés d'encapsulation. Ils utilisent toutes et uniquement les clés d'encapsulation que vous spécifiez. Vous devez également spécifier des clés d'encapsulation lors du chiffrement et du déchiffrement avec des trousseaux de clés AES bruts, des porte-clés RSA bruts et JCEMasterKeys.

Toutefois, lors du déchiffrement avecAWS KMStrousseaux de clés et fournisseurs de clés principales, vous n'êtes pas obligé de spécifier des clés d'encapsulation. LeAWS Encryption SDKpeut obtenir l'identifiant de clé à partir des métadonnées de la clé de données chiffrée. Toutefois, la spécification des clés d'encapsulation est une bonne pratique que nous recommandons.

Pour prendre en charge cette meilleure pratique lorsque vous travaillez avecAWS KMSEnveloppement de clés, nous recommandons les points suivants :

  • UtiliserAWS KMSporte-clés qui spécifient les clés d'habillage. Lors du chiffrement et du déchiffrement, ces trousseaux de clés utilisent uniquement les clés d'encapsulation que vous avez spécifiées.

  • Lorsque vous utilisezAWS KMSles clés principales et les fournisseurs de clés principales, utilisent les constructeurs en mode strict introduits dansVersion 1.7.h/24, j/7duAWS Encryption SDK. Ils créent des fournisseurs qui chiffrent et déchiffrent uniquement avec les clés d'encapsulation que vous spécifiez. Les constructeurs des fournisseurs de clés principales qui déchiffrent toujours avec n'importe quelle clé d'encapsulation sont déconseillés dans la version 1.7.h/24, j/7et supprimé dans la version 2.0.h/24, j/7.

Lors de la spécificationAWS KMSl'encapsulation des clés pour le déchiffrement n'est pas pratique, vous pouvez utiliser des fournisseurs de découverte. LeAWS Encryption SDKen C et JavaScript soutenirAWS KMSporte-clés découverte. Les fournisseurs de clés principales avec un mode de découverte sont disponibles pour Java et Python dans les versions 1.7.h/24, j/7et version ultérieure. Ces fournisseurs de découverte, qui ne sont utilisés que pour le déchiffrement avecAWS KMSclés d'encapsulation, dirigez explicitementAWS Encryption SDKpour utiliser n'importe quelle clé d'encapsulation qui crypte une clé de données.

Si vous devez utiliser un fournisseur de découverte, utilisez sonFiltre de découvertefonctionnalités pour limiter les clés d'encapsulation qu'ils utilisent. Par exemple, les recettesAWS KMSporte-clés découverte régionalutilise uniquement les clés d'habillage d'unRégion AWS. Vous pouvez également configurerAWS KMSporte-clés etAWS KMS Fournisseurs de clés principalespour utiliser uniquement leclés d'emballageen particulierComptes AWS. Également, comme toujours, utilisez des stratégies de clés et des stratégies IAM pour contrôler l'accès à votreAWS KMSclés d'emballage.

Utiliser des signatures numériques

Il est recommandé d'utiliser une suite d'algorithmes avec signature. Signatures numériquesvérifier que l'expéditeur du message était autorisé à envoyer le message et protéger l'intégrité du message. Toutes les versions duAWS Encryption SDKutiliser des suites d'algorithmes avec signature par défaut.

Si vos exigences de sécurité n'incluent pas les signatures numériques, vous pouvez sélectionner une suite d'algorithmes sans signatures numériques. Nous recommandons toutefois d'utiliser des signatures numériques, en particulier lorsqu'un groupe d'utilisateurs chiffre des données et qu'un autre groupe d'utilisateurs déchiffre ces données.

Utilisation des engagements de clé

Il est recommandé d'utiliser la fonctionnalité de sécurité d'engagement clé. En vérifiant l'identité duclé de donnéesqui a crypté vos données,Engagement de clévous empêche de déchiffrer tout texte chiffré pouvant donner lieu à plusieurs messages en texte brut.

LeAWS Encryption SDKfournit une prise en charge complète du chiffrement et du déchiffrement avec un engagement clé à partir deversion 2.0.h/24, j/7. Par défaut, tous vos messages sont chiffrés et déchiffrés avec engagement clé. Version 1.7.h/24, j/7duAWS Encryption SDKpeut décrypter des textes chiffrés avec engagement clé. Il est conçu pour aider les utilisateurs des versions antérieures à déployer la version 2.0.h/24, j/7Réussite.

La Support des engagements clés comprendnouvelles suites d'algorithmeset unnouveau format des messagesqui produit un texte chiffré de seulement 30 octets plus grand qu'un texte chiffré sans engagement de clé. La conception minimise son impact sur les performances afin que la plupart des utilisateurs puissent profiter des avantages d'un engagement clé. Si votre application est très sensible à la taille et aux performances, vous pouvez décider d'utiliser lePolitique d'engagementparamètre pour désactiver l'engagement clé ou autoriserAWS Encryption SDKpour décrypter des messages sans engagement, mais ne le faites que si vous le devez.

Limiter le nombre de clés de données chiffrées

C'est une bonne pratique deLimiter le nombre de clés de données chiffréesdans les messages que vous déchiffrez, en particulier les messages provenant de sources non fiables. Le déchiffrement d'un message contenant de nombreuses clés de données chiffrées que vous ne pouvez pas déchiffrer peut entraîner des retards prolongés, augmenter les dépenses, limiter votre application et d'autres personnes partageant votre compte, et potentiellement épuiser votre infrastructure de clés. Sans limite, un message chiffré peut contenir jusqu'à 65 535 clés de données chiffrées (2^16 - 1). Pour plus d'informations, consultez Limiter les clés de données chiffrées.

Pour plus d'informations sur leAWS Encryption SDKfonctions de sécurité qui sous-tendent ces bonnes pratiques, consultez.Client Encryption amélioré : EXPLICITE KeyIds Engagementdans leAWSBlog de sécurité.