本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
產生 MAC
產生 MAC API 用於驗證卡片相關資料,例如從卡片磁條追蹤資料,方法是使用已知的密碼編譯金鑰產生 MAC (訊息驗證碼),以便在傳送和接收方之間進行資料驗證。用於產生 MAC 的資料包括訊息資料、秘密 MAC 加密金鑰和 MAC 演算法,以產生唯一的 MAC 值進行傳輸。MAC 的接收方將使用相同的 MAC 訊息資料、MAC 加密金鑰和演算法來重現另一個 MAC 值,以進行比較和資料身分驗證。即使訊息的一個字元變更或用於驗證的 MAC 金鑰不同,產生的 MAC 值也不同。API 支援此操作的 ISO 9797-1 演算法 1 和 ISO 9797-1 演算法 3 MAC (使用靜態 MAC 金鑰和衍生的 DUKPT 金鑰)、HMAC 和 EMV MAC 加密金鑰。
的輸入值message-data必須是 hexBinary 資料。
如需此 API 所有選項的詳細資訊,請參閱 GenerateMac 和 VerifyMac。
選用參數 mac-length 可讓您截斷輸出值 (不過這也可以在程式碼中完成)。長度為 8 是指 8 個位元組或 16 個十六進位字元。
您可以透過呼叫 CreateKey 來建立 MAC AWS 金鑰,或呼叫 ImportKey 來匯入。
注意
CMAC 和 HMAC 演算法不需要填補。所有其他要求將資料填入演算法的區塊大小,這是 TDES 的 8 個位元組 (16 個十六進位字元) 和 AES 的 16 個位元組 (32 個十六進位字元) 的倍數。
產生 HMAC
在此範例中,我們將使用 HMAC 演算法HMAC_SHA256和 HMAC 加密金鑰,為卡片資料身分驗證產生 HMAC (以雜湊為基礎的訊息驗證碼)。金鑰必須將 KeyUsage 設定為 TR31_M7_HMAC_KEY,並將 KeyModesOfUse 設定為 Generate。雜湊長度 (例如 256) 是在建立金鑰時定義,且無法修改。
選用的 mac-length 參數會修剪輸出 MAC,但也可以在服務之外執行。此值以位元組為單位,因此值 16 預期十六進位字串長度為 32。
範例
$aws payment-cryptography-data generate-mac \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \ --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ --generation-attributes Algorithm=HMAC
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6", "KeyCheckValue": "2976E7", "Mac": "ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C" }
使用 ISO 9797-1 演算法 3 產生 MAC
在此範例中,我們將使用 ISO 9797-1 演算法 3 (零售 MAC) 來產生 MAC 以進行卡片資料驗證。金鑰必須將 KeyUsage 設定為 TR31_M3_ISO_9797_3_MAC_KEY,並將 KeyModesOfUse 設定為 Generate。
範例
$aws payment-cryptography-data generate-mac \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h \ --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ --generation-attributes="Algorithm=ISO9797_ALGORITHM3"
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h", "KeyCheckValue": "2976EA", "Mac": "A8F7A73DAF87B6D0" }
使用 CMAC 產生 MAC
當金鑰為 AES 時,CMAC 最常使用,但也支援 TDES。在此範例中,我們將使用 CMAC (ISO 9797-1 演算法 5) 產生 MAC,以使用 AES 金鑰進行卡片資料驗證。金鑰必須將 KeyUsage 設定為 TR31_M6_ISO_9797_5_CMAC_KEY,並將 KeyModesOfUse 設定為 Generate。
範例
$aws payment-cryptography-data generate-mac \ --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \ --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ --generation-attributes Algorithm="CMAC"
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi", "KeyCheckValue": "C1EB8F", "Mac": "1F8C36E63F91E4E93DF7842BF5E2E5F7" }
使用 DUKPT CMAC 產生 MAC
在此範例中,我們將使用 DUKPT (每個交易衍生的唯一金鑰) 與 CMAC 產生 MAC,以進行卡片資料驗證。金鑰必須將 KeyUsage 設定為 TR31_B0_BASE_DERIVATION_KEY,且 KeyModesOfUse DeriveKey設定為 true。DUKPT 金鑰會使用基本衍生金鑰 (BDK) 和金鑰序號 (KSN),為每個交易衍生唯一的金鑰。
範例
$aws payment-cryptography-data generate-mac --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" --generation-attributes="DukptCmac={KeySerialNumber="932A6E954ABB32DD00000001",Direction=BIDIRECTIONAL}"
{ "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6", "KeyCheckValue": "C1EB8F" }