Fonctions spécifiques à Visa - AWS Cryptographie des paiements

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fonctions spécifiques à Visa

ARQC -/ CVN18CVN22

CVN18 et CVN22 utilisez la méthode CSK de dérivation des clés. Les données de transaction exactes varient entre ces deux méthodes. Consultez la documentation du schéma pour plus de détails sur la création du champ de données de transaction.

ARQC - 0 CVN1

CVN10 est une ancienne méthode Visa pour les transactions EMV qui utilise la dérivation de clé par carte plutôt que la dérivation de session (par transaction) et utilise également une charge utile différente. Pour plus d'informations sur le contenu de la charge utile, veuillez contacter le programme pour plus de détails.

Créer une clé

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

La réponse renvoie les paramètres de la demande, y compris un ARN pour les appels suivants ainsi qu'une valeur de contrôle clé (KCV).

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

Prenez note de KeyArn ce qui représente la clé, par exemple arn:aws:payment-cryptography:us-east-2 : :key/pw3s6nl62t5ushfk. Vous en aurez besoin à l'étape suivante.

Valider l'ARQC

Dans cet exemple, nous allons valider un ARQC généré à l'aide de Visa CVN1 0.

Si AWS Payment Cryptography est en mesure de valider l'ARQC, un http/200 est renvoyé. Si l'arqc n'est pas validé, il renverra une réponse http/400.

$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram D791093C8A921769 \ --key-identifier arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk \ --major-key-derivation-mode EMV_OPTION_A \ --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B03011203000000 \ --session-key-derivation-attributes='{"Visa":{"PanSequenceNumber":"01" \ ,"PrimaryAccountNumber":"9137631040001422"}}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4" }

CAVV V7

Pour les transactions Visa Secure (3DS), une valeur de vérification de l'authentification du titulaire de la carte (CAVV) est générée par le serveur de contrôle d'accès (ACS) de l'émetteur. Le CAVV prouve que l'authentification du titulaire de la carte a eu lieu. Il est unique pour chaque transaction d'authentification et est fourni par l'acquéreur dans le message d'autorisation. CAVV v7 lie des données supplémentaires sur la transaction à l'approbation, y compris des éléments tels que le nom du commerçant, le montant de l'achat et la date d'achat. De cette manière, il s'agit effectivement d'un hachage cryptographique de la charge utile de la transaction.

Sur le plan cryptographique, le CAVV V7 utilise l'algorithme CVV, mais les entrées ont toutes été de la changed/repurposed. Please consult appropriate third party/Visa documentation sur la façon de produire les entrées pour générer une charge utile CAVV V7.

Créez la clé

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

La réponse renvoie les paramètres de la demande, y compris un ARN pour les appels suivants ainsi qu'une valeur de contrôle clé (KCV).

{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/dnaeyrjgdjjtw6dk", "KeyAttributes": { "KeyUsage": "TR31_C0_CARD_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": "F3FB13", "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" } }

Prenez note de KeyArn ce qui représente la clé, par exemple arn:aws:payment-cryptography:us-east-2 : :key/dnaeyrjgdjjtw6dk. Vous en aurez besoin à l'étape suivante.

Générer un CAVV V7

Dans cet exemple, nous allons générer un CAVV V7 pour une transaction donnée avec des entrées telles que spécifiées dans les spécifications. Notez que pour cet algorithme, les champs peuvent être réutilisés/réutilisés. Il ne faut donc pas supposer que les étiquettes des champs correspondent aux entrées.

Pour tous les paramètres disponibles, voir CardVerificationValue1 dans le guide de référence de l'API.

$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2::key/dnaeyrjgdjjtw6dk --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=9431,ServiceCode=431}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/dnaeyrjgdjjtw6dk", "KeyCheckValue": "F3FB13", "ValidationData": "491" }

Valider CAVV V7

Pour la validation, les entrées sont le CVK, les valeurs d'entrée calculées et le CAVV fourni lors de la transaction à valider.

Pour tous les paramètres disponibles, voir CardVerificationValue1 dans le guide de référence de l'API.

Note

Le CAVV n'est pas une valeur saisie par l'utilisateur (similaire CVV2) mais est calculé par l'émetteur ACS. Il convient de se demander s'il doit toujours être validé lorsqu'il est fourni.

$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2::key/dnaeyrjgdjjtw6dk --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=9431,ServiceCode=431} --validation-data 491
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/dnaeyrjgdjjtw6dk", "KeyCheckValue": "F3FB13", "ValidationData": "491" }