Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Después de descargar la clave pública y el token de importación, cifre el material de claves con la clave pública que descargó y el algoritmo de encapsulamiento que especificó. Si necesita reemplazar la clave pública o el token de importación, o cambiar el algoritmo de encapsulamiento, debe descargar una nueva clave pública y un token de importación. Para obtener información sobre las claves públicas y los algoritmos de empaquetado AWS KMS compatibles, consulte Selección de una especificación de clave pública de encapsulamiento ySeleccionar un algoritmo de encapsulamiento.
El material de claves debe estar en formato binario. Para obtener información detallada, consulta Requisitos para el material de claves importado.
nota
Para los pares de claves asimétricas, cifra e importa solo la clave privada. AWS KMS deriva la clave pública de la clave privada.
NO se admite la siguiente combinación: material de claves ECC_NIST_P521, la especificación de clave pública de encapsulamiento RSA_2048 y un algoritmo de encapsulamiento RSAES_OAEP_SHA_*.
No se puede encapsular directamente el material de claves ECC_NIST_P521 con una clave pública de encapsulamiento RSA_2048. Utilice una clave de encapsulamiento más grande o un algoritmo de encapsulamiento RSA_AES_KEY_WRAP_SHA_*.
Los algoritmos de encapsulamiento RSA_AES_KEY_WRAP_SHA_256 y RSA_AES_KEY_WRAP_SHA_1 no se admiten en las regiones de China.
Normalmente, el material de claves se cifra al exportarlo desde el módulo de seguridad de hardware (HSM) o el sistema de administración de claves. Para obtener información sobre cómo exportar el material de claves en formato binario, consulte la documentación de su HSM o sistema de administración de claves. También puede consultar la siguiente sección que proporciona una demostración de prueba de concepto con OpenSSL.
Al cifrar el material de claves, utilice el mismo algoritmo de encapsulamiento que especificó al descargar la clave pública y el token de importación. Para encontrar el algoritmo de empaquetado que especificó, consulte el evento de CloudTrail registro de la GetParametersForImportsolicitud asociada.
Generación de material de claves para realizar pruebas
Los siguientes comandos de OpenSSL generan material de claves de cada tipo compatible para realizar pruebas. Estos ejemplos se proporcionan únicamente para pruebas y proof-of-concept demostraciones. En el caso de los sistemas de producción, utilice un método más seguro para generar el material de claves, como un módulo de seguridad de hardware o un sistema de administración de claves.
Para convertir las claves privadas de los pares de claves asimétricas a un formato cifrado en DER, transfiera el comando de generación de material de claves al siguiente comando openssl pkcs8
. El parámetro topk8
indica a OpenSSL que tome una clave privada como entrada y devuelva una clave con formato PKCS #8. (El comportamiento predeterminado es el contrario).
openssl pkcs8 -topk8 -outform der -nocrypt
Los siguientes comandos generan material de claves de prueba para cada uno de los tipos de clave compatibles.
-
Clave de cifrado simétrica (32 bytes)
Este comando genera una clave simétrica de 256 bits (cadena aleatoria de 32 bytes) y la guarda en el archivo
PlaintextKeyMaterial.bin
. No es necesario cifrar este material de claves.openssl rand -out PlaintextKeyMaterial.bin 32
Solo en las regiones de China, debe generar una clave simétrica de 128 bits (cadena aleatoria de 16 bytes).
openssl rand -out PlaintextKeyMaterial.bin 16
-
Claves HMAC
Este comando genera una cadena de bytes aleatorios del tamaño especificado. No es necesario cifrar este material de claves.
La longitud de la clave HMAC debe coincidir con la longitud definida en la especificación de clave de la clave de KMS. Por ejemplo, si la clave de KMS es HMAC_384, debe importar una clave de 384 bits (48 bytes).
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
-
Claves privadas 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
-
Claves privadas 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 claves privadas (solo regiones de China)
openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:sm2 | openssl pkcs8 -topk8 -outform der -nocrypt > SM2_PrivateKey.der
Ejemplos de cifrado de material de claves con OpenSSL
Los siguientes ejemplos muestran cómo utilizar OpenSSL
importante
Estos ejemplos son solo una demostración de la prueba de concepto. En el caso de los sistemas de producción, utilice un método más seguro (como un HSM o un sistema de administración de claves comercial) para generar y almacenar el material de claves.
NO se admite la siguiente combinación: material de claves ECC_NIST_P521, la especificación de clave pública de encapsulamiento RSA_2048 y un algoritmo de encapsulamiento RSAES_OAEP_SHA_*.
No se puede encapsular directamente el material de claves ECC_NIST_P521 con una clave pública de encapsulamiento RSA_2048. Utilice una clave de encapsulamiento más grande o un algoritmo de encapsulamiento RSA_AES_KEY_WRAP_SHA_*.
AWS KMS admite la RSAES_OAEP_SHA_1 para claves de cifrado simétricas (SYMMETRIC_DEFAULT), claves privadas de curva elíptica (ECC), claves privadas y claves HMAC. SM2
RSAES_OAEP_SHA_1 no es compatible con las claves privadas RSA. Además, no puede usar una clave de encapsulamiento pública RSA_2048 con ningún algoritmo de encapsulamiento RSAES_OAEP_SHA_* para encapsular una clave privada ECC_NIST_P521 (secp521r1). Debe usar una clave de pública de encapsulamiento más grande o un algoritmo de encapsulamiento RSA_AES_KEY_WRAP.
El siguiente ejemplo cifra el material de claves con la clave pública que ha descargado y el algoritmo de encapsulamiento RSAES_OAEP_SHA_1, y lo guarda en el archivo EncryptedKeyMaterial.bin
.
En este ejemplo:
-
es el archivo que contiene la clave pública de encapsulamiento descargada.WrappingPublicKey.bin
-
es el archivo que contiene el material de claves que está cifrando, comoPlaintextKeyMaterial.bin
PlaintextKeyMaterial.bin
,HMAC_384_PlaintextKey.bin
oECC_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
Continúe en Paso 4: Importar el material de claves.