Porte-clés AES brut - AWS Chiffrement des bases 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.

Porte-clés AES brut

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.

Le SDK AWS Database Encryption vous permet d'utiliser une clé symétrique AES que vous fournissez comme clé d'encapsulation qui protège votre clé de données. Vous devez générer, stocker et protéger le matériel clé, de préférence dans un module de sécurité matériel (HSM) ou un système de gestion des clés. Utilisez un trousseau de clés AES brut lorsque vous devez fournir la clé d'encapsulation et chiffrer les clés de données localement ou hors ligne.

Le jeu de clés AES brut chiffre les données à l'aide de l'algorithme AES-GCM et d'une clé d'encapsulation que vous spécifiez sous forme de tableau d'octets. Vous ne pouvez spécifier qu'une seule clé d'encapsulation par jeu de clés AES brut, mais vous pouvez inclure plusieurs porte-clés AES bruts, seuls ou avec d'autres trousseaux de clés, dans un jeu de clés multiple.

Espaces de noms et noms clés

Pour identifier la clé AES dans un trousseau de clés, le trousseau de clés AES brut utilise un espace de noms de clé et un nom de clé que vous fournissez. Ces valeurs ne sont pas secrètes. Ils apparaissent en texte brut dans la description matérielle que le SDK AWS de chiffrement de base de données ajoute à l'enregistrement. Nous vous recommandons d'utiliser un espace de noms de clé dans votre HSM ou votre système de gestion de clés et un nom de clé identifiant la clé AES dans ce système.

Note

L'espace de noms clé et le nom de clé sont équivalents aux champs ID du fournisseur (ou fournisseur) et ID clé duJceMasterKey.

Si vous créez différents trousseaux de clés pour chiffrer et déchiffrer un champ donné, l'espace de noms et les valeurs des noms sont essentiels. Si l'espace de noms de clé et le nom de clé du jeu de clés de déchiffrement ne correspondent pas exactement, en distinguant majuscules et minuscules, à l'espace de noms de clé et au nom de clé du jeu de clés de chiffrement, le jeu de clés de déchiffrement n'est pas utilisé, même si les octets essentiels sont identiques.

Par exemple, vous pouvez définir un trousseau de clés AES brut avec un espace de noms de clé HSM_01 et un nom de clé. AES_256_012 Ensuite, vous utilisez ce trousseau de clés pour chiffrer certaines données. Pour déchiffrer ces données, créez un jeu de clés AES brut avec le même espace de noms, le même nom de clé et le même matériau clé.

Les exemples suivants montrent comment créer un trousseau de clés AES brut. La AESWrappingKey variable représente le matériel clé que vous fournissez.

Java
final CreateRawAesKeyringInput keyringInput = CreateRawAesKeyringInput.builder() .keyName("AES_256_012") .keyNamespace("HSM_01") .wrappingKey(AESWrappingKey) .wrappingAlg(AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16) .build(); final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); IKeyring rawAesKeyring = matProv.CreateRawAesKeyring(keyringInput);
C# / .NET
var keyNamespace = "HSM_01"; var keyName = "AES_256_012"; // This example uses the key generator in Bouncy Castle to generate the key material. // In production, use key material from a secure source. var aesWrappingKey = new MemoryStream(GeneratorUtilities.GetKeyGenerator("AES256").GenerateKey()); // Create the keyring var keyringInput = new CreateRawAesKeyringInput { KeyNamespace = keyNamespace, KeyName = keyName, WrappingKey = AESWrappingKey, WrappingAlg = AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16 }; var matProv = new MaterialProviders(new MaterialProvidersConfig()); IKeyring rawAesKeyring = matProv.CreateRawAesKeyring(keyringInput);