

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

# 產生和驗證 EMV MAC
<a name="use-cases-issuers.generalfunctions.emvmac"></a>

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

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

如需詳細資訊，請參閱 API 指南中的 [MacAlgorithmEmv](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_MacAlgorithmEmv.html)。

**Topics**
+ [建立金鑰](#use-cases-issuers.generalfunctions.emvmac.setup)
+ [產生 EMV MAC](#use-cases-issuers.generalfunctions.emvmac.generate)

## 建立金鑰
<a name="use-cases-issuers.generalfunctions.emvmac.setup"></a>

```
$ 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:111122223333: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：111122223333：key/pw3s6nl62t5ushfk*。在下一個步驟中，您需要用到。

## 產生 EMV MAC
<a name="use-cases-issuers.generalfunctions.emvmac.generate"></a>

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

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

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

工作階段金鑰衍生模式  
此欄位定義工作階段金鑰的產生方式。EMV\$1COMMON\$1SESSION\$1KEY 通常用於新實作，而 EMV2000 \$1 AMEX \$1 MASTERCARD\$1SESSION\$1KEY \$1 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。

**Example**  

```
$ aws payment-cryptography-data generate-mac --message-data 84240000080007999E57FD0F47CACE --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333: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:111122223333:key/pw3s6nl62t5ushfk",
"KeyCheckValue": "08D7B4",
"Mac":"5652EEDF83EA0D84"
}
```