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.
Après avoir téléchargé la clé publique et le jeton d'importation, chiffrez l’élément de votre clé à l'aide de la clé publique que vous avez téléchargée et de l'algorithme d'encapsulage que vous avez spécifié. Si vous devez remplacer la clé publique ou le jeton d'importation, ou modifier l'algorithme d'encapsulage, vous devez télécharger une nouvelle clé publique et un nouveau jeton d'importation. Pour plus d'informations sur les clés publiques et les algorithmes d'encapsulation AWS KMS compatibles, reportez-vous Sélectionnez une spécification de clé publique d'encapsulage aux sections etSélectionner un algorithme d'encapsulage.
La clé doit être au format binaire. Pour plus d’informations, consultez Exigences relatives aux éléments de clé importés.
Note
Pour les paires de clés asymétriques, chiffrez et importez uniquement la clé privée. AWS KMS dérive la clé publique de la clé privée.
La combinaison suivante n'est PAS prise en charge : l’élément de clé ECC_NIST_P521, la spécification de clé d'encapsulage publique RSA_2048 et un algorithme d'encapsulage RSAES_OAEP_SHA_*.
Vous ne pouvez pas directement encapsuler l’élément de clé ECC_NIST_P521 avec une clé d'encapsulage publique RSA_2048. Utilisez une clé d'encapsulage plus grande ou un algorithme d'encapsulage RSA_AES_KEY_WRAP_SHA_*.
Les algorithmes d'encapsulage RSA_AES_KEY_WRAP_SHA_256 et RSA_AES_KEY_WRAP_SHA_1 ne sont pas pris en charge dans les régions de Chine.
En règle générale, vous chiffrez vos éléments de clé lorsque vous les exportez à partir du module de sécurité matérielle (HSM) ou du système de gestion de clés. Pour plus d'informations sur l'exportation des clés au format binaire, consultez la documentation relative au module HSM ou au système de gestion de clés. Vous pouvez également vous reporter à la section suivante qui fournit la démonstration d'une preuve de concept à l'aide d'OpenSSL.
Lorsque vous chiffrez vos éléments de clé, utilisez le même algorithme d’encapsulage que celui que vous avez spécifié lorsque vous avez téléchargé la clé publique et le jeton d'importation. Pour trouver l'algorithme d'encapsulage que vous avez spécifié, consultez le CloudTrail journal des événements de la GetParametersForImportdemande associée.
Générer un élément de clé à tester
Les commandes OpenSSL suivantes génèrent des éléments de clés pour chaque type pris en charge à des fins de test. Ces exemples sont fournis uniquement à des fins de test et de proof-of-concept démonstration. Pour les systèmes de production, utilisez une méthode plus sécurisée pour générer votre élément de clé, notamment un module de sécurité matériel ou un système de gestion de clé.
Pour convertir les clés privées des paires de clés asymétriques au format codé DER, dirigez la commande de génération de l’élément de clé vers la commande openssl pkcs8
suivante. Le paramètre topk8
indique à OpenSSL de prendre une clé privée en entrée et de renvoyer une clé au format PKCS #8. (Le comportement par défaut est le contraire.)
openssl pkcs8 -topk8 -outform der -nocrypt
Les commandes suivantes génèrent des éléments de clés de test pour chaque type de clé pris en charge.
-
Clé de chiffrement symétrique (32 octets)
Cette commande génère une clé symétrique de 256 bits (chaîne aléatoire de 32 octets) et l'enregistre dans le fichier
PlaintextKeyMaterial.bin
. Vous n'avez pas besoin d'encoder cet élément de clé.openssl rand -out PlaintextKeyMaterial.bin 32
Dans les régions de Chine uniquement, vous devez générer une clé symétrique de 128 bits (chaîne aléatoire de 16 octets).
openssl rand -out PlaintextKeyMaterial.bin 16
-
Clés HMAC
Cette commande génère une chaîne d'octets aléatoire de la taille spécifiée. Vous n'avez pas besoin d'encoder cet élément de clé.
La longueur de votre clé HMAC doit correspondre à la longueur définie par la spécification de clé de la clé KMS. Par exemple, si la clé KMS est HMAC_384, vous devez importer une clé de 384 bits (48 octets).
openssl rand -out HMAC_224_PlaintextKey.bin 28 openssl rand -out HMAC_256_PlaintextKey.bin 32 openssl rand -out HMAC_384_PlaintextKey.bin 48 openssl rand -out HMAC_512_PlaintextKey.bin 64
-
Clés privées RSA
openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:2048 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_2048_PrivateKey.der openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:3072 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_3072_PrivateKey.der openssl genpkey -algorithm rsa -pkeyopt rsa_keygen_bits:4096 | openssl pkcs8 -topk8 -outform der -nocrypt > RSA_4096_PrivateKey.der
-
Clés privées ECC
openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-256 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P256_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-384 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P384_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:P-521 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_NIST_P521_PrivateKey.der openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:secp256k1 | openssl pkcs8 -topk8 -outform der -nocrypt > ECC_SECG_P256K1_PrivateKey.der
-
SM2 clés privées (régions de Chine uniquement)
openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 | openssl pkcs8 -topk8 -outform der -nocrypt > SM2_PrivateKey.der
Exemple de chiffrement des éléments de clé avec OpenSSL
Les exemples suivants montrent comment utiliser OpenSSL
Important
Ces exemples sont la démonstration d'une preuve de concept uniquement. Pour les systèmes de production, utilisez une méthode plus sécurisée (par exemple, un système de gestion de clés ou un module HSM commercial) pour générer et stocker vos éléments de clé.
La combinaison suivante n'est PAS prise en charge : l’élément de clé ECC_NIST_P521, la spécification de clé d'encapsulage publique RSA_2048 et un algorithme d'encapsulage RSAES_OAEP_SHA_*.
Vous ne pouvez pas directement encapsuler l’élément de clé ECC_NIST_P521 avec une clé d'encapsulage publique RSA_2048. Utilisez une clé d'encapsulage plus grande ou un algorithme d'encapsulage RSA_AES_KEY_WRAP_SHA_*.
AWS KMS prend en charge le RSAES_OAEP_SHA_1 pour les clés de chiffrement symétriques (SYMMETRIC_DEFAULT), les clés privées à courbe elliptique (ECC), les clés privées et les clés HMAC. SM2
RSAES_OAEP_SHA_1 n'est pas pris en charge pour les clés privées RSA. Vous ne pouvez pas non plus utiliser une clé publique d’encapsulage RSA_2048 avec un algorithme d'encapsulage RSAES_OAEP_SHA_* pour encapsuler une clé privée ECC_NIST_P521 (secp521r1). Vous devez utiliser une clé d'encapsulage plus grande ou un algorithme d'encapsulage RSA_AES_KEY_WRAP.
L'exemple suivant chiffre votre élément de clé avec la clé publique que vous avez téléchargée et l'algorithme d'encapsulage RSAES_OAEP_SHA_1, puis l'enregistre dans le fichier EncryptedKeyMaterial.bin
.
Dans cet exemple :
-
est le fichier qui contient la clé publique d'encapsulage téléchargée.WrappingPublicKey.bin
-
est le fichier qui contient l’élément de clé que vous chiffres, tel quePlaintextKeyMaterial.bin
PlaintextKeyMaterial.bin
,HMAC_384_PlaintextKey.bin
ouECC_NIST_P521_PrivateKey.der
.
$
openssl pkeyutl \
-encrypt \
-in PlaintextKeyMaterial.bin
\
-out EncryptedKeyMaterial.bin \
-inkey WrappingPublicKey.bin
\
-keyform DER \
-pubin \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha1
Passez à Étape 4 : Importation des éléments de clé.