

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

# 一般関数
<a name="use-cases-issuers.generalfunctions"></a>

**Topics**
+ [ランダムピンと関連付けられた PVV を生成し、値を検証する](use-cases-issuers.generalfunctions.pvv.md)
+ [特定のカードの CVV を生成または検証する](use-cases-issuers.generalfunctions.cvv.md)
+ [特定のカードの CVV2 を生成または検証する](use-cases-issuers.generalfunctions.cvv2.md)
+ [特定のカードの iCVV を生成または検証する](use-cases-issuers.generalfunctions.icvv.md)
+ [EMV ARQC を検証し、ARPC を生成する](use-cases-issuers.generalfunctions.arqc.md)
+ [EMV MAC の生成と検証](use-cases-issuers.generalfunctions.emvmac.md)
+ [PIN 変更用の EMV MAC の生成](use-cases-issuers.generalfunctions.emvpinchange.md)

# ランダムピンと関連付けられた PVV を生成し、値を検証する
<a name="use-cases-issuers.generalfunctions.pvv"></a>

**Topics**
+ [キーを作成する (複数可)](#use-cases-issuers.generalfunctions.pvv.setup)
+ [ランダムピンを生成し、PVV を生成して、暗号化された PIN と PVV を返す](#use-cases-issuers.generalfunctions.pvv.generate)
+ [PVV メソッドを使用して暗号化された PIN を検証する](#use-cases-issuers.generalfunctions.pvv.verify)

## キーを作成する (複数可)
<a name="use-cases-issuers.generalfunctions.pvv.setup"></a>

ランダムピンと [PVV](terminology.md#terms.pvv) を生成するには、PVV を生成するための[ピン検証キー (PVK)](terminology.md#terms.pvk) と、ピンを暗号化するための[ピン暗号化キー](terminology.md#terms.pek)の 2 つのキーが必要です。ピン自体はサービス内でランダムに安全に生成され、どちらのキーにも暗号的に関連しません。

PGK は、PVV アルゴリズム自体に基づくアルゴリズム TDES\$12KEY のキーである必要があります。PEK は TDES\$12KEY、TDES\$13KEY、または AES\$1128 です。この場合、PEK はシステム内での使用を目的としているため、AES\$1128 が適しています。PEK を他のシステム (カードネットワーク、アクワイアラー、ATMs など) と交換する場合、または移行の一環として移動する場合、TDES\$12KEY は互換性の理由からより適切な選択肢である可能性があります。

### PEK を作成する
<a name="use-cases-issuers.generalfunctions.pvv.setup.pek"></a>

```
$ aws payment-cryptography create-key \
               --exportable 
               --key-attributes KeyAlgorithm=AES_128,KeyUsage=TR31_P0_PIN_ENCRYPTION_KEY,\
                   KeyClass=SYMMETRIC_KEY,\
                   KeyModesOfUse='{Encrypt=true,Decrypt=true,Wrap=true,Unwrap=true}' --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'
```

レスポンスには、後続の呼び出し用の ARN やキーチェック値 (KCV) などのリクエストパラメータがエコーバックされます。

```
{
               "Key": {
                   "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
                   "KeyAttributes": {
                       "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY",
                       "KeyClass": "SYMMETRIC_KEY",
                       "KeyAlgorithm": "AES_128",
                       "KeyModesOfUse": {
                           "Encrypt": false,
                           "Decrypt": false,
                           "Wrap": false,
                           "Unwrap": false,
                           "Generate": true,
                           "Sign": false,
                           "Verify": true,
                           "DeriveKey": false,
                           "NoRestrictions": false
                       }
                   },
                   "KeyCheckValue": "7CC9E2",
                   "KeyCheckValueAlgorithm": "CMAC",
                   "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/ivi5ksfsupltitudeyt* です。これは次のステップで行います。

### PVK を作成する
<a name="use-cases-issuers.generalfunctions.pvv.setup.pvk"></a>

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_V2_VISA_PIN_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}'  --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'
```

レスポンスには、後続の呼び出し用の ARN やキーチェック値 (KCV) などのリクエストパラメータがエコーバックされます。

```
{
                  "Key": {
                      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
                      "KeyAttributes": {
                          "KeyUsage": "TR31_V2_VISA_PIN_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": "51A200",
                      "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"
                  }
              }
```

*arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza* など、キー`KeyArn`を表す を書き留めます。これは次のステップで行います。

## ランダムピンを生成し、PVV を生成して、暗号化された PIN と PVV を返す
<a name="use-cases-issuers.generalfunctions.pvv.generate"></a>

**Example**  
この例では、出力が暗号化された (PinData.PinBlock) と `PIN block` (pinData.VerificationValue) である新しい `PVV` (ランダム) 4 桁のピンを生成します。PinData.PinBlock) pinData.VerificationValue). キー入力は`PAN`、、 `Pin Verification Key`(ピン生成キーとも呼ばれます）、、`Pin Encryption Key`および [PIN ブロック](terminology.md#terms.pinblock)形式です。  
 このコマンドでは、キーのタイプが である必要があります`TR31_V2_VISA_PIN_VERIFICATION_KEY`。  

```
$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes VisaPin={PinVerificationKeyIndex=1}
```

```
{
            "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
            "GenerationKeyCheckValue": "7F2363",
            "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
            "EncryptionKeyCheckValue": "7CC9E2",
            "EncryptedPinBlock": "AC17DC148BDA645E",
            "PinData": {
                "VerificationValue": "5507"
            }
        }
```

## PVV メソッドを使用して暗号化された PIN を検証する
<a name="use-cases-issuers.generalfunctions.pvv.verify"></a>

**Example**  
この例では、特定の PAN の PIN を検証します。PIN は通常、検証のためにトランザクション時にカード所有者またはユーザーによって提供され、ファイル上の値と比較されます (カード所有者からの入力は、ターミナルまたは他のアップストリームプロバイダーからの暗号化された値として提供されます）。この入力を検証するために、実行時に次の値も提供されます。暗号化されたピン、入力ピンの暗号化に使用されるキー ([IWK](terminology.md#terms.iwk) と呼ばれることが多い)`PAN`、および検証する値 ( `PVV`または )`PIN offset`。  
 AWS Payment Cryptography がピンを検証できる場合、http/200 が返されます。PIN が検証されない場合、http/400 が返されます。  

```
$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0  --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=5507}" --encrypted-pin-block AC17DC148BDA645E 
```

```
{
        "VerificationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
        "VerificationKeyCheckValue": "7F2363",
        "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
        "EncryptionKeyCheckValue": "7CC9E2",
}
```

# 特定のカードの CVV を生成または検証する
<a name="use-cases-issuers.generalfunctions.cvv"></a>

[CVV](terminology.md#terms.cvv) または CVV1 は、従来カードの磁気ストライプに埋め込まれていた値です。これは CVV2 とは異なります (カード所有者が表示でき、オンライン購入に使用できます）。

最初のステップは、キー を作成することです。このチュートリアルでは、[CVK](terminology.md#terms.cvk) の 2 倍長 3DES (2KEY TDES) キーを作成します。

**注記**  
CVV、CVV2、および iCVV はすべて、同一のアルゴリズムではなくても同様のアルゴリズムを使用しますが、入力データは異なります。すべて同じキータイプ TR31\$1C0\$1CARD\$1VERIFICATION\$1KEY を使用しますが、目的ごとに個別のキーを使用することをお勧めします。これらは、以下の例のようにエイリアスやタグを使用して区別できます。

## キーを作成する
<a name="use-cases-issuers.generalfunctions.cvv.setup"></a>

```
$ 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":"CVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

レスポンスには、後続の呼び出し用の ARN やキーチェック値 (KCV) などのリクエストパラメータがエコーバックされます。

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                "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": "DE89F9",
                "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"
            }
        }
```

*arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr* など、キー`KeyArn`を表す を書き留めます。これは次のステップで行います。

## CVV の生成
<a name="use-cases-issuers.generalfunctions.cvv.generate"></a>

**Example**  
この例では、入力が 、サービスコード (ISO/IEC 7813 で定義) が 121`PAN`、カードの有効期限がある特定の PAN の [CVV](terminology.md#terms.cvv) を生成します。  
使用可能なすべてのパラメータについては、 API リファレンスガイドの [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) を参照してください。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=121}'
```

```
                  {
                      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                      "KeyCheckValue": "DE89F9",
                      "ValidationData": "801"
                  }
```

## CVV を検証する
<a name="use-cases-issuers.generalfunctions.cvv.verify"></a>

**Example**  
この例では、CVK、、121 [のサービスコード、カードの有効期限、検証するトランザクション中に提供された CVV](terminology.md#terms.cvv) の入力を使用して、特定の PAN の CVV を検証します。 `PAN`  
使用可能なすべてのパラメータについては、 API リファレンスガイドの [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) を参照してください。  
CVV はユーザーが入力した値 (CVV2 など) ではありませんが、通常はマグストライプに埋め込まれます。提供されたときに常に検証する必要があるかどうかを考慮する必要があります。

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=121} --validation-data 801
```

```
{
                    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/r52o3wbqxyf6qlqr",
                    "KeyCheckValue": "DE89F9",
                    "ValidationData": "801"
}
```

# 特定のカードの CVV2 を生成または検証する
<a name="use-cases-issuers.generalfunctions.cvv2"></a>

[CVV2](terminology.md#terms.cvv2) は、従来カードの裏側で提供され、オンライン購入に使用される値です。仮想カードの場合、アプリや画面に表示されることもあります。暗号的には、CVV1 と同じですが、サービスコード値が異なります。

## キーを作成する
<a name="use-cases-issuers.generalfunctions.cvv2.setup"></a>

```
$ 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":"CVV2"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

レスポンスには、後続の呼び出し用の ARN やキーチェック値 (KCV) などのリクエストパラメータがエコーバックされます。

```
{
               "Key": {
                   "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu",
                   "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": "AEA5CD",
                   "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"
               }
           }
```

*arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu* など、キー`KeyArn`を表す を書き留めます。これは次のステップで行います。

## CVV2 の生成
<a name="use-cases-issuers.generalfunctions.cvv2.generate"></a>

**Example**  
この例では、 の入力`PAN`とカードの有効期限を使用して、特定の PAN の [CVV2](terminology.md#terms.cvv2) を生成します。  
使用可能なすべてのパラメータについては、 API リファレンスガイドの [CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html) を参照してください。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu --primary-account-number=171234567890123 --generation-attributes CardVerificationValue2='{CardExpiryDate=1127}'
```

```
                     {
                         "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu",
                         "KeyCheckValue": "AEA5CD",
                         "ValidationData": "321"
                     }
```

## CVV2 を検証する
<a name="use-cases-issuers.generalfunctions.cvv2.verify"></a>

**Example**  
この例では、CVK の入力を含む特定の PAN の [CVV2](terminology.md#terms.cvv2) `PAN`と、検証するトランザクション中に提供されたカードの有効期限と CVV を検証します。  
使用可能なすべてのパラメータについては、 API リファレンスガイドの [CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html) を参照してください。  
CVV2 およびその他の入力は、ユーザーが入力した値です。そのため、これが定期的に検証に失敗する問題の兆候であるとは限りません。

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu --primary-account-number=171234567890123 --verification-attributes CardVerificationValue2='{CardExpiryDate=1127} --validation-data 321
```

```
{
                       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu",
                       "KeyCheckValue": "AEA5CD",
                       "ValidationData": "801"
   }
```

# 特定のカードの iCVV を生成または検証する
<a name="use-cases-issuers.generalfunctions.icvv"></a>

[iCVV](terminology.md#terms.icvv) は CVV/CVV2 と同じアルゴリズムを使用しますが、iCVV はチップカード内に埋め込まれます。サービスコードは 999 です。

## キーを作成する
<a name="use-cases-issuers.generalfunctions.icvv.setup"></a>

```
$ 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":"ICVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

レスポンスには、後続の呼び出し用の ARN やキーチェック値 (KCV) などのリクエストパラメータがエコーバックされます。

```
{
               "Key": {
                   "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3",
                   "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": "1201FB",
                   "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/c7dsi763r6s7lfp3* です。これは次のステップで行います。

## iCVV の生成
<a name="use-cases-issuers.generalfunctions.icvv.generate"></a>

**Example**  
この例では、入力が 、サービスコード (ISO/IEC 7813 で定義) が 999`PAN`、カードの有効期限がある特定の PAN の [iCVV](terminology.md#terms.icvv) を生成します。  
使用可能なすべてのパラメータについては、 API リファレンスガイドの [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) を参照してください。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3 --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=999}'
```

```
                     {
                         "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3",
                         "KeyCheckValue": "1201FB",
                         "ValidationData": "532"
                     }
```

## iCVV を検証する
<a name="use-cases-issuers.generalfunctions.icvv.verify"></a>

**Example**  
検証の場合、入力は CVK、`PAN`、999 のサービスコード、カードの有効期限、検証するトランザクション中に提供された iCVV です。  
使用可能なすべてのパラメータについては、「 API リファレンスガイド」の[CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)」を参照してください。  
iCVV はユーザーが入力した値 (CVV2 など) ではありませんが、通常は EMV/チップカードに埋め込まれます。提供されたときに常に検証する必要があるかどうかを考慮する必要があります。

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3 --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=999} --validation-data 532
```

```
{
                       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/c7dsi763r6s7lfp3",
                       "KeyCheckValue": "1201FB",
                       "ValidationData": "532"
   }
```

# EMV ARQC を検証し、ARPC を生成する
<a name="use-cases-issuers.generalfunctions.arqc"></a>

[ARQC](terminology.md#terms.arqc) (認可リクエスト暗号) は、EMV (チップ) カードによって生成され、トランザクションの詳細と認可されたカードの使用を検証するために使用される暗号文です。カード、ターミナル、トランザクション自体からのデータが組み込まれています。

バックエンドの検証時に、同じ入力が AWS Payment Cryptography に提供され、暗号文が内部で再作成され、トランザクションで指定された値と比較されます。この意味では、MAC に似ています。[EMV 4.4 Book 2 ](https://www.emvco.com/specifications/?post_id=80377)は、この関数の 3 つの側面を定義します。1 回限りのトランザクションキーを生成するキー取得メソッド (共通セッションキー - CSK)、最小ペイロード、およびレスポンス (ARPC) を生成するメソッドです。

 個々のカードスキームでは、組み込む追加のトランザクションフィールドを指定するか、それらのフィールドが表示される順序を指定できます。その他の (一般的に廃止された) スキーム固有の派生スキームも存在し、このドキュメントの他の箇所で説明されています。

詳細については、 API ガイドの[VerifyCardValidationData](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyCardValidationData.html)」を参照してください。

## キーを作成する
<a name="use-cases-issuers.generalfunctions.arqc.setup"></a>

```
$ 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":"CVN18"},{"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"
                }
            }
```

*arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk* など、キー`KeyArn`を表す を書き留めます。これは次のステップで行います。

## ARQC の生成
<a name="use-cases-issuers.generalfunctions.arqc.generate"></a>

ARQC は EMV カードによってのみ生成されます。そのため、 AWS Payment Cryptography にはそのようなペイロードを生成する機能はありません。テスト目的では、適切なペイロードと、さまざまなスキームによって一般的に提供される既知の値を生成できる多数のライブラリがオンラインで利用できます。

## ARQC を検証する
<a name="use-cases-issuers.generalfunctions.arqc.verify"></a>

**Example**  
 AWS Payment Cryptography が ARQC を検証できる場合、http/200 が返されます。ARPC (レスポンス) はオプションで提供でき、ARQC の検証後にレスポンスに含めることができます。  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram 61EDCC708B4C97B4 --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk --major-key-derivation-mode EMV_OPTION_A --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B1F2201030000000000000000000000000000000000000000000000000000008000000000000000 --session-key-derivation-attributes='{"EmvCommon":{"ApplicationTransactionCounter":"000B", "PanSequenceNumber":"01","PrimaryAccountNumber":"9137631040001422"}}' --auth-response-attributes='{"ArpcMethod2":{"CardStatusUpdate":"12345678"}}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
    "KeyCheckValue": "08D7B4",
    "AuthResponseValue":"2263AC85"
}
```

# EMV MAC の生成と検証
<a name="use-cases-issuers.generalfunctions.emvmac"></a>

EMV MAC は、EMV 派生キーの入力を使用して MAC になり、結果のデータに対して ISO9797-3 (小売) MAC を実行します。EMV MAC は通常、ブロック解除スクリプトなどの EMV カードにコマンドを送信するために使用されます。

**注記**  
 AWS Payment Cryptography はスクリプトの内容を検証しません。含める特定のコマンドの詳細については、スキームまたはカードマニュアルを参照してください。

詳細については、 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 スクリプトを生成し (カードのブロック解除など）、このコマンドを使用して署名し (1 つの特定のカードに固有の 1 回限りのキーを取得）、MAC を返すことです。次に、コマンド \$1 MAC がカードに送信されて適用されます。コマンドをカードに送信することは AWS Payment Cryptography の範囲外です。

**注記**  
 このコマンドは、暗号化されたデータ (PIN など) が送信されない場合のコマンドを対象としています。EMV Encrypt をこのコマンドと組み合わせて、このコマンドを呼び出す前に暗号化されたデータを発行者スクリプトに追加できます。

メッセージデータ  
メッセージデータには、APDU ヘッダーとコマンドが含まれます。これは実装によって異なる場合がありますが、この例はブロック解除 (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 Payment Cryptography は現在モード A またはモード B をサポートしています。

PAN  
アカウント番号。通常はチップフィールド 5A または ISO8583 フィールド 2 で使用できますが、カードシステムから取得することもできます。

PSN  
カードシーケンス番号。使用しない場合は、00 と入力します。

SessionKeyDerivationValue  
これはセッションごとの取得データです。取得スキームに応じて、フィールド 9F26 の最後の ARQC (ApplicationCryptogram) または 9F36 の最後の ATC のいずれかになります。

[Padding] (パディング)  
パディングは自動的に適用され、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"
}
```

# PIN 変更用の EMV MAC の生成
<a name="use-cases-issuers.generalfunctions.emvpinchange"></a>

EMV PIN の変更には、発行者スクリプトの MAC の生成と、EMV チップカードでのオフライン PIN 変更の新しい PIN の暗号化という 2 つのオペレーションが組み合わされます。このコマンドは、ピンがチップカードに保存されている特定の国でのみ必要です (これは欧州の国で一般的です）。これは一般的に、カード所有者が PIN を変更する必要があり、新しい PIN を MAC と一緒にカードに安全に送信してコマンドの信頼性を確認する必要がある場合に使用されます。

**注記**  
 カードにコマンドを送信するだけで PIN を変更しない場合は、[ARPC CSU ](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyAuthRequestCryptogram.html)を使用するか、代わりに [EMV MAC コマンドを生成](use-cases-issuers.generalfunctions.emvmac.md)することを検討してください。

詳細については、 API ガイドの[GenerateMacEmvPinChange](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMacEmvPinChange.html)」を参照してください。

## PIN 変更のために EMV MAC と暗号化された PIN を生成する
<a name="use-cases-issuers.generalfunctions.emvpinchange.generate"></a>

このオペレーションには、MAC 生成用の EMV 整合性キー (KeyUsage: TR31\$1E2\$1EMV\$1MKEY\$1INTEGRITY) と PIN 暗号化用の EMV 機密性キー (KeyUsage: TR31\$1E4\$1EMV\$1MKEY\$1CONFIDENTIALITY) の 2 つのキーが必要です。一般的なフローは、バックエンドプロセスが発行者スクリプトの MAC と暗号化された新しい PIN の両方を含む EMV PIN 変更スクリプトを生成することです。その後、コマンドと暗号化された PIN がカードに送信され、オフライン PIN が更新されます。コマンドをカードに送信することは AWS Payment Cryptography の範囲外です。

メッセージデータ  
メッセージデータには、発行者スクリプトの APDU コマンドが含まれます。サービスはこのフィールドの内容を検証しません。

新しい暗号化された PIN ブロック  
カードに送信される新しい暗号化された PIN ブロック。これは、PIN 暗号化キーを使用して暗号化された値として提供する必要があります。

新しい PIN PEK 識別子  
この API に渡される前に新しい PIN を暗号化するために使用されるキー。

Secure Messaging Integrity キー  
MAC 生成に使用される EMV 整合性キー (KeyUsage: TR31\$1E2\$1EMV\$1MKEY\$1INTEGRITY)。

Secure Messaging の機密性キー  
PIN 暗号化に使用される EMV 機密性キー (KeyUsage: TR31\$1E4\$1EMV\$1MKEY\$1CONFIDENTIALITY)。

MajorKeyDerivationMode  
EMV はモード A、B、または C を定義します。モード A が最も一般的であり、 AWS Payment Cryptography は現在モード A またはモード B をサポートしています。

モード  
暗号化モード、通常は PIN 変更オペレーション用の CBC。

PAN  
アカウント番号。通常はチップフィールド 5A または ISO8583 フィールド 2 で使用できますが、カードシステムから取得することもできます。

PanSequenceNumber  
カードシーケンス番号。使用しない場合は、00 と入力します。

ApplicationCryptogram  
これはセッションごとの取得データで、通常はフィールド 9F26 からの最後の ARQC です。

PinBlockLengthPosition  
PIN ブロックの長さがエンコードされる場所を指定します。通常、NONE に設定されます。不明な場合は、カードスキームの仕様を確認してください。

PinBlockPaddingType  
PIN ブロックのパディングタイプを指定します。通常、NO\$1PADDING に設定されます。不明な場合は、カードスキームの仕様を確認してください。

**Example**  

```
$ aws payment-cryptography-data generate-mac-emv-pin-change \
    --message-data 00A4040008A000000004101080D80500000001010A04000000000000 \
    --new-encrypted-pin-block 67FB27C75580EFE7 \
    --new-pin-pek-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt \
    --pin-block-format ISO_FORMAT_0 \
    --secure-messaging-confidentiality-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \
    --secure-messaging-integrity-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
    --derivation-method-attributes 'EmvCommon={ApplicationCryptogram=1234567890123457,MajorKeyDerivationMode=EMV_OPTION_A,Mode=CBC,PanSequenceNumber=00,PinBlockLengthPosition=NONE,PinBlockPaddingType=NO_PADDING,PrimaryAccountNumber=171234567890123}'
```

```
{
    "SecureMessagingIntegrityKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
    "SecureMessagingIntegrityKeyCheckValue": "08D7B4",
    "SecureMessagingConfidentialityKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "SecureMessagingConfidentialityKeyCheckValue": "C1EB8F",
    "Mac": "5652EEDF83EA0D84",
    "EncryptedPinBlock": "F1A2B3C4D5E6F7A8"
}
```