驗證身份驗證請求(ARQC)密碼編譯 - AWS 支付密碼學

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

驗證身份驗證請求(ARQC)密碼編譯

驗證身份驗證請求加密 API 用於驗證 AR QC。ARQC 的生成不在 AWS 支付密碼學的範圍內,通常在交易授權時間內在 EMV 芯片卡(或數字等效信息,例如移動錢包)上進行。ARQC 對每筆交易都是唯一的,旨在以密碼方式顯示卡的有效性,以及確保交易數據與當前(預期)交易完全匹配。

AWS 支付密碼學提供了多種用於驗證 ARQC 和生成可選 ARPC 值的選項,包括 EMV 4.4 第 2 冊中定義的值以及 Visa 和萬事達卡使用的其他方案。如需所有可用選項的完整清單,請參閱 API 指南中的 VerifyCardValidationData 章節。

ARQC 密碼編譯通常需要以下輸入(儘管這可能因實現而異):

  • PAN-在 PrimaryAccountNumber 欄位中指定

  • PAN 序列號碼(PSN)— 在字段中指定 PanSequenceNumber

  • 密鑰派生方法,例如通用會話密鑰(CSK)-在 SessionKeyDerivationAttributes

  • 主密鑰派生模式(例如 EMV 選項 A)-在 MajorKeyDerivationMode

  • 交易資料-在欄位中指定的各種交易、終端機和卡片資料的字串,例如「金額」和「日期 TransactionData 」

  • 發行者主密鑰-用於導出用於保護個別交易並在字段中指定的密碼(AC)密鑰的 KeyIdentifier 主密鑰

建築物交易數據

交易資料欄位的確切內容 (和順序) 會因實作和網路配置而異,但建議的最小欄位 (和串連順序) 在 EMV 4.4 第 2 冊第 8.1.1 節- 資料選取中定義。如果前三個字段是金額(17.00),其他金額(0.00)和購買國家,這將導致交易數據開始如下:

  • 000000001700-金額-12 個位置隱含兩位數十進制

  • 000000000000-其他金額-12 位隱含兩位數十進制

  • 0124-四位數國家代碼

  • 輸出 (部分) 交易資料

交易資料填充

交易數據應在發送到服務之前填充。大多數配置使用 ISO 9797 方法 2 填充,其中一個十六進制字符串附加十六進制 80 後跟 00,直到該字段是加密塊大小的倍數; 8 個字節或 16 個字符的 TDES 和 16 個字節或 32 個字符為 AES。替代方法(方法 1)並不常見,但只使用 00 作為填充字符。

方法 1 填充

未填充字元:00000000170000000000000008400080008000084016051700000000093800000B03011203 (74 個字元或 37 個位元組)

已填充:00000000170000000000000008400080008000084016051700000000093800000B03011203 (80 個字元或 40 個位元組)

方法二填充

未填充字元:00000000170000000000000008400080008000084016051700000000093800000B1F220103000000 (80 個字元或 40 個位元組)

已填充:00000000170000000000000008400080008000084016051700000000093800000B1F220103000000 (88 個字元或 44 個位元組)

範例

美國簽證 CVN10

在這個例子中,我們將驗證使用簽證 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" }

CVN18 簽證及簽證 CVN22

在這個例子中,我們將驗證使用簽證 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" }