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.
Importar claves
importante
Los ejemplos pueden requerir la versión más reciente de la AWS CLI V2. Antes de empezar, asegúrese de haber actualizado a la versión más reciente.
Importar claves simétricas
Temas
Importar claves utilizando técnicas asimétricas (TR-34)
![AWS Proceso de importación de la clave de cifrado de la clave de criptografía de pago](images/keyimport-process-kek-import.png)
Descripción general: TR-34 utiliza la criptografía asimétrica RSA para encriptar claves simétricas para su intercambio, así como para garantizar el origen de los datos (firma). Esto garantiza tanto la confidencialidad (encriptación) como la integridad (firma) de la clave envuelta.
Si desea importar sus propias claves, consulte el proyecto de ejemplo en Github
- 1. Llamar al comando de importación inicializar
-
Llamar a
get-parameters-for-import
para inicializar el proceso de importación. Esta API generará un par de claves a efectos de importación de claves, firmará la clave y devolverá el certificado y la raíz del certificado. En última instancia, la clave que se vaya a exportar deberá cifrarse utilizando esta clave. En la terminología TR-34, esto se conoce como certificado KRD. Tenga en cuenta que estos certificados son de corta duración y sólo están pensados para este propósito. - 2. Instalar el certificado público en el sistema fuente de claves
-
Con muchos HSM, puede que necesite instalar, cargar o confiar el certificado público generado en el paso 1 para poder exportar claves utilizándolo.
- 3. Genere una clave pública y proporcione la raíz del certificado a AWS Payment Cryptography
-
Para garantizar la integridad de la carga útil transmitida, ésta es firmada por la parte remitente (conocida como host de distribución de claves o KDH). La parte remitente querrá generar una clave pública para este fin y, a continuación, crear un certificado de clave pública (X509) que pueda devolverse a AWS Payment Cryptography. AWS Private CA es una opción para generar certificados, pero no hay restricciones en cuanto a la autoridad de certificación utilizada.
Una vez que tenga el certificado, querrá cargar el certificado raíz en AWS Payment Cryptography mediante el
importKey
comando and KeyMaterialType ofROOT_PUBLIC_KEY_CERTIFICATE
y KeyUsageType ofTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE
. - 4. Exportar la clave desde el sistema fuente
-
Muchos HSM y sistemas relacionados admiten la posibilidad de exportar claves mediante la norma TR-34. Deberá especificar la clave pública del paso 1 como el certificado KRD (cifrado) y la clave del paso 3 como el certificado KDH (firma). Para realizar la importación a AWS Payment Cryptography, deberá especificar que el formato sea el TR-34.2012, formato de dos pasadas, distinto del CMS, que también puede denominarse formato TR-34 Diebold.
- 5. Llamar a la clave de importación
-
Como último paso, llamarás a la API ImportKey con un de. KeyMaterialType
TR34_KEY_BLOCK
Elcertificate-authority-public-key-identifier
será el keyARN de la CA raíz importada en el paso 3,key-material
será material clave envuelto del paso 4 ysigning-key-certificate
es el certificado hoja del paso 3. También deberá proporcionar el token de importación del paso 1. - 6. Utilizar la clave importada para operaciones criptográficas o importaciones posteriores
-
Si la importada KeyUsage era TR31_K0_KEY_ENCRYPTION_KEY, esta clave se puede usar para importaciones de claves posteriores mediante TR-31. Si el tipo de clave era cualquier otro (como TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY), entonces la clave puede utilizarse directamente para operaciones criptográficas.
Importe las claves mediante técnicas asimétricas (RSA Unwrap)
Descripción general: La criptografía AWS de pagos admite el empaquetado y desempaquetado con RSA para el intercambio de claves cuando el TR-34 no es factible. Al igual que en el TR-34, esta técnica utiliza la criptografía asimétrica RSA para cifrar las claves simétricas que se van a intercambiar. Sin embargo, a diferencia del TR-34, este método no tiene la carga firmada por la parte que lo envía. Además, esta técnica de empaquetado RSA no mantiene la integridad de los metadatos clave durante la transferencia al no incluir los bloques clave.
nota
La envoltura RSA se puede utilizar para importar o exportar claves TDES y AES-128.
- 1. Llamar al comando de importación inicializar
-
Llame
get-parameters-for-import
para inicializar el proceso de importación con un tipo de material clave llamado KEY_CRYPTOGRAM. WrappingKeyAlgorithm puede ser RSA_2048 al intercambiar claves TDES. Se pueden usar RSA_3072 o RSA_4096 al intercambiar claves TDES o AES-128. Esta API generará un par de claves para importarlas, firmará la clave con una raíz de certificado y devolverá tanto el certificado como la raíz del certificado. En última instancia, la clave que se vaya a exportar deberá cifrarse utilizando esta clave. Tenga en cuenta que estos certificados son de corta duración y sólo están pensados para este propósito.$
aws payment-cryptography get-parameters-for-import --key-material-type KEY_CRYPTOGRAM --wrapping-key-algorithm RSA_4096
{ "ImportToken": "import-token-bwxli6ocftypneu5", "ParametersValidUntilTimestamp": 1698245002.065, "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....", "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....", "WrappingKeyAlgorithm": "RSA_4096" }
- 2. Instalar el certificado público en el sistema fuente de claves
-
En el caso de muchos HSM, es posible que tengas que instalar, cargar o confiar en el certificado público (o en su raíz) generado en el paso 1 para poder exportar las claves que lo utilizan.
- 3. Exportar la clave desde el sistema fuente
-
Muchos HSM y sistemas relacionados admiten la posibilidad de exportar claves mediante el empaquetado RSA. Deberá especificar la clave pública del paso 1 como certificado (certificado) (de cifrado). WrappingKey Si necesitas la cadena de confianza, la encontrarás en el campo WrappingKeyCertificateChain de respuesta del paso #1. Al exportar la clave desde su HSM, querrá especificar que el formato sea RSA, modo de relleno = PKCS #1 v2.2 OAEP (con SHA 256 o SHA 512).
- 4. Llamar a la clave de importación
-
Como último paso, llamarás a la API ImportKey con un de. KeyMaterialType
KeyMaterial
Necesitarás el token de importación del paso 1 y elkey-material
(el material clave empaquetado) del paso 3. Deberá proporcionar los parámetros clave (como el uso de claves), ya que RSA Wrap no utiliza bloques clave.$
cat import-key-cryptogram.json { "KeyMaterial": { "KeyCryptogram": { "Exportable": true, "ImportToken": "import-token-bwxli6ocftypneu5", "KeyAttributes": { "KeyAlgorithm": "AES_128", "KeyClass": "SYMMETRIC_KEY", "KeyModesOfUse": { "Decrypt": true, "DeriveKey": false, "Encrypt": true, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": true, "Verify": false, "Wrap": true }, "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY" }, "WrappedKeyCryptogram": "18874746731....", "WrappingSpec": "RSA_OAEP_SHA_256" } } }
$
aws payment-cryptography import-key --cli-input-json file://import-key-cryptogram.json
{ "Key": { "KeyOrigin": "EXTERNAL", "Exportable": true, "KeyCheckValue": "DA1ACF", "UsageStartTimestamp": 1697643478.92, "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "CreateTimestamp": 1697643478.92, "KeyState": "CREATE_COMPLETE", "KeyAttributes": { "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": true, "Unwrap": true, "Verify": false, "DeriveKey": false, "Decrypt": true, "NoRestrictions": false, "Sign": false, "Wrap": true, "Generate": false }, "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY" }, "KeyCheckValueAlgorithm": "CMAC" } }
- 5. Utilizar la clave importada para operaciones criptográficas o importaciones posteriores
-
Si la importada KeyUsage era TR31_K0_KEY_ENCRYPTION_KEY, entonces esta clave se puede usar para importaciones de claves posteriores mediante TR-31. Si el tipo de clave era cualquier otro (como TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY), entonces la clave puede utilizarse directamente para operaciones criptográficas.
Importar claves simétricas utilizando una clave de intercambio preestablecida (TR-31)
![AWS Proceso de importación de claves simétricas de criptografía de pagos](images/keyimport-process-wk-import.png)
Una vez establecida una KEK, puede utilizarla para transportar las siguientes claves (incluidas otras KEK). AWS La criptografía de pagos admite este tipo de intercambio de claves mediante la norma ANSI TR-31, que es ampliamente utilizada y respaldada por los proveedores de HSM.
- 1. Importar clave de cifrado (KEK)
-
Se supone que ya ha importado su KEK y tiene a su disposición el keyARN (o keyAlias).
- 2. Crear la clave en la plataforma de origen
-
Si la clave aún no existe, cree la clave en la plataforma de origen. A la inversa, puede crear la clave en AWS Payment Cryptography y utilizar el comando
export
en su lugar. - 3. Exportar la clave desde la plataforma de origen
-
Al exportar, asegúrese de que especifica el formato de exportación como TR-31. La plataforma fuente también le preguntará por la clave a exportar y la clave de encriptación a utilizar.
- 4. AWS Importa a Payment Cryptography
-
Al ejecutar el comando ImportKey, WrappingKeyIdentifier debe ser el keyArn (o alias) de la clave de cifrado y el resultado de la WrappedKeyBlock plataforma de origen.
$
aws payment-cryptography import-key \ --key-material="Tr31KeyBlock={WrappingKeyIdentifier="arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",\ WrappedKeyBlock="D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"}"
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "KeyAttributes": { "KeyUsage": "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": true, "Decrypt": true, "Wrap": true, "Unwrap": true, "Generate": false, "Sign": false, "Verify": false, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "0A3674", "KeyCheckValueAlgorithm": "CMAC", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "EXTERNAL", "CreateTimestamp": "2023-06-02T07:38:14.913000-07:00", "UsageStartTimestamp": "2023-06-02T07:38:14.857000-07:00" } }
Importar claves asimétricas (RSA)
Importar claves públicas RSA
AWS La criptografía de pagos permite importar claves RSA públicas en forma de certificados X.509. Para importar un certificado, deberá importar primero su certificado raíz. Todos los certificados deben estar vigentes en el momento de la importación. El certificado deberá estar en formato PEM y codificado en base64.
- 1. Importe el certificado raíz a la criptografía de pagos AWS
-
$
aws payment-cryptography import-key \ --key-material='{"RootCertificatePublicKey":{"KeyAttributes":{"KeyAlgorithm":"RSA_2048", \ "KeyClass":"PUBLIC_KEY", "KeyModesOfUse":{"Verify": true},"KeyUsage":"TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \ "PublicKeyCertificate":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKVENDQWcyZ0F3SUJBZ0lCWkRBTkJna3Foa2lHOXcwQkFR..."}}'
{ "Key": { "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", "KeyAttributes": { "KeyAlgorithm": "RSA_2048", "KeyClass": "PUBLIC_KEY", "KeyModesOfUse": { "Decrypt": false, "DeriveKey": false, "Encrypt": false, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": false, "Verify": true, "Wrap": false }, "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE" }, "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2023-08-08T18:52:01.023000+00:00" } }
- 2. Importe un certificado de clave pública a la criptografía AWS de pagos
-
Ahora puede importar una clave pública. Existen dos opciones para importar claves públicas.
TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE
puede utilizarse si el propósito de la clave es verificar firmas (por ejemplo, al importar utilizando TR-34).TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION
puede utilizarse cuando se encriptan datos destinados a ser utilizados con otro sistema.$
aws payment-cryptography import-key \ --key-material='{"TrustedCertificatePublicKey":{"CertificateAuthorityPublicKeyIdentifier":"arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", \ "KeyAttributes":{"KeyAlgorithm":"RSA_2048","KeyClass":"PUBLIC_KEY","KeyModesOfUse":{"Verify":true},"KeyUsage":"TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"},\ "PublicKeyCertificate":"LS0tLS1CRUdJTiB..."}}'
{ "Key": { "CreateTimestamp": "2023-08-08T18:55:46.815000+00:00", "Enabled": true, "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk", "KeyAttributes": { "KeyAlgorithm": "RSA_4096", "KeyClass": "PUBLIC_KEY", "KeyModesOfUse": { "Decrypt": false, "DeriveKey": false, "Encrypt": false, "Generate": false, "NoRestrictions": false, "Sign": false, "Unwrap": false, "Verify": true, "Wrap": false }, "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE" }, "KeyOrigin": "EXTERNAL", "KeyState": "CREATE_COMPLETE", "UsageStartTimestamp": "2023-08-08T18:55:46.815000+00:00" } }