

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

# 일반 사용 사례
<a name="use-cases"></a>

AWS Payment Cryptography는 많은 일반적인 결제 암호화 작업을 지원합니다. 다음 주제는 일반적인 사용 사례에 이러한 작업을 사용하는 방법에 대한 가이드 역할을 합니다. 모든 명령 목록은 AWS Payment Cryptography API를 검토하세요.

**Topics**
+ [발급자 및 발급자 프로세서](use-cases-issuers.md)
+ [인수 및 결제 진행자](use-cases-acquirers.md)

# 발급자 및 발급자 프로세서
<a name="use-cases-issuers"></a>

 발급자 사용 사례는 일반적으로 몇 부분으로 구성됩니다. 이 섹션은 함수(예: 핀 작업)별로 구성됩니다. 프로덕션 시스템에서 키는 일반적으로 지정된 카드 빈으로 범위가 지정되며 다음과 같이 인라인이 아닌 빈 설정 중에 생성됩니다.

**Topics**
+ [일반 함수](use-cases-issuers.generalfunctions.md)
+ [네트워크별 함수](use-cases-issuers.networkfunctions.md)

# 일반 함수
<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"
}
```

# 네트워크별 함수
<a name="use-cases-issuers.networkfunctions"></a>

**Topics**
+ [Visa 특정 함수](use-cases-issuers.networkfunctions.visa.md)
+ [마스터카드 특정 함수](use-cases-issuers.networkfunctions.mastercard.md)
+ [American Express 특정 함수](use-cases-issuers.networkfunctions.amex.md)
+ [JCB 특정 함수](use-cases-issuers.networkfunctions.jcb.md)

# Visa 특정 함수
<a name="use-cases-issuers.networkfunctions.visa"></a>

**Topics**
+ [ARQC - CVN18/CVN22](#use-cases-issuers.networkfunctions.visa.cvn18)
+ [ARQC - CVN10](#use-cases-issuers.networkfunctions.visa.cvn10)
+ [3DS CAVV V7](#use-cases-issuers.networkfunctions.visa.cavv-v7)
+ [dCVV(동적 카드 확인 값) - CVN17](#use-cases-issuers.networkfunctions.visa.dcvv)

## ARQC - CVN18/CVN22
<a name="use-cases-issuers.networkfunctions.visa.cvn18"></a>

CVN18 및 CVN22는 키 파생의 [CSK 메](use-cases-issuers.generalfunctions.arqc.md)서드를 활용합니다. 정확한 트랜잭션 데이터는이 두 가지 방법에 따라 다릅니다. 트랜잭션 데이터 필드 구성에 대한 자세한 내용은 체계 설명서를 참조하세요.

## ARQC - CVN10
<a name="use-cases-issuers.networkfunctions.visa.cvn10"></a>

CVN10은 세션(트랜잭션당) 파생이 아닌 카드당 키 파생을 사용하고 다른 페이로드를 사용하는 EMV 트랜잭션에 대한 이전 Visa 메서드입니다. 페이로드 콘텐츠에 대한 자세한 내용은 스키마에 문의하십시오.

### 키 생성
<a name="use-cases-issuers.networkfunctions.visa.cvn10.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":"CVN10"},{"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.networkfunctions.visa.cvn10.validation"></a>

**Example**  
이 예제에서는 Visa CVN10을 사용하여 생성된 ARQC를 검증합니다.  
 AWS Payment Cryptography가 ARQC를 검증할 수 있는 경우 http/200이 반환됩니다. ARQC가 검증되지 않은 경우 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram D791093C8A921769 \
  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
  --major-key-derivation-mode EMV_OPTION_A \ 
  --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B03011203000000 \
  --session-key-derivation-attributes='{"Visa":{"PanSequenceNumber":"01" \ 
  ,"PrimaryAccountNumber":"9137631040001422"}}'
```

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

## 3DS CAVV V7
<a name="use-cases-issuers.networkfunctions.visa.cavv-v7"></a>

Visa Secure(3DS) 트랜잭션의 경우 발급자 액세스 제어 서버(ACS)에서 CAVV(카드 소지자 인증 확인 값)를 생성합니다. CAVV는 카드 소지자 인증이 이루어졌다는 증거이며, 각 인증 트랜잭션에 대해 고유하고 인증 메시지에서 획득자가 제공합니다. CAVV v7은 판매자 이름, 구매 금액, 구매 날짜와 같은 요소를 포함하여 거래에 대한 추가 데이터를 승인에 바인딩합니다. 이렇게 하면 트랜잭션 페이로드의 암호화 해시가 됩니다.

암호화 방식으로 CAVV V7은 CVV 알고리즘을 사용하지만 입력이 모두 변경/사용되었습니다. CAVV V7 페이로드를 생성하기 위해 입력을 생성하는 방법은 해당 타사/Visa 설명서를 참조하세요.

### 키 생성
<a name="use-cases-issuers.networkfunctions.visa.cavv-v7.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":"CAVV-V7"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

응답은 후속 호출을 위한 ARN과 키 검사 값(KCV)을 포함한 요청 파라미터를 다시 반영합니다.

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk",
                "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": "F3FB13",
                "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/dnaeyrjgdjjtw6dk*와 같이 키를 `KeyArn` 나타내는를 기록해 둡니다. 다음 단계에서 이 작업을 수행합니다.

### CAVV V7 생성
<a name="use-cases-issuers.networkfunctions.visa.cavv-v7.generate"></a>

**Example**  
이 예제에서는 사양에 지정된 대로 입력이 있는 지정된 트랜잭션에 대해 CAVV V7을 생성합니다. 이 알고리즘의 경우 필드를 재사용/재사용할 수 있으므로 필드 레이블이 입력과 일치한다고 가정해서는 안 됩니다.  
사용 가능한 모든 파라미터는 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/dnaeyrjgdjjtw6dk --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=9431,ServiceCode=431}'
```

```
              {
                  "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk",
                  "KeyCheckValue": "F3FB13",
                  "ValidationData": "491"
              }
```

### CAVV V7 검증
<a name="use-cases-issuers.networkfunctions.visa.cavv-v7.verify"></a>

**Example**  
검증의 경우 입력은 CVK, 계산된 입력 값 및 검증할 트랜잭션 중에 제공된 CAVV입니다.  
사용 가능한 모든 파라미터는 API 참조 가이드의 [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html)을 참조하세요.  
CAVV는 사용자가 입력한 값(예: CVV2)이 아니지만 발급자 ACS에 의해 계산됩니다. 제공 시 항상 검증해야 하는지 여부를 고려해야 합니다.

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

```
{
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/dnaeyrjgdjjtw6dk",
                "KeyCheckValue": "F3FB13",
                "ValidationData": "491"
}
```

## dCVV(동적 카드 확인 값) - CVN17
<a name="use-cases-issuers.networkfunctions.visa.dcvv"></a>

dCVV(동적 카드 확인 값)는 비접촉 EMV 트랜잭션에 사용되는 Visa별 동적 암호입니다. 초기 EMV라고 하며 각 트랜잭션에 대해 고유한 확인 값을 생성하여 보안을 강화합니다. dCVV는 기본 계정 번호(PAN), PAN 시퀀스 번호(PSN), 애플리케이션 트랜잭션 카운터(ATC), 예측할 수 없는 번호 및 추적 데이터를 포함한 입력을 사용합니다. 여전히 일부 위치에서 사용되지만 대부분 CVN18과 같은 다른 알고리즘으로 대체되었습니다.

사용 가능한 모든 파라미터는 API 참조 가이드의 [DynamicCardVerificationValue](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_DynamicCardVerificationValue.html)를 참조하세요.

### 키 생성
<a name="use-cases-issuers.networkfunctions.visa.dcvv.setup"></a>

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

응답은 후속 호출을 위한 ARN과 키 검사 값(KCV)을 포함한 요청 파라미터를 다시 반영합니다.

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc",
                "KeyAttributes": {
                    "KeyUsage": "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS",
                    "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": "A8E4D2",
                "KeyCheckValueAlgorithm": "ANSI_X9_24",
                "Enabled": true,
                "Exportable": true,
                "KeyState": "CREATE_COMPLETE",
                "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                "CreateTimestamp": "2025-02-02T11:45:30.648000-08:00",
                "UsageStartTimestamp": "2025-02-02T11:45:30.626000-08:00"
            }
        }
```

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

### dCVV 생성
<a name="use-cases-issuers.networkfunctions.visa.dcvv.generate"></a>

**Example**  
이 예제에서는 비접촉 EMV 트랜잭션에 대한 dCVV를 생성합니다. 입력에는 PAN, PAN 시퀀스 번호, 애플리케이션 트랜잭션 카운터, 예측할 수 없는 번호 및 추적 데이터가 포함됩니다.  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc \
    --primary-account-number=5111112627662122 \
    --generation-attributes DynamicCardVerificationValue='{ApplicationTransactionCounter=01,PanSequenceNumber=00,TrackData=12345,UnpredictableNumber=123}' \
    --validation-data-length 5
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc",
    "KeyCheckValue": "A8E4D2",
    "ValidationData": "36667"
}
```

### dCVV 검증
<a name="use-cases-issuers.networkfunctions.visa.dcvv.verify"></a>

**Example**  
이 예제에서는 트랜잭션 중에 제공된 dCVV를 검증합니다. 검증을 위해 생성에 사용된 것과 동일한 입력을 제공해야 합니다.  
 AWS Payment Cryptography를 검증할 수 있는 경우 http/200이 반환됩니다. 값이 검증되지 않으면 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc \
    --primary-account-number=5111112627662122 \
    --validation-data=36667 \
    --verification-attributes DynamicCardVerificationValue='{ApplicationTransactionCounter=01,PanSequenceNumber=00,TrackData=12345,UnpredictableNumber=123}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/mw7dn3qxvkfh8ztc",
    "KeyCheckValue": "A8E4D2"
}
```

# 마스터카드 특정 함수
<a name="use-cases-issuers.networkfunctions.mastercard"></a>

**Topics**
+ [DCVC3](#use-cases-issuers.networkfunctions.mastercard.dcvc)
+ [ARQC - CVN14/CVN15](#use-cases-issuers.networkfunctions.mastercard.cvn14)
+ [ARQC - CVN12/CVN13](#use-cases-issuers.networkfunctions.mastercard.cvn12)
+ [3DS SPA2"](#use-cases-issuers.networkfunctions.mastercard.spa2aav)

## DCVC3
<a name="use-cases-issuers.networkfunctions.mastercard.dcvc"></a>

DCVC3는 EMV CSK 및 Mastercard CVN12 체계보다 앞서 동적 키를 활용하기 위한 또 다른 접근 방식을 나타냅니다. 경우에 따라 다른 사용 사례에도 사용됩니다. 이 체계에서 입력은 PAN, PSN, Track1/Track2 데이터, 예측할 수 없는 숫자 및 트랜잭션 카운터(ATC)입니다.

### 키 생성
<a name="use-cases-issuers.networkfunctions.mastercard.dcvc3.setup"></a>

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

응답은 후속 호출을 위한 ARN과 키 검사 값(KCV)을 포함한 요청 파라미터를 다시 반영합니다.

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/hrh6qgbi3sk4y3wq",
                "KeyAttributes": {
                    "KeyUsage": "TR31_E4_EMV_MKEY_DYNAMIC_NUMBERS",
                    "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/hrh6qgbi3sk4y3wq*와 같이 키를 `KeyArn` 나타내는를 기록해 둡니다. 다음 단계에서 이 작업을 수행합니다.

### DCVC3 생성
<a name="use-cases-issuers.networkfunctions.mastercard.dcvc3.generate"></a>

**Example**  
DCVC3는 일반적으로 칩 카드에 의해 생성되지만이 예제와 같이 수동으로 생성할 수도 있습니다.  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk --primary-account-number=5413123456784808 --generation-attributes DynamicCardVerificationCode='{ApplicationTransactionCounter=0000,TrackData=5241060000000069D13052020000000000003F,PanSequenceNumber=00,UnpredictableNumber=00000000}''
```

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

### DCVC3 검증
<a name="use-cases-issuers.networkfunctions.mastercard.dcvc3.validation"></a>

**Example**  
이 예제에서는 DCVC3를 검증합니다. ATC는 16진수로 제공되어야 합니다. 예를 들어 카운터 11은 000B로 표시되어야 합니다. 서비스에는 3자리 DCVC3가 필요하므로 4(또는 5)자리 값을 저장한 경우 3자리가 될 때까지 왼쪽 문자를 잘라내기만 하면 됩니다(예: 15321의 경우 validation-data 값이 321이어야 함).  
 AWS Payment Cryptography를 검증할 수 있는 경우 http/200이 반환됩니다. 값이 검증되지 않으면 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk --primary-account-number=5413123456784808 --verification-attributes DynamicCardVerificationCode='{ApplicationTransactionCounter=000B,TrackData=5241060000000069D13052020000000000003F,PanSequenceNumber=00,UnpredictableNumber=00000001}' --validation-data 398
```

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

## ARQC - CVN14/CVN15
<a name="use-cases-issuers.networkfunctions.mastercard.cvn14"></a>

CVN14 및 CVN15는 키 파생의 [EMV CSK 메](use-cases-issuers.generalfunctions.arqc.md)서드를 활용합니다. 정확한 트랜잭션 데이터는이 두 가지 방법에 따라 다릅니다. 트랜잭션 데이터 필드 구성에 대한 자세한 내용은 체계 설명서를 참조하세요.

## ARQC - CVN12/CVN13
<a name="use-cases-issuers.networkfunctions.mastercard.cvn12"></a>

CVN12 및 CVN13은 예측할 수 없는 숫자를 트랜잭션별 파생에 통합하고 다른 페이로드를 사용하는 EMV 트랜잭션에 대한 이전 Mastercard별 메서드입니다. 페이로드 콘텐츠에 대한 자세한 내용은 스키마에 문의하십시오.

### 키 생성
<a name="use-cases-issuers.networkfunctions.mastercard.cvn12.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":"CVN12"},{"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.networkfunctions.mastercard.cvn12.validation"></a>

**Example**  
이 예제에서는 Mastercard CVN12를 사용하여 생성된 ARQC를 검증합니다.  
 AWS Payment Cryptography가 ARQC를 검증할 수 있는 경우 http/200이 반환됩니다. ARQC가 검증되지 않은 경우 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram 31BE5D49F14A5F01 \
  --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='{"MastercardSessionKey":{"ApplicationTransactionCounter":"000B","PanSequenceNumber":"01","PrimaryAccountNumber":"5413123456784808","UnpredictableNumber":"00000001"}}'
```

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

## 3DS SPA2"
<a name="use-cases-issuers.networkfunctions.mastercard.spa2aav"></a>

SPA2(계정 인증 값)는 Mastercard 3DS 트랜잭션(Mastercard Idenity Check라고도 함)에 사용됩니다. HMAC 기반 MAC 생성을 사용하여 전자 상거래 트랜잭션에 대한 암호화 인증을 제공합니다. 트랜잭션별 데이터 및 공유 보안 키를 사용하여 생성되며,

### 키 생성
<a name="use-cases-issuers.networkfunctions.mastercard.spa2aav.setup"></a>

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

응답은 후속 호출을 위한 ARN과 키 검사 값(KCV)을 포함한 요청 파라미터를 다시 반영합니다.

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn",
                "KeyAttributes": {
                    "KeyUsage": "TR31_M7_HMAC_KEY",
                    "KeyClass": "SYMMETRIC_KEY",
                    "KeyAlgorithm": "HMAC_SHA256",
                    "KeyModesOfUse": {
                        "Encrypt": false,
                        "Decrypt": false,
                        "Wrap": false,
                        "Unwrap": false,
                        "Generate": true,
                        "Sign": false,
                        "Verify": true,
                        "DeriveKey": false,
                        "NoRestrictions": false
                    }
                },
                "KeyCheckValue": "C661F9",
                "KeyCheckValueAlgorithm": "HMAC",
                "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-west-2:111122223333:key/q5vjtshsg67cz5gn*과 같이 키를 `KeyArn` 나타내는를 기록해 둡니다. 다음 단계에서 이 작업을 수행합니다.

### SPA2" 생성
<a name="use-cases-issuers.networkfunctions.mastercard.spa2aav.generate"></a>

**Example**  
이 예제에서는 HMAC MAC 생성을 사용하여 SPA2 HMA의 발급자 인증 값(IAV) 구성 요소를 생성합니다. 메시지 데이터에는 인증될 트랜잭션별 정보가 포함되어 있습니다. 메시지 데이터의 형식은 Mastercard의 SPA2 사양을 따라야 하며이 예제에서는 다루지 않습니다.  
IAV를 AAA 값에 삽입하려면 Mastercard 사양에서 형식을 검토하세요.

```
$ aws payment-cryptography-data generate-mac --key-identifier arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn --message-data "2226400099919520FFFFd8b448be65694fe7b42f836bad396e9d" --generation-attributes Algorithm=HMAC --region us-west-2
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn",
    "KeyCheckValue": "C661F9",
    "Mac": "6FB2405E9D8A4C1F7B173F73ADD1A6DC358531CAB0E9994FC5B62012ADDE91FC"
}
```

### SPA2AA 확인
<a name="use-cases-issuers.networkfunctions.mastercard.spa2aav.verify"></a>

**Example**  
이 예제에서는 SPA2AA를 확인합니다. 확인을 위해 동일한 메시지 데이터와 MAC 값이 제공됩니다.  
 AWS Payment Cryptography가 MAC를 검증할 수 있는 경우 http/200이 반환됩니다. MAC가 검증되지 않은 경우 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-mac --key-identifier arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn --message-data "2226400099919520FFFFd8b448be65694fe7b42f836bad396e9d" --mac "6FB2405E9D8A4C1F7B173F73ADD1A6DC358531CAB0E9994FC5B62012ADDE91FC" --verification-attributes Algorithm=HMAC --region us-west-2
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-west-2:111122223333:key/q5vjtshsg67cz5gn",
    "KeyCheckValue": "C661F9"
}
```

# American Express 특정 함수
<a name="use-cases-issuers.networkfunctions.amex"></a>

**Topics**
+ [CSC1](#use-cases-issuers.networkfunctions.amex.csc)
+ [CSC2](#use-cases-issuers.networkfunctions.amex.csc2)
+ [iCSC](#use-cases-issuers.networkfunctions.amex.csc3)
+ [3DS AEVV](#use-cases-issuers.networkfunctions.amex.3dsaevv)

## CSC1
<a name="use-cases-issuers.networkfunctions.amex.csc"></a>

CSC 버전 1은 Classic CSC 알고리즘이라고도 합니다. 서비스는 3, 4 또는 5자리 숫자로 제공할 수 있습니다.

사용 가능한 모든 파라미터는 API 참조 가이드의 [AmexCardSecurityCodeVersion1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_AmexCardSecurityCodeVersion1.html)을 참조하세요.

### 키 생성
<a name="use-cases-issuers.networkfunctions.amex.csc.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":"CSC1"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

응답은 후속 호출을 위한 ARN과 키 검사 값(KCV)을 포함한 요청 파라미터를 다시 반영합니다.

```
{
                "Key": {
                    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq",
                    "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": "8B5077",
                    "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/esh6hn7pxdtzgq*와 같이 키를 `KeyArn` 나타내는를 기록해 둡니다. 다음 단계에서 이 작업을 수행합니다.

### CSC1 생성
<a name="use-cases-issuers.networkfunctions.amex.csc1.generate"></a>

**Example**  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq --primary-account-number=344131234567848 --generation-attributes AmexCardSecurityCodeVersion1='{CardExpiryDate=1224}' --validation-data-length 4
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq",
    "KeyCheckValue": "8B5077",
    "ValidationData": "3938"
  }
```

### CSC1 검증
<a name="use-cases-issuers.networkfunctions.amex.csc1.validation"></a>

**Example**  
이 예제에서는 CSC1을 검증합니다.  
 AWS Payment Cryptography를 검증할 수 있는 경우 http/200이 반환됩니다. 값이 검증되지 않으면 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq --primary-account-number=344131234567848 --verification-attributes AmexCardSecurityCodeVersion1='{CardExpiryDate=1224}''  --validation-data 3938
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/esh6hn7pxdtttzgq",
    "KeyCheckValue": "8B5077"
  }
```

## CSC2
<a name="use-cases-issuers.networkfunctions.amex.csc2"></a>

CSC 버전 2는 향상된 CSC 알고리즘이라고도 합니다. 서비스는 3, 4 또는 5자리 숫자로 제공할 수 있습니다. CSC2의 서비스 코드는 일반적으로 000입니다.

사용 가능한 모든 파라미터는 API 참조 가이드의 [AmexCardSecurityCodeVersion2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_AmexCardSecurityCodeVersion2.html)를 참조하세요.

### 키 생성
<a name="use-cases-issuers.networkfunctions.amex.csc2.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":"CSC2"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

응답은 후속 호출을 위한 ARN과 키 검사 값(KCV)을 포함한 요청 파라미터를 다시 반영합니다.

```
{
            "Key": {
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda",
                "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": "BF1077",
                "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/erlm445qvunmvoda*와 같이 키를 `KeyArn` 나타내는를 기록해 둡니다. 다음 단계에서 이 작업을 수행합니다.

### CSC2 생성
<a name="use-cases-issuers.networkfunctions.amex.csc2.generate"></a>

이 예제에서는 길이가 4인 CSC2를 생성합니다. CSC는 3, 4 또는 5의 길이로 생성할 수 있습니다. American Express의 경우 PANs은 15자리여야 하며 34 또는 37로 시작해야 합니다. 만료 날짜는 일반적으로 YYMM 형식입니다. 서비스 코드는 다를 수 있음 - 수동을 검토하지만 일반적인 값은 000, 201 또는 702입니다.

**Example**  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda --primary-account-number=344131234567848 --generation-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=2412,ServiceCode=000}' --validation-data-length 4
```

```
{
"KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda",
"KeyCheckValue": "BF1077",
"ValidationData": "3982"
}
```

### CSC2 검증
<a name="use-cases-issuers.networkfunctions.amex.csc2.validation"></a>

**Example**  
이 예제에서는 CSC2를 검증합니다.  
 AWS Payment Cryptography를 검증할 수 있는 경우 http/200이 반환됩니다. 값이 검증되지 않으면 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda --primary-account-number=344131234567848 --verification-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=2412,ServiceCode=000}' --validation-data 3982
```

```
{
"KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/erlm445qvunmvoda",
"KeyCheckValue": "BF1077"
}
```

## iCSC
<a name="use-cases-issuers.networkfunctions.amex.csc3"></a>

iCSC는 정적 CSC 알고리즘이라고도 하며 CSC 버전 2를 사용하여 계산됩니다. 서비스는 3, 4 또는 5자리 숫자로 제공할 수 있습니다.

서비스 코드 999를 사용하여 연락처 카드의 iCSC를 계산합니다. 서비스 코드 702를 사용하여 비접촉 카드의 iCSC를 계산합니다.

사용 가능한 모든 파라미터는 API 참조 가이드의 [AmexCardSecurityCodeVersion2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_AmexCardSecurityCodeVersion2.html)를 참조하세요.

### 키 생성
<a name="use-cases-issuers.networkfunctions.amex.csc3.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":"CSC1"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

응답은 후속 호출을 위한 ARN과 키 검사 값(KCV)을 포함한 요청 파라미터를 다시 반영합니다.

```
{
        "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv",
        "KeyAttributes": {
            "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY"
            "KeyAlgorithm": "TDES_2KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyModesOfUse": {
                "Decrypt": false,
                "DeriveKey": false,
                "Encrypt": false,
                "Generate": true,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": false,
                "Verify": true,
                "Wrap": false
            },
        },
        "KeyCheckValue": "7121C7",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "Enabled": true,
        "Exportable": true,
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "CreateTimestamp": "2025-01-29T09:19:21.209000-05:00",
        "UsageStartTimestamp": "2025-01-29T09:19:21.192000-05:00"
        }
     }
```

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

### iCSC 생성
<a name="use-cases-issuers.networkfunctions.amex.icsc.generate"></a>

이 예제에서는 서비스 코드 702를 사용하는 비접촉식 카드에 대해 길이가 4인 iCSC를 생성합니다. CSC는 3, 4 또는 5의 길이로 생성할 수 있습니다. American Express의 경우 PANs은 15자리여야 하며 34 또는 37로 시작해야 합니다.

**Example**  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv --primary-account-number=344131234567848 --generation-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=1224,ServiceCode=702}' --validation-data-length 4
```

```
{
    "KeyArn": arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv,
    "KeyCheckValue": 7121C7,
    "ValidationData": "2365"
}
```

### iCSC 검증
<a name="use-cases-issuers.networkfunctions.amex.icsc.validation"></a>

**Example**  
이 예제에서는 iCSC를 검증합니다.  
 AWS Payment Cryptography를 검증할 수 있는 경우 http/200이 반환됩니다. 값이 검증되지 않으면 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv --primary-account-number=344131234567848 --verification-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=1224,ServiceCode=702}' --validation-data 2365
```

```
{
    "KeyArn": arn:aws:payment-cryptography:us-east-1:111122223333:key/7vrybrbvjcvwtunv,
    "KeyCheckValue": 7121C7
}
```

## 3DS AEVV
<a name="use-cases-issuers.networkfunctions.amex.3dsaevv"></a>

3DS AEVV(3-D 보안 계정 확인 값)는 American Express 3-D 보안 인증에 사용됩니다. CSC2와 동일한 알고리즘을 사용하지만 입력 파라미터는 다릅니다. 만료 날짜 필드는 예측할 수 없는(무작위) 번호로 채워야 하며, 서비스 코드는 AEVV 인증 결과 코드(1자리)와 보조 인증 코드(2자리)로 구성됩니다. 출력 길이는 3자리여야 합니다.

사용 가능한 모든 파라미터는 API 참조 가이드의 [AmexCardSecurityCodeVersion2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_AmexCardSecurityCodeVersion2.html)를 참조하세요.

### 키 생성
<a name="use-cases-issuers.networkfunctions.amex.3dsaevv.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":"3DS_AEVV"},{"Key":"CARD_BIN","Value":"12345678"}]'
```

응답은 후속 호출을 위한 ARN과 키 검사 값(KCV)을 포함한 요청 파라미터를 다시 반영합니다.

```
{
        "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm",
        "KeyAttributes": {
            "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY"
            "KeyAlgorithm": "TDES_2KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyModesOfUse": {
                "Decrypt": false,
                "DeriveKey": false,
                "Encrypt": false,
                "Generate": true,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": false,
                "Verify": true,
                "Wrap": false
            },
        },
        "KeyCheckValue": "8F3A21",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "Enabled": true,
        "Exportable": true,
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "CreateTimestamp": "2025-02-02T10:30:15.209000-05:00",
        "UsageStartTimestamp": "2025-02-02T10:30:15.192000-05:00"
        }
     }
```

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

### 3DS AEVV 생성
<a name="use-cases-issuers.networkfunctions.amex.3dsaevv.generate"></a>

이 예제에서는 길이가 3인 3DS AEVV를 생성합니다. 만료 날짜 필드에는 예측할 수 없는(임의) 번호(예: 1234)가 포함되어 있으며, 서비스 코드는 AEVV 인증 결과 코드(1자리)와 두 번째 인증 코드(2자리)로 구성됩니다. 예를 들어 543은 인증 결과 코드이고 43은 두 번째 인증 코드입니다. American Express의 경우 PANs은 15자리여야 하며 34 또는 37로 시작해야 합니다.

**Example**  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm --primary-account-number=344131234567848 --generation-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=1234,ServiceCode=543}' --validation-data-length 3
```

```
{
    "KeyArn": arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm,
    "KeyCheckValue": 8F3A21,
    "ValidationData": "921"
}
```

### 3DS AEVV 검증
<a name="use-cases-issuers.networkfunctions.amex.3dsaevv.validation"></a>

**Example**  
이 예제에서는 3DS AEVV를 검증합니다.  
 AWS Payment Cryptography를 검증할 수 있는 경우 http/200이 반환됩니다. 값이 검증되지 않으면 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-card-validation-data  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm --primary-account-number=344131234567848 --verification-attributes AmexCardSecurityCodeVersion2='{CardExpiryDate=1234,ServiceCode=543}' --validation-data 921
```

```
{
    "KeyArn": arn:aws:payment-cryptography:us-east-2:111122223333:key/kw8djn5qxvfh3ztm,
    "KeyCheckValue": 8F3A21
}
```

# JCB 특정 함수
<a name="use-cases-issuers.networkfunctions.jcb"></a>

**Topics**
+ [ARQC - CVN04](#use-cases-issuers.networkfunctions.jcb.cvn04)
+ [ARQC - CVN01](#use-cases-issuers.networkfunctions.jcb.cvn01)

## ARQC - CVN04
<a name="use-cases-issuers.networkfunctions.jcb.cvn04"></a>

JCB CVN04는 키 파생의 [CSK 메](use-cases-issuers.generalfunctions.arqc.md)서드를 활용합니다. 트랜잭션 데이터 필드 구성에 대한 자세한 내용은 스키마 설명서를 참조하세요.

## ARQC - CVN01
<a name="use-cases-issuers.networkfunctions.jcb.cvn01"></a>

CVN01은 세션(트랜잭션당) 추출 대신 카드 키별 추출을 사용하고 다른 페이로드를 사용하는 EMV 트랜잭션에 대한 이전 JCB 메서드입니다. 이 메시지는 Visa에서도 사용되므로 요소 이름에는 JCB에도 사용되더라도 해당 이름이 있습니다. 페이로드 콘텐츠에 대한 자세한 내용은 체계 설명서를 참조하십시오.

### 키 생성
<a name="use-cases-issuers.networkfunctions.jcb.cvn01.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":"CVN10"},{"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.networkfunctions.jcb.cvn01.validation"></a>

**Example**  
이 예제에서는 JCB CVN01을 사용하여 생성된 ARQC를 검증합니다. 이렇게 하면 Visa 메서드와 동일한 옵션이 사용되므로 파라미터의 이름이 사용됩니다.  
 AWS Payment Cryptography가 ARQC를 검증할 수 있는 경우 http/200이 반환됩니다. ARQC가 검증되지 않은 경우 http/400 응답을 반환합니다.  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram D791093C8A921769 \
              --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
              --major-key-derivation-mode EMV_OPTION_A \ 
              --transaction-data 00000000170000000000000008400080008000084016051700000000093800000B03011203000000 \
              --session-key-derivation-attributes='{"Visa":{"PanSequenceNumber":"01" \ 
              ,"PrimaryAccountNumber":"9137631040001422"}}'
```

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

# 인수 및 결제 진행자
<a name="use-cases-acquirers"></a>

전표 매입사, PSPs 및 결제 진행자는 일반적으로 발급자와 다른 암호화 요구 사항 세트를 갖습니다. 일반적인 사용 사례는 다음과 같습니다.

**데이터 복호화**  <a name="use-cases-acquirers.decryptdata"></a>
데이터(특히 팬 데이터)는 결제 터미널에서 암호화할 수 있으며 백엔드에서 복호화해야 합니다. [데이터 복호](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_DecryptData.html)화 및 데이터 암호화는 TDES, AES 및 DUKPT 파생 기술을 비롯한 다양한 방법을 지원합니다. AWS Payment Cryptography 서비스 자체도 PCI P2PE를 준수하며 PCI P2PE 복호화 구성 요소로 등록됩니다.

**TranslatePin**  <a name="use-cases-acquirers.translatepin"></a>
PCI PIN 규정 준수를 유지하기 위해 획득 시스템에는 보안 디바이스에 카드 소지자 핀을 입력한 후 카드 소지자 핀이 명확하게 없어야 합니다. 따라서 터미널에서 다운스트림 시스템(예: 결제 네트워크 또는 발급자)으로 핀을 전달하려면 결제 터미널에서 사용한 키와 다른 키를 사용하여 핀을 다시 암호화해야 합니다. [Pin 번역](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_TranslatePinData.html)은 암호화된 핀을 servicebbb를 사용하여 한 키에서 다른 키로 안전하게 변환하여 이를 달성합니다. 이 명령을 사용하면 TDES, AES 및 DUKPT 유도와 같은 다양한 체계와 ISO-0, ISO-3 및 ISO-4와 같은 핀 블록 형식 간에 핀을 변환할 수 있습니다.

**VerifyMac**  <a name="use-cases-acquirers.verifymac"></a>
데이터가 전송 중에 수정되지 않도록 결제 터미널의 데이터를 MAC로 지정할 수 있습니다. Mac 및 GenerateMac이 ISO-9797-1 알고리즘 1, ISO-9797-1 알고리즘 ISO-9797-13(소매 MAC) 및 CMAC 기법과 함께 사용할 수 있는 TDES, AES 및 DUKPT 파생 기법을 비롯한 대칭 키를 사용하는 다양한 기법을 지원하는지 [확인합니다](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyMac.html).

**Topics**
+ [동적 키 사용](use-cases-acquirers-dynamickeys.md)

# 동적 키 사용
<a name="use-cases-acquirers-dynamickeys"></a>

 동적 키를 사용하면와 같은 암호화 작업에 일회성 또는 제한된 사용 키를 사용할 수 있습니다`[EncryptData](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_EncryptData.html)`. 이 흐름은 키 구성 요소가 자주 교체되고(예: 모든 카드 트랜잭션에서) 키 구성 요소를 서비스로 가져오지 않으려는 경우에 사용할 수 있습니다. 수명이 짧은 키는 [softPOS/Mpoc](terminology.md#terms.mpoc) 또는 기타 솔루션의 일부로 사용할 수 있습니다.

**참고**  
 이는 AWS Payment Cryptography를 사용하는 일반적인 흐름 대신 사용할 수 있습니다. 여기서 암호화 키는 생성되거나 서비스로 가져오고 키는 키 별칭 또는 키 ARN을 사용하여 지정됩니다.

다음 작업은 동적 키를 지원합니다.
+ EncryptData
+ DecryptData
+ ReEncryptData
+ TranslatePin

## 데이터 복호화
<a name="use-case-acquirers-dynamickeys.examples.decryptdata"></a>

 다음 예제에서는 복호화 명령과 함께 동적 키를 사용하는 방법을 보여줍니다. 이 경우 키 식별자는 복호화 키(TR-31 형식의 래핑된 키 파라미터에 제공됨)를 보호하는 래핑 키(KEK)입니다. 래핑된 키는 B 또는 D 사용 모드와 함께 복호화 명령과 함께 사용할 D0의 주요 목적이어야 합니다.

**Example**  

```
$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza --cipher-text 1234123412341234123412341234123A --decryption-attributes 'Symmetric={Mode=CBC,InitializationVector=1234123412341234}'   --wrapped-key WrappedKeyMaterial={"Tr31KeyBlock"="D0112D0TN00E0000B05A6E82D7FC68B95C84306634B0000DA4701BE9BCA318B3A30A400B059FD4A8DE19924A9D3EE459F24FDE680F8E4A40"}
```

```
{
   "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
   "KeyCheckValue": "0A3674",
   "PlainText": "2E138A746A0032023BEF5B85BA5060BA"
}
```

## 핀 번역
<a name="use-case-acquirers-dynamickeys.examples.translatepin"></a>

 다음 예제에서는 동적 키를 변환 핀 명령과 함께 사용하여 동적 키에서 반정적 획득자 작업 키(AWK)로 변환하는 방법을 보여줍니다. 이 경우 수신 키 식별자는 TR-31 형식으로 제공되는 동적 핀 암호화 키(PEK)를 보호하는 래핑 키(KEK)입니다. 래핑된 키는 B 또는 D의 사용 모드와 `P0` 함께의 주요 목적이어야 합니다. 발신 키 식별자는 유형의 키`TR31_P0_PIN_ENCRYPTION_KEY`와 Encrypt=true,Wrap=true의 사용 모드입니다.

**Example**  

```
$ aws payment-cryptography-data translate-pin-data --encrypted-pin-block "C7005A4C0FA23E02" --incoming-translation-attributes=IsoFormat0='{PrimaryAccountNumber=171234567890123}' --incoming-key-identifier alias/PARTNER1_KEK  --outgoing-key-identifier alias/ACQUIRER_AWK_PEK --outgoing-translation-attributes IsoFormat0="{PrimaryAccountNumber=171234567890123}"  --incoming-wrapped-key WrappedKeyMaterial={"Tr31KeyBlock"="D0112P0TB00S0000EB5D8E63076313162B04245C8CE351C956EA4A16CC32EB3FB61DE3FC75C751734B773F5B645943A854C65740738B8304"}
```

```
{
   "PinBlock": "2E66192BDA390C6F",
   "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
   "KeyCheckValue": "0A3674"
}
```