產生和驗證 EMV MAC - AWS 付款密碼編譯

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

產生和驗證 EMV MAC

EMV MAC 是 MAC,使用 EMV 衍生金鑰的輸入,然後在產生的資料上執行 ISO9797-3 (零售) MAC。EMV MAC 通常用於將命令傳送至 EMV 卡,例如解除封鎖指令碼。

注意

AWS 付款密碼編譯不會驗證指令碼的內容。如需要包含的特定命令詳細資訊,請參閱您的方案或卡片手冊。

如需詳細資訊,請參閱 API 指南中的 MacAlgorithmEmv

建立金鑰

$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_E2_EMV_MKEY_INTEGRITY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{DeriveKey=true}' --tags='[{"Key":"KEY_PURPOSE","Value":"CVN18"},{"Key":"CARD_BIN","Value":"12345678"}]'

回應會回傳請求參數,包括後續呼叫的 ARN 以及金鑰檢查值 (KCV)。

{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk", "KeyAttributes": { "KeyUsage": "TR31_E2_EMV_MKEY_INTEGRITY", "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::key/pw3s6nl62t5ushfk。在下一個步驟中,您需要用到。

產生 EMV MAC

典型的流程是後端程序會產生 EMV 指令碼 (例如卡片解鎖),使用此命令簽署它 (衍生特定卡片的一次性金鑰),然後傳回 MAC。然後,命令 + MAC 會傳送至要套用的卡片。將命令傳送至卡片超出 AWS 付款密碼編譯的範圍。

注意

此命令適用於未傳送加密資料 (例如 PIN) 的命令。EMV Encrypt 可以與此命令結合,在呼叫此命令之前將加密的資料附加到發行者指令碼

訊息資料

訊息資料包含 APDU 標頭和命令。雖然這可能因實作而有所不同,但此範例是 unblock (84 24 00 00 08) 的 APDU 標頭,後面接著 ATC (0007),然後是先前交易的 ARQC (999E57FD0F47CACE)。服務不會驗證此欄位的內容。

工作階段金鑰衍生模式

此欄位定義工作階段金鑰的產生方式。EMV_COMMON_SESSION_KEY 通常用於新實作,而 EMV2000 | AMEX | MASTERCARD_SESSION_KEY | VISA 也可以使用。

MajorKeyDerivationMode

EMV 定義模式 A、B 或 C。模式 A 是最常見的,而 AWS 付款密碼編譯目前支援模式 A 或模式 B。

PAN

帳戶號碼,通常可在晶片欄位 5A 或 ISO8583 欄位 2 中使用,但也可以從卡片系統擷取。

PSN

卡片序號。如果未使用,請輸入 00。

SessionKeyDerivationValue

這是每個工作階段衍生資料的 。它可以是欄位 9F26 的最後一個 ARQC(ApplicationCryptogram),也可以是 9F36 的最後一個 ATC,具體取決於衍生方案。

填補

填補會自動套用,並使用 ISO/IEC 9797-1 填補方法 2。

$ aws payment-cryptography-data generate-mac --message-data 84240000080007999E57FD0F47CACE --key-identifier arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk --message-data 8424000008999E57FD0F47CACE0007 --generation-attributes EmvMac="{MajorKeyDerivationMode=EMV_OPTION_A,PanSequenceNumber='00',PrimaryAccountNumber='2235521304123282',SessionKeyDerivationMode=EMV_COMMON_SESSION_KEY,SessionKeyDerivationValue={ApplicationCryptogram='999E57FD0F47CACE'}}"
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/pw3s6nl62t5ushfk", "KeyCheckValue": "08D7B4", "Mac":"5652EEDF83EA0D84" }