本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
驗證身分驗證請求 (ARQC) 密碼編譯
驗證身分驗證請求密碼編譯 API 用於驗證 ARQC。ARQC 的產生超出 AWS 付款密碼編譯的範圍,通常在交易授權期間在 EMV Chip 卡 (或行動錢包等數位卡) 上執行。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 Section 8.1.1 - Data Selection
-
000000001700 - 金額 - 12 個位置隱含兩位數小數位數
-
000000000000 - 其他金額 - 12 個位置隱含兩位數小數位數
-
0124 - 四位數國碼
-
輸出 (部分) 交易資料 - 0000000017000000000000000124
交易資料填補
交易資料應在傳送至服務之前填入。大多數方案使用 ISO 9797 方法 2 填補,其中十六進位字串附加 hex 80 後接 00,直到 欄位是加密區塊大小的倍數;TDES 為 8 位元組或 16 個字元,AES 為 16 位元組或 32 個字元。替代方案 (方法 1) 並不常見,但僅使用 00 做為填補字元。
ISO 9797 方法 1 填補
未填補:00000000170000000000000008400080008000084016051700000000093800000B03011203 (74 個字元或 37 個位元組)
填充:00000000170000000000000008400080008000084016051700000000093800000B030112030000000 (80 個字元或 40 個位元組)
ISO 9797 方法 2 填補
未填補:00000000170000000000000008400080008000084016051700000000093800000B1F220103000000 (80 個字元或 40 個位元組)
填充:00000000170000000000000008400080008000084016051700000000093800000B1F2201030000008000000000000000 (88 個字元或 44 個位元組)
範例
Visa CVN10
在此範例中,我們將驗證使用 Visa CVN10 產生的 ARQC。
如果 AWS 付款密碼編譯能夠驗證 ARQC,則會傳回 http/200。如果未驗證 ARCQ (Authorization Request Cryptogram),則會傳回 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" }
Visa CVN18 和 Visa CVN22
在此範例中,我們將驗證使用 Visa CVN18 或 CVN22 產生的 ARQC。CVN18 和 CVN22 之間的密碼編譯操作相同,但交易資料中包含的資料會有所不同。與 CVN10 相比,即使輸入相同,也會產生完全不同的密碼編譯。
如果 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" }