Kit SDK de chiffrement AWS pour Python - 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.

Kit SDK de chiffrement AWS pour Python

Cette rubrique explique comment installer et utiliser le kit Kit SDK de chiffrement AWS pour Python. Pour plus de détails sur la programmation avec le Kit SDK de chiffrement AWS pour Python, consultez le aws-encryption-sdk-pythonréférentiel sur GitHub. Pour API la documentation, voir Read the Docs.

Prérequis

Avant d'installer le Kit SDK de chiffrement AWS pour Python, assurez-vous de remplir les conditions préalables suivantes.

Version prise en charge de Python

Python 3.8 ou version ultérieure est requis par les Kit SDK de chiffrement AWS pour Python versions 3.2.0 et ultérieures.

Note

La bibliothèque des fournisseurs de matériel AWS cryptographique (MPL) est une dépendance facultative de celle Kit SDK de chiffrement AWS pour Python introduite dans la version 4. x. Si vous avez l'intention d'installer leMPL, vous devez utiliser Python 3.11 ou version ultérieure.

Les versions antérieures du logiciel AWS Encryption SDK prennent en charge Python 2.7, Python 3.4 et versions ultérieures, mais nous vous recommandons d'utiliser la dernière version du AWS Encryption SDK.

Pour télécharger Python, consultez Téléchargements Python.

Outil d'installation pip pour Python

pipest inclus dans Python 3.6 et versions ultérieures, mais vous souhaiterez peut-être le mettre à niveau. Pour plus d'informations sur la mise à niveau ou l'installationpip, consultez la section Installation dans la pip documentation.

Installation

Installez la dernière version du Kit SDK de chiffrement AWS pour Python.

Note

Toutes les versions Kit SDK de chiffrement AWS pour Python antérieures à 3.0.0 sont en end-of-supportphase.

Vous pouvez effectuer la mise à jour en toute sécurité à partir de la version 2.0. x et versions ultérieures vers la dernière version du AWS Encryption SDK sans aucune modification du code ou des données. Cependant, de nouvelles fonctionnalités de sécurité ont été introduites dans la version 2.0. x ne sont pas rétrocompatibles. Pour effectuer une mise à jour à partir de versions antérieures à 1.7. x vers la version 2.0. x et versions ultérieures, vous devez d'abord effectuer la mise à jour vers la dernière version 1. version x du AWS Encryption SDK. Pour plus de détails, consultez Migrer votreAWS Encryption SDK.

pipÀ utiliser pour installer le Kit SDK de chiffrement AWS pour Python, comme indiqué dans les exemples suivants.

Pour installer la dernière version
pip install "aws-encryption-sdk[MPL]"

Le [MPL] suffixe installe la bibliothèque des fournisseurs de matériel AWS cryptographique (). MPL MPLIl contient des structures permettant de chiffrer et de déchiffrer vos données. MPLIl s'agit d'une dépendance facultative pour la version Kit SDK de chiffrement AWS pour Python introduite dans la version 4. x. Nous vous recommandons vivement d'installer leMPL. Toutefois, si vous n'avez pas l'intention d'utiliser leMPL, vous pouvez omettre le [MPL] suffixe.

Pour plus d'informations sur l'utilisation de pip pour installer et mettre à niveau les packages, consultez Installation des packages.

Kit SDK de chiffrement AWS pour Python Nécessite la bibliothèque de cryptographie (pyca/cryptography) sur toutes les plateformes. Toutes les versions de installent et compilent pip automatiquement la cryptography bibliothèque sous Windows. pip8.1 et versions ultérieures s'installent et se compilent automatiquement sous cryptography Linux. Si vous utilisez une version antérieure de pip et que votre environnement Linux ne dispose pas des outils nécessaires pour créer la cryptography bibliothèque, vous devez les installer. Pour de plus amples informations, veuillez consulter Building cryptography on Linux.

Les versions 1.10.0 et 2.5.0 de la norme situent la Kit SDK de chiffrement AWS pour Python dépendance cryptographique entre 2.5.0 et 3.3.2. Les autres versions Kit SDK de chiffrement AWS pour Python installent la dernière version de la cryptographie. Si vous avez besoin d'une version de cryptographie ultérieure à la version 3.3.2, nous vous recommandons d'utiliser la dernière version majeure du. Kit SDK de chiffrement AWS pour Python

Pour obtenir la dernière version de développement du Kit SDK de chiffrement AWS pour Python, accédez au aws-encryption-sdk-pythonréférentiel dans GitHub.

Après avoir installé le Kit SDK de chiffrement AWS pour Python, commencez par consulter l'exemple de code Python présenté dans ce guide.

Version 4.x du Kit SDK de chiffrement AWS pour Python

Cette section décrit les nouvelles fonctionnalités introduites par la version 4. x du Kit SDK de chiffrement AWS pour Python lorsqu'il est utilisé avec la dépendance optionnelle Cryptographic Material Providers Library (MPL).

Lorsque vous utilisez la version 4. x du Kit SDK de chiffrement AWS pour Python avec leMPL, vous pouvez utiliser des trousseaux de clés pour chiffrer les enveloppes. AWS Encryption SDK fournit des porte-clés compatibles avec les fournisseurs de clés principales que vous utilisiez dans les versions précédentes. Pour de plus amples informations, veuillez consulter Compatibilité du porte-clés. Pour des exemples de migration depuis des fournisseurs de clés principales vers des porte-clés, consultez la section Exemples de migration dans le aws-encryption-sdk-python référentiel sur. GitHub

Les exemples présentés dans cette rubrique instancient le AWS Encryption SDK client avec la politique d'engagement par défaut,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT Pour de plus amples informations, veuillez consulter Définition de votre politique d'engagement.

AWS KMS porte-clés dans le Kit SDK de chiffrement AWS pour Python

Les AWS KMS porte-clés de base du jeu ne nécessitent Kit SDK de chiffrement AWS pour Python qu'une seule KMS clé. Ils ont également besoin d'un AWS KMS client, ce qui vous permet de configurer le client pour Région AWS la KMS clé.

Pour créer un AWS KMS porte-clés avec une ou plusieurs clés enveloppantes, utilisez un porte-clés à plusieurs clés. Kit SDK de chiffrement AWS pour Python Il possède un porte-clés spécial qui prend une ou plusieurs AWS KMS clés, et un porte-clés standard qui accepte un ou plusieurs porte-clés de n'importe quel type compatible. Certains programmeurs préfèrent utiliser une méthode à plusieurs jeux de clés pour créer tous leurs trousseaux de clés, et ils soutiennent cette stratégie. Kit SDK de chiffrement AWS pour Python

Kit SDK de chiffrement AWS pour Python Il fournit des porte-clés simples et des porte-clés multiples de base pour tous les cas d'utilisation courants, y compris les clés multirégionales. AWS KMS

Par exemple, pour créer un AWS KMS porte-clés avec une seule AWS KMS clé, vous pouvez utiliser la create_aws_kms_keyring() méthode.

# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Create a boto3 client for AWS KMS kms_client = boto3.client('kms', region_name="us-west-2") # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers library mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsKeyringInput = CreateAwsKmsKeyringInput( kms_key_id=arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab, kms_client=kms_client ) kms_keyring: IKeyring = mat_prov.create_aws_kms_keyring( input=keyring_input )

Pour créer un trousseau de clés avec une ou plusieurs AWS KMS clés, utilisez create_aws_kms_multi_keyring() cette méthode. Cet exemple utilise deux KMS touches. Pour spécifier une KMS clé, utilisez uniquement le generator paramètre. Le kms_key_ids paramètre qui spécifie des KMS clés supplémentaires est facultatif.

La saisie de ce trousseau de clés ne nécessite aucun AWS KMS client. Il AWS Encryption SDK utilise plutôt le AWS KMS client par défaut pour chaque région représentée par une KMS clé dans le trousseau de clés. Par exemple, si la KMS clé identifiée par la valeur du generator paramètre se trouve dans la région USA Ouest (Oregon) (us-west-2), un AWS KMS client par défaut est AWS Encryption SDK créé pour us-west-2 cette région. Si vous devez personnaliser le AWS KMS client, utilisez create_aws_kms_keyring() cette méthode.

# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers library mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring kms_multi_keyring_input: CreateAwsKmsMultiKeyringInput = CreateAwsKmsMultiKeyringInput( generator=default_region_kms_key_id, kms_key_ids=[second_region_kms_key_id] ) kms_multi_keyring: IKeyring = mat_prov.create_aws_kms_multi_keyring( input=kms_multi_keyring_input )

Kit SDK de chiffrement AWS pour Python prend en charge les AWS KMS trousseaux de clés utilisant un chiffrement symétrique (SYMMETRIC_DEFAULT) ou des clés asymétriques RSAKMS. AWS KMS les porte-clés créés avec des RSA KMS clés asymétriques ne peuvent contenir qu'une seule paire de clés.

Pour chiffrer avec un trousseau de RSA AWS KMS clés asymétrique, vous n'avez pas besoin de kms : GenerateDataKey ou de KMS:Encrypt car vous devez spécifier le matériel de clé publique que vous souhaitez utiliser pour le chiffrement lorsque vous créez le trousseau de clés. Aucun AWS KMS appel n'est effectué lors du chiffrement avec ce trousseau de clés. Pour déchiffrer avec un trousseau de RSA AWS KMS clés asymétrique, vous devez disposer de l'autorisation KMS:Decrypt.

Pour créer un trousseau de RSA AWS KMS clés asymétrique, vous devez fournir la clé publique et la clé privée ARN à partir de votre clé asymétrique RSAKMS. La clé publique doit être PEM codée. L'exemple suivant crée un AWS KMS trousseau de clés avec une paire de RSA clés asymétrique.

# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Optional: Create an encryption context encryption_context: Dict[str, str] = { "encryption": "context", "is not": "secret", "but adds": "useful metadata", "that can help you": "be confident that", "the data you are handling": "is what you think it is", } # Instantiate the material providers library mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsRsaKeyringInput = CreateAwsKmsRsaKeyringInput( public_key=public_key, kms_key_id=kms_key_id, encryption_algorithm="RSAES_OAEP_SHA_256", kms_client=kms_client ) kms_rsa_keyring: IKeyring = mat_prov.create_aws_kms_rsa_keyring( input=keyring_input )

Contextes de chiffrement requis dans la version 4.x

Lorsque vous utilisez la version 4. x du Kit SDK de chiffrement AWS pour Python avec leMPL, vous pouvez utiliser le contexte de chiffrement requis CMM pour exiger des contextes de chiffrement dans vos opérations cryptographiques. Un contexte de chiffrement est un ensemble de paires clé-valeur non secrètes. Le contexte de chiffrement est lié cryptographiquement aux données chiffrées, de sorte que le même contexte de chiffrement est requis pour déchiffrer le champ. Lorsque vous utilisez le contexte de chiffrement requisCMM, vous pouvez spécifier une ou plusieurs clés de contexte de chiffrement requises (clés obligatoires) qui doivent être incluses dans tous les appels de chiffrement et de déchiffrement.

Note

Le contexte de chiffrement requis n'CMMest pris en charge que par les versions suivantes :

  • Version 3. x du Kit SDK de chiffrement AWS pour Java

  • La version 4. x du AWS Encryption SDK formulaire. NET

  • La version 4. x du Kit SDK de chiffrement AWS pour Python, lorsqu'il est utilisé avec la dépendance optionnelle Cryptographic Material Providers Library (MPL).

Si vous chiffrez des données à l'aide du contexte de chiffrement requisCMM, vous ne pouvez les déchiffrer qu'avec l'une de ces versions prises en charge.

Lors du chiffrement, il AWS Encryption SDK vérifie que toutes les clés de contexte de chiffrement requises sont incluses dans le contexte de chiffrement que vous avez spécifié. Les AWS Encryption SDK signes indiquent les contextes de chiffrement que vous avez spécifiés. Seules les paires clé-valeur qui ne sont pas des clés obligatoires sont sérialisées et stockées en texte clair dans l'en-tête du message chiffré renvoyé par l'opération de chiffrement.

Lors du déchiffrement, vous devez fournir un contexte de chiffrement contenant toutes les paires clé-valeur représentant les clés requises. AWS Encryption SDK Utilise ce contexte de chiffrement et les paires clé-valeur stockées dans l'en-tête du message chiffré pour reconstruire le contexte de chiffrement d'origine que vous avez spécifié lors de l'opération de chiffrement. S'il AWS Encryption SDK n'est pas possible de reconstruire le contexte de chiffrement d'origine, l'opération de déchiffrement échoue. Si vous fournissez une paire clé-valeur contenant la clé requise avec une valeur incorrecte, le message chiffré ne peut pas être déchiffré. Vous devez fournir la même paire clé-valeur que celle spécifiée lors du chiffrement.

Important

Réfléchissez bien aux valeurs que vous choisissez pour les clés requises dans votre contexte de chiffrement. Vous devez être en mesure de fournir à nouveau les mêmes clés et les valeurs correspondantes lors du déchiffrement. Si vous ne parvenez pas à reproduire les clés requises, le message crypté ne peut pas être déchiffré.

L'exemple suivant initialise un AWS KMS trousseau de clés avec le contexte de chiffrement requis. CMM

# Instantiate the AWS Encryption SDK client client = aws_encryption_sdk.EncryptionSDKClient( commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT ) # Create your encryption context encryption_context: Dict[str, str] = { "key1": "value1", "key2": "value2", "requiredKey1": "requiredValue1", "requiredKey2": "requiredValue2" } # Create a list of required encryption context keys required_encryption_context_keys: List[str] = ["requiredKey1", "requiredKey2"] # Instantiate the material providers library mpl: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders( config=MaterialProvidersConfig() ) # Create the AWS KMS keyring keyring_input: CreateAwsKmsKeyringInput = CreateAwsKmsKeyringInput( kms_key_id=kms_key_id, kms_client=boto3.client('kms', region_name="us-west-2") ) kms_keyring: IKeyring = mpl.create_aws_kms_keyring(keyring_input) # Create the required encryption context CMM underlying_cmm: ICryptographicMaterialsManager = \ mpl.create_default_cryptographic_materials_manager( CreateDefaultCryptographicMaterialsManagerInput( keyring=kms_keyring ) ) required_ec_cmm: ICryptographicMaterialsManager = \ mpl.create_required_encryption_context_cmm( CreateRequiredEncryptionContextCMMInput( required_encryption_context_keys=required_encryption_context_keys, underlying_cmm=underlying_cmm, ) )