Porte-clés RSA bruts - 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 RSA bruts

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 trousseau RSA brut effectue le chiffrement et le déchiffrement asymétriques des clés de données dans la mémoire locale à l'aide des clés publiques et privées RSA que vous fournissez. Vous devez générer, stocker et protéger la clé privée, de préférence dans un module de sécurité matériel (HSM) ou un système de gestion des clés. La fonction de chiffrement chiffre la clé de données sous la clé publique RSA. La fonction de déchiffrement déchiffre la clé de données à l'aide de la clé privée. Vous pouvez choisir parmi plusieurs modes de remplissage RSA.

Un porte-clés RSA brut qui chiffre et déchiffre doit inclure une clé publique asymétrique et une clé privée en paire. Cependant, vous pouvez chiffrer des données avec un jeu de clés RSA brut contenant uniquement une clé publique, et vous pouvez déchiffrer des données avec un jeu de clés RSA brut contenant uniquement une clé privée. Vous pouvez inclure n'importe quel trousseau RSA brut dans un trousseau à clés multiples. Si vous configurez un jeu de clés RSA brut avec une clé publique et une clé privée, assurez-vous qu'elles font partie de la même paire de clés.

Le trousseau de clés RSA brut est équivalent au fichier JceMasterKeyin et interagit avec celui-ci Kit SDK de chiffrement AWS pour Java lorsqu'il est utilisé avec des clés de chiffrement asymétriques RSA.

Note

Le porte-clés RSA brut ne prend pas en charge les clés KMS asymétriques. Pour utiliser des clés RSA KMS asymétriques, créez un AWS KMS trousseau de clés.

Espaces de noms et noms

Pour identifier le contenu clé RSA d'un trousseau de clés, le trousseau RSA 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 l'espace de noms de clé et le nom de clé qui identifient la paire de clés RSA (ou sa clé privée) dans votre HSM ou votre système de gestion des clés.

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 enregistrement 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 clés proviennent de la même paire de clés.

L'espace de noms de clé et le nom de clé du contenu clé des trousseaux de clés de chiffrement et de déchiffrement doivent être identiques, que le jeu de clés contienne la clé publique RSA, la clé privée RSA ou les deux clés de la paire de clés. Supposons, par exemple, que vous cryptiez des données à l'aide d'un jeu de clés RSA brut pour une clé publique RSA avec un espace de noms HSM_01 de clé et un nom de clé. RSA_2048_06 Pour déchiffrer ces données, créez un jeu de clés RSA brut avec la clé privée (ou paire de clés), ainsi que le même espace de noms et le même nom de clé.

Mode de rembourrage

Vous devez spécifier un mode de remplissage pour les porte-clés RSA bruts utilisés pour le chiffrement et le déchiffrement, ou utiliser les fonctionnalités de l'implémentation de votre langage qui le spécifient pour vous.

Il AWS Encryption SDK prend en charge les modes de remplissage suivants, sous réserve des contraintes de chaque langue. Nous recommandons un mode de rembourrage OAEP, en particulier OAEP avec SHA-256 et MGF1 avec rembourrage SHA-256. Le mode de rembourrage PKCS1 n'est pris en charge que pour des raisons de rétrocompatibilité.

  • OAEP avec SHA-1 et MGF1 avec rembourrage SHA-1

  • OAEP avec SHA-256 et MGF1 avec rembourrage SHA-256

  • OAEP avec SHA-384 et MGF1 avec rembourrage SHA-384

  • OAEP avec SHA-512 et MGF1 avec rembourrage SHA-512

  • Rembourrage PKCS1 v1.5

L'exemple Java suivant montre comment créer un jeu de clés RSA brut avec les clés publique et privée d'une paire de clés RSA et l'OAEP avec SHA-256 et MGF1 avec le mode de remplissage SHA-256. Les RSAPrivateKey variables RSAPublicKey et représentent le matériel clé que vous fournissez.

Java
final CreateRawRsaKeyringInput keyringInput = CreateRawRsaKeyringInput.builder() .keyName("RSA_2048_06") .keyNamespace("HSM_01") .paddingScheme(PaddingScheme.OAEP_SHA256_MGF1) .publicKey(RSAPublicKey) .privateKey(RSAPrivateKey) .build(); final MaterialProviders matProv = MaterialProviders.builder() .MaterialProvidersConfig(MaterialProvidersConfig.builder().build()) .build(); IKeyring rawRsaKeyring = matProv.CreateRawRsaKeyring(keyringInput);
C# / .NET
var keyNamespace = "HSM_01"; var keyName = "RSA_2048_06"; // Get public and private keys from PEM files var publicKey = new MemoryStream(System.IO.File.ReadAllBytes("RSAKeyringExamplePublicKey.pem")); var privateKey = new MemoryStream(System.IO.File.ReadAllBytes("RSAKeyringExamplePrivateKey.pem")); // Create the keyring input var keyringInput = new CreateRawRsaKeyringInput { KeyNamespace = keyNamespace, KeyName = keyName, PaddingScheme = PaddingScheme.OAEP_SHA512_MGF1, PublicKey = publicKey, PrivateKey = privateKey }; // Create the keyring var matProv = new MaterialProviders(new MaterialProvidersConfig()); var rawRsaKeyring = matProv.CreateRawRsaKeyring(keyringInput);