

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# MAC の生成
<a name="generate-mac"></a>

Generate MAC API は、既知の暗号化キーを使用して送信側と受信側間のデータ検証用の MAC (メッセージ認証コード) を生成することで、カード磁気ストライプからのトラックデータなどのカード関連データを認証するために使用されます。MAC の生成に使用されるデータには、メッセージデータ、秘密 MAC 暗号化キー、および送信用の固有の MAC 値を生成する MAC アルゴリズムが含まれます。MAC の受信側は、同じ MAC メッセージデータ、MAC 暗号化キー、およびアルゴリズムを使用して、比較とデータ認証のために別の MAC 値を再現します。メッセージの文字が 1 字でも変わっている場合、またはシークレットキーが同一ではない場合、結果として得られる MAC の値はまったく異なるものになります。API は、このオペレーションで ISO 9797-1 アルゴリズム 1 および ISO 9797-1 アルゴリズム 3 MAC (静的 MAC キーと派生 DUKPT キーを使用）、HMAC および EMV MAC 暗号化キーをサポートしています。

`message-data` の入力値は HexBinary データでなければなりません。

この API のすべてのオプションの詳細については、[GenerateMac](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMac.html)」と[VerifyMac](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyMac.html)」を参照してください。

オプションのパラメータ mac-length を使用すると、出力値を切り捨てることができます (ただし、これはコード内で実行することもできます）。8 文字の長さは、8 バイトまたは 16 進数文字を指します。

MAC キーは、[CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) を呼び出して AWS Payment Cryptography で作成することも、[ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) を呼び出してインポートすることもできます。

**注記**  
CMAC アルゴリズムと HMAC アルゴリズムにはパディングは必要ありません。その他はすべて、TDES の場合は 8 バイト (16 進数文字）、AES の場合は 16 バイト (32 進数文字) の倍数であるアルゴリズムのブロックサイズにデータをパディングする必要があります。

**Topics**
+ [HMAC の生成](#generate-mac-hmac)
+ [ISO 9797-1 アルゴリズム 3 を使用して MAC を生成する](#generate-mac-iso9797-alg3)
+ [CMAC を使用して MAC を生成する](#generate-mac-cmac)
+ [DUKPT CMAC を使用して MAC を生成する](#generate-mac-dukpt-cmac)

## HMAC の生成
<a name="generate-mac-hmac"></a>

この例では、HMAC `HMAC_SHA256` アルゴリズムと HMAC 暗号化キーを使用してカードデータ認証用の HMAC (ハッシュベースのメッセージ認証コード) を生成します。キーは、KeyUsage が `TR31_M7_HMAC_KEY` に設定され、KeyModesOfUse が `Generate` に設定されている必要があります。ハッシュの長さ (256 など) は、キーの作成時に定義され、変更できません。

オプションの mac-length パラメータは出力 MAC をトリミングしますが、これは サービス外で実行することもできます。この値はバイト単位であるため、16 の値は長さ 32 の 16 進文字列を想定します。

**Example**  

```
$ 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 を生成する
<a name="generate-mac-iso9797-alg3"></a>

この例では、カードデータ認証に ISO 9797-1 アルゴリズム 3 (小売 MAC) を使用して MAC を生成します。キーは、KeyUsage が `TR31_M3_ISO_9797_3_MAC_KEY` に設定され、KeyModesOfUse が `Generate` に設定されている必要があります。

**Example**  

```
$ 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 を生成する
<a name="generate-mac-cmac"></a>

CMAC はキーが AES の場合に最も一般的に使用されますが、TDES もサポートしています。この例では、AES キーによるカードデータ認証に CMAC (ISO 9797-1 アルゴリズム 5) を使用して MAC を生成します。キーは、KeyUsage が `TR31_M6_ISO_9797_5_CMAC_KEY` に設定され、KeyModesOfUse が `Generate` に設定されている必要があります。

**Example**  

```
$ 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 を生成する
<a name="generate-mac-dukpt-cmac"></a>

この例では、カードデータ認証に CMAC を使用する DUKPT (トランザクションあたりの派生一意キー) を使用して MAC を生成します。キーは KeyUsage を に設定`TR31_B0_BASE_DERIVATION_KEY`し、KeyModesOfUse を true `DeriveKey`に設定する必要があります。DUKPT キーは、基本派生キー (BDK) とキーシリアル番号 (KSN) を使用して、トランザクションごとに一意のキーを取得します。



**Example**  

```
$ 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"
}
```