签证特定功能 - AWS 支付密码学

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

签证特定功能

ARQC-/ CVN18CVN22

CVN18 并 CVN22 使用 CSK 密钥派生方法。这两种方法的确切交易数据会有所不同,有关构造交易数据字段的详细信息,请参阅方案文档。

ARQC-0 CVN1

CVN10 是 EMV 交易的旧版 Visa 方法,它使用每卡密钥派生而不是会话(每笔交易)派生,并且还使用不同的有效负载。有关有效载荷内容的信息,请联系该计划了解详情。

创建密钥

$ 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"}]'

响应会回显请求参数,包括后续调用的 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

在此示例中,我们将验证使用 Visa CVN1 0 生成的 ARQC。

如果 AWS 支付密码学能够验证 ARQC,则会返回 http/200。如果 arqc 未经过验证,将返回 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

对于 Visa Secure (3DS) 交易,CAVV(持卡人身份验证值)由发卡机构访问控制服务器 (ACS) 生成。CAVV 是进行持卡人身份验证的证据,对于每笔身份验证交易都是唯一的,由收单方在授权消息中提供。CAVV v7 将有关交易的其他数据与批准绑定,包括商家名称、购买金额和购买日期等要素。这样,它实际上就是交易有效载荷的加密哈希值。

从密码学上讲,CAVV V7使用了CVV算法,但是输入都是关于如何生成输入以生成CAVV V7有效载荷的changed/repurposed. Please consult appropriate third party/Visa文档。

创建密钥

$ 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"}]'

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

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

生成 CAVV V7

在此示例中,我们将为给定交易生成 CAVV V7,其输入如规范中所述。请注意,对于此算法,字段可以重复使用/重新利用,因此不应假设字段标签与输入相匹配。

有关所有可用参数,请参阅 API 参考指南中的 CardVerificationValue1

$ 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" }

验证 CAVV V7

为了进行验证,输入是 CVK、计算的输入值和交易期间提供的待验证的 CAVV。

有关所有可用参数,请参阅 API 参考指南中的 CardVerificationValue1

注意

CAVV 不是用户输入的值(比如 CVV2),而是由发行机构 ACS 计算的。应考虑在提供时是否应始终进行验证。

$ 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" }