本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
验证EMVARQC并生成 ARPC
ARQC(授权请求 Cryptogram)是一种由EMV(芯片)卡生成的密码,用于验证交易细节以及授权卡的使用。它包含来自卡、终端和交易本身的数据。
在后端进行验证时,会向 P AWS ayment Cryptography 提供相同的输入,在内部重新创建密码,并将其与交易中提供的价值进行比较。从这个意义上讲,它类似于MAC。EMV4.4 第 2 本书
个别信用卡方案可以指定要合并的其他交易字段或这些字段的显示顺序。还存在其他(通常不推荐使用的)特定于方案的派生方案,本文档的其他部分对此进行了介绍。
有关更多信息,请参阅API指南VerifyCardValidationData中的。
创建密钥
$
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":"CVN18"},{"Key":"CARD_BIN","Value":"12345678"}]'
响应会回显请求参数,包括ARN用于后续调用的参数以及密钥检查值 (KCV)。
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333: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:111122223333: key/pw3s6nl62 t5ushfk。您需要在下一步中执行该操作。
生成一个 ARQC
完全由EMV卡片生成。ARQC因此, AWS 支付密码学没有生成此类有效载荷的工具。出于测试目的,在线提供了许多库,这些库可以生成适当的有效载荷以及各种方案通常提供的已知值。
验证一个 ARQC
如果 AWS 支付密码学能够验证,则会返回 http/200。ARQC验证后,可以选择提供ARPC(响应)并将其包含在响应中。ARQC
$
aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram 61EDCC708B4C97B4 --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk --major-key-derivation-mode EMV_OPTION_A --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B1F2201030000000000000000000000000000000000000000000000000000008000000000000000 --session-key-derivation-attributes='{"EmvCommon":{"ApplicationTransactionCounter":"000B", "PanSequenceNumber":"01","PrimaryAccountNumber":"9137631040001422"}}' --auth-response-attributes='{"ArpcMethod2":{"CardStatusUpdate":"12345678"}}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4", "AuthResponseValue":"2263AC85" }