View a markdown version of this page

Générez une broche aléatoire et le PVV associé, puis vérifiez la valeur - 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.

Générez une broche aléatoire et le PVV associé, puis vérifiez la valeur

Créez la ou les clés

Pour générer un code PIN aléatoire et le PVV, vous aurez besoin de deux clés, une clé de vérification du code PIN (PVK) pour générer le PVV et une clé de cryptage du code PIN pour crypter le code PIN. Le code PIN lui-même est généré de manière aléatoire en toute sécurité dans le service et n'est lié à aucune des clés de manière cryptographique.

Le PGK doit être une clé de l'algorithme TDES_2KEY basé sur l'algorithme PVV lui-même. Un PEK peut être TDES_2KEY, TDES_3KEY ou AES_128. Dans ce cas, étant donné que le PEK est destiné à un usage interne au sein de votre système, l'AES_128 serait un bon choix. Si un PEK est utilisé pour l'échange avec d'autres systèmes (réseaux de cartes, acquéreurs, guichets automatiques, par exemple) ou s'il est déplacé dans le cadre d'une migration, TDES_2KEY peut être le choix le plus approprié pour des raisons de compatibilité.

Créez le 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 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:111122223333: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" } }

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

Créez le 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 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:111122223333: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" } }

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

Générez un code PIN aléatoire, générez un PVV et renvoyez le code PIN et le PVV cryptés

Exemple

Dans cet exemple, nous allons générer une nouvelle broche (aléatoire) à 4 chiffres dont les sorties seront chiffrées PIN block (PinData.PinBlock) et PVV (brocheData.VerificationValue). Les entrées clés sont PAN le format Pin Verification Key (également connu sous le nom de clé de génération de broches), le Pin Encryption Key et le format PIN Block.

Cette commande nécessite que la clé soit de typeTR31_V2_VISA_PIN_VERIFICATION_KEY.

$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333: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:111122223333:key/37y2tsl45p5zjbh2", "GenerationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", "EncryptedPinBlock": "AC17DC148BDA645E", "PinData": { "VerificationValue": "5507" } }

Valider le code PIN chiffré en utilisant la méthode PVV

Exemple

Dans cet exemple, nous allons valider un code PIN pour un PAN donné. Le code PIN est généralement fourni par le titulaire de la carte ou l'utilisateur au moment de la transaction à des fins de validation et est comparé à la valeur enregistrée (la saisie par le titulaire de la carte est fournie sous forme de valeur cryptée depuis le terminal ou un autre fournisseur en amont). Afin de valider cette saisie, les valeurs suivantes seront également fournies lors de l'exécution : le code PIN chiffré, la clé utilisée pour chiffrer le code PIN d'entrée (souvent appelée IWK) PAN et la valeur à vérifier (a PVV ouPIN offset).

Si AWS Payment Cryptography est en mesure de valider le code PIN, celui-ci http/200 est renvoyé. Si le code PIN n'est pas validé, il renverra un http/400.

$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333: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:111122223333:key/37y2tsl45p5zjbh2", "VerificationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", }