本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
验证身份验证请求 (ARQC) 密码 验证身份验证请求密码 API 用于验证 ARQC。ARQC的生成不在 AWS 支付密码学的范围之内,通常在交易授权期间使用EMV芯片卡(或数字等效物,例如移动钱包)执行。ARQC 对于每笔交易都是唯一的,旨在以加密方式显示卡的有效性并确保交易数据与当前(预期)交易完全匹配。
AWS 支付密码学为验证ARQC和生成可选的ARPC值提供了多种选项,包括 EMV 4.4 Book 2 中定义的值以及Visa和Mastercard使用的其他方案。有关所有可用选项的完整列表,请参阅 API 指南中的 VerifyCardValidationData 部分。
ARQC 密码通常需要以下输入(尽管这可能因实现而异):
PAN-在 PrimaryAccountNumber 字段中指定
PAN 序列号 (PSN)-在字段中指 PanSequenceNumber 定
密钥派生方法,例如通用会话密钥 (CSK)-在 SessionKeyDerivationAttributes
主密钥派生模式(例如 EMV 选项 A)-在 MajorKeyDerivationMode
交易数据-在 TransactionData 字段中指定的各种交易、终端和银行卡数据的字符串,例如金额和日期
颁发者主密钥-用于派生用于保护个人交易并在字段中指定的密码 (AC) 密钥的主密钥 KeyIdentifier
主题建立交易数据
交易数据填充
示例
建立交易数据
交易数据字段的确切内容(和顺序)因实现和网络方案而异,但最低推荐字段(和串联顺序)在 EMV 4.4 Book 2 第 8.1.1 节 ——数据选择中定义。如果前三个字段是金额 (17.00)、其他金额 (0.00) 和购买国家,则交易数据将按以下方式开始:
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 个字节)
示例
签证 CVN1 0
在此示例中,我们将验证使用 Visa CVN1 0 生成的 ARQC。
如果 AWS 支付密码学能够验证 ARQC,则会返回 http/200。如果 ARCQ(授权请求密码)未经过验证,它将返回 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"
}
签证 CVN18 和签证 CVN22
在此示例中,我们将验证使用Vis CVN18 a或生成的ARQC。 CVN22 CVN18 和之间的加密操作相同, CVN22 但交易数据中包含的数据有所不同。与 CVN1 0 相比,即使输入相同,也会生成完全不同的密码。
如果 AWS 支付密码学能够验证 ARQC,则会返回 http/200。如果 ARCQ 未经过验证,它将返回 http/400。
$ aws payment-cryptography-data verify-auth-request-cryptogram \
--auth-request-cryptogram 61EDCC708B4C97B4
--key-identifier arn:aws:payment-cryptography:us-east-2::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::key/pw3s6nl62t5ushfk",
"KeyCheckValue": "08D7B4"
}