本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Visa 特定函數
ARQC - CVN18/CVN22
CVN18 和 CVN22 使用金鑰衍生的 CSK 方法。確切的交易資料在這兩種方法之間有所不同 - 如需建構交易資料欄位的詳細資訊,請參閱方案文件。
ARQC - CVN10
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:111122223333: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:111122223333:key/pw3s6nl62t5ushfk。在下一個步驟中,您需要用到。
驗證 ARQC
範例
在此範例中,我們將驗證使用 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" }
3DS CAVV V7
對於 Visa Secure (3DS) 交易,發行者存取控制伺服器 (ACS) 會產生 CAVV (持卡人身分驗證值)。CAVV 是持卡人身分驗證發生的證據,對於每個身分驗證交易都是唯一的,並由授權訊息中的取得者提供。CAVV v7 會將交易的其他資料繫結至核准,包括商家名稱、購買金額和購買日期等元素。透過這種方式,它實際上是交易承載的密碼編譯雜湊。
CAVV V7 以密碼編譯方式使用 CVV 演算法,但輸入都已變更/重新使用。如需如何產生輸入以產生 CAVV V7 承載,請參閱適當的第三方/ 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:111122223333: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:111122223333:key/dnaeyrjgdjjtw6dk。在下一個步驟中,您需要用到。
產生 CAVV V7
範例
在此範例中,我們將為具有規格中指定輸入的特定交易產生 CAVV V7。請注意,對於此演算法,欄位可能會重複使用/重新使用,因此不應假設欄位標籤符合輸入。
如需所有可用的參數,請參閱 API 參考指南中的 CardVerificationValue1。
$aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=9431,ServiceCode=431}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333: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:111122223333:key/dnaeyrjgdjjtw6dk --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=9431,ServiceCode=431} --validation-data 491
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk", "KeyCheckValue": "F3FB13", "ValidationData": "491" }
dCVV (動態卡驗證值) - CVN17
dCVV (動態卡驗證值) 是 Visa 特定的動態密碼編譯,用於非接觸式 EMV 交易。它稱為早期 EMV,並透過為每個交易產生唯一的驗證值來提供增強的安全性。dCVV 使用輸入,包括主要帳戶號碼 (PAN)、PAN 序號 (PSN)、應用程式交易計數器 (ATC)、不可預測號碼和追蹤資料。它在某些地方仍然使用,但大部分已被 CVN18 等其他演算法取代。
如需所有可用的參數,請參閱 API 參考指南中的 DynamicCardVerificationValue。
建立金鑰
$aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"DCVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
回應會回傳請求參數,包括後續呼叫的 ARN 以及金鑰檢查值 (KCV)。
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc", "KeyAttributes": { "KeyUsage": "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS", "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": "A8E4D2", "KeyCheckValueAlgorithm": "ANSI_X9_24", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2025-02-02T11:45:30.648000-08:00", "UsageStartTimestamp": "2025-02-02T11:45:30.626000-08:00" } }
請記下代表金鑰KeyArn的 ,例如 arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc。在下一個步驟中,您需要用到。
產生 dCVV
範例
在此範例中,我們將為非接觸式 EMV 交易產生 dCVV。輸入包括 PAN、PAN 序號、應用程式交易計數器、不可預測的數字和追蹤資料。
$aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc \ --primary-account-number=5111112627662122 \ --generation-attributes DynamicCardVerificationValue='{ApplicationTransactionCounter=01,PanSequenceNumber=00,TrackData=12345,UnpredictableNumber=123}' \ --validation-data-length 5
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc", "KeyCheckValue": "A8E4D2", "ValidationData": "36667" }
驗證 dCVV
範例
在此範例中,我們將驗證交易期間提供的 dCVV。必須提供用於產生 的相同輸入以進行驗證。
如果 AWS 付款密碼編譯能夠驗證,則會傳回 http/200。如果未驗證值,則會傳回 http/400 回應。
$aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc \ --primary-account-number=5111112627662122 \ --validation-data=36667 \ --verification-attributes DynamicCardVerificationValue='{ApplicationTransactionCounter=01,PanSequenceNumber=00,TrackData=12345,UnpredictableNumber=123}'
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc", "KeyCheckValue": "A8E4D2" }