

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

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

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

# 지정된 카드에 대한 CVV 생성 또는 확인
<a name="use-cases-issuers.generalfunctions.cvv"></a>

[CVV](terminology.md#terms.cvv) 또는 CVV1은 전통적으로 카드 마그네틱 스트라이프에 포함된 값입니다. CVV2와 동일하지 않습니다(카드 소지자가 볼 수 있고 온라인 구매에 사용 가능).

첫 번째 단계는 키를 만드는 것입니다. 이 자습서에서는 [CVK](terminology.md#terms.cvk) 이중 길이 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**  
이 예제에서는 입력이 이고`PAN`, 서비스 코드(ISO/IEC 7813에서 정의)가 121이고 카드 만료 날짜가 인 지정된 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)이 아니지만 일반적으로 magstripe에 포함됩니다. 제공 시 항상 검증해야 하는지 여부를 고려해야 합니다.

```
$ 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`및 검증을 위해 트랜잭션 중에 제공된 CVV를 사용하여 지정된 PAN에 대한 CVV[CVV2](terminology.md#terms.cvv2)를 확인합니다.  
사용 가능한 모든 파라미터는 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"
               }
           }
```

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

## iCVV 생성
<a name="use-cases-issuers.generalfunctions.icvv.generate"></a>

**Example**  
이 예제에서는 입력이 이고`PAN`, 서비스 코드(ISO/IEC 7813에서 정의)가 999이고 카드 만료 날짜가 인 지정된 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)(Authorization Request Cryptogram)는 EMV(칩) 카드에서 생성한 암호로, 트랜잭션 세부 정보와 승인된 카드 사용을 검증하는 데 사용됩니다. 카드, 터미널 및 트랜잭션 자체의 데이터를 통합합니다.

백엔드의 검증 시 동일한 입력이 AWS Payment Cryptography에 제공되고, 암호가 내부적으로 다시 생성되며, 트랜잭션과 함께 제공된 값과 비교됩니다. 이러한 의미에서 MAC와 유사합니다. [EMV 4.4 Book 2](https://www.emvco.com/specifications/?post_id=80377)는이 함수의 세 가지 측면, 즉 일회성 트랜잭션 키를 생성하기 위한 키 유도 방법(일반 세션 키 - 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 파생 키의 입력을 사용한 다음 결과 데이터에 대해 ISO9797-3(소매) MAC을 수행하는 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"
        }
    }
```

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

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

일반적인 흐름은 백엔드 프로세스가 EMV 스크립트(예: 카드 차단 해제)를 생성하고,이 명령(특정 카드 하나에 특정한 일회용 키를 생성함)을 사용하여 서명한 다음 MAC를 반환하는 것입니다. 그런 다음 명령 \$1 MAC이 카드에 전송되어 적용됩니다. 카드에 명령을 보내는 것은 AWS Payment Cryptography 범위를 벗어납니다.

**참고**  
 이 명령은 암호화된 데이터(예: PIN)가 전송되지 않는 명령을 위한 것입니다. 이 명령을 호출하기 전에 EMV 암호화를이 명령과 결합하여 암호화된 데이터를 발급자 스크립트에 추가할 수 있습니다.

메시지 데이터  
메시지 데이터에는 APDU 헤더와 명령이 포함됩니다. 이는 구현에 따라 다를 수 있지만이 예제는 차단 해제를 위한 APDU 헤더(84 24 00 00 08) 다음에 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일 수 있습니다.

패딩  
패딩은 자동으로 적용되며 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 암호화라는 두 가지 작업이 결합됩니다. 이 명령은 핀이 칩 카드에 저장되는 특정 국가에서만 필요합니다(유럽 국가에서는 일반적임). 이는 카드 소지자가 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)의 두 가지 키가 필요합니다. 일반적인 흐름은 백엔드 프로세스가 발급자 스크립트의 MAC와 암호화된 새 PIN을 모두 포함하는 EMV PIN 변경 스크립트를 생성하는 것입니다. 그런 다음 명령과 암호화된 PIN이 카드에 전송되어 오프라인 PIN을 업데이트합니다. 카드에 명령을 보내는 것은 AWS Payment Cryptography 범위를 벗어납니다.

메시지 데이터  
메시지 데이터에는 발급자 스크립트에 대한 APDU 명령이 포함됩니다. 서비스는이 필드의 내용을 검증하지 않습니다.

새로운 암호화된 PIN 블록  
카드에 전송될 새 암호화된 PIN 블록입니다. PIN 암호화 키를 사용하여 암호화된 값으로 제공해야 합니다.

새 PIN PEK 식별자  
이 API로 전달되기 전에 새 PIN을 암호화하는 데 사용되는 키입니다.

보안 메시징 무결성 키  
MAC 생성에 사용되는 EMV 무결성 키(KeyUsage: TR31\$1E2\$1EMV\$1MKEY\$1INTEGRITY)입니다.

보안 메시징 기밀 키  
PIN 암호화에 사용되는 EMV 기밀 키(KeyUsage: TR31\$1E4\$1EMV\$1MKEY\$1CONFIDENTIALITY)입니다.

MajorKeyDerivationMode  
EMV는 모드 A, B 또는 C를 정의합니다. 모드 A는 가장 일반적이고 AWS Payment Cryptography는 현재 모드 A 또는 모드 B를 지원합니다.

Mode  
암호화 모드, 일반적으로 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"
}
```