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.
Paso 3 de la importación de material de claves: Cifrar el material de claves
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, consulte Requisitos para el material de claves importado.
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.
Se NOT admite la siguiente combinación: material clave ECC _ NIST _P521, la especificación de clave de empaquetado pública RSA _2048 y un RSAES algoritmo de empaquetado _ _ _*. OAEP SHA
No se puede empaquetar directamente el material clave ECC _ NIST _P521 con una clave de empaquetado pública _2048. RSA Utilice una clave de empaquetado más grande o un algoritmo de empaquetado RSA _ _ AES _ KEY WRAP _ SHA _*.
Los algoritmos de empaquetado RSA AES KEY _ WRAP _ _ _ SHA _256 y RSA _ AES _ KEY _ WRAP _ SHA _1 no son compatibles en las regiones de China.
Normalmente, el material clave se cifra cuando se exporta desde el módulo de seguridad de hardware (HSM) o el sistema de gestión de claves. Para obtener información sobre cómo exportar el material clave en formato binario, consulte la documentación de su HSM sistema de administración de claves. También puede consultar la siguiente sección, que proporciona una demostración de una prueba de concepto sobre el uso de 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 SSL comandos de apertura generan material clave 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 DER codificado, canalice el comando de generación de material clave al siguiente openssl pkcs8
comando. El topk8
parámetro indica SSL a Open que tome una clave privada como entrada y devuelva una clave con el 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
-
HMACclaves
Este comando genera una cadena de bytes aleatorios del tamaño especificado. No es necesario cifrar este material de claves.
La longitud de la HMAC clave debe coincidir con la longitud definida por la especificación de la KMS clave. Por ejemplo, si la KMS clave 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
-
RSAclaves privadas
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
-
ECCclaves privadas
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
-
SM2claves privadas (solo para las 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 clave con Open SSL
En los siguientes ejemplos se muestra cómo utilizar Open SSL para cifrar el material de claves con la clave pública que ha descargado. Para cifrar el material clave con una clave SM2 pública (solo para las regiones de China), utilice la SM2OfflineOperationHelper clase. Para obtener más información sobre los tipos de materiales clave que admite cada algoritmo de empaquetado, consulteSeleccionar un algoritmo de encapsulamiento.
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 sistema comercial HSM o de gestión de claves) para generar y almacenar el material clave.
Se NOT admite la siguiente combinación: material clave ECC _ NIST _P521, la especificación de clave de empaquetado pública RSA _2048 y un algoritmo de empaquetado RSAES _ _ OAEP _*. SHA
No se puede empaquetar directamente el material clave ECC _ NIST _P521 con una clave de empaquetado pública _2048. RSA Utilice una clave de empaquetado más grande o un algoritmo de empaquetado RSA _ _ AES _ KEY WRAP _ SHA _*.
- RSAES_OAEP_SHA_1
-
AWS KMS admite el RSAES _ OAEP _ SHA _1 para claves de cifrado simétricas (SYMMETRIC_DEFAULT), claves privadas de curva elíptica (ECC), claves SM2 privadas y claves. HMAC
RSAES_ OAEP _ SHA _1 no es compatible con las claves privadas. RSA Además, no puede utilizar una clave de empaquetado pública RSA _2048 con ningún algoritmo de empaquetado RSAES _ OAEP _ SHA _* para empaquetar una clave privada ECC _ NIST _P521 (secp521r1). Debe utilizar una clave de empaquetado pública más grande o un algoritmo de empaquetado _ _ _. RSA AES KEY WRAP
El siguiente ejemplo cifra el material de claves con la clave pública que ha descargado y el algoritmo de empaquetado RSAES OAEP _ _ SHA _1, y lo guarda en el EncryptedKeyMaterial.bin
archivo.
En este ejemplo:
-
WrappingPublicKey.bin
es el archivo que contiene la clave pública de empaquetado descargada.
-
PlaintextKeyMaterial.bin
es el archivo que contiene el material clave que está cifrando, comoPlaintextKeyMaterial.bin
, HMAC_384_PlaintextKey.bin
o. ECC_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
- RSAES_OAEP_SHA_256
-
AWS KMS admite el RSAES _ OAEP _ SHA _256 para claves de cifrado simétricas (SYMMETRIC_DEFAULT), claves privadas de curva elíptica (ECC), claves SM2 privadas y claves. HMAC
RSAES_ OAEP _ SHA _256 no es compatible con las claves privadas. RSA Además, no puede utilizar una clave de empaquetado pública RSA _2048 con ningún algoritmo de empaquetado RSAES _ OAEP _ SHA _* para empaquetar una clave privada ECC _ NIST _P521 (secp521r1). Debe utilizar una clave pública más grande o un algoritmo de empaquetado _ _ _. RSA AES KEY WRAP
El ejemplo siguiente cifra el material clave con la clave pública que ha descargado y el algoritmo de empaquetado RSAES OAEP _ _ SHA _256, y lo guarda en el EncryptedKeyMaterial.bin
archivo.
En este ejemplo:
-
WrappingPublicKey.bin
es el archivo que contiene la clave de empaquetado pública descargada. Si ha descargado la clave pública desde la consola, este archivo se denomina wrappingKey_KMS key_key_ID
_timestamp
(por ejemplo, wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
).
-
PlaintextKeyMaterial.bin
es el archivo que contiene el material clave que está cifrando, como PlaintextKeyMaterial.bin
HMAC_384_PlaintextKey.bin
, o. ECC_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:sha256 \
-pkeyopt rsa_mgf1_md:sha256
- RSA_AES_KEY_WRAP_SHA_1
-
El algoritmo de empaquetado RSA AES KEY _ WRAP _ _ SHA _1 implica dos operaciones de cifrado.
-
Cifre el material de su clave con una clave AES simétrica que usted genere y un algoritmo de cifrado AES simétrico.
-
Cifre la clave AES simétrica que utilizó con la clave pública que descargó y el algoritmo de empaquetado RSAES _ _ OAEP _1. SHA
El algoritmo de empaquetado RSA AES _ KEY _ WRAP _ SHA _1 requiere la versión 3 de Open. SSL x o posterior.
-
Genere una clave de cifrado AES simétrica de 256 bits
Este comando genera una clave de cifrado AES simétrica que consta de 256 bits aleatorios y la guarda en el archivo aes-key.bin
# Generate a 32-byte AES symmetric encryption key
$
openssl rand -out aes-key.bin 32
-
Cifre el material de su clave con la clave de cifrado AES simétrica
Este comando cifra el material de la clave con la clave de cifrado AES simétrica y guarda el material de la clave cifrada en el archivo. key-material-wrapped.bin
En este comando de ejemplo:
-
PlaintextKeyMaterial.bin
es el archivo que contiene el material clave que está importando, comoPlaintextKeyMaterial.bin
, HMAC_384_PlaintextKey.bin
RSA_3072_PrivateKey.der
, oECC_NIST_P521_PrivateKey.der
.
-
aes-key.bin
es el archivo que contiene la clave de cifrado AES simétrica de 256 bits que generó en el comando anterior.
# Encrypt your key material with the AES symmetric encryption key
$
openssl enc -id-aes256-wrap-pad \
-K "$(xxd -p < aes-key.bin
| tr -d '\n')" \
-iv A65959A6 \
-in PlaintextKeyMaterial.bin
\
-out key-material-wrapped.bin
-
Cifre la clave de cifrado AES simétrica con la clave pública
Este comando cifra la clave de cifrado AES simétrica con la clave pública que ha descargado y el algoritmo de empaquetado RSAES _ OAEP _ SHA _1, la DER codifica y la guarda en el archivo. aes-key-wrapped.bin
En este comando de ejemplo:
-
WrappingPublicKey.bin
es el archivo que contiene la clave de empaquetado pública descargada. Si ha descargado la clave pública desde la consola, este archivo se denomina wrappingKey_KMS key_key_ID
_timestamp
(por ejemplo, wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
).
-
aes-key.bin
es el archivo que contiene la clave de cifrado AES simétrica de 256 bits que generó en el primer comando de esta secuencia de ejemplo.
# Encrypt your AES symmetric encryption key with the downloaded public key
$
openssl pkeyutl \
-encrypt \
-in aes-key.bin
\
-out aes-key-wrapped.bin \
-inkey WrappingPublicKey.bin
\
-keyform DER \
-pubin \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha1 \
-pkeyopt rsa_mgf1_md:sha1
-
Generación del archivo que se va a importar
Concatene el archivo con el material de la clave cifrada y el archivo con la clave cifrada. AES Guárdelos en el archivo EncryptedKeyMaterial.bin
, que es el archivo que va a importar en Paso 4: Importar el material de claves.
En este comando de ejemplo:
# Combine the encrypted AES key and encrypted key material in a file
$
cat aes-key-wrapped.bin
key-material-wrapped.bin
> EncryptedKeyMaterial.bin
- RSA_AES_KEY_WRAP_SHA_256
-
El algoritmo de empaquetado RSA AES KEY _ WRAP _ _ _ SHA _256 implica dos operaciones de cifrado.
-
Cifre el material de su clave con una clave AES simétrica que usted genere y un algoritmo de cifrado AES simétrico.
-
Cifre la clave AES simétrica que utilizó con la clave pública que descargó y el algoritmo de empaquetado RSAES _ _ OAEP _256. SHA
El algoritmo de empaquetado RSA AES _ KEY _ WRAP _ SHA _256 requiere la versión 3 de Open. SSL x o posterior.
-
Genere una clave de cifrado AES simétrica de 256 bits
Este comando genera una clave de cifrado AES simétrica que consta de 256 bits aleatorios y la guarda en el archivo aes-key.bin
# Generate a 32-byte AES symmetric encryption key
$
openssl rand -out aes-key.bin 32
-
Cifre el material de su clave con la clave de cifrado AES simétrica
Este comando cifra el material de la clave con la clave de cifrado AES simétrica y guarda el material de la clave cifrada en el archivo. key-material-wrapped.bin
En este comando de ejemplo:
-
PlaintextKeyMaterial.bin
es el archivo que contiene el material clave que está importando, comoPlaintextKeyMaterial.bin
, HMAC_384_PlaintextKey.bin
RSA_3072_PrivateKey.der
, oECC_NIST_P521_PrivateKey.der
.
-
aes-key.bin
es el archivo que contiene la clave de cifrado AES simétrica de 256 bits que generó en el comando anterior.
# Encrypt your key material with the AES symmetric encryption key
$
openssl enc -id-aes256-wrap-pad \
-K "$(xxd -p < aes-key.bin
| tr -d '\n')" \
-iv A65959A6 \
-in PlaintextKeyMaterial.bin
\
-out key-material-wrapped.bin
-
Cifre la clave de cifrado AES simétrica con la clave pública
Este comando cifra la clave de cifrado AES simétrica con la clave pública que ha descargado y el algoritmo de empaquetado RSAES _ OAEP _ SHA _256, la DER codifica y la guarda en el archivo. aes-key-wrapped.bin
En este comando de ejemplo:
-
WrappingPublicKey.bin
es el archivo que contiene la clave de empaquetado pública descargada. Si ha descargado la clave pública desde la consola, este archivo se denomina wrappingKey_KMS key_key_ID
_timestamp
(por ejemplo, wrappingKey_f44c4e20-f83c-48f4-adc6-a1ef38829760_0809092909
).
-
aes-key.bin
es el archivo que contiene la clave de cifrado AES simétrica de 256 bits que generó en el primer comando de esta secuencia de ejemplo.
# Encrypt your AES symmetric encryption key with the downloaded public key
$
openssl pkeyutl \
-encrypt \
-in aes-key.bin
\
-out aes-key-wrapped.bin \
-inkey WrappingPublicKey.bin
\
-keyform DER \
-pubin \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha256 \
-pkeyopt rsa_mgf1_md:sha256
-
Generación del archivo que se va a importar
Concatene el archivo con el material de la clave cifrada y el archivo con la clave cifrada. AES Guárdelos en el archivo EncryptedKeyMaterial.bin
, que es el archivo que va a importar en Paso 4: Importar el material de claves.
En este comando de ejemplo:
# Combine the encrypted AES key and encrypted key material in a file
$
cat aes-key-wrapped.bin
key-material-wrapped.bin
> EncryptedKeyMaterial.bin
Continúe en Paso 4: Importar el material de claves.