Porte-clés multiples - AWS SDK de chiffrement de base de données

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.

Porte-clés multiples

Notre bibliothèque de chiffrement côté client a été renommée SDK de chiffrement de AWS base de données. Ce guide du développeur fournit toujours des informations sur le client de chiffrement DynamoDB.

Vous pouvez combiner plusieurs porte-clés au sein d'un porte-clés multiple. Un porte-clés multiple est un porte-clés qui se compose d'un ou plusieurs porte-clés individuels différents ou partageant le même type. L'effet est semblable à l'utilisation de plusieurs porte-clés en série. Lorsque vous utilisez un porte-clés multiple pour chiffrer des données, toutes les clés d'encapsulage de tous ses porte-clés sont capables de déchiffrer les données.

Lorsque vous créez un porte-clés multiple pour chiffrer des données, vous désignez l'un des porte-clés en tant que porte-clés générateur. Tous les autres porte-clés sont appelés porte-clés enfants. Le porte-clés générateur génère et chiffre la clé de données en texte brut. Ensuite, toutes les clés d'encapsulage dans l'ensemble des porte-clés enfants chiffrent la même clé de données en texte brut. Le porte-clés multiple renvoie la clé en texte brut et une clé de données chiffrée pour chaque clé d'encapsulage du porte-clés multiple. Si le trousseau de clés du générateur est un trousseau KMS, la clé du générateur du AWS KMS trousseau génère et chiffre la clé en texte brut. Ensuite, toutes les clés supplémentaires AWS KMS keys du AWS KMS trousseau de clés et toutes les clés enveloppantes de tous les porte-clés enfants du trousseau de clés multiples chiffrent la même clé en texte brut.

Lors du déchiffrement, le SDK de chiffrement de AWS base de données utilise les trousseaux de clés pour tenter de déchiffrer l'une des clés de données chiffrées. Les porte-clés sont appelés dans l'ordre dans lequel ils sont spécifiées dans le porte-clés multiple. Le traitement s'arrête dès qu'une clé d'un porte-clés peut déchiffrer une clé de données chiffrée.

Pour créer un porte-clés multiple, vous devez d'abord instancier les porte-clés enfants. Dans cet exemple, nous utilisons un AWS KMS porte-clés et un porte-clés AES brut, mais vous pouvez combiner tous les porte-clés compatibles dans un porte-clés multiple.

Java
// 1. Create the raw AES keyring. final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); final CreateRawAesKeyringInput createRawAesKeyringInput = CreateRawAesKeyringInput.builder() .keyName("AES_256_012") .keyNamespace("HSM_01") .wrappingKey(AESWrappingKey) .wrappingAlg(AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16) .build(); IKeyring rawAesKeyring = matProv.CreateRawAesKeyring(createRawAesKeyringInput); // 2. Create the AWS KMS keyring. final CreateAwsKmsMrkMultiKeyringInput createAwsKmsMrkMultiKeyringInput = CreateAwsKmsMrkMultiKeyringInput.builder() .generator(kmsKeyArn) .build(); IKeyring awsKmsMrkMultiKeyring = matProv.CreateAwsKmsMrkMultiKeyring(createAwsKmsMrkMultiKeyringInput);
C# / .NET
// 1. Create the raw AES keyring. var keyNamespace = "HSM_01"; var keyName = "AES_256_012"; var matProv = new MaterialProviders(new MaterialProvidersConfig()); var createRawAesKeyringInput = new CreateRawAesKeyringInput { KeyName = "keyName", KeyNamespace = "myNamespaces", WrappingKey = AESWrappingKey, WrappingAlg = AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16 }; var rawAesKeyring = matProv.CreateRawAesKeyring(createRawAesKeyringInput); // 2. Create the AWS KMS keyring. // We create a MRK multi keyring, as this interface also supports // single-region KMS keys, // and creates the KMS client for us automatically. var createAwsKmsMrkMultiKeyringInput = new CreateAwsKmsMrkMultiKeyringInput { Generator = keyArn }; var awsKmsMrkMultiKeyring = matProv.CreateAwsKmsMrkMultiKeyring(createAwsKmsMrkMultiKeyringInput);

Ensuite, créez le porte-clés multiple et spécifiez son porte-clés générateur, le cas échéant. Dans cet exemple, nous créons un porte-clés multiple dans lequel le porte-clés est le AWS KMS porte-clés générateur et le porte-clés AES est le porte-clés enfant.

Java

Le CreateMultiKeyringInput constructeur Java vous permet de définir un porte-clés générateur et des trouses-clés enfants. L'createMultiKeyringInputobjet obtenu est immuable.

final CreateMultiKeyringInput createMultiKeyringInput = CreateMultiKeyringInput.builder() .generator(awsKmsMrkMultiKeyring) .childKeyrings(Collections.singletonList(rawAesKeyring)) .build(); IKeyring multiKeyring = matProv.CreateMultiKeyring(createMultiKeyringInput);
C# / .NET

Le CreateMultiKeyringInput constructeur .NET vous permet de définir un porte-clés générateur et un trousseau de clés enfant. L'CreateMultiKeyringInputobjet obtenu est immuable.

var createMultiKeyringInput = new CreateMultiKeyringInput { Generator = awsKmsMrkMultiKeyring, ChildKeyrings = new List<IKeyring> { rawAesKeyring } }; var multiKeyring = matProv.CreateMultiKeyring(createMultiKeyringInput);

À présent, vous pouvez utiliser le porte-clés multiple pour chiffrer et déchiffrer les données.