本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
验证身份验证请求 (ARQC) 密码
验证身份验证请求密码 API 用于验证 ARQC。ARQC的生成不在 AWS 支付密码学的范围之内,通常在交易授权期间使用EMV芯片卡(或数字等效物,例如移动钱包)执行。ARQC 对于每笔交易都是唯一的,旨在以加密方式显示卡的有效性并确保交易数据与当前(预期)交易完全匹配。
AWS 支付密码学为验证ARQC和生成可选的ARPC值提供了多种选项,包括 EMV 4.4 Book 2
ARQC 密码通常需要以下输入(尽管这可能因实现而异):
-
PAN-在 PrimaryAccountNumber 字段中指定
-
PAN 序列号 (PSN)-在字段中指 PanSequenceNumber 定
-
密钥派生方法,例如通用会话密钥 (CSK)-在 SessionKeyDerivationAttributes
-
主密钥派生模式(例如 EMV 选项 A)-在 MajorKeyDerivationMode
-
交易数据-在 TransactionData 字段中指定的各种交易、终端和银行卡数据的字符串,例如金额和日期
-
颁发者主密钥-用于派生用于保护个人交易并在字段中指定的密码 (AC) 密钥的主密钥 KeyIdentifier
建立交易数据
交易数据字段的确切内容(和顺序)因实现和网络方案而异,但最低推荐字段(和串联顺序)在 EMV 4.4 Book 2 第 8.1.1 节
-
000000001700 - 金额 - 12 位隐含两位小数
-
000000000000 - 其他金额 - 12 位隐含两位小数
-
0124 - 四位数国家代码
-
输出(部分)交易数据 - 0000000017000000000000000124
交易数据填充
在将交易数据发送到服务之前,应先填充交易数据。大多数方案使用 ISO 9797 方法 2 填充,其中十六进制字符串后面加上十六进制 80,然后加上 00,直到该字段是加密块大小的倍数;TDES 为 8 字节或 16 个字符,AES 为 16 字节或 32 个字符。替代方案(方法 1)并不常见,但仅使用 00 作为填充字符。
ISO 9797 方法 1 填充
未填充:00000000170000000000000008400080008000084016051700000000093800000B03011203(74 个字符或 37 个字节)
填充:00000000170000000000000008400080008000084016051700000000093800000B03011203000000(80 个字符或 40 个字节)
ISO 9797 方法 2 填充
未填充:00000000170000000000000008400080008000084016051700000000093800000B1F220103000000(80 个字符或 40 个字节)
填充:00000000170000000000000008400080008000084016051700000000093800000B1F2201030000008000000000000000(88 个字符或 44 个字节)
示例
Visa CVN10
在此示例中,我们将验证使用 Visa CVN10 生成的 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:111122223333: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:111122223333:key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4" }
Visa CVN18 和 Visa CVN22
在此示例中,我们将验证使用 Visa CVN18 或 CVN22 生成的 ARQC。CVN18 和 CVN22 之间的加密操作相同,但交易数据中包含的数据有所不同。与 CVN10 相比,即使输入相同,也会生成完全不同的密码。
如果 AWS 支付密码学能够验证 ARQC,则会返回 http/200。如果 arqc 未经过验证,将返回 http/400。
$
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 00000000170000000000000008400080008000084016051700000000093800000B1F22010300000000000 \ 00000000000000000000000000000000000000000008000000000000000 --session-key-derivation-attributes='{"EmvCommon":{"ApplicationTransactionCounter":"000B", \ "PanSequenceNumber":"01","PrimaryAccountNumber":"9137631040001422"}}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4" }