Importar claves - AWS Criptografía de pagos

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

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

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. Para obtener instrucciones sobre cómo importar o exportar claves de otras plataformas, consulte la guía del usuario de dichas plataformas.

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 of ROOT_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 El certificate-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 y signing-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 el key-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

Cuando los socios intercambian varias claves (o para permitir la rotación de claves), lo habitual es intercambiar primero una clave de cifrado de clave (KEK) inicial mediante técnicas como componentes de clave en papel o, en el caso de la criptografía de AWS pagos, mediante el TR-34.

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" } }