

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 무작위 핀과 연결된 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)라는 두 개의 키가 필요합니다. 핀 자체는 서비스 내에서 무작위로 안전하게 생성되며 두 키와 암호화 방식으로 관련이 없습니다.

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

*arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt*와 같이 키를 `KeyArn` 나타내는를 기록해 둡니다. 다음 단계에서 이 작업을 수행합니다.

### 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이 반환됩니다. 핀이 검증되지 않은 경우 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",
}
```