

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

# ランダムピンと関連付けられた 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",
}
```