万事达卡的特定功能 - AWS 支付密码学

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

万事达卡的特定功能

DCVC3

DCVC3 早于 EMV CSK 和万事达卡 CVN12 计划,代表了另一种使用动态密钥的方法。它有时也会被重新用于其他用例。在该方案中,输入是 PAN、PSN、Track1/Track2 数据、不可预测的数字和交易计数器 (ATC)。

创建密钥

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

响应会回显请求参数,包括后续调用的 ARN 以及密钥检查值 (KCV)。

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

注意代表密钥的那个KeyArn,例如 arn: aws: payment-cryptography: us-east-2:: key/hrh6qgbi3sk4y3wq。您需要在下一步中执行该操作。

生成一个 DCVC3

尽管芯片卡 DCVC3 可能由芯片卡生成,但也可以手动生成,如本例所示

$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk --primary-account-number=5413123456784808 --generation-attributes DynamicCardVerificationCode='{ApplicationTransactionCounter=0000,TrackData=5241060000000069D13052020000000000003F,PanSequenceNumber=00,UnpredictableNumber=00000000}''
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4", "ValidationData": "865" }

验证 DCVC3

在此示例中,我们将验证 DCVC3。请注意,ATC 应以十六进制数字提供,例如,计数器 11 应表示为 000B。该服务需要一个 3 位数字 DCVC3,因此,如果您存储了 4(或 5)位数的值,只需截断左边的字符直到有 3 位数字(例如,15321 的验证数据值应为 321)。

如果 AWS 支付密码学能够验证,则会返回 http/200。如果该值未经过验证,它将返回 http/400 响应。

$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk --primary-account-number=5413123456784808 --verification-attributes DynamicCardVerificationCode='{ApplicationTransactionCounter=000B,TrackData=5241060000000069D13052020000000000003F,PanSequenceNumber=00,UnpredictableNumber=00000001}' --validation-data 398
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4" }

ARQC-/ CVN14CVN15

CVN14 并 CVN15 使用 EMV CSK 方法进行密钥推导。这两种方法的确切交易数据会有所不同,有关构造交易数据字段的详细信息,请参阅方案文档。

ARQC-/ CVN12CVN13

CVN12 并且 CVN13 是针对EMV交易的较旧万事达卡专用方法,它在每笔交易的推导中加入了不可预测的数字,并且还使用了不同的有效载荷。有关有效载荷内容的信息,请联系该计划。

创建密钥

$ 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":"CVN12"},{"Key":"CARD_BIN","Value":"12345678"}]'

响应会回显请求参数,包括后续调用的 ARN 以及密钥检查值 (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" } }

注意代表密钥的那个KeyArn,例如 arn: aws: payment-cryptography: us-east-2:: key/pw3s6nl62 t5ushfk。您需要在下一步中执行该操作。

验证 ARQC

在此示例中,我们将验证使用万事达卡生成的 ARQC。 CVN12

如果 AWS 支付密码学能够验证 ARQC,则会返回 http/200。如果 arqc 未经过验证,将返回 http/400 响应。

$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram 31BE5D49F14A5F01 \ --key-identifier arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk \ --major-key-derivation-mode EMV_OPTION_A \ --transaction-data 0000000015000000000000000840000000000008402312120197695905 \ --session-key-derivation-attributes='{"Mastercard":{"PanSequenceNumber":"01" \ ,"PrimaryAccountNumber":"9137631040001422","ApplicationTransactionCounter":"000B","UnpredictableNumber":"34343434"}}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4" }