Genera un pin aleatorio y el PVV asociado y, a continuación, verifica el valor - 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.

Genera un pin aleatorio y el PVV asociado y, a continuación, verifica el valor

Crea la (s) clave (s)

Para generar un pin aleatorio y el PVV, necesitarás dos claves: una clave de verificación del PIN (PVK) para generar el PVV y una clave de cifrado del PIN para cifrar el pin. El pin en sí se genera aleatoriamente de forma segura dentro del servicio y no está relacionado criptográficamente con ninguna de las claves.

El PGK debe ser una clave del algoritmo TDES_2KEY basado en el propio algoritmo PVV. Un PEK puede ser TDES_2KEY, TDES_3KEY o AES_128. En este caso, dado que el PEK está diseñado para uso interno en el sistema, el AES_128 sería una buena opción. Si un PEK se utiliza para intercambiarlo con otros sistemas (p. ej., redes de tarjetas, entidades adquirentes ATMs) o se va a trasladar como parte de una migración, TDES_2KEY puede ser la opción más adecuada por motivos de compatibilidad.

Cree el PEK

$ aws payment-cryptography create-key \ --exportable --key-attributes KeyAlgorithm=AES_128,KeyUsage=TR31_P0_PIN_ENCRYPTION_KEY,\ KeyClass=SYMMETRIC_KEY,\ KeyModesOfUse='{Encrypt=true,Decrypt=true,Wrap=true,Unwrap=true}' --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'

La respuesta refleja los parámetros de la solicitud, incluyendo un ARN para las llamadas posteriores y un valor de verificación clave (KCV).

{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "KeyAttributes": { "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": true, "Sign": false, "Verify": true, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "7CC9E2", "KeyCheckValueAlgorithm": "CMAC", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00", "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00" } }

Tome nota de lo KeyArn que representa la clave, por ejemplo arn:aws:payment-cryptography:us-east-2: :key/ivi5ksfsuplneuyt. Lo necesitará en el siguiente paso.

Crea el PVK

$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_V2_VISA_PIN_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'

La respuesta refleja los parámetros de la solicitud, incluyendo un ARN para las llamadas posteriores y un valor de verificación clave (KCV).

{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/ov6icy4ryas4zcza", "KeyAttributes": { "KeyUsage": "TR31_V2_VISA_PIN_VERIFICATION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "TDES_2KEY", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": true, "Sign": false, "Verify": true, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "51A200", "KeyCheckValueAlgorithm": "ANSI_X9_24", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00", "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00" } }

Tome nota de lo KeyArn que representa la clave, por ejemplo arn:aws:payment-cryptography:us-east-2: :key/ov6icy4ryas4zcza. Lo necesitará en el siguiente paso.

Genera un pin aleatorio, genera el PVV y devuelve el PIN y el PVV cifrados

En este ejemplo, generaremos un nuevo pin (aleatorio) de 4 dígitos donde las salidas serán cifradas PIN block (. PinData PinBlock) y un PVV (PinData). VerificationValue). Las entradas clave son PAN el formato Pin Verification Key (también conocido como clave de generación de pines) Pin Encryption Key y el formato PIN Block.

Este comando requiere que la clave sea de tipoTR31_V2_VISA_PIN_VERIFICATION_KEY.

$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes VisaPin={PinVerificationKeyIndex=1}
{ "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2", "GenerationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", "EncryptedPinBlock": "AC17DC148BDA645E", "PinData": { "VerificationValue": "5507" } }

Valide el PIN cifrado mediante el método PVV

En este ejemplo, validaremos un PIN para un PAN determinado. Por lo general, el titular de la tarjeta o el usuario proporcionan el PIN durante el momento de la transacción para su validación y se compara con el valor registrado (la entrada del titular de la tarjeta se proporciona como un valor cifrado del terminal u otro proveedor principal). Para validar esta entrada, también se proporcionarán los siguientes valores en tiempo de ejecución: el pin cifrado, la clave utilizada para cifrar el pin de entrada (a menudo denominado IWK) PAN y el valor con el que realizar la verificación (a PVV oPIN offset).

Si la criptografía de AWS pago puede validar el PIN, se devuelve un http/200. Si el pin no está validado, devolverá un http/400.

$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=5507}" --encrypted-pin-block AC17DC148BDA645E
{ "VerificationKeyArn": "arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2", "VerificationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", }