

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

# 키 관리
<a name="keys-manage"></a>

 AWS Payment Cryptography를 시작하려면 AWS Payment Cryptography 키를 생성합니다.

이 섹션에서는 수명 주기 전반에 걸쳐 다양한 AWS Payment Cryptography 키 유형을 생성하고 관리하는 방법을 설명합니다. 키를 생성, 보기 및 편집하는 방법과 키에 태그를 지정하고, 키 별칭을 생성하고, 키를 활성화 또는 비활성화하는 방법을 알아봅니다.

 AWS Payment Cryptography 키는 리전 리소스입니다. 여러에서 지정된 키를 사용하려는 경우 동일한 AWS 파티션 및 계정 내에서 지정한 키 구성 요소 및 메타데이터를 안전하게 복사하는 다중 리전 키 복제를 활성화할 AWS 리전수 AWS 리전 있습니다. 다중 리전 키 복제의 소스 키를 [프라이머리 리전 키](terminology.md#term.prk)(PRK)라고 하며 이는 모든 키 관리 활동의 신뢰할 수 있는 소스로 유지됩니다. 복제된 키를 [복제본 리전 키](terminology.md#term.rrk)(RRK)라고 하며 PRK의 읽기 전용 복제본입니다. 가용성, 재해 복구 및 짧은 지연 시간에 대한 설계 목표를 충족하려면 키와 함께 다중 리전 키를 사용하는 것이 좋습니다.

**Topics**
+ [키 생성](create-keys.md)
+ [키 나열](keys-list.md)
+ [키 활성화 및 비활성화](keys-enable-disable.md)
+ [AWS Payment Cryptography 키 복제](keys-multi-region-replication.md)
+ [키 삭제](keys-deleting.md)
+ [키 가져오기 및 내보내기](keys-importexport.md)
+ [별칭 사용](keys-managealias.md)
+ [키 가져오기](getkeys.md)
+ [키 태그 지정](tagging-keys.md)
+ [AWS Payment Cryptography 키의 키 속성 이해](keys-validattributes.md)

# 키 생성
<a name="create-keys"></a>

 **CreateKey** API 작업을 사용하여 AWS Payment Cryptography 키를 생성할 수 있습니다. 키를 생성할 때 키 알고리즘, 키 사용, 허용된 작업, 내보내기 가능 여부와 같은 속성을 지정합니다. AWS Payment Cryptography 키를 생성한 후에는 이러한 속성을 변경할 수 없습니다.

**참고**  
에 대해 다중 리전 키 복제가 활성화되어 AWS 계정 있고 Payment Cryptography 키를 생성하는 경우이 키는 자동으로 [기본 리전 키(PRK)](terminology.md#term.prk)가 됩니다. PRK는 **CreateKey** 명령에서 `--replication-regions` 파라미터를 지정하지 않은 경우에도 복제됩니다. 자세한 내용은 [다중 리전 키 복제 작동 방식](keys-multi-region-replication.md#how-mrr-works) 단원을 참조하십시오.

**Topics**
+ [3KEY TDES 기본 파생 키 생성](#3des-deriv-mrr-example)
+ [CVV/CVV2용 2KEY TDES 키 생성](#cvvkey-example)
+ [HMAC 키 생성](#hmac-example)
+ [AES-256 키 생성](#aes-example)
+ [PIN 암호화 키(PEK) 생성](#pekkey-example)
+ [비대칭(RSA) 키 생성](#asymmetrickey-example)
+ [PIN 확인 값(PVV) 키 생성](#pvv-example)
+ [비대칭 ECC 키 생성](#ECDH-example)

## 3KEY TDES 기본 파생 키 생성
<a name="3des-deriv-mrr-example"></a>

**Example**  
이 명령은 미국 동부(오하이오) 및 미국 서부(오레곤) 리전에 [복제](keys-multi-region-replication.md#how-mrr-works)될 3KEY TDES 파생 키를 생성합니다. 응답에는 reques 파라미터, 후속 호출을 위한 Amazon 리소스 이름(ARN) 및 Key Check Value(KCV)가 포함됩니다.  

```
$ aws payment-cryptography create-key --exportable --key-attributes \
     "KeyUsage=TR31_B0_BASE_DERIVATION_KEY, \ 
     KeyClass=SYMMETRIC_KEY,KeyAlgorithm=TDES_3KEY, \
     KeyModesOfUse={NoRestrictions=true}" \ 
     --replication-regions us-east-2 --region us-west-2
```
출력 예시:  

```
{
    "Key": {
        "CreateTimestamp": "2022-10-26T16:04:11.642000-07:00",
        "Enabled": true,
        "Exportable": true,
        "KeyArn": "FE23D3",
        "KeyAttributes": {
            "KeyAlgorithm": "TDES_3KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyModesOfUse": {
                "Decrypt": false,
                "DeriveKey": true,
                "Encrypt": false,
                "Generate": false,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": false,
                "Verify": true,
                "Wrap": false
            },
            "KeyUsage": "TR31_B0_BASE_DERIVATION_KEY"
        },
        "KeyCheckValue": "FE23D3",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "UsageStartTimestamp": "2022-10-26T16:04:11.559000-07:00"
}
```

## CVV/CVV2용 2KEY TDES 키 생성
<a name="cvvkey-example"></a>

**Example**  
이 명령은 CVV/CVV2 값을 생성하고 확인하기 위한 2KEY TDES 키를 생성합니다. 응답에는 요청 파라미터, 후속 호출을 위한 Amazon 리소스 이름(ARN) 및 키 확인 값(KCV)이 포함됩니다.  

```
$ 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}'
```
출력 예시:  

```
{
    "Key": {
        "CreateTimestamp": "2022-10-26T16:04:11.642000-07:00",
        "Enabled": true,
        "Exportable": true,
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/7f7g4spf3xcklhzu",
        "KeyAttributes": {
            "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
            },
            "KeyUsage": "TR31_C0_CARD_VERIFICATION_KEY"
        },
        "KeyCheckValue": "AEA5CD",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "UsageStartTimestamp": "2022-10-26T16:04:11.559000-07:00"
    }
}
```

## HMAC 키 생성
<a name="hmac-example"></a>

**Example**  
HMAC 키는 해시 메시지 인증 코드(HMAC)를 생성하거나 확인하는 데 사용됩니다. HMAC 키를 사용하면 키 생성 시 해시 유형(예: HMAC\$1SHA224 및 HMAC\$1SHA512)이 할당되며 수정할 수 없습니다.  

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=HMAC_SHA512,KeyUsage=TR31_M7_HMAC_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate = true,Verify = true}'
```
출력 예시:  

```
{
 "Key": {
 "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
 "KeyAttributes": {
 "KeyUsage": "TR31_M7_HMAC_KEY",
 "KeyClass": "SYMMETRIC_KEY",
 "KeyAlgorithm": "HMAC_SHA512",
 "KeyModesOfUse": {
 "Encrypt": false,
 "Decrypt": false,
 "Wrap": false,
 "Unwrap": false,
 "Generate": true,
 "Sign": false,
 "Verify": true,
 "DeriveKey": false,
 "NoRestrictions": false
 }
 },
 "KeyCheckValue": "2976E7",
 "KeyCheckValueAlgorithm": "HMAC",
 "Enabled": true,
 "Exportable": true,
 "KeyState": "CREATE_COMPLETE",
 "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
 "CreateTimestamp": "2025-07-30T10:06:12.142000-07:00",
 "UsageStartTimestamp": "2025-07-30T10:06:12.128000-07:00"
 }
}
```

## AES-256 키 생성
<a name="aes-example"></a>

**Example**  
이 명령은 데이터 암호화 및 복호화를 위한 AES-256 대칭 키를 생성합니다. AES 키는 민감한 데이터에 대한 강력한 암호화를 제공하며 카드 소지자 데이터 및 기타 민감한 정보를 암호화하는 결제 처리에 일반적으로 사용되지만 TDES는 EMV와 같은 발급자 사용 사례에 더 일반적으로 사용됩니다.  

```
$ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=AES_256,KeyUsage=TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Encrypt=true,Decrypt=true,Wrap=true,Unwrap=true}'
```
출력 예시:  

```
{
    "Key": {
        "CreateTimestamp": "2025-02-02T10:15:30.142000-08:00",
        "Enabled": true,
        "Exportable": true,
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/kwapwa6qaifllw2h",
        "KeyAttributes": {
            "KeyAlgorithm": "AES_256",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyModesOfUse": {
                "Decrypt": true,
                "DeriveKey": false,
                "Encrypt": true,
                "Generate": false,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": true,
                "Verify": false,
                "Wrap": true
            },
            "KeyUsage": "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY"
        },
        "KeyCheckValue": "2976F5",
        "KeyCheckValueAlgorithm": "CMAC",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "UsageStartTimestamp": "2025-02-02T10:15:30.128000-08:00"
    }
}
```

## PIN 암호화 키(PEK) 생성
<a name="pekkey-example"></a>

**Example**  
이 명령은 PIN 값을 암호화하기 위한 3KEY TDES 키를 생성하지만 핀 키는 상호 운용성 요구 사항에 따라 AES일 수도 있습니다. 이 키를 사용하여 트랜잭션에서와 같이 확인 중에 PINs 안전하게 저장하거나 PINs 해독할 수 있습니다. 응답에는 요청 파라미터, 후속 호출을 위한 ARN 및 KCV가 포함됩니다.  

```
$ aws payment-cryptography create-key --exportable --key-attributes \
    KeyAlgorithm=TDES_3KEY,KeyUsage=TR31_P0_PIN_ENCRYPTION_KEY, \
    KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Encrypt=true,Decrypt=true,Wrap=true,Unwrap=true}'
```
출력 예시:  

```
{
    "Key": {
        "CreateTimestamp": "2022-10-27T08:27:51.795000-07:00",
        "Enabled": true,
        "Exportable": true,
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
        "KeyAttributes": {
            "KeyAlgorithm": "TDES_3KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyModesOfUse": {
                "Decrypt": true,
                "DeriveKey": false,
                "Encrypt": true,
                "Generate": false,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": true,
                "Verify": false,
                "Wrap": true
            },
            "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY"
        },
        "KeyCheckValue": "7CC9E2",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "UsageStartTimestamp": "2022-10-27T08:27:51.753000-07:00"
    }
}
```

## 비대칭(RSA) 키 생성
<a name="asymmetrickey-example"></a>

**Example**  
이 명령은 새로운 비대칭 RSA 2048비트 키 페어를 생성합니다. 새 프라이빗 키와 일치하는 퍼블릭 키를 생성합니다. [getPublicCertificate](keys.getpubliccertificate-example.md) API를 사용하여 퍼블릭 키를 검색할 수 있습니다.  

```
$ aws payment-cryptography create-key --exportable \
    --key-attributes KeyAlgorithm=RSA_2048,KeyUsage=TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION, \
    KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{Encrypt=true, Decrypt=True,Wrap=True,Unwrap=True}'
```
출력 예시:  

```
{
    "Key": {
        "CreateTimestamp": "2022-11-15T11:15:42.358000-08:00",
        "Enabled": true,
        "Exportable": true,
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/nsq2i3mbg6sn775f",
        "KeyAttributes": {
            "KeyAlgorithm": "RSA_2048",
            "KeyClass": "ASYMMETRIC_KEY_PAIR",
            "KeyModesOfUse": {
                "Decrypt": true,
                "DeriveKey": false,
                "Encrypt": true,
                "Generate": false,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": true,
                "Verify": false,
                "Wrap": true
            },
            "KeyUsage": "TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION"
        },
        "KeyCheckValue": "40AD487F",
        "KeyCheckValueAlgorithm": "SHA-1",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "UsageStartTimestamp": "2022-11-15T11:15:42.182000-08:00"
    }
}
```

## PIN 확인 값(PVV) 키 생성
<a name="pvv-example"></a>

**Example**  
이 명령은 PVV 값을 생성하기 위한 3KEY TDES 키를 생성합니다. 이 키를 사용하여 이후에 계산된 PVV와 비교할 수 있는 PVV를 생성할 수 있습니다. 응답에는 요청 파라미터, 후속 호출을 위한 ARN 및 KCV가 포함됩니다.  

```
$ aws payment-cryptography create-key --exportable \
    --key-attributes KeyAlgorithm=TDES_3KEY,KeyUsage=TR31_V2_VISA_PIN_VERIFICATION_KEY, \
    KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}'
```
출력 예시:  

```
{
    "Key": {
        "CreateTimestamp": "2022-10-27T10:22:59.668000-07:00",
        "Enabled": true,
        "Exportable": true,
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
        "KeyAttributes": {
            "KeyAlgorithm": "TDES_3KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyModesOfUse": {
                "Decrypt": false,
                "DeriveKey": false,
                "Encrypt": false,
                "Generate": true,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": false,
                "Verify": true,
                "Wrap": false
            },
            "KeyUsage": "TR31_V2_VISA_PIN_VERIFICATION_KEY"
        },
        "KeyCheckValue": "7F2363",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "UsageStartTimestamp": "2022-10-27T10:22:59.614000-07:00"
    }
}
```

## 비대칭 ECC 키 생성
<a name="ECDH-example"></a>

**Example**  
이 명령은 두 당사자 간에 ECDH(Elliptic Curve Diffie-Hellman) 키 계약을 설정하기 위한 ECC 키 페어를 생성합니다. ECDH를 사용하면 각 당사자는 키 목적 K3 및 사용 모드 X로 자체 ECC 키 페어를 생성하고 퍼블릭 키를 교환합니다. 그런 다음 양 당사자는 프라이빗 키와 수신된 퍼블릭 키를 사용하여 공유 파생 키를 설정합니다.  
결제 시 암호화 키의 일회용 원칙을 유지하려면 ECDH 키 유도 및 서명과 같은 여러 용도로 ECC 키 페어를 재사용하지 않는 것이 좋습니다.  

```
$ aws payment-cryptography create-key --exportable \
    --key-attributes KeyAlgorithm=ECC_NIST_P256,KeyUsage=TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT, \
    KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{DeriveKey=true}'
```
출력 예시:  

```
{
    "Key": {
        "CreateTimestamp": "2024-10-17T01:31:55.908000+00:00",
        "Enabled": true,
        "Exportable": true,
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
        "KeyAttributes": {
            "KeyAlgorithm": "ECC_NIST_P256",
            "KeyClass": "ASYMMETRIC_KEY_PAIR",
            "KeyModesOfUse": {
                "Decrypt": false,
                "DeriveKey": true,
                "Encrypt": false,
                "Generate": false,
                "NoRestrictions": false,
                "Sign": false,
                "Unwrap": false,
                "Verify": false,
                "Wrap": false
            },
            "KeyUsage": "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT"
        },
        "KeyCheckValue": "7E34F19F",
        "KeyCheckValueAlgorithm": "SHA-1",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "KeyState": "CREATE_COMPLETE",
        "UsageStartTimestamp": "2024-10-17T01:31:55.866000+00:00"
    }
}
```

# 키 나열
<a name="keys-list"></a>

 **ListKeys** 작업을 사용하여 계정 및 리전에서 액세스할 수 있는 키 목록을 가져옵니다.

**Example**  

```
$ aws payment-cryptography list-keys
```
출력 예시:  

```
{
    "Keys": [
        {
            "CreateTimestamp": "2022-10-12T10:58:28.920000-07:00",
            "Enabled": false,
            "Exportable": true,
            "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
            "KeyAttributes": {
                "KeyAlgorithm": "TDES_3KEY",
                "KeyClass": "SYMMETRIC_KEY",
                "KeyModesOfUse": {
                    "Decrypt": true,
                    "DeriveKey": false,
                    "Encrypt": true,
                    "Generate": false,
                    "NoRestrictions": false,
                    "Sign": false,
                    "Unwrap": true,
                    "Verify": false,
                    "Wrap": true
                },
                "KeyUsage": "TR31_P1_PIN_GENERATION_KEY"
            },
            "KeyCheckValue": "7F2363",
            "KeyCheckValueAlgorithm": "ANSI_X9_24",
            "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
            "KeyState": "CREATE_COMPLETE",
            "UsageStopTimestamp": "2022-10-27T14:19:42.488000-07:00"
        }
    ]
}
```

# 키 활성화 및 비활성화
<a name="keys-enable-disable"></a>

 AWS Payment Cryptography 키를 비활성화했다가 다시 활성화할 수 있습니다. 키를 생성하면 필터가 기본적으로 활성화됩니다. 키를 비활성화하면 다시 활성화할 때까지 어떠한 [암호화 작업](data-operations.md)에서도 사용할 수 없습니다. 사용 시작/중지 명령은 즉시 적용되므로 변경하기 전에 사용량을 검토하는 것이 좋습니다. 선택적 `timestamp` 파라미터를 사용하여 향후에 적용할 변경 사항(사용 시작 또는 중지)을 설정할 수도 있습니다.

임시적이고 쉽게 취소할 수 있으므로 AWS Payment Cryptography 키를 비활성화하는 것은 파괴적이고 되돌릴 수 없는 작업인 AWS Payment Cryptography 키를 삭제하는 것보다 더 안전한 대안입니다. AWS Payment Cryptography 키 삭제를 고려하는 경우 먼저 비활성화하고 나중에 키를 사용하여 데이터를 암호화하거나 복호화할 필요가 없도록 합니다.

**Topics**
+ [키 사용 시작](#keys-startusage)
+ [키 사용 중지](#keys-stopusage)

## 키 사용 시작
<a name="keys-startusage"></a>

 암호화 작업에 키를 사용하려면 키 사용을 활성화해야 합니다. 키가 활성화되지 않은 경우 이 작업을 사용하여 키를 사용할 수 있게 만들 수 있습니다. 이 `UsageStartTimestamp` 필드는 키가 활성화된 시점 또는 활성화될 시점을 나타냅니다. 이는 활성화된 토큰의 경우 과거이며, 활성화가 보류 중인 경우 미래입니다.

**Example**  
이 예시에서는 키 사용을 위해 키를 활성화하도록 요청합니다. 응답에는 키 정보가 포함되며 활성화 플래그가 true로 전환되었습니다. 이는 리스트 키 응답 개체에도 반영됩니다.  

```
$ aws payment-cryptography start-key-usage --key-identifier "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh"
```

```
{
      "Key": {
      "CreateTimestamp": "2022-10-12T10:58:28.920000-07:00",
      "Enabled": true,
      "Exportable": true,
      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh",
      "KeyAttributes": {
          "KeyAlgorithm": "TDES_3KEY",
          "KeyClass": "SYMMETRIC_KEY",
          "KeyModesOfUse": {
              "Decrypt": true,
              "DeriveKey": false,
              "Encrypt": true,
              "Generate": false,
              "NoRestrictions": false,
              "Sign": false,
              "Unwrap": true,
              "Verify": false,
              "Wrap": true
          },
          "KeyUsage": "TR31_P1_PIN_GENERATION_KEY"
      },
      "KeyCheckValue": "369D",
      "KeyCheckValueAlgorithm": "ANSI_X9_24",
      "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
      "KeyState": "CREATE_COMPLETE",
      "UsageStartTimestamp": "2022-10-27T14:09:59.468000-07:00"
  }
}
```

## 키 사용 중지
<a name="keys-stopusage"></a>

 더 이상 키를 사용하지 않으려는 경우 키 사용을 중지하여 추가 암호화 작업을 방지할 수 있습니다. 이 작업은 영구적이지 않으므로 [키 사용 시작하기](#keys-startusage)를 사용하여 되돌릴 수 있습니다. 향후에 키가 비활성화되도록 설정할 수도 있습니다. 이 `UsageStopTimestamp` 필드는 키가 언제 비활성화되었는지 또는 비활성화될 것인지를 나타냅니다.

**Example**  
이 예시에서는 향후에 키 사용을 중지하도록 요청합니다. 실행 후에는 [키 사용 시작](#keys-startusage)을 통해 다시 활성화하지 않는 한 이 키를 암호화 작업에 사용할 수 없습니다. 응답에는 키 정보가 포함되고 활성화 플래그는 false로 전환되었습니다. 이는 리스트 키 응답 개체에도 반영됩니다.  

```
$ aws payment-cryptography stop-key-usage --key-identifier "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh"
```

```
{
  "Key": {
      "CreateTimestamp": "2022-10-12T10:58:28.920000-07:00",
      "Enabled": false,
      "Exportable": true,
      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh",
      "KeyAttributes": {
          "KeyAlgorithm": "TDES_3KEY",
          "KeyClass": "SYMMETRIC_KEY",
          "KeyModesOfUse": {
              "Decrypt": true,
              "DeriveKey": false,
              "Encrypt": true,
              "Generate": false,
              "NoRestrictions": false,
              "Sign": false,
              "Unwrap": true,
              "Verify": false,
              "Wrap": true
          },
          "KeyUsage": "TR31_P1_PIN_GENERATION_KEY"
      },
      "KeyCheckValue": "369D",
      "KeyCheckValueAlgorithm": "ANSI_X9_24",
      "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
      "KeyState": "CREATE_COMPLETE",
      "UsageStopTimestamp": "2022-10-27T14:09:59.468000-07:00"
  }
}
```

# AWS Payment Cryptography 키 복제
<a name="keys-multi-region-replication"></a>

AWS Payment Cryptography는 다중 리전 키 복제를 지원하므로 특정 AWS Payment Cryptography 키의 키 구성 요소와 메타데이터를 동일한 AWS 파티션 및 계정 AWS 리전 내의 하나 이상의에 안전하게 배포할 수 있습니다.

소스 키는 [프라이머리 리전 키(PRK)](terminology.md#term.prk)라고 하며 모든 키 관리 활동에 대한 신뢰할 수 있는 소스로 남아 있는 반면, PRK 및 [복제본 리전 키(RRK)](terminology.md#term.rrk)는 각각에서 암호화 작업에 사용할 수 있습니다 AWS 리전.

## 다중 리전 키 복제의 이점
<a name="benefits"></a>

 다음은 다중 리전 키 복제의 몇 가지 이점을 간략하게 설명합니다.
+ *고가용성 애플리케이션을 더 쉽게 설정* - AWS Payment Cryptography는 키 배포를 처리하므로 특정 키의 분리된 복사본을 생성할 필요 없이 여러 AWS 리전 에서 키를 사용할 수 있습니다.
+ *고가용성 및 짧은 지연 시간 키* - 다중 리전 키 복제를 사용하면 여러에서 키에 액세스하여 고가용성을 AWS 리전 확보하여 지연 시간을 줄일 수 있습니다.
+ *키 구성 요소 내구성* - 복제본 리전 키는 완전한 키 복제본이며 암호화 작업에서 기본 리전 키와 독립적으로 사용할 수 있습니다. RRK는 PRK의 치명적인 데이터 손실 시 내구성 있는 복제본을 제공합니다.

## 다중 리전 키 복제 작동 방식
<a name="how-mrr-works"></a>

다중 리전 키 복제가 활성화되면 AWS Payment Cryptography 서비스는 보안 키 배포 메커니즘을 사용하여 키 구성 요소 및 메타데이터를 지정한 복제본에 복사 AWS 리전 합니다. 키 속성, 상태 및 활성화와 같은 기본 리전 키 메타데이터에 대한 변경 사항은 복제본 리전 키에 자동으로 복제됩니다.

## 제한 사항 및 고려 사항
<a name="limitations-considerations"></a>

다음은 몇 가지 다중 리전 키 복제 제한 사항 및 고려 사항입니다.
+  AWS 리전 또는 특정 Payment Cryptography 키에 대해이 기능을 활성화해야 합니다.
  + 에 대해이 기능을 활성화하면 활성화 후 생성된 AWS 리전모든 AWS Payment Cryptography 키가 지정된에 복제됩니다 AWS 리전. 이 리전에서 생성된 키는 기본 리전 키가 됩니다. 이 리전의 기존 키는 자동으로 복제되지 않습니다. 키 수준에서 내의 기존 키에 대해 다중 리전 키 복제를 활성화할 수 AWS 리전 있습니다.
  + 각 에는 고유한 다중 리전 키 복제 설정이 있을 AWS 리전 수 있습니다.
  + 키의 다중 리전 복제 설정이 AWS 리전 다중 리전 키 복제 설정보다 우선합니다.
+ 복제본 리전 키는 다른에 복제하도록 구성할 수 없습니다 AWS 리전.
+ 다중 리전 키 복제는 트리플 데이터 암호화 표준(3DES), 고급 암호화 표준(AES), 해시 기반 메시지 인증 코드(HMAC)와 같은 대칭 결제 암호화 키에 사용할 수 있습니다.
+ 비대칭 Payment Cryptography 키는 다중 리전 키 복제를 지원하지 않습니다.
+ 복제본 리전 키는 읽기 전용 키입니다. 기본 리전 키에 대한 모든 변경 사항은 복제본 리전 키에 적용됩니다.
+ 기본 리전 키 변경은 결국 복제본 리전 키와 일치합니다.
+ Payment Cryptography 키는 동일한 AWS 파티션 및 계정으로만 복제할 수 있습니다.
+ 복제본 리전 키는 AWS 계정 레벨 AWS Payment Cryptography 한도에 포함됩니다.
+ 기본 리전 키와 복제본 리전 키는 동일한 키 식별자를 사용하므로 IAM 정책에서 동일한 ARN으로 두 키를 모두 참조할 수 있습니다.
+ 복제가 성공하려면 복제 AWS 리전 본에 `CreateKey` 권한이 있어야 합니다.

## 다중 리전 키 복제 활성화
<a name="enabling-mrr"></a>

 AWS Payment Cryptography 키에 대해 다중 리전 키 복제를 활성화하는 방법에는 두 가지가 있습니다.

1. **AWS 리전**: 다중 리전 키 복제는 활성화될 AWS 리전 때 해당에서 생성된 모든 새 키에 적용됩니다. 이 메서드는 모든 키에 대해 일관된 복제를 제공합니다.

1. **특정 AWS Payment Cryptography 키**: 개별 키에 대한 다중 리전 키 복제를 관리하여 보다 세분화된 제어 수준을 제공할 수 있습니다.

다중 리전 키 복제가 활성화되면 Payment Cryptography 키가 지정한 AWS 리전 에 복제됩니다.

**중요**  
다중 리전 키 복제는 일시 중지할 수 없습니다. 복제가 활성화되면 AWS 리전 지정한에 키가 자동으로 복제됩니다. 특정 AWS 리전 또는 Payment Cryptography 키에 대해 다중 리전 키 복제를 [비활성화](#disabling-mrr)할 수 있습니다. 복제본 리전 키를 삭제하려면 기본 리전 키에서 복제 리전 AWS 리전 으로를 제거해야 합니다.  
또는 PRK에서 [https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_StopKeyUsage.html](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_StopKeyUsage.html) API 또는 [https://docs.aws.amazon.com/cli/latest/reference/payment-cryptography/stop-key-usage.html](https://docs.aws.amazon.com/cli/latest/reference/payment-cryptography/stop-key-usage.html) CLI 명령을 호출하여 PRK 및 연결된 모든 RRKs. 암호화 작업에서는 이러한 키를 사용할 수 없습니다. `StopKeyUsage` API 또는 **stop-key-usage** CLI 명령을 사용하면 PRK에 대해 활성화된 진행 중인 다중 리전 키 복제가 중지되지 않습니다.

`GetDefaultKeyReplicationRegions` API 또는 **get-default-key-replication-regions** CLI 명령을 호출하여 특정 AWS 리전 의 AWS Payment Cryptography 키에 대한 다중 리전 키 복제 설정을 확인할 수 있습니다. 이 API 작업 또는 명령을 호출 AWS 리전 하는의 키는 [PRK](terminology.md#term.prk)가 됩니다.

다음 절차에 따라 다중 리전 키 복제를 활성화합니다.

------
#### [ For AWS 리전 ]
+ 다음 명령을 사용하여 AWS 리전 지정한에 대해 다중 리전 키 복제를 활성화합니다. 이 예제에서는 미국 동부(오하이오) 및 미국 서부(오레곤)에서 다중 리전 키 복제가 활성화됩니다. 이 명령을 사용하려면 예제 명령의 *기울임꼴 자리 표시자 텍스트를* 자신의 정보로 바꿉니다.

  ```
  aws payment-cryptography enable-default-key-replication-regions \
      --replication-regions us-east-2 us-west-2
  ```

**참고**  
에 대해 다중 리전 키 복제를 활성화해도 기존 AWS Payment Cryptography 키의 복제 구성 AWS 리전 은 변경되지 않습니다. 키 수준에서 기존 키에 대해이 기능을 활성화할 수 있습니다. 에 대해 다중 리전 키 복제가 활성화된 후 생성된 키만 리전 복제 설정을 AWS 리전 사용합니다.

------
#### [ For specific AWS Payment Cryptography keys ]
+ 다음 명령을 사용하여 특정 Payment Cryptography 키에 대해 다중 리전 키 복제를 활성화합니다. 이 예제에서는 미국 동부(오하이오)에서 다중 리전 키 복제가 활성화됩니다. 이 명령을 사용하려면 예제 명령의 *기울임꼴 자리 표시자 텍스트를* 자신의 정보로 바꿉니다.

  ```
  aws payment-cryptography add-key-replication-regions \
      --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h \
      --replication-regions us-east-2
  ```

또는 [키 생성 요청에 복제를 포함하여이 기능이 활성화된 새 Payment Cryptography](create-keys.md) 키를 생성할 수 AWS 리전 있습니다.

**참고**  
키 복제 설정이 AWS 리전 복제 설정보다 우선합니다.

------

## 다중 리전 키 복제 비활성화
<a name="disabling-mrr"></a>

다중 리전 키 복제를 비활성화하려면 다중 리전 키 복제가 활성화된 방식에 따라 **disable-default-key-replication** 또는 **remove-key-replication-regions** CLI 명령을 호출할 수 있습니다. 다중 리전 키 복제를 비활성화하려면 키의 ARN과 AWS 리전 를 지정해야 합니다.

**고려 사항**  
복제 리전 키 삭제는 최종적으로 일관됩니다.

`GetDefaultKeyReplicationRegions` API 또는 **get-default-key-replication-regions** CLI 명령을 호출하여 특정 AWS 리전 의 AWS Payment Cryptography 키에 대한 다중 리전 키 복제 설정을 확인할 수 있습니다.

다음 절차에 따라 다중 리전 키 복제를 비활성화합니다.

------
#### [ For AWS 리전 ]
+ 다음 명령을 사용하여 지정한에 대해 다중 리전 키 복제를 AWS 리전 비활성화합니다. 이 예제에서는 미국 동부(오하이오)에서 다중 리전 키 복제가 비활성화됩니다. 이 명령을 사용하려면 예제 명령의 *기울임꼴 자리 표시자 텍스트를* 자신의 정보로 바꿉니다.

  ```
  aws payment-cryptography disable-default-key-replication-regions \
      --replication-regions us-east-2
  ```

------
#### [ For specific AWS Payment Cryptography keys ]
+ 다음 명령을 사용하여 특정 Payment Cryptography 키에 대한 다중 리전 키 복제를 비활성화합니다. 이 예제에서는 미국 동부(오하이오)에서 다중 리전 키 복제를 비활성화합니다. 이 명령을 사용하려면 예제 명령의 *기울임꼴 자리 표시자 텍스트를* 자신의 정보로 바꿉니다.

  ```
  aws payment-cryptography remove-key-replication-regions \
      --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h \
      --replication-regions us-east-2
  ```

------

## 보안 고려 사항
<a name="security-considerations"></a>

다음은 Payment Cryptography 키에 다중 리전 키 복제를 사용할 때의 보안 고려 사항입니다. 자세한 내용은 [AWS Payment Cryptography의 보안 모범 사례](security-best-practices.md) 단원을 참조하십시오.
+ 키 구성 요소 공유를 제한합니다.
+ IAM 정책을 생성할 때 최소 권한의 보안 주체를 따릅니다.
+ 복제본 리전 키는 읽기 전용 키이므로 변경할 수 없습니다.

## 모범 사례
<a name="best-practices"></a>

다음은 AWS Payment Cryptography 키와 함께 다중 리전 키 복제를 사용할 때의 몇 가지 모범 사례입니다.
+ 지정된에 대한 다중 리전 키 복제 AWS 리전 가 즉시 수행되지 않더라도 애플리케이션이 계속 작동하는지 확인합니다. 다중 리전 키 복제가 완료되는 시점을 알아야 하는 경우 [GetKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_GetKey.html) API 작업을 사용하여 모니터링할 수 있습니다. 를 사용하여 키 복제 이벤트를 모니터링할 수 있습니다[AWS CloudTrail](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-user-guide.html).
+ 한 리전에서 다른 리전으로 장애 조치 시 자동 배포 프로세스를 테스트하고 구현 AWS 리전 합니다.

## 가격 책정
<a name="pricing"></a>

 AWS Payment Cryptography로 생성한 복제본 리전 키에 대해 요금이 부과됩니다. 이러한 키는 당 요금이 부과됩니다 AWS 리전. 최신 Payment Cryptography 요금 정보는 [AWS Payment Cryptography 요금 페이지를](https://aws.amazon.com/payment-cryptography/pricing/) 참조하세요.

# 키 삭제
<a name="keys-deleting"></a>

 AWS Payment Cryptography 키를 삭제하면 키 구성 요소와 키와 연결된 모든 메타데이터가 삭제되며 AWS Payment Cryptography 외부에서 키 사본을 사용할 수 없는 한 되돌릴 수 없습니다. 키가 삭제된 후에는 해당 키로 암호화된 데이터를 더 이상 해독할 수 없습니다. 즉 데이터를 복구할 수 없게 될 수 있습니다. 키를 더 이상 사용할 필요가 없고 다른 당사자가 이 키를 사용하지 않는다고 확신하는 경우에만 키를 삭제해야 합니다. 확실하지 않은 경우 키 사용을 삭제하는 대신 중지하는 것이 좋습니다. 나중에 다시 사용해야 하는 경우 비활성화된 키를 다시 활성화할 수 있지만, 삭제된 AWS Payment Cryptography 키는 다른 소스에서 다시 가져올 수 없는 한 복구할 수 없습니다.

키를 삭제하기 전에 더 이상 키가 필요하지 않은지 확인해야 합니다. AWS Payment Cryptography는 CVV2와 같은 암호화 작업의 결과를 저장하지 않으며 영구 암호화 구성 요소에 키가 필요한지 확인할 수 없습니다.

AWS 삭제를 명시적으로 예약하고 필수 대기 기간이 만료되지 않는 한 Payment Cryptography는 활성 AWS 계정에 속한 키를 삭제하지 않습니다.

그러나 다음 중 하나 이상의 이유로 AWS Payment Cryptography 키를 삭제하도록 선택할 수 있습니다.
+ 더 이상 필요하지 않은 키의 키 수명 주기를 완료하기 위해
+ 미사용 AWS Payment Cryptography 키 유지 관리와 관련된 관리 오버헤드를 방지하려면

**참고**  
[를 닫거나 삭제 AWS 계정](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/close-account.html)하면 AWS Payment Cryptography 키에 액세스할 수 없게 됩니다. 계정 해지와 별도로 AWS Payment Cryptography 키 삭제를 예약할 필요가 없습니다.

AWS Payment Cryptography는 Payment Cryptography 키 삭제를 예약할 때와 AWS Payment AWS Cryptography 키가 실제로 삭제될 때 [AWS CloudTrail](https://console.aws.amazon.com/cloudtrail) 로그에 항목을 기록합니다.

다중 리전 키 복제를 사용하고 프라이머리 리전 키(PRK)인 Payment Cryptography 키를 삭제하면 복제본 리전 키(RRK)도 자동으로 삭제됩니다. RRK는 PRK처럼 삭제할 수 없습니다. RRK를 삭제하려면 [PRK의 복제 리전을 수정해야 합니다](keys-multi-region-replication.md#disabling-mrr).

## 대기 기간에 대해
<a name="deleting-keys-how-it-works"></a>

키 삭제는 되돌릴 수 없으므로 AWS Payment Cryptography에서는 대기 기간을 3\$1180일로 설정해야 합니다. 기본 대기 기간은 7일입니다.

그러나 실제 대기 기간은 예약한 대기 기간보다 최대 24시간 더 길어질 수 있습니다. AWS Payment Cryptography 키가 삭제될 실제 날짜와 시간을 가져오려면 GetKey 작업을 사용합니다. 시간대를 기록하세요.

대기 기간 동안 AWS Payment Cryptography 키 상태 및 키 상태는 **삭제 보류** 중입니다.

**참고**  
삭제 보류 중인 AWS Payment Cryptography 키는 어떤 [암호화 작업](data-operations.md)에서도 사용할 수 없습니다.

대기 기간이 끝나면 AWS Payment Cryptography는 AWS Payment Cryptography 키, 별칭 및 모든 관련 AWS Payment Cryptography 메타데이터를 삭제합니다.

대기 기간을 사용하여 현재 또는 향후에 AWS Payment Cryptography 키가 필요하지 않은지 확인합니다. 대기 기간 동안 키가 필요한 경우 대기 기간이 종료되기 전에 키 삭제를 취소할 수 있습니다. 대기 기간이 종료된 후에는 키 삭제를 취소할 수 없고 서비스가 키를 삭제합니다.

**Topics**

**Example**  
이 예시에서는 키 삭제를 요청합니다. 기본 키 정보 외에도 두 개의 관련 필드는 키 상태가 DELETE\$1PENDING으로 변경되었다는 것이고 DeletePendingTimestamp는 키가 현재 삭제될 예정인 시기를 나타냅니다.  

```
$ aws payment-cryptography delete-key \
                    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h
```

```
  {
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
        "KeyAttributes": {
            "KeyUsage": "TR31_V2_VISA_PIN_VERIFICATION_KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyAlgorithm": "TDES_3KEY",
            "KeyModesOfUse": {
                "Encrypt": false,
                "Decrypt": false,
                "Wrap": false,
                "Unwrap": false,
                "Generate": true,
                "Sign": false,
                "Verify": true,
                "DeriveKey": false,
                "NoRestrictions": false
            }
        },
        "KeyCheckValue": "0A3674",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "Enabled": false,
        "Exportable": true,
        "KeyState": "DELETE_PENDING",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "CreateTimestamp": "2023-06-05T12:01:29.969000-07:00",
        "UsageStopTimestamp": "2023-06-05T14:31:13.399000-07:00",
        "DeletePendingTimestamp": "2023-06-12T14:58:32.865000-07:00"
    }
}
```

**Example**  
이 예시에서는 보류 중인 삭제가 취소됩니다. 성공적으로 완료되면 이전 일정에 따라 키가 더 이상 삭제되지 않습니다. 응답에는 기본 키 정보가 포함되며, 추가로 두 개의 관련 필드 (`KeyState` 및 `deletePendingTimestamp`)가 변경되었습니다. `KeyState`는 CREATE\$1COMPLETE 값으로 반환되고 `DeletePendingTimestamp`는 제거됩니다.  

```
$ aws payment-cryptography restore-key --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
        "KeyAttributes": {
            "KeyUsage": "TR31_V2_VISA_PIN_VERIFICATION_KEY",
            "KeyClass": "SYMMETRIC_KEY",
            "KeyAlgorithm": "TDES_3KEY",
            "KeyModesOfUse": {
                "Encrypt": false,
                "Decrypt": false,
                "Wrap": false,
                "Unwrap": false,
                "Generate": true,
                "Sign": false,
                "Verify": true,
                "DeriveKey": false,
                "NoRestrictions": false
            }
        },
        "KeyCheckValue": "0A3674",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "Enabled": false,
        "Exportable": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
        "CreateTimestamp": "2023-06-08T12:01:29.969000-07:00",
        "UsageStopTimestamp": "2023-06-08T14:31:13.399000-07:00"
    }
}
```

# 키 가져오기 및 내보내기
<a name="keys-importexport"></a>

다른 솔루션에서 AWS Payment Cryptography 키를 가져와 HSMs. 많은 고객이 가져오기 및 내보내기 기능을 사용하여 서비스 공급자와 키를 교환합니다. 규정 준수 및 제어를 유지하는 데 도움이 되는 키 관리에 대한 최신 전자 접근 방식을 사용하도록 AWS Payment Cryptography를 설계했습니다. 종이 기반 키 구성 요소 대신 표준 기반 전자 키 교환을 사용하는 것이 좋습니다.

**최소 키 강도와 가져오기 및 내보내기 함수에 미치는 영향**  
PCI에는 암호화 작업, 키 스토리지 및 키 전송을 위한 특정 최소 키 강도가 필요합니다. 이러한 요구 사항은 PCI 표준이 개정될 때 변경될 수 있습니다. 규칙은 스토리지 또는 전송에 사용되는 래핑 키가 보호되는 키만큼 강력해야 한다고 지정합니다. 다음 표와 같이 내보내기 중에이 요구 사항을 자동으로 적용하고 키가 더 약한 키로 보호되지 않도록 합니다.  
다음 표에는 래핑 키, 보호할 키 및 보호 방법의 지원되는 조합이 나와 있습니다.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/keys-importexport.html)
자세한 내용은 PCI HSM 표준의 [부록 D - 승인된 알고리즘의 최소 및 동등한 키 크기와 강도를 참조하세요](https://docs-prv.pcisecuritystandards.org/PTS/Derived%20Test%20Requirements/PCI_HSM_DTRs_v4.pdf).

**KEK(키 암호화 키) 교환**  
[ANSI X9.24 TR-34](terminology.md#terms.tr34) 표준을 사용하는 것이 좋습니다. 이 초기 키 유형을 키 암호화 키(KEK), 영역 마스터 키(ZMK) 또는 영역 제어 마스터 키(ZCMK)라고 할 수 있습니다. 시스템 또는 파트너가 아직 TR-34를 지원하지 않는 경우 [RSA 래핑/언래핑](terminology.md#terms.rsawrap)을 사용할 수 있습니다. AES-256 키 교환이 필요한 경우 [ECDH](terminology.md#terms.ecdh)를 사용할 수 있습니다.  
모든 파트너가 전자 키 교환을 지원할 때까지 종이 키 구성 요소를 계속 처리해야 하는 경우 오프라인 HSM을 사용하거나 타사 [키 관리인을 서비스로 활용하는 것이](terminology.md#terms.kcaas) 좋습니다.  
자체 테스트 키를 가져오거나 기존 HSMs과 키를 동기화하려면 [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export)의 AWS Payment Cryptography 샘플 코드를 참조하세요.

**WK (Working Key) 교환**  
작업 키 교환에는 업계 표준([ANSI X9.24 TR 31-2018](terminology.md#terms.tr31) 및 X9.143)을 사용합니다. 이를 위해서는 이미 TR-34, RSA Wrap, ECDH 또는 유사한 체계를 사용하여 KEK를 교환해야 합니다. 이 접근 방식은 키 구성 요소를 유형 및 사용량에 항상 암호화 방식으로 바인딩하기 위한 PCI PIN 요구 사항을 충족합니다. 작업 키에는 획득자 작업 키, 발급자 작업 키, BDK 및 IPEK가 포함됩니다.

**Topics**
+ [키 가져오기](keys-import.md)
+ [키 내보내기](keys-export.md)
+ [고급 주제](keyexchange-advanced.md)

# 키 가져오기
<a name="keys-import"></a>

**중요**  
 예를 들어 최신 버전의 AWS CLI V2가 필요합니다. 시작하기 전에 [최신 버전으로](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 업그레이드했는지 확인합니다.

**Contents**
+ [키 가져오기 소개](#keys-import-introduction)
+ [대칭 키 가져오기](#keys-import-symmetric)
  + [비대칭 기법을 사용한 키 가져오기(TR-34)](#keys-import-tr34)
  + [비대칭 기법(ECDH)을 사용하여 키 가져오기](#keys-import-ecdh)
  + [비대칭 기법을 사용하여 키 가져오기(RSA 언래핑)](#keys-import-rsaunwrap)
  + [사전 설정된 키 교환 키(TR-31)를 사용하여 대칭 키를 가져옵니다.](#keys-import-tr31)
+ [비대칭(RSA, ECC) 퍼블릭 키 가져오기](#keys-import-asymmetric)
  + [RSA 퍼블릭 키 가져오기](#keys-import-rsapublickey)
  + [ECC 퍼블릭 키 가져오기](#keys-import-eccpublickey)

## 키 가져오기 소개
<a name="keys-import-introduction"></a>

**참고**  
X9.143, TR-31 또는 TR-34 키 블록을 사용하여 키를 가져올 때 AWS Payment Cryptography는 일반적으로 선택적 헤더를 보존(사용하지 않음)합니다. HM(HMAC 해시 유형) 헤더는 암호화 작업 중에 사용됩니다. KP 헤더(래핑 키의 KCV)는 가져오기 프로세스에 고유하며 유지되지 않습니다.

상대방과 키를 교환할 때는 일반적으로 먼저 키 교환 키(KEK)를 교환합니다. 그러면이 키가 후속 키를 보호하는 데 사용됩니다. 전자 형식을 사용하여 KEK는 TR-34, ECDH 또는 RSA 랩과 같은 비대칭 기술을 사용하여 교환할 수 있습니다. 후속 키는 TR-31과 같은 대칭 키 교환을 사용하여 교환됩니다. 이 KEK는 수명이 길며 정책 및 정의된 암호화 기간에 따라 몇 년마다만 업데이트할 수 있습니다.

하나 또는 두 개의 키만 교환하는 경우 비대칭 기술을 사용하여 BDK와 같은 해당 키를 직접 교환하도록 선택할 수도 있습니다. AWS Payment Cryptography는 두 가지 키 교환 방법을 모두 지원합니다.

## 대칭 키 가져오기
<a name="keys-import-symmetric"></a>

### 비대칭 기법을 사용한 키 가져오기(TR-34)
<a name="keys-import-tr34"></a>

![\[AWS Payment Cryptography 키 암호화 키 가져오기 프로세스\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/images/keyimport-process-kek-import.png)


 TR-34는 RSA 비대칭 암호화를 사용하여 교환을 위한 대칭 키를 암호화하고 서명합니다. 이렇게 하면 래핑된 키의 기밀성(암호화)과 무결성(서명)이 모두 보장됩니다.

 자체 키를 가져오려면 [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export)에서 AWS Payment Cryptography 샘플 프로젝트를 확인하세요. 다른 플랫폼에서 키를 가져오거나 내보내는 방법에 대한 지침은 [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export)에서 샘플 코드를 사용하거나 해당 플랫폼의 사용 설명서를 참조하세요.

1. 

****가져오기 초기화 명령을 호출합니다.****  
`get-parameters-for-import`를 호출하여 가져오기 프로세스를 초기화합니다. 이 API는 키 가져오기를 위한 키 페어를 생성하고 키에 서명한 다음 인증서와 인증서 루트를 반환합니다. 이 키를 사용하여 내보낼 키를 암호화합니다. TR-34 용어로는 이를 KRD 인증서라고 합니다. 이러한 인증서는 base64로 인코딩되고 수명이 짧으며이 용도로만 사용됩니다. `ImportToken` 값을 저장합니다.

   ```
   $ aws payment-cryptography get-parameters-for-import \
       --key-material-type TR34_KEY_BLOCK \
       --wrapping-key-algorithm RSA_2048
   ```

   ```
   {
       "ImportToken": "import-token-bwxli6ocftypneu5",
       "ParametersValidUntilTimestamp": 1698245002.065,
       "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....",
       "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....",
       "WrappingKeyAlgorithm": "RSA_2048"
   }
   ```

1. 

****키 소스 시스템에 퍼블릭 인증서 설치****  
대부분의 HSMs에서는 1단계에서 생성된 퍼블릭 인증서를 설치, 로드 또는 신뢰하여 이를 사용하여 키를 내보내야 합니다. 여기에는 HSM에 따라 전체 인증서 체인 또는 1단계의 루트 인증서만 포함될 수 있습니다.

1. 

****소스 시스템에서 키 페어를 생성하고 AWS Payment Cryptography에 인증서 체인 제공****  
전송된 페이로드의 무결성을 보장하기 위해 전송 당사자(키 배포 호스트 또는 KDH)가 서명합니다. 이를 위해 퍼블릭 키를 생성하고 퍼블릭 키 인증서(X509)를 생성하여 AWS Payment Cryptography에 다시 제공합니다.

    HSM에서 키를 전송할 때 해당 HSM에 키 페어를 생성합니다. HSM, 타사 또는와 같은 서비스가 인증서를 생성할 AWS Private CA 수 있습니다.

   KeyMaterialTypeKeyUsageType이 인 `importKey` 명령을 사용하여 루트 인증서를 AWS Payment Cryptography에 로드합니다`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. `RootCertificatePublicKey` 

   중간 인증서의 경우 `importKey` 명령을의 KeyMaterialType `TrustedCertificatePublicKey` 및의 KeyUsageType과 함께 사용합니다`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. 여러 중간 인증서에 대해이 프로세스를 반복합니다. 체인에서 마지막으로 가져온 인증서`KeyArn`의를 후속 가져오기 명령에 대한 입력으로 사용합니다.
**참고**  
리프 인증서를 가져오지 마십시오. 가져오기 명령 중에 직접 제공합니다.

1. 

****소스 시스템에서 키 내보내기****  
많은 HSMs 및 관련 시스템은 TR-34 표준을 사용하여 키 내보내기를 지원합니다. 1단계의 퍼블릭 키를 KRD(암호화) 인증서로 지정하고 3단계의 키를 KDH(서명) 인증서로 지정합니다. AWS Payment Cryptography로 가져오려면 형식을 TR-34.2012 비CMS 투 패스 형식으로 지정합니다.이 형식을 TR-34 Diebold 형식이라고도 합니다.

1. 

****호출 가져오기 키****  
KeyMaterialType이 인 importKey API를 호출합니다`TR34_KEY_BLOCK`. 에 대해 3단계에서 가져온 마지막 CA의 keyARN`certificate-authority-public-key-identifier`,에 대해 4단계의 래핑된 키 구성 요소`key-material`,에 대해 3단계의 리프 인증서를 사용합니다`signing-key-certificate`. 1단계의 import-token을 포함합니다.

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"Tr34KeyBlock": { \
       "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", \
       "ImportToken": "import-token-bwxli6ocftypneu5", \
       "KeyBlockFormat": "X9_TR34_2012", \
       "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...", \
       "WrappedKeyBlock": "308205A106092A864886F70D010702A08205923082058E020101310D300B0609608648016503040201308203..."} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-06-13T16:52:52.859000-04:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
       "KeyAttributes": {
         "KeyAlgorithm": "TDES_3KEY",
         "KeyClass": "SYMMETRIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": true,
           "DeriveKey": false,
           "Encrypt": true,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": true,
           "Verify": false,
           "Wrap": true
         },
         "KeyUsage": "TR31_K1_KEY_ENCRYPTION_KEY"
       },
       "KeyCheckValue": "CB94A2",
       "KeyCheckValueAlgorithm": "ANSI_X9_24",
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2023-06-13T16:52:52.859000-04:00"
     }
   }
   ```

1. 

****암호화 작업 또는 후속 가져오기에 가져온 키 사용****  
가져온 KeyUsage가 TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY인 경우 TR-31을 사용하여 후속 키 가져오기에이 키를 사용할 수 있습니다. 다른 키 유형(예: TR31\$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY)의 경우 키를 암호화 작업에 직접 사용할 수 있습니다.

### 비대칭 기법(ECDH)을 사용하여 키 가져오기
<a name="keys-import-ecdh"></a>

![\[AWS ECDH를 사용한 Payment Cryptography 키 암호화 키 가져오기 프로세스\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/images/keyimport-ecdh-import.png)


타원 곡선 Diffie-Hellman(ECDH)은 ECC 비대칭 암호화를 사용하여 사전 교환된 키 없이 두 당사자 간에 공유 키를 설정합니다. ECDH 키는 임시 키이므로 AWS Payment Cryptography는 키를 저장하지 않습니다. 이 프로세스에서 일회성 [KBPK/KEK](terminology.md#terms.kbpk)는 ECDH를 사용하여 파생됩니다. 이 파생 키는 전송하려는 실제 키를 래핑하는 데 즉시 사용되며, 이는 다른 KBPK, IPEK 키 또는 기타 키 유형일 수 있습니다.

가져올 때 전송 시스템을 일반적으로 당사자 U(이니시에이터)라고 하고 AWS Payment Cryptography를 당사자 V(응답자)라고 합니다.

**참고**  
 ECDH를 사용하여 모든 대칭 키 유형을 교환할 수 있지만 AES-256 키를 안전하게 전송할 수 있는 유일한 접근 방식입니다.

1. 

****ECC 키 페어 생성****  
를 호출`create-key`하여이 프로세스에 대한 ECC 키 페어를 생성합니다. 이 API는 키 가져오기 또는 내보내기를 위한 키 페어를 생성합니다. 생성 시이 ECC 키를 사용하여 파생할 수 있는 키 종류를 지정합니다. ECDH를 사용하여 다른 키를 교환(래핑)할 때는 값을 사용합니다`TR31_K1_KEY_BLOCK_PROTECTION_KEY`.
**참고**  
 하위 수준 ECDH는 어떤 목적으로든 사용할 수 있는 파생 키를 생성하지만 AWS Payment Cryptography는 키를 단일 파생 키 유형에만 사용할 수 있도록 허용하여 여러 목적으로 키를 실수로 재사용하는 것을 제한합니다.

   ```
   $ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=ECC_NIST_P256,KeyUsage=TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{DeriveKey=true}' --derive-key-usage "TR31_K1_KEY_BLOCK_PROTECTION_KEY"
   ```

   ```
   {
                     "Key": {
                         "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
                         "KeyAttributes": {
                             "KeyUsage": "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT",
                             "KeyClass": "ASYMMETRIC_KEY_PAIR",
                             "KeyAlgorithm": "ECC_NIST_P256",
                             "KeyModesOfUse": {
                                 "Encrypt": false,
                                 "Decrypt": false,
                                 "Wrap": false,
                                 "Unwrap": false,
                                 "Generate": false,
                                 "Sign": false,
                                 "Verify": false,
                                 "DeriveKey": true,
                                 "NoRestrictions": false
                             }
                         },
                         "KeyCheckValue": "2432827F",
                         "KeyCheckValueAlgorithm": "CMAC",
                         "Enabled": true,
                         "Exportable": true,
                         "KeyState": "CREATE_COMPLETE",
                         "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
                         "CreateTimestamp": "2025-03-28T22:03:41.087000-07:00",
                         "UsageStartTimestamp": "2025-03-28T22:03:41.068000-07:00"
                     }
                 }
   ```

1. 

****퍼블릭 키 인증서 가져오기****  
를 호출`get-public-key-certificate`하여 특정 리전의 AWS Payment Cryptography 전용 계정 CA에서 서명한 X.509 인증서로 퍼블릭 키를 수신합니다.  
**Example**  

   ```
   $ aws payment-cryptography get-public-key-certificate \
                    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv
   ```

   ```
   {
               "KeyCertificate": "LS0tLS1CRUdJTi...",
               "KeyCertificateChain": "LS0tLS1CRUdJT..."
         }
   ```

1. 

****상대방 시스템에 퍼블릭 인증서 설치(당사자 U)****  
HSMs 많은 경우 1단계에서 생성된 퍼블릭 인증서를 설치, 로드 또는 신뢰하여 이를 사용하여 키를 내보내야 합니다. 여기에는 HSM에 따라 전체 인증서 체인 또는 1단계의 루트 인증서만 포함될 수 있습니다. 자세한 내용은 HSM 설명서를 참조하세요.

1. 

****소스 시스템에서 ECC 키 페어를 생성하고 AWS Payment Cryptography에 인증서 체인 제공****  
ECDH에서 각 당사자는 키 페어를 생성하고 공통 키에 동의합니다. AWS Payment Cryptography에서 키를 추출하려면 상대방의 퍼블릭 키가 X.509 퍼블릭 키 형식으로 필요합니다.

   HSM에서 키를 전송할 때 해당 HSM에 키 페어를 생성합니다. 키 블록HSMs의 경우 키 헤더는와 비슷합니다`D0144K3EX00E0000`. 인증서를 생성할 때 일반적으로 HSM에서 CSR을 생성한 다음 HSM, 타사 또는와 같은 서비스가 인증서를 생성할 AWS Private CA 수 있습니다.

   KeyMaterialTypeKeyUsageType이 인 `importKey` 명령을 사용하여 루트 인증서를 AWS Payment Cryptography에 로드합니다`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. `RootCertificatePublicKey` 

   중간 인증서의 경우 `importKey` 명령을의 KeyMaterialType `TrustedCertificatePublicKey` 및의 KeyUsageType과 함께 사용합니다`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. 여러 중간 인증서에 대해이 프로세스를 반복합니다. 체인에서 마지막으로 가져온 인증서`KeyArn`의를 후속 가져오기 명령에 대한 입력으로 사용합니다.
**참고**  
리프 인증서를 가져오지 마십시오. 가져오기 명령 중에 직접 제공합니다.

1. 

****당사자 U HSM에서 ECDH를 사용하여 일회성 키 생성****  
많은 HSMs 및 관련 시스템은 ECDH를 사용하여 키 설정을 지원합니다. 1단계의 퍼블릭 키를 퍼블릭 키로 지정하고 3단계의 키를 프라이빗 키로 지정합니다. 파생 방법과 같은 허용 가능한 옵션은 [API 가이드를](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportDiffieHellmanTr31KeyBlock.html) 참조하세요.
**참고**  
 해시 유형과 같은 파생 파라미터는 양쪽에서 정확히 일치해야 합니다. 그렇지 않으면 다른 키를 생성합니다.

1. 

****소스 시스템에서 키 내보내기****  
마지막으로 표준 TR-31 명령을 사용하여 AWS Payment Cryptography로 전송할 키를 내보냅니다. ECDH 파생 키를 KBPK로 지정합니다. 내보낼 키는 TR-31 유효한 조합이 적용되는 모든 TDES 또는 AES 키일 수 있습니다. 단, 래핑 키가 내보낼 키만큼 강력해야 합니다.

1. 

****호출 가져오기 키****  
KeyMaterialType이 인 `import-key` API를 호출합니다`DiffieHellmanTr31KeyBlock`. 에 대해 3단계에서 가져온 마지막 CA의 KeyARN`certificate-authority-public-key-identifier`,에 대해 4단계의 래핑된 키 구성 요소`key-material`,에 대해 3단계의 리프 인증서를 사용합니다`public-key-certificate`. 1단계의 프라이빗 키 ARN을 포함합니다.

   ```
   $ aws payment-cryptography import-key \
             --key-material='{
               "DiffieHellmanTr31KeyBlock": {
                 "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
                 "DerivationData": {
                   "SharedInformation": "1234567890"
                 },
                 "DeriveKeyAlgorithm": "AES_256",
                 "KeyDerivationFunction": "NIST_SP800",
                 "KeyDerivationHashAlgorithm": "SHA_256",
                 "PrivateKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
                 "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN....",
                 "WrappedKeyBlock": "D0112K1TB00E0000D603CCA8ACB71517906600FF8F0F195A38776A7190A0EF0024F088A5342DB98E2735084A7841CB00E16D373A70857E9A"
               }
             }'
   ```

   ```
   {
           "Key": {
             "CreateTimestamp": "2025-03-13T16:52:52.859000-04:00",
             "Enabled": true,
             "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
             "KeyAttributes": {
               "KeyAlgorithm": "TDES_3KEY",
               "KeyClass": "SYMMETRIC_KEY",
               "KeyModesOfUse": {
                 "Decrypt": true,
                 "DeriveKey": false,
                 "Encrypt": true,
                 "Generate": false,
                 "NoRestrictions": false,
                 "Sign": false,
                 "Unwrap": true,
                 "Verify": false,
                 "Wrap": true
               },
               "KeyUsage": "TR31_K1_KEY_ENCRYPTION_KEY"
             },
             "KeyCheckValue": "CB94A2",
             "KeyCheckValueAlgorithm": "ANSI_X9_24",
             "KeyOrigin": "EXTERNAL",
             "KeyState": "CREATE_COMPLETE",
             "UsageStartTimestamp": "2025-03-13T16:52:52.859000-04:00"
           }
         }
   ```

1. 

****암호화 작업 또는 후속 가져오기에 가져온 키 사용****  
가져온 KeyUsage가 TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY인 경우 TR-31을 사용하여 후속 키 가져오기에이 키를 사용할 수 있습니다. 다른 키 유형(예: TR31\$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY)의 경우 키를 암호화 작업에 직접 사용할 수 있습니다.

### 비대칭 기법을 사용하여 키 가져오기(RSA 언래핑)
<a name="keys-import-rsaunwrap"></a>

 개요: AWS Payment Cryptography는 TR-34를 사용할 수 없는 경우 키 교환을 위해 RSA 래핑/언래핑을 지원합니다. TR-34와 마찬가지로이 기법은 RSA 비대칭 암호화를 사용하여 교환을 위한 대칭 키를 암호화합니다. 그러나 TR-34와 달리이 메서드에는 전송 당사자가 페이로드에 서명하지 않습니다. 또한이 RSA 래핑 기법은 키 블록을 포함하지 않으므로 전송 중에 키 메타데이터의 무결성을 유지하지 않습니다.

**참고**  
 RSA 랩을 사용하여 TDES 및 AES-128 키를 가져오거나 내보낼 수 있습니다.

1. 

****가져오기 초기화 명령을 호출합니다.****  
를 호출**get-parameters-for-import**하여의 `KeyMaterialType` 로 가져오기 프로세스를 초기화합니다`KEY_CRYPTOGRAM`. TDES 키를 교환할 `WrappingKeyAlgorithm` 때에 `RSA_2048`를 사용합니다. TDES `RSA_3072` 또는 AES-128 키를 교환`RSA_4096`할 때 또는를 사용합니다. 이 API는 키 가져오기를 위한 키 페어를 생성하고, 인증서 루트를 사용하여 키에 서명하고, 인증서 루트와 인증서 루트를 모두 반환합니다. 이 키를 사용하여 내보낼 키를 암호화합니다. 이러한 인증서는 수명이 짧으며이 용도로만 사용됩니다.

   ```
   $ aws payment-cryptography get-parameters-for-import \
       --key-material-type KEY_CRYPTOGRAM \
       --wrapping-key-algorithm RSA_4096
   ```

   ```
   {
     "ImportToken": "import-token-bwxli6ocftypneu5",
     "ParametersValidUntilTimestamp": 1698245002.065,
     "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....",
     "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....",
     "WrappingKeyAlgorithm": "RSA_4096"
   }
   ```

1. 

****키 소스 시스템에 퍼블릭 인증서 설치****  
HSMs 많은 경우 1단계에서 생성된 퍼블릭 인증서(및/또는 루트)를 설치, 로드 또는 신뢰하여 이를 사용하여 키를 내보내야 합니다.

1. 

****소스 시스템에서 키 내보내기****  
많은 HSMs 및 관련 시스템은 RSA 랩을 사용하여 키 내보내기를 지원합니다. 1단계의 퍼블릭 키를 암호화 인증서(`WrappingKeyCertificate`)로 지정합니다. 신뢰 체인이 필요한 경우 1단계`WrappingKeyCertificateChain`의를 사용합니다. HSM에서 키를 내보낼 때 패딩 모드 = PKCS\$11 v2.2 OAEP(SHA 256 또는 SHA 512 사용)를 사용하여 형식을 RSA로 지정합니다.

1. 

****호출 **import-key******  
의를 사용하여 **import-key** API를 호출`KeyMaterialType`합니다`KeyMaterial`. 1단계`ImportToken`의와 3단계의 `key-material` (래핑된 키 구성 요소)가 필요합니다. RSA 랩은 키 블록을 사용하지 않으므로 키 파라미터(예: 키 사용)를 제공합니다.

   ```
   $ cat import-key-cryptogram.json 
   ```

   ```
   {
     "KeyMaterial": {
       "KeyCryptogram": {
         "Exportable": true,
         "ImportToken": "import-token-bwxli6ocftypneu5",
         "KeyAttributes": {
           "KeyAlgorithm": "AES_128",
           "KeyClass": "SYMMETRIC_KEY",
           "KeyModesOfUse": {
             "Decrypt": true,
             "DeriveKey": false,
             "Encrypt": true,
             "Generate": false,
             "NoRestrictions": false,
             "Sign": false,
             "Unwrap": true,
             "Verify": false,
             "Wrap": true
           },
           "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY"
         },
         "WrappedKeyCryptogram": "18874746731....",
         "WrappingSpec": "RSA_OAEP_SHA_256"
       }
     }
   }
   ```

   ```
   $ aws payment-cryptography import-key --cli-input-json file://import-key-cryptogram.json
   ```

   ```
   {
     "Key": {
       "KeyOrigin": "EXTERNAL",
       "Exportable": true,
       "KeyCheckValue": "DA1ACF",
       "UsageStartTimestamp": 1697643478.92,
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
       "CreateTimestamp": 1697643478.92,
       "KeyState": "CREATE_COMPLETE",
       "KeyAttributes": {
         "KeyAlgorithm": "AES_128",
         "KeyModesOfUse": {
           "Encrypt": true,
           "Unwrap": true,
           "Verify": false,
           "DeriveKey": false,
           "Decrypt": true,
           "NoRestrictions": false,
           "Sign": false,
           "Wrap": true,
           "Generate": false
         },
         "KeyUsage": "TR31_K0_KEY_ENCRYPTION_KEY",
         "KeyClass": "SYMMETRIC_KEY"
       },
       "KeyCheckValueAlgorithm": "CMAC"
     }
   }
   ```

1. 

****암호화 작업 또는 후속 가져오기에 가져온 키 사용****  
가져온이 `TR31_K0_KEY_ENCRYPTION_KEY` 또는 `KeyUsage`인 경우 TR-31을 사용한 후속 키 가져오기에이 키를 사용할 `TR31_K1_KEY_BLOCK_PROTECTION_KEY`수 있습니다. 키 유형이 다른 유형(예: `TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`)인 경우 키를 암호화 작업에 직접 사용할 수 있습니다.

### 사전 설정된 키 교환 키(TR-31)를 사용하여 대칭 키를 가져옵니다.
<a name="keys-import-tr31"></a>

![\[AWS Payment Cryptography 대칭 키 가져오기 프로세스\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/images/keyimport-process-wk-import.png)


여러 키를 교환하거나 키 교체를 지원할 때 파트너는 일반적으로 먼저 초기 키 암호화 키(KEK)를 교환합니다. 이 작업은 종이 키 구성 요소와 같은 기술을 사용하거나 AWS Payment Cryptography의 경우 [TR-34](#keys-import-tr34)를 사용하여 수행할 수 있습니다.

 KEK를 설정한 후 이를 사용하여 후속 키(다른 KEKs. AWS Payment Cryptography는 HSM 공급업체에서 널리 사용되고 지원하는 ANSI TR-31을 사용하여이 키 교환을 지원합니다.

1. 

****키 암호화 키 가져오기(KEK)****  
KEK를 이미 가져왔고 keyARN(또는 keyAlias)을 사용할 수 있는지 확인합니다.

1. 

****소스 플랫폼에서 키 생성****  
키가 없는 경우 소스 플랫폼에서 생성합니다. 또는 AWS Payment Cryptography에서 키를 생성하고 **export** 명령을 사용할 수 있습니다.

1. 

****소스 플랫폼에서 키 내보내기****  
내보낼 때 내보내기 형식을 TR-31로 지정합니다. 소스 플랫폼은 내보낼 키와 사용할 키 암호화 키를 요청합니다.

1. 

****AWS Payment Cryptography로 가져오기****  
**import-key** 명령을 호출할 때에 대한 키 암호화 키의 keyARN(또는 별칭)을 사용합니다`WrappingKeyIdentifier`. 에 대한 소스 플랫폼의 출력을 사용합니다`WrappedKeyBlock`.  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"Tr31KeyBlock": { \
       "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \
       "WrappedKeyBlock": "D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"} \
       }'
   ```

   ```
   {
     "Key": {
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
       "KeyAttributes": {
         "KeyUsage": "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY",
         "KeyClass": "SYMMETRIC_KEY",
         "KeyAlgorithm": "AES_128",
         "KeyModesOfUse": {
           "Encrypt": true,
           "Decrypt": true,
           "Wrap": true,
           "Unwrap": true,
           "Generate": false,
           "Sign": false,
           "Verify": false,
           "DeriveKey": false,
           "NoRestrictions": false
         }
       },
       "KeyCheckValue": "0A3674",
       "KeyCheckValueAlgorithm": "CMAC",
       "Enabled": true,
       "Exportable": true,
       "KeyState": "CREATE_COMPLETE",
       "KeyOrigin": "EXTERNAL",
       "CreateTimestamp": "2023-06-02T07:38:14.913000-07:00",
       "UsageStartTimestamp": "2023-06-02T07:38:14.857000-07:00"
     }
   }
   ```

## 비대칭(RSA, ECC) 퍼블릭 키 가져오기
<a name="keys-import-asymmetric"></a>

가져온 모든 인증서는 최소한 체인의 발급(이전) 인증서만큼 강력해야 합니다. 즉, RSA\$12048 CA는 RSA\$12048 리프 인증서를 보호하는 데만 사용할 수 있으며 ECC 인증서는 동등한 강도의 다른 ECC 인증서로 보호해야 합니다. ECC P384 인증서는 P384 또는 P521 CA에서만 발급할 수 있습니다. 모든 인증서는 가져올 때 만료되지 않아야 합니다.

### RSA 퍼블릭 키 가져오기
<a name="keys-import-rsapublickey"></a>

AWS Payment Cryptography는 퍼블릭 RSA 키를 X.509 인증서로 가져오는 것을 지원합니다. 인증서를 가져오려면 먼저 루트 인증서를 가져옵니다. 모든 인증서는 가져올 때 만료되지 않아야 합니다. 인증서는 PEM 형식이어야 하며 base64로 인코딩되어야 합니다.

1. 

****루트 인증서를 AWS Payment Cryptography로 가져오기****  
루트 인증서를 가져오려면 다음 명령을 사용합니다.  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"RootCertificatePublicKey": { \
       "KeyAttributes": { \
       "KeyAlgorithm": "RSA_2048", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": { \
       "Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURKVENDQWcyZ0F3SUJBZ0lCWkRBTkJna3Foa2lHOXcwQkFR..."} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl",
       "KeyAttributes": {
         "KeyAlgorithm": "RSA_2048",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2023-08-08T18:52:01.023000+00:00"
     }
   }
   ```

1. 

****퍼블릭 키 인증서를 AWS Payment Cryptography로 가져오기****  
이제 퍼블릭 키를 가져올 수 있습니다. TR-34와 ECDH는 런타임 시 리프 인증서를 전달하는 데 의존하므로이 옵션은 다른 시스템의 퍼블릭 키를 사용하여 데이터를 암호화할 때만 사용됩니다. KeyUsage는 TR31\$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION으로 설정됩니다.  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"Tr31KeyBlock": { \
       "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \
       "WrappedKeyBlock": "D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-08-08T18:55:46.815000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk",
       "KeyAttributes": {
         "KeyAlgorithm": "RSA_4096",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2023-08-08T18:55:46.815000+00:00"
     }
   }
   ```

### ECC 퍼블릭 키 가져오기
<a name="keys-import-eccpublickey"></a>

AWS Payment Cryptography는 퍼블릭 ECC 키를 X.509 인증서로 가져오는 것을 지원합니다. 인증서를 가져오려면 먼저 루트 CA 인증서와 중간 인증서를 가져옵니다. 모든 인증서는 가져올 때 만료되지 않아야 합니다. 인증서는 PEM 형식이어야 하며 base64로 인코딩되어야 합니다.

1. 

****AWS Payment Cryptography로 ECC 루트 인증서 가져오기****  
루트 인증서를 가져오려면 다음 명령을 사용합니다.  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"RootCertificatePublicKey": { \
       "KeyAttributes": { \
       "KeyAlgorithm": "ECC_NIST_P521", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": { \
       "Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQekNDQWFDZ0F3SUJBZ0lDSjNVd0NnWUlLb1pJemowRUF3UXdNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnAKWjI1bFpFTmxjblJwWm1sallYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNQjRYRFRJMU1ETXlPREF3TURBdwpNRm9YRFRJMk1ETXlPREF3TURBd01Gb3dNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnBaMjVsWkVObGNuUnBabWxqCllYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUEKRDVEUXc5RW1Tb1lJVkRnbUpmRm1wL1pzMXp1M0ZobThrdUdkYlA4NWgwNTdydkhHZ3VISW03V3N1aTlpdXNvNApFWEZnV3ZUdy85amhZcVJrMi9yY1RHb0JrS2NpV3Q2UHMxVmpSUVZhVEZmbmxPdjRNTURQUEFEUWthVU45cVNNCkF5MTF0RklKNlFGWDR0aGx3RzBaZkFwd0NMV1ZyMzFrRU45RDJhVUh6Mjg5WlM2all6QmhNQjhHQTFVZEl3UVkKTUJhQUZFMjhnay9QZnZ3NklsNm9yQzNwRmJtK280emxNQjBHQTFVZERnUVdCQlJOdklKUHozNzhPaUplcUt3dAo2Ulc1dnFPTTVUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lDeERBS0JnZ3Foa2pPClBRUURCQU9CakFBd2dZZ0NRZ0ZRRit5VUVSYTZoQ0RwSDVHeVhlaVFYYU0wc25Fd3o2TmlmOHlSTlF1dzJ5MUoKdTNoKzZYa2N6Y3lVT01NSzhaRnhBVDhFOERMVUtpdjM1VmdzSkFDN09RSkNBSWMzdEVNV01tZTVCV3ZXTFVxSQpnV3h5U3UxWDdRSTJrR2dUK1FqRGlhQ2E4b091NVlJTmZscW4reUswR29yNGJzMTBZaUh4SHhpV2t0UVRSdVp4CkhIU3UKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wv4gb6h3xcqjk6sm",
       "KeyAttributes": {
         "KeyAlgorithm": "ECC_NIST_P521",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2025-03-08T18:52:01.023000+00:00"
     }
   }
   ```

1. 

****중간 인증서를 AWS Payment Cryptography로 가져오기****  
다음 명령을 사용하여 중간 인증서를 가져옵니다.  
**Example**  

   ```
   $ aws payment-cryptography import-key \
                   --key-material='{"TrustedCertificatePublicKey": { \
                   --certificate-authority-public-key-identifier='"arn:aws:payment-cryptography:us-east-2:111122223333:key/wv4gb6h3xcqjk6sm"  \
       "KeyAttributes": { \
       "KeyAlgorithm": "ECC_NIST_P521", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": { \
       "Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLekNDQVkyZ0F3SUJBZ0lDVDAwd0NnWUlLb1pJemowRUF3UXdNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnAKWjI1bFpFTmxjblJwWm1sallYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNQjRYRFRJMU1ETXlPREF3TURBdwpNRm9YRFRJMk1ETXlPREF3TURBd01Gb3dNREVlTUJ3R0ExVUVBd3dWUzBSSUlFbHVkR1Z5YldWa2FXRjBaU0JEClFTQXhNUTR3REFZRFZRUUZFd1V4TURJd01UQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFPOGwKZFM4c09YQlNWQlVINWxmRWZkNTZxYVVIenExZVN3VGZKdnI5eEFmb2hRNTNWZ2hLUlZoNzhNR2tJTjVCNTBJTAozbmhaU1JnUnRoS20xNkxwc084NEFGa1Z0ZEpOaEJpYUlQZlRlYXltOHh6OU44KzFWZ3RMTDZBcTBtNkwwMUFwCkUvUmxzUUJ3NWxoakM4VHVOWU1QaUpMYUNPbjJrZVh6SU5SSm01SjJtR3Q1bzFJd1VEQWZCZ05WSFNNRUdEQVcKZ0JSbklBNi9Vc3RMYUpzTzlpYjg1Zm9DWEcwRk96QWRCZ05WSFE0RUZnUVVaeUFPdjFMTFMyaWJEdlltL09YNgpBbHh0QlRzd0RnWURWUjBQQVFIL0JBUURBZ2JBTUFvR0NDcUdTTTQ5QkFNRUE0R0xBRENCaHdKQ0FmTnJjdXBkClpQd3ZqTGdVeFZiN1NtSXNhY2Z6MVZrNWZFYXZHNlVzdU95Y1lGbHlQQTlJZGgyK0lOcW5jSVg4VEo2cDFJRWkKN3RCTHpPb1l0ZWd2Q1dsL0FrRkRzWHFsWkI5bU93WnNEQy9HZEpEcm5uQ0ZkR29hM1NwZytqbGdhOGdQTmxLbAo1dE9IU0lVZnZxcFhEcWYrdXV6SEc1Z3FjdUhnQU8wOUhuMloyNUc4eVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2025-03-20T18:52:01.023000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
       "KeyAttributes": {
         "KeyAlgorithm": "ECC",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2025-03-25T18:52:01.023000+00:00"
     }
   }
   ```

1. 

****퍼블릭 키 인증서(Leaf)를 AWS Payment Cryptography로 가져오기****  
 리프 ECC 인증서를 가져올 수 있지만 현재 스토리지 외에는 AWS Payment Cryptography에 정의된 함수가 없습니다. 이는 ECDH 함수를 사용할 때 리프 인증서가 런타임에 전달되기 때문입니다.

# 키 내보내기
<a name="keys-export"></a>

**Contents**
+ [대칭 키 내보내기](#keys-export-symmetric)
  + [비대칭 기법을 사용하여 키 내보내기(TR-34)](#keys-export-tr34)
  + [비대칭 기법(ECDH)을 사용하여 키 내보내기](#keys-export-ecdh)
  + [비대칭 기법을 사용하여 키 내보내기(RSA 랩)](#keys-export-rsawrap)
  + [사전 설정된 키 교환 키(TR-31)를 사용하여 대칭 키를 내보냅니다.](#keys-export-tr31)
+ [DUKPT 초기 키 내보내기(IPEK/IK)](#keys-export-ipek)
+ [내보낼 키 블록 헤더 지정](#keys-export-optionalheaders)
  + [일반 헤더](#keys-export-commonheaders)
+ [비대칭(RSA) 키 내보내기](#keys-export-publickey)

## 대칭 키 내보내기
<a name="keys-export-symmetric"></a>

**중요**  
 시작하기 AWS CLI 전에 최신 버전의가 있는지 확인합니다. 업그레이드하려면 [설치를 참조하세요 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

### 비대칭 기법을 사용하여 키 내보내기(TR-34)
<a name="keys-export-tr34"></a>

TR-34는 RSA 비대칭 암호화를 사용하여 교환을 위해 대칭 키를 암호화하고 서명합니다. 암호화는 기밀성을 보호하는 반면 서명은 무결성을 보장합니다. 키를 내보내면 AWS Payment Cryptography가 키 배포 호스트(KDH) 역할을 하며 대상 시스템이 키 수신 디바이스(KRD)가 됩니다.

**참고**  
HSM이 TR-34 내보내기를 지원하지만 TR-34 가져오기를 지원하지 않는 경우 먼저 TR-34를 사용하여 HSM과 AWS Payment Cryptography 간에 공유 KEK를 설정하는 것이 좋습니다. 그런 다음 TR-31을 사용하여 나머지 키를 전송할 수 있습니다.

1. 

****내보내기 프로세스 초기화****  
를 실행**get-parameters-for-export**하여 키 내보내기를 위한 키 페어를 생성합니다. 이 키 페어를 사용하여 TR-34 페이로드에 서명합니다. TR-34 용어에서 이는 KDH 서명 인증서입니다. 인증서는 수명이 짧으며에 지정된 기간 동안만 유효합니다`ParametersValidUntilTimestamp`.
**참고**  
모든 인증서는 base64 인코딩에 있습니다.  
**Example**  

   ```
   $ aws payment-cryptography get-parameters-for-export \
       --signing-key-algorithm RSA_2048 \
       --key-material-type TR34_KEY_BLOCK
   ```

   ```
   {
     "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...",
     "SigningKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS....",
     "SigningKeyAlgorithm": "RSA_2048",
     "ExportToken": "export-token-au7pvkbsq4mbup6i",
     "ParametersValidUntilTimestamp": "2023-06-13T15:40:24.036000-07:00"
   }
   ```

1. 

****AWS Payment Cryptography 인증서를 수신 시스템으로 가져오기****  
1단계의 인증서 체인을 수신 시스템으로 가져옵니다.

1. 

****수신 시스템의 인증서 설정****  
전송된 페이로드를 보호하기 위해 전송 당사자(KDH)는 페이로드를 암호화합니다. 수신 시스템(일반적으로 HSM 또는 파트너의 HSM)은 퍼블릭 키를 생성하고 X.509 퍼블릭 키 인증서를 생성해야 합니다. AWS Private CA 를 사용하여 인증서를 생성할 수 있지만 모든 인증 기관을 사용할 수 있습니다.

   인증서를 받은 후 **ImportKey** 명령을 사용하여 루트 인증서를 AWS Payment Cryptography로 가져옵니다. 이 경우 `KeyMaterialType`을 `RootCertificatePublicKey`로, `KeyUsageType`를 `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`으로 설정합니다.

   리프 인증서에 서명하는 루트 키이기 `KeyUsageType` 때문에를 `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`로 사용합니다. 잎 인증서를 AWS Payment Cryptography로 가져올 필요가 없습니다. 잎 인증서를 인라인으로 전달할 수 있습니다.
**참고**  
이전에 루트 인증서를 가져온 경우이 단계를 건너뜁니다. 중간 인증서의 경우를 사용합니다`TrustedCertificatePublicKey`.

1. 

****키 내보내기****  
가 로 `KeyMaterialType` 설정된 **ExportKey** API를 호출합니다`TR34_KEY_BLOCK`. 다음을 제공해야 합니다.
   + 로 3단계에서 루트 CA의 keyARN `CertificateAuthorityPublicKeyIdentifier`
   + 로 3단계의 리프 인증서 `WrappingKeyCertificate`
   + 로 내보내려는 키의 keyARN(또는 별칭) `--export-key-identifier`
   + 1단계의 내보내기 토큰  
**Example**  

   ```
   $ aws payment-cryptography export-key \
       --export-key-identifier "example-export-key" \
       --key-material '{"Tr34KeyBlock": { \
       "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk", \
       "ExportToken": "export-token-au7pvkbsq4mbup6i", \
       "KeyBlockFormat": "X9_TR34_2012", \
       "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFXZ0F3SUJBZ0lSQ..."} \
       }'
   ```

   ```
   {
     "WrappedKey": {
       "KeyMaterial": "308205A106092A864886F70D010702A08205923082058...",
       "WrappedKeyMaterialFormat": "TR34_KEY_BLOCK"
     }
   }
   ```

### 비대칭 기법(ECDH)을 사용하여 키 내보내기
<a name="keys-export-ecdh"></a>

![\[AWS ECDH를 사용한 Payment Cryptography 키 암호화 키 가져오기 프로세스\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/images/keyimport-ecdh-export.png)


타원 곡선 Diffie-Hellman(ECDH)은 ECC 비대칭 암호화를 사용하여 사전 교환된 키 없이 두 당사자 간에 공유 키를 설정합니다. ECDH 키는 임시 키이므로 AWS Payment Cryptography는 키를 저장하지 않습니다. 이 프로세스에서 일회성 [KBPK/KEK](terminology.md#terms.kbpk)는 ECDH를 사용하여 파생됩니다. 이 파생 키는 다른 KBPK, BDK, IPEK 키 또는 기타 키 유형일 수 있는 전송하려는 키를 래핑하는 데 즉시 사용됩니다.

내보낼 때 AWS Payment Cryptography를 당사자 U(이니시에이터)라고 하며 수신 시스템을 당사자 V(응답자)라고 합니다.

**참고**  
ECDH는 모든 대칭 키 유형을 교환하는 데 사용할 수 있지만 KEK가 아직 설정되지 않은 경우 AES-256 키를 전송하는 데 사용할 수 있는 유일한 접근 방식입니다.

1. 

****ECC 키 페어 생성****  
를 호출`create-key`하여이 프로세스에 대한 ECC 키 페어를 생성합니다. 이 API는 키 가져오기 또는 내보내기를 위한 키 페어를 생성합니다. 생성 시이 ECC 키를 사용하여 파생할 수 있는 키 종류를 지정합니다. ECDH를 사용하여 다른 키를 교환(래핑)할 때는 값을 사용합니다`TR31_K1_KEY_BLOCK_PROTECTION_KEY`.
**참고**  
 하위 수준 ECDH는 어떤 목적으로든 사용할 수 있는 파생 키를 생성하지만 AWS Payment Cryptography는 단일 파생 키 유형에만 키를 사용할 수 있도록 허용하여 여러 목적으로 키를 실수로 재사용하는 것을 제한합니다.

   ```
   $ aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=ECC_NIST_P256,KeyUsage=TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{DeriveKey=true}' --derive-key-usage "TR31_K1_KEY_BLOCK_PROTECTION_KEY"
   ```

   ```
   {
           "Key": {
               "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
               "KeyAttributes": {
                   "KeyUsage": "TR31_K3_ASYMMETRIC_KEY_FOR_KEY_AGREEMENT",
                   "KeyClass": "ASYMMETRIC_KEY_PAIR",
                   "KeyAlgorithm": "ECC_NIST_P256",
                   "KeyModesOfUse": {
                       "Encrypt": false,
                       "Decrypt": false,
                       "Wrap": false,
                       "Unwrap": false,
                       "Generate": false,
                       "Sign": false,
                       "Verify": false,
                       "DeriveKey": true,
                       "NoRestrictions": false
                   }
               },
               "KeyCheckValue": "2432827F",
               "KeyCheckValueAlgorithm": "CMAC",
               "Enabled": true,
               "Exportable": true,
               "KeyState": "CREATE_COMPLETE",
               "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
               "CreateTimestamp": "2025-03-28T22:03:41.087000-07:00",
               "UsageStartTimestamp": "2025-03-28T22:03:41.068000-07:00"
           }
       }
   ```

1. 

****퍼블릭 키 인증서 가져오기****  
를 호출`get-public-key-certificate`하여 특정 리전의 AWS Payment Cryptography 전용 계정 CA에서 서명한 X.509 인증서로 퍼블릭 키를 수신합니다.  
**Example**  

   ```
   $ aws payment-cryptography get-public-key-certificate \
              --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv
   ```

   ```
   {
         "KeyCertificate": "LS0tLS1CRUdJTi...",
         "KeyCertificateChain": "LS0tLS1CRUdJT..."
       }
   ```

1. 

****상대방 시스템에 퍼블릭 인증서 설치(당사자 V)****  
HSMs 많은 경우 키를 설정하려면 1단계에서 생성된 퍼블릭 인증서를 설치, 로드 또는 신뢰해야 합니다. 여기에는 HSM에 따라 전체 인증서 체인 또는 루트 인증서만 포함될 수 있습니다. 구체적인 지침은 HSM 설명서를 참조하세요.

1. 

****소스 시스템에서 ECC 키 페어를 생성하고 AWS Payment Cryptography에 인증서 체인 제공****  
ECDH에서 각 당사자는 키 페어를 생성하고 공통 키에 동의합니다. AWS Payment Cryptography가 키를 추출하려면 상대방의 퍼블릭 키가 X.509 퍼블릭 키 형식으로 필요합니다.

   HSM에서 키를 전송할 때 해당 HSM에 키 페어를 생성합니다. 키 블록HSMs의 경우 키 헤더는와 비슷합니다`D0144K3EX00E0000`. 인증서를 생성할 때 일반적으로 HSM에서 CSR을 생성한 다음 HSM, 타사 또는와 같은 서비스가 인증서를 생성할 AWS Private CA 수 있습니다.

   KeyMaterialTypeKeyUsageType이 인 `importKey` 명령을 사용하여 루트 인증서를 AWS Payment Cryptography에 로드합니다`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. `RootCertificatePublicKey` 

   중간 인증서의 경우 `importKey` 명령을의 KeyMaterialType `TrustedCertificatePublicKey` 및의 KeyUsageType과 함께 사용합니다`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. 여러 중간 인증서에 대해이 프로세스를 반복합니다. 체인에서 마지막으로 가져온 인증서`KeyArn`의를 후속 내보내기 명령에 대한 입력으로 사용합니다.
**참고**  
리프 인증서를 가져오지 마십시오. 내보내기 명령 중에 직접 제공합니다.

1. 

****AWS Payment Cryptography에서 키 추출 및 키 내보내기****  
내보낼 때 서비스는 ECDH를 사용하여 키를 추출한 다음 즉시 이를 [KBPK](terminology.md#terms.kbpk)로 사용하여 TR-31을 사용하여 내보낼 키를 래핑합니다. 내보낼 키는 TR-31 유효한 조합이 적용되는 모든 TDES 또는 AES 키일 수 있습니다. 단, 래핑 키가 내보낼 키만큼 강력해야 합니다.

   ```
   $ aws payment-cryptography export-key \
               --export-key-identifier arn:aws:payment-cryptography:us-west-2:529027455495:key/e3a65davqhbpjm4h \
               --key-material='{
                 "DiffieHellmanTr31KeyBlock": {
                   "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
                   "DerivationData": {
                     "SharedInformation": "ADEF567890"
                   },
                   "DeriveKeyAlgorithm": "AES_256",
                   "KeyDerivationFunction": "NIST_SP800",
                   "KeyDerivationHashAlgorithm": "SHA_256",
                   "PrivateKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
                   "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FUR..."
                 }
               }'
   ```

   ```
   {
               "WrappedKey": {
                   "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK",
                   "KeyMaterial": "D0112K1TB00E00007012724C0FAAF64DA50E2FF4F9A94DF50441143294E0E995DB2171554223EAA56D078C4CFCB1C112B33BBF05597EE700",
                   "KeyCheckValue": "E421AD",
                   "KeyCheckValueAlgorithm": "ANSI_X9_24"
               }
           }
   ```

1. 

****파티 V HSM에서 ECDH를 사용하여 일회성 키 생성****  
많은 HSMs 및 관련 시스템은 ECDH를 사용하여 키 설정을 지원합니다. 1단계의 퍼블릭 키를 퍼블릭 키로 지정하고 3단계의 키를 프라이빗 키로 지정합니다. 파생 방법과 같은 허용 가능한 옵션은 [API 가이드를](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ExportDiffieHellmanTr31KeyBlock.html) 참조하세요.
**참고**  
 해시 유형과 같은 파생 파라미터는 양쪽에서 정확히 일치해야 합니다. 그렇지 않으면 다른 키를 생성합니다.

1. 

****대상 시스템으로 키 가져오기****  
마지막으로 표준 TR-31 명령을 사용하여 AWS Payment Cryptography에서 키를 가져옵니다. ECDH 파생 키를 KBPK로 지정하고 이전에 AWS Payment Cryptography에서 내보낸 TR-31 키 블록을 사용합니다.

### 비대칭 기법을 사용하여 키 내보내기(RSA 랩)
<a name="keys-export-rsawrap"></a>

 TR-34를 사용할 수 없는 경우 키 교환에 RSA 래핑/언래핑을 사용할 수 있습니다. TR-34와 마찬가지로이 메서드는 RSA 비대칭 암호화를 사용하여 대칭 키를 암호화합니다. 그러나 RSA 랩에는 다음이 포함되지 않습니다.
+ 전송 당사자에 의한 페이로드 서명
+ 전송 중에 키 메타데이터 무결성을 유지하는 키 블록

**참고**  
RSA 랩을 사용하여 TDES 및 AES-128 키를 내보낼 수 있습니다.

1. 

****수신 시스템에서 RSA 키 및 인증서 생성****  
래핑된 키를 수신하기 위한 RSA 키를 생성하거나 식별합니다. 키는 X.509 인증서 형식이어야 합니다. 인증서를 AWS Payment Cryptography로 가져올 수 있는 루트 인증서로 서명했는지 확인합니다.

1. 

****루트 퍼블릭 인증서를 AWS Payment Cryptography로 가져오기****  
`--key-material` 옵션과 **import-key** 함께 사용하여 인증서 가져오기

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"RootCertificatePublicKey": { \
       "KeyAttributes": { \
       "KeyAlgorithm": "RSA_4096", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": {"Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRV..."} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-09-14T10:50:32.365000-07:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/nsq2i3mbg6sn775f",
       "KeyAttributes": {
         "KeyAlgorithm": "RSA_4096",
         "KeyClass": "PUBLIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": false,
           "DeriveKey": false,
           "Encrypt": false,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": false,
           "Verify": true,
           "Wrap": false
         },
         "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
       },
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2023-09-14T10:50:32.365000-07:00"
     }
   }
   ```

1. 

****키 내보내기****  
리프 인증서를 사용하여 키를 내보내도록 AWS Payment Cryptography에 지시합니다. 다음을 지정해야 합니다.
   + 2단계에서 가져온 루트 인증서의 ARN
   + 내보내기를 위한 리프 인증서
   + 내보낼 대칭 키

   출력은 대칭 키의 16진수로 인코딩된 이진 래핑(암호화) 버전입니다.  
**Example 예 - 키 내보내기**  

   ```
   $ cat export-key.json
   ```

   ```
   {
     "ExportKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
     "KeyMaterial": {
       "KeyCryptogram": {
         "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl",
         "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDEXAMPLE...",
         "WrappingSpec": "RSA_OAEP_SHA_256"
       }
     }
   }
   ```

   ```
   $ aws payment-cryptography export-key \
       --cli-input-json file://export-key.json
   ```

   ```
   {
     "WrappedKey": {
       "KeyMaterial": "18874746731E9E1C4562E4116D1C2477063FCB08454D757D81854AEAEE0A52B1F9D303FA29C02DC82AE7785353816EFAC8B5F4F79CC29A1DDA80C65F34364373D8C74E5EC67E4CB55DEA7F091210DCACD3C46FE4A5DAA0F0D9CAA7C959CA7144A5E7052F34AAED93EF44C004AE7ABEBD616C955BBA10993C06FB905319F87B9B4E1B7A7C7D17AF15B6154E807B9C574387A43197C31C6E565554437A252EFF8AC81613305760D11F9B53B08A1BA79EC7E7C82C48083C4E2D0B6F86C34AB83647BDD7E85240AD1AF3C0F6CA8C5BF323BB2D3896457C554F978F4C9436513F494130A6FADBC038D51898AAD72E02A89FF256C524E7B5D85B813751B718C4933D9DC6031F2C5B2E13351A54B6021B2DB72AA0C7EA54727FBCD557E67E5E7CC2E165576E39DB4DA33510BA9A3C847313103A18EF3B23A3440471864D58C79C569D5CD2A653AC16043CA9A61E6878F74C18EE15F9AB23754C37A945B68C0437C19F0079F74B573D9B59DAC25A20781DBE8075C947C9EDC76177A1B0794288CBF89567A541E8401C74E85B8E1C3E501860AF702F641CAA04327018A84EF3A82932A2BCF37047AB40FE77E0A6F68D0904C7E60983CD6F871D5E0E27EEF425C97D39E9394E8927EEF5D2EA9388DF3C5C241F99378DF5DADE8D0F0CF453C803BA38BA702B9651685FAFA6DCB4B14333F8D3C57F2D93E0852AA94EEC3AF3217CAE5873EFD9",
       "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM"
     }
   }
   ```

1. 

****키를 수신 시스템으로 가져오기****  
많은 HSMs 및 관련 시스템은 RSA 언래핑( AWS Payment Cryptography 포함)을 사용하여 키 가져오기를 지원합니다. 가져올 때 다음을 지정합니다.
   + 암호화 인증서로 1단계의 퍼블릭 키
   + RSA 형식
   + 패딩 모드 - PKCS\$11 v2.2 OAEP(SHA 256 사용)
**참고**  
래핑된 키는 hexBinary 형식으로 출력됩니다. 시스템에 base64와 같은 다른 바이너리 표현이 필요한 경우 형식을 변환해야 할 수 있습니다.

### 사전 설정된 키 교환 키(TR-31)를 사용하여 대칭 키를 내보냅니다.
<a name="keys-export-tr31"></a>

여러 키를 교환하거나 키 교체를 지원하는 경우 일반적으로 먼저 종이 키 구성 요소를 사용하거나 AWS Payment Cryptography에서 [TR-34](#keys-export-tr34)를 사용하여 초기 키 암호화 키(KEK)를 교환합니다. KEK를 설정한 후 이를 사용하여 다른 KEKs. HSM 공급업체에서 널리 지원하는 ANSI TR-31을 사용하여이 키 교환을 지원합니다.

1. 

****키 암호화 키(KEK) 설정****  
KEK를 이미 교환했고 keyARN(또는 keyAlias)을 사용할 수 있는지 확인합니다.

1. 

****AWS Payment Cryptography에서 키 생성****  
키가 아직 없는 경우 키를 생성합니다. 또는 다른 시스템에서 키를 생성하고 [가져오기](#keys-export-tr31) 명령을 사용할 수 있습니다.

1. 

****AWS Payment Cryptography에서 키 내보내기****  
TR-31 형식으로 내보낼 때 내보낼 키와 사용할 래핑 키를 지정합니다.  
**Example 예 - TR31 키 블록을 사용하여 키 내보내기**  

   ```
   $ aws payment-cryptography export-key \
       --key-material='{"Tr31KeyBlock": \
       { "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza" }}' \
       --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp
   ```

   ```
   {
     "WrappedKey": {
       "KeyCheckValue": "73C263",
       "KeyCheckValueAlgorithm": "ANSI_X9_24",
       "KeyMaterial": "D0144K0AB00E0000A24D3ACF3005F30A6E31D533E07F2E1B17A2A003B338B1E79E5B3AD4FBF7850FACF9A3784489581A543C84816C8D3542AE888CE6D4EDDFD09C39957B131617BC",
       "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK"
     }
   }
   ```

1. 

****키를 시스템으로 가져오기****  
시스템의 가져오기 키 구현을 사용하여 키를 가져옵니다.

## DUKPT 초기 키 내보내기(IPEK/IK)
<a name="keys-export-ipek"></a>

[DUKPT](terminology.md#terms.dukpt)를 사용하는 경우 터미널 플릿에 대해 단일 기본 파생 키(BDK)를 생성할 수 있습니다. 터미널은 BDK에 직접 액세스할 수 없습니다. 대신 각 터미널은 IPEK 또는 초기 키(IK)라고 하는 고유한 초기 터미널 키를 받습니다. 각 IPEK는 고유한 키 일련 번호(KSN)를 사용하여 BDK에서 파생됩니다.

KSN 구조는 암호화 유형에 따라 다릅니다.
+ TDES의 경우: 10바이트 KSN에는 다음이 포함됩니다.
  + 키 세트 ID의 경우 24비트
  + 터미널 ID의 경우 19비트
  + 트랜잭션 카운터의 경우 21비트
+ AES의 경우: 12바이트 KSN에는 다음이 포함됩니다.
  + BDK ID의 경우 32비트
  + 파생 식별자(ID)의 경우 32비트
  + 트랜잭션 카운터의 경우 32비트

이러한 초기 키를 생성하고 내보내는 메커니즘을 제공합니다. TR-31, TR-34 또는 RSA 래핑 방법을 사용하여 생성된 키를 내보낼 수 있습니다. IPEK 키는 유지되지 않으며 AWS Payment Cryptography의 후속 작업에 사용할 수 없습니다.

KSN의 처음 두 부분 간에 분할을 적용하지 않습니다. 유도 식별자를 BDK와 함께 저장하려면 AWS 태그를 사용할 수 있습니다.

**참고**  
KSN의 카운터 부분(AES DUKPT의 경우 32비트)은 IPEK/IK 파생에 사용되지 않습니다. 예를 들어 12345678901234560001 및 12345678901234569999의 입력은 동일한 IPEK를 생성합니다.

```
$ aws payment-cryptography export-key \
    --key-material='{"Tr31KeyBlock": { \
    "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza"}} ' \
    --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \
    --export-attributes 'ExportDukptInitialKey={KeySerialNumber=12345678901234560001}'
```

```
{
"WrappedKey": {
    "KeyCheckValue": "73C263",
    "KeyCheckValueAlgorithm": "ANSI_X9_24",
    "KeyMaterial": "B0096B1TX00S000038A8A06588B9011F0D5EEF1CCAECFA6962647A89195B7A98BDA65DDE7C57FEA507559AF2A5D601D1",
    "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK"
}
}
```

## 내보낼 키 블록 헤더 지정
<a name="keys-export-optionalheaders"></a>

ASC TR-31 또는 TR-34 형식으로 내보낼 때 키 블록 정보를 수정하거나 추가할 수 있습니다. 다음 표에서는 TR-31 키 블록 형식과 내보내기 중에 수정할 수 있는 요소에 대해 설명합니다.


| 키 블록 속성 | 용도 | 내보내기 중에 수정할 수 있나요? | 참고 | 
| --- | --- | --- | --- | 
| 버전 ID |  키 구성 요소를 보호하는 데 사용되는 방법을 정의합니다. 표준에는 다음이 포함됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/keys-export.html)  | 아니요 |  TDES 래핑 키에는 버전 B를 사용하고 AES 래핑 키에는 버전 D를 사용합니다. 버전 A 및 C는 가져오기 작업에만 지원됩니다.  | 
| 키 블록 길이 | 나머지 메시지의 길이를 지정합니다. | 아니요 |  이 값은 자동으로 계산됩니다. 사양에 따라 키 패딩을 추가할 수 있으므로 페이로드를 해독하기 전에 길이가 잘못 표시될 수 있습니다.  | 
| 키 사용 |  다음과 같이 키에 허용되는 목적을 정의합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/keys-export.html)  | 아니요 |  | 
| Algorithm |  기본 키의 알고리즘을 지정합니다. 다음을 지원합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/keys-export.html)  | 아니요 | 이 값을 있는 그대로 내보냅니다. | 
| 키 사용 |  다음과 같은 허용되는 작업을 정의합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/keys-export.html)  | 예\$1 |  | 
| 키 버전 | 키 교체/회전을 위한 버전 번호를 나타냅니다. 지정하지 않으면 기본값은 00입니다. | 예 - 추가할 수 있음 |  | 
| 키 내보내기 |  키를 내보낼 수 있는지 여부를 제어합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/keys-export.html)  | 예\$1 |  | 
| 선택적 키 블록 | 예 - 추가할 수 있음 |  선택적 키 블록은 키에 암호화 방식으로 바인딩된 이름/값 페어입니다. 예: DUKPT 키의 KeySetID. 이름/값 페어 입력을 기반으로 블록 수, 각 블록의 길이 및 패딩 블록(PB)을 자동으로 계산합니다.  |  | 

*\$1 값을 수정할 때 새 값은 AWS Payment Cryptography의 현재 값보다 더 제한적이어야 합니다.* 예제: 
+ 현재 키 사용 모드가 Generate=True,Verify=True인 경우 이를 Generate=True,Verify=False로 변경할 수 있습니다.
+ 키가 이미 내보내기 불가능으로 설정된 경우 키를 내보내기 가능으로 변경할 수 없습니다.

키를 내보내면 내보내는 키의 현재 값이 자동으로 적용됩니다. 그러나 수신 시스템으로 전송하기 전에 이러한 값을 수정하거나 추가할 수 있습니다. 다음은 몇 가지 일반적인 시나리오입니다.
+ 키를 결제 터미널로 내보낼 때 터미널은 일반적으로 키만 가져오고 내보내서는 안 `Not Exportable`되므로 내보내기 가능성을 로 설정합니다.
+ 연결된 키 메타데이터를 수신 시스템에 전달해야 하는 경우 사용자 지정 페이로드를 생성하는 대신 TR-31 선택적 헤더를 사용하여 메타데이터를 키에 암호화 방식으로 바인딩합니다.
+ `KeyVersion` 필드를 사용하여 키 버전을 설정하여 키 교체를 추적합니다.

TR-31/X9.143은 공통 헤더를 정의하지만 Payment AWS Cryptography 파라미터를 충족하고 수신 시스템이 이를 수락할 수 있는 한 다른 헤더를 사용할 수 있습니다. 내보내기 중 키 블록 헤더에 대한 자세한 내용은 API 안내서의 [키 블록 헤더](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_KeyBlockHeaders.html)를 참조하세요.

다음은 다음과 같은 사양으로 BDK 키(예: KIF)를 내보내는 예입니다.
+ 키 버전: 02
+ KeyExportability: NON\$1EXPORTABLE
+ KeySetID: 00ABCDEFAB(00은 TDES 키를 나타내고 ABCDEFABCD는 초기 키임)

 키 사용 모드를 지정하지 않으므로이 키는 arn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp(DeriveKey = true)에서 사용 모드를 상속합니다.

**참고**  
이 예제에서 내보내기를 내보내기 불가능으로 설정하더라도 [KIF](terminology.md#terms.kif)는 여전히 다음을 수행할 수 있습니다.  
[DUKPT에 사용되는 IPEK/IK](terminology.md#terms.ipek)와 같은 파생 키
이러한 파생 키를 내보내 디바이스에를 설치합니다.
이는 표준에서 특별히 허용됩니다.

```
$ aws payment-cryptography export-key \
    --key-material='{"Tr31KeyBlock": { \
    "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \
    "KeyBlockHeaders": { \
    "KeyModesOfUse": { \
    "Derive": true}, \
    "KeyExportability": "NON_EXPORTABLE", \
    "KeyVersion": "02", \
    "OptionalBlocks": { \
    "BI": "00ABCDEFABCD"}}} \
    }' \
    --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp
```

```
{
"WrappedKey": {
    "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK",
    "KeyMaterial": "EXAMPLE_KEY_MATERIAL_TR31",
    "KeyCheckValue": "A4C9B3",
    "KeyCheckValueAlgorithm": "ANSI_X9_24"
    }
}
```

### 일반 헤더
<a name="keys-export-commonheaders"></a>

X9.143은 일반적인 사용 사례에 대한 특정 헤더를 정의합니다. HM(HMAC 해시) 헤더를 제외하고 AWS Payment Cryptography는 이러한 헤더를 구문 분석하거나 활용하지 않습니다.


| 헤더 이름 | 용도 | 일반적인 검증 | 참고 | 
| --- | --- | --- | --- | 
| BI | DUKPT의 기본 파생 키 식별자 | 16진수 문자 2개(TDES의 경우 00, AES의 경우 11), TDES KSI의 경우 101진수 문자 또는 BDK ID(AES DUKPT)의 경우 816진수 문자. | (BDK ID, AES DUKPT용) 또는 키 세트 식별자(KSI, TDES DUKPT용)를 포함합니다. BDK ID 또는 KSI를 교환할 때 사용할 수 있지만 IK 및 KS 블록에 포함된 다른 데이터를 교환할 필요는 없습니다. 일반적으로 BI는 KIF로 전송할 때 사용되는 반면, IK 또는 KS는 터미널 자체에 주입할 때 사용됩니다. | 
| HM | HMAC 작업에 대한 해시 유형을 지정합니다. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/keys-export.html)  | 서비스는 내보내기 시이 필드를 자동으로 채우고 가져오기 시 구문 분석합니다. SHAKE128과 같은 서비스에서 지원하지 않는 해시 유형은 가져올 수 있지만 암호화 함수에는 사용할 수 없습니다. | 
| IK |  AES DUKPT의 초기 키 일련 번호 | 16 16진수 문자  | 이 값은 수신 디바이스에서 초기 DUKPT 키 사용을 인스턴스화하는 데 사용되며 BDK에서 파생된 초기 키를 식별합니다. 이 필드에는 일반적으로 파생 데이터가 포함되지만 카운터는 포함되지 않습니다. TDES DUKPT용 KS를 사용합니다. | 
| KS |  TDES DUKPT의 초기 키 일련 번호 | 20 16진수 문자  | 이 값은 수신 디바이스에서 초기 DUKPT 키 사용을 인스턴스화하는 데 사용되며 BDK에서 파생된 초기 키를 식별합니다. 이 필드에는 일반적으로 파생 데이터 \$1 제로화된 카운터 값이 포함됩니다. AES DUKPT용 IK를 사용합니다. | 
| KP | 래핑 키의 [KCV](terminology.md#terms.kcv)  | 2개의 16진수 문자는 KCV 메서드를 나타냅니다(X9.24 메서드의 경우 00, CMAC 메서드의 경우 01). 그 뒤에는 일반적으로 616진수 문자인 KCV 값이 옵니다. 예를 들어 010FA329는 01(CMAC) 메서드를 사용하여 계산된 0FA329의 KCV를 나타냅니다.  | 이 값은 수신 디바이스에서 초기 DUKPT 키 사용을 인스턴스화하는 데 사용되며 BDK에서 파생된 초기 키를 식별합니다. 이 필드에는 일반적으로 파생 데이터 \$1 제로화된 카운터 값이 포함됩니다. AES DUKPT용 IK를 사용합니다. | 
| PB | 패딩 블록 | 임의의 인쇄 가능한 ASCII 문자  | 서비스는 내보내기 시이 필드를 자동으로 채워 선택적 헤더가 암호화 블록 길이의 배수가 되도록 합니다. | 

## 비대칭(RSA) 키 내보내기
<a name="keys-export-publickey"></a>

인증서 형식으로 퍼블릭 키를 내보내려면 **get-public-key-certificate** 명령을 사용합니다. 이 명령은 다음을 반환합니다.
+ 인증서
+ 루트 인증서

두 인증서 모두 base64 인코딩에 있습니다.

**참고**  
이 작업은 멱등성이 아닙니다. 후속 호출은 동일한 기본 키를 사용하는 경우에도 다른 인증서를 생성할 수 있습니다.

**Example**  

```
$ aws payment-cryptography get-public-key-certificate \
     --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5dza7xqd6soanjtb
```

```
{
"KeyCertificate": "LS0tLS1CRUdJTi...",
"KeyCertificateChain": "LS0tLS1CRUdJT..."
}
```

# 고급 주제
<a name="keyexchange-advanced"></a>

이 섹션에서는 고급 키 교환 시나리오 및 구성을 다룹니다.

**Topics**
+ [BYOCA(Bring Your Own Certificate Authority)](keyexchange-byoca.md)

# BYOCA(Bring Your Own Certificate Authority)
<a name="keyexchange-byoca"></a>

기본적으로 서비스 내에서 생성된 비대칭(RSA,ECC) 키에 퍼블릭 키 인증서가 필요한 경우 이러한 인증서는 AWS Payment Cryptography 및 계정 고유 인증 기관(CA)에서 발급합니다. 이렇게 하면 CA를 식별 또는 설정하거나 인증서 서명 요청(CSR)을 관리할 필요 없이 X.509를 간단하게 사용할 수 있습니다.

AWS Payment Cryptography는 정책 또는 규정 준수 이유로 필요한 경우 자체 CA를 사용할 수 있는 기능도 제공합니다.

## 개요
<a name="keyexchange-byoca.overview"></a>

BYOCA 기능을 사용하면 TR-34 가져오기/내보내기, RSA 언래핑, ECDH 기반 키 전송 등 인증서가 사용되는 모든 곳에서 자체 인증 기관을 사용할 수 있습니다. 이는 조직 전체에서 일관된 인증서 체인을 유지해야 하거나 특정 CA 인증서가 필요한 파트너와 협력할 때 유용합니다. 다음 예제에서는 TR-34 키 내보내기를 사용하는 BYOCA 워크플로를 보여줍니다.

표준 TR-34 내보내기 흐름과 비교한 세 가지 주요 차이점은 다음과 같습니다.

1. 서명 RSA 키는 [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html)를 사용하여 명시적으로 생성됩니다. 이전에는 [GetParametersForExport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForExport.html)를 통해 암시적으로 생성되었습니다.

1. 새 API [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)는 외부 CA에서 서명할 수 있는 인증서 서명 요청(CSR)을 생성합니다.

1. [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) API는 런타임에 인증서를 제공할 수 있도록 확장됩니다. 이전에는에서 이를 암시적으로 제공했으며`import-token`, 이는 선택적 필드가 되었습니다.

**중요 고려 사항**  
이 예제에서는 RSA-2048 키를 사용하고 TDES-2KEY 키를 래핑합니다. AES-128을 내보낼 때 모든 키가 RSA-3072 또는 RSA-4096인지 확인합니다.
가장 일반적인 오류는 `SigningKeyIdentifier` 및 로 표시되는 키가 일치하지 않는다는 `SigningKeyCertificate` 것입니다.

## BYOCA 워크플로
<a name="keyexchange-byoca.workflow"></a>

다음 단계는 TR-34 내보내기를 위한 전체 BYOCA 워크플로를 보여줍니다.

**Topics**
+ [1단계: RSA 키 생성](#keyexchange-byoca.create-rsa)
+ [2단계: 인증서 서명 요청 생성](#keyexchange-byoca.generate-csr)
+ [3단계: CSR 검토(선택 사항)](#keyexchange-byoca.review-csr)
+ [4단계: 인증 기관을 통해 CSR 서명](#keyexchange-byoca.sign-csr)
+ [5단계: CA 인증서 가져오기](#keyexchange-byoca.import-ca)
+ [6단계: KRD 암호화 인증서 가져오기](#keyexchange-byoca.get-krd)
+ [7단계: BYOCA를 사용하여 키 내보내기](#keyexchange-byoca.export-key)

### 1단계: RSA 키 생성
<a name="keyexchange-byoca.create-rsa"></a>

먼저 궁극적으로 KDH 서명 인증서가 될 RSA 키 페어를 생성합니다. 태그를 추가하여 키의 목적을 식별할 수 있습니다.

**Example 서명을 위한 RSA 키 생성**  

```
$ aws payment-cryptography create-key --exportable \
    --key-attributes KeyAlgorithm=RSA_2048,KeyUsage=TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE,KeyClass=ASYMMETRIC_KEY_PAIR,KeyModesOfUse='{Sign=True}'
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc",
        "KeyAttributes": {
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE",
            "KeyClass": "ASYMMETRIC_KEY_PAIR",
            "KeyAlgorithm": "RSA_2048",
            "KeyModesOfUse": {
                "Sign": true
            }
        },
        "KeyCheckValue": "41E3723C",
        "KeyCheckValueAlgorithm": "SHA_1",
        "Enabled": true,
        "Exportable": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY"
    }
}
```

다음 단계에서 `KeyArn` 필요하므로를 기록해 둡니다.

### 2단계: 인증서 서명 요청 생성
<a name="keyexchange-byoca.generate-csr"></a>

[GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html) API를 사용하여 외부 CA가 서명할 인증서 서명 요청(CSR)을 생성합니다. 출력은 base64로 인코딩된 PEM 파일입니다. 콘텐츠를 base64로 디코딩하고 저장하는 경우 PEM 형식의 유효한 CSR이 있습니다.

**Example CSR 생성**  

```
$ aws payment-cryptography-data get-certificate-signing-request \
    --key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc \
    --signing-algorithm SHA512 \
    --certificate-subject '{
        "CommonName": "MyCertificateAWSUSEAST",
        "Organization": "Amazon",
        "OrganizationUnit": "PaymentCryptography",
        "Country": "US",
        "StateOrProvince": "Virginia",
        "City": "Arlington"
    }'
```

```
{
    "CertificateSigningRequest": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..."
}
```

`CertificateSigningRequest` 필드에는 서명을 위해 CA에 보낼 base64로 인코딩된 CSR이 포함되어 있습니다.

### 3단계: CSR 검토(선택 사항)
<a name="keyexchange-byoca.review-csr"></a>

선택적으로 OpenSSL을 사용하여 CSR 콘텐츠를 검토하고 예상대로 유효한지 확인할 수 있습니다.

**Example OpenSSL을 사용하여 CSR 검토**  

```
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d | openssl req -text
```

### 4단계: 인증 기관을 통해 CSR 서명
<a name="keyexchange-byoca.sign-csr"></a>

CSR을 생성한 후에는 인증 기관(CA)의 서명을 받아야 합니다. 프로덕션 환경에서는 일반적으로 AWS Private CA 또는 조직의 설정된 CA 인프라를 사용합니다. 테스트 목적으로 OpenSSL을 사용하여 자체 서명된 인증서를 생성할 수 있습니다.

#### 사용 AWS Private CA
<a name="keyexchange-byoca.sign-csr-pca"></a>

를 사용하여 CSR에 서명하려면 AWS Private CA먼저 base64로 인코딩된 CSR을 디코딩하고 파일에 저장한 다음 [IssueCertificate](https://docs.aws.amazon.com/acm-pca/latest/APIReference/API_IssueCertificate.html) API를 사용합니다.

**Example 를 사용하여 CSR 서명 AWS Private CA**  

```
$ echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d > csr.pem

$ aws acm-pca issue-certificate \
    --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \
    --csr fileb://csr.pem \
    --signing-algorithm SHA256WITHRSA \
    --validity Value=365,Type=DAYS
```

```
{
    "CertificateArn": "arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef1234567890"
}
```

그런 다음 서명된 인증서를 검색합니다.

**Example 서명된 인증서 검색**  

```
$ aws acm-pca get-certificate \
    --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012 \
    --certificate-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/12345678-1234-1234-1234-123456789012/certificate/abcdef1234567890
```

```
{
    "Certificate": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----",
    "CertificateChain": "-----BEGIN CERTIFICATE-----\nMIID...\n-----END CERTIFICATE-----"
}
```

내보내기 단계에서 사용할 인증서 콘텐츠를 저장합니다. `ExportKey` API에 제공할 때 base64 인코딩이 필요합니다.

#### 테스트에 OpenSSL 사용
<a name="keyexchange-byoca.sign-csr-openssl"></a>

테스트 목적으로 OpenSSL을 사용하여 자체 서명된 CA를 생성하고 CSR에 서명할 수 있습니다. 먼저 CA 프라이빗 키와 자체 서명된 인증서를 생성합니다.

**Example OpenSSL을 사용하여 테스트 CA 생성**  

```
$ # Generate CA private key
openssl genrsa -out ca-key.pem 4096

$ # Create self-signed CA certificate
openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem \
    -subj "/C=US/ST=Virginia/L=Arlington/O=TestOrg/CN=Test CA"
```

그런 다음 이전 단계에서 CSR을 디코딩하고 테스트 CA로 서명합니다.

**Example OpenSSL을 사용하여 CSR 서명**  

```
$ # Decode the base64-encoded CSR
echo "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0..." | base64 -d > csr.pem

$ # Sign the CSR with the CA
openssl x509 -req -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem \
    -CAcreateserial -out signed-cert.pem -days 365 -sha512
```

```
Certificate request self-signature ok
subject=C=US, ST=Virginia, L=Arlington, O=Amazon, OU=PaymentCryptography, CN=MyCertificateAWSUSEAST
```

이제 서명된 인증서가에 있습니다`signed-cert.pem`. `ExportKey` API에 인증서를 제공할 때이 인증서를 base64로 인코딩해야 합니다.

**Example Base64 서명된 인증서 인코딩**  

```
$ cat signed-cert.pem | base64 -w 0
```

### 5단계: CA 인증서 가져오기
<a name="keyexchange-byoca.import-ca"></a>

임의의 인증서가 사용되지 않도록 하려면 사용 중인 모든 CA를 먼저 신뢰해야 합니다. [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) API를 사용하여 외부 CA의 루트 인증서를 가져옵니다. 중간 CA를 사용하는 경우를 `import-key` 다시 호출하되 `TrustedPublicKey` 대신를 지정`RootCertificatePublicKey`하고 루트 CA ARN을 지정합니다.

**Example 루트 CA 인증서 가져오기**  

```
$ aws payment-cryptography import-key --key-material='{
    "RootCertificatePublicKey": {
        "KeyAttributes": {
            "KeyAlgorithm": "RSA_4096",
            "KeyClass": "PUBLIC_KEY",
            "KeyModesOfUse": {
                "Verify": true
            },
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"
        },
        "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t..."
    }
}'
```

```
{
    "Key": {
        "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xivpaqy7qbbm7cdw",
        "KeyAttributes": {
            "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE",
            "KeyClass": "PUBLIC_KEY",
            "KeyAlgorithm": "RSA_4096",
            "KeyModesOfUse": {
                "Verify": true
            }
        },
        "Enabled": true,
        "KeyState": "CREATE_COMPLETE",
        "KeyOrigin": "EXTERNAL"
    }
}
```

내보내기 단계에서 `KeyArn` 사용할 CA를 기록해 둡니다.

### 6단계: KRD 암호화 인증서 가져오기
<a name="keyexchange-byoca.get-krd"></a>

이 예제에서는 AWS Payment Cryptography로 다시 가져오므로 [GetParametersForImport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForImport.html) API를 사용하여 KRD 퍼블릭 키 인증서를 수신하도록 서비스를 호출합니다. 실제 시나리오에서는 HSM, ATM, 결제 터미널 또는 결제 터미널 관리 시스템과 같은 다른 시스템에서 이를 제공합니다.

**Example 가져오기를 위한 파라미터 가져오기**  

```
$ aws payment-cryptography-data get-parameters-for-import \
    --key-material-type "TR34_KEY_BLOCK" \
    --wrapping-key-algorithm RSA_2048
```

```
{
    "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
    "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
    "WrappingKeyAlgorithm": "RSA_2048",
    "ImportToken": "import-token-v2rxpl6drxeptn7w",
    "ParametersValidUntilTimestamp": "2025-11-01T18:45:31.271000-07:00"
}
```

### 7단계: BYOCA를 사용하여 키 내보내기
<a name="keyexchange-byoca.export-key"></a>

마지막으로 ExportKey API를 사용하여 자체 CA 서명 인증서와 함께 TR-34를 사용하여 키를 내보냅니다. [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) 외부 CA에서 서명한 서명 인증서를 제공합니다.

**Example BYOCA를 사용한 TR-34 내보내기**  

```
$ aws payment-cryptography-data export-key \
    --export-key-identifier arn:aws:payment-cryptography:us-east-1:111122223333:key/iox73p5f4c4yjiod \
    --key-material '{
        "Tr34KeyBlock": {
            "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-1:111122223333:key/j625deyfqlwctu57",
            "SigningKeyIdentifier": "arn:aws:payment-cryptography:us-east-1:111122223333:key/xgmq6fs6uow736uc",
            "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...",
            "KeyBlockFormat": "X9_TR34_2012",
            "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t..."
        }
    }'
```

```
{
    "WrappedKey": {
        "WrappedKeyMaterialFormat": "TR34_KEY_BLOCK",
        "KeyMaterial": "3082055A06092A864886F70D010702A082054B30820547...",
        "KeyCheckValue": "3DCA31",
        "KeyCheckValueAlgorithm": "ANSI_X9_24"
    }
}
```

이제 수신 시스템에서 표준 TR-34 가져오기 프로세스를 사용하여 내보낸 키 블록을 가져올 수 있습니다.

## 추가 참고 사항:
<a name="keyexchange-byoca.notes"></a>
+ 이 예제는 AWS CLI를 사용하여 표시됩니다. Java, Python, Go 및 Rust를 포함한 모든 AWS SDKs에서 동일한 기능을 사용할 수 있습니다.
+ 자체 서명된 CA로 테스트하는 경우 OpenSSL을 사용하여 테스트 CA를 생성하고 CSR에 서명할 수 있습니다. 프로덕션 환경에서는 조직의 설정된 CA 인프라를 사용합니다.

# 별칭 사용
<a name="keys-managealias"></a>

 별*칭*은 AWS Payment Cryptography 키의 친숙한 이름입니다. 예를 들어 별칭을 사용하면 키를 `arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h` 대신 `alias/test-key`로 지칭할 수 있습니다.

별칭을 사용하여 대부분의 키 관리(컨트롤 플레인) 작업과 [암호화(데이터 플레인) 작업](data-operations.md)에서 키를 식별할 수 있습니다.

정책을 편집하거나 권한 부여를 관리하지 않고도 별칭을 기반으로 AWS Payment Cryptography 키에 대한 액세스를 허용하고 거부할 수도 있습니다. 이 기능은 [ABAC(속성 기반 액세스 제어)](security.md)에 대한 서비스 지원의 일부입니다.

별칭의 강력한 기능은 언제든지 별칭과 연결된 키를 변경할 수 있는 기능에서 비롯됩니다. 별칭을 사용하면 코드를 더 쉽게 작성하고 유지 관리할 수 있습니다. 예를 들어 별칭을 사용하여 특정 AWS Payment Cryptography 키를 참조하고 AWS Payment Cryptography 키를 변경한다고 가정해 보겠습니다. 이 경우 별칭을 다른 키와 연결하기만 하면 됩니다. 코드나 애플리케이션 구성을 변경할 필요가 없습니다.

또한 별칭을 사용하면 다른 AWS 리전에서 동일한 코드를 더 쉽게 재사용할 수 있습니다. 여러 리전에서 동일한 이름으로 별칭을 생성하고 각 별칭을 해당 리전의 AWS Payment Cryptography 키와 연결합니다. 코드가 각 리전에서 실행되면 별칭은 해당 리전에서 연결된 AWS Payment Cryptography 키를 참조합니다.

`CreateAlias` API를 사용하여 AWS Payment Cryptography 키의 별칭을 생성할 수 있습니다.

 AWS Payment Cryptography API는 각 계정 및 리전의 별칭을 완벽하게 제어합니다. API에는 별칭 생성(CreateAlias), 별칭 이름 및 연결된 keyARN**list-aliases**), 별칭과 연결된 AWS Payment Cryptography 키 변경(**update-alias**), 별칭 삭제(**delete-alias**) 작업이 포함되어 있습니다.

**Topics**
+ [별칭 정보](alias-about.md)
+ [애플리케이션에서 별칭 사용](alias-using.md)
+ [관련 API](#w2aac12c30c23)

# 별칭 정보
<a name="alias-about"></a>

 AWS Payment Cryptography에서 별칭이 작동하는 방법을 알아봅니다.

**별칭은 독립적인 AWS 리소스입니다.**  
별칭은 AWS Payment Cryptography 키의 속성이 아닙니다. 별칭에 대해 수행하는 작업은 연결된 키에 영향을 주지 않습니다. AWS Payment Cryptography 키의 별칭을 생성한 다음 다른 AWS Payment Cryptography 키와 연결되도록 별칭을 업데이트할 수 있습니다. 연결된 AWS Payment Cryptography 키에 영향을 주지 않고 별칭을 삭제할 수도 있습니다. AWS Payment Cryptography 키를 삭제하면 해당 키와 연결된 모든 별칭이 할당되지 않습니다.  
IAM 정책에서 별칭을 리소스로 지정하는 경우 정책은 연결된 AWS Payment Cryptography 키가 아닌 별칭을 참조합니다.

**각 별칭은 친숙한 이름으로 합니다.**  
별칭을 만들 때는 접두사 `alias/`를 앞에 붙인 별칭 이름을 지정합니다. 예를 들면 `alias/test_1234`과 같습니다.

**각 별칭은 한 번에 하나의 AWS Payment Cryptography 키와 연결됩니다.**  
별칭과 해당 AWS Payment Cryptography 키는 동일한 계정 및 리전에 있어야 합니다.  
 AWS Payment Cryptography 키는 둘 이상의 별칭과 동시에 연결할 수 있지만 각 별칭은 단일 키에만 매핑할 수 있습니다.  
예를 들어 이 `list-aliases` 출력은 `alias/sampleAlias1` 별칭이 `KeyArn` 속성으로 표시되는 정확히 하나의 대상 AWS Payment Cryptography 키와 연결되어 있음을 보여줍니다.  

```
$ aws payment-cryptography list-aliases
```

```
  {
    "Aliases": [
        {
            "AliasName": "alias/sampleAlias1",
            "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h"
        }
    ]
}
```

**여러 별칭을 동일한 AWS Payment Cryptography 키와 연결할 수 있습니다.**  
예를 들어, `alias/sampleAlias1;` 및 `alias/sampleAlias2` 별칭을 동일한 키로 연결할 수 있습니다.  

```
$ aws payment-cryptography list-aliases
```

```
{
        "Aliases": [
            {
                "AliasName": "alias/sampleAlias1",
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h"
            },
            {
                "AliasName": "alias/sampleAlias2",
                "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h"
            }
        ]
    }
```

**별칭은 해당 계정 및 리전에 대해 고유해야 합니다.**  
예를 들어, 각 계정 및 리전에서 오직 한 개의 `alias/sampleAlias1` 별칭만 가질 수 있습니다. 별칭은 대소문자를 구분하지만 오류가 발생하기 쉬우므로 대소문자만 다른 별칭은 사용하지 않는 것이 좋습니다. 별칭 이름은 변경할 수 없습니다. 그러나 별칭을 삭제하고 원하는 이름으로 새 별칭을 생성할 수 있습니다.

**다른 리전에서 같은 이름으로 별칭을 만들 수 있습니다.**  
예를 들어, 미국 동부(버지니아 북부)에 `alias/sampleAlias2` 별칭이 있고 미국 서부(오레곤)에 `alias/sampleAlias2` 별칭이 있을 수 있습니다. 각 별칭은 해당 리전의 AWS Payment Cryptography 키와 연결됩니다. 코드가 `alias/finance-key`와 같은 별칭 이름을 참조하는 경우 여러 리전에서 실행할 수 있습니다. 각 리전에서는 다른 별칭/sampleAlias2을 사용합니다. 자세한 내용은 [애플리케이션에서 별칭 사용](alias-using.md)을 참조하세요.

**별칭과 연결된 AWS Payment Cryptography 키를 변경할 수 있습니다.**  
`UpdateAlias` 작업을 사용하여 별칭을 다른 AWS Payment Cryptography 키와 연결할 수 있습니다. 예를 들어 `alias/sampleAlias2`별칭이 `arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h ` AWS Payment Cryptography 키와 연결된 경우 `arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi` 키와 연결되도록 업데이트할 수 있습니다.  
AWS Payment Cryptography는 이전 키와 새 키의 키 사용과 같은 속성이 모두 동일한지 검증하지 않습니다. 다른 키 유형으로 업데이트하면 애플리케이션에 문제가 발생할 수 있습니다.

**일부 키에는 별칭이 없습니다.**  
별칭은 선택적 기능이며 이러한 방식으로 환경을 운영하도록 선택하지 않는 한 모든 키에 별칭이 있는 것은 아닙니다. `create-alias` 명령을 사용하여 키를 별칭과 연결할 수 있습니다. 또한 update-alias ​​작업을 사용하여 별칭과 연결된 AWS Payment Cryptography 키를 변경하고 update-alias ​​작업을 사용하여 별칭을 삭제할 수 있습니다. 따라서 일부 AWS Payment Cryptography 키에는 여러 개의 별칭이 있을 수 있으며 일부는 없을 수 있습니다.

**키를 별칭에 매핑하기**  
`create-alias` 명령을 사용하여 키(ARN으로 표시됨)를 하나 이상의 별칭에 매핑할 수 있습니다. 이 명령은 멱등성이 없습니다. 별칭을 업데이트하려면 update-alias 명령을 사용하세요.  

```
$ aws payment-cryptography create-alias --alias-name alias/sampleAlias1 \
             --key-arn arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h
```

```
{
    "Alias": {
        "AliasName": "alias/alias/sampleAlias1",
        "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h"
    }
}
```

# 애플리케이션에서 별칭 사용
<a name="alias-using"></a>

별칭을 사용하여 애플리케이션 코드에서 AWS Payment Cryptography 키를 나타낼 수 있습니다. AWS Payment Cryptography [데이터 작업](data-operations.md) 및 List Keys와 같은 다른 작업의 `key-identifier` 파라미터는 별칭 이름 또는 별칭 ARN을 허용합니다.

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier alias/BIN_123456_CVK --primary-account-number=171234567890123 --generation-attributes CardVerificationValue2={CardExpiryDate=0123}
```

별칭 ARN을 사용하는 경우 AWS Payment Cryptography 키에 대한 별칭 매핑은 AWS Payment Cryptography 키를 소유한 계정에 정의되어 있으며 리전마다 다를 수 있습니다.

별칭의 가장 강력한 용도 중 하나는 여러 AWS 리전에서 실행되는 애플리케이션에서 사용하는 것입니다.

각 리전에서 다른 버전의 애플리케이션을 생성하거나 사전, 구성 또는 전환 문을 사용하여 각 리전에 적합한 AWS Payment Cryptography 키를 선택할 수 있습니다. 그러나 각 리전에 동일한 별칭 이름으로 별칭을 만드는 것이 더 쉬울 수 있습니다. 별칭 이름은 대/소문자를 구분합니다.

## 관련 API
<a name="w2aac12c30c23"></a>

**[Tags](tagging-keys.md)**  
태그는 AWS Payment Cryptography 키를 구성하기 위한 메타데이터 역할을 하는 키 및 값 페어입니다. 키를 유연하게 식별하거나 하나 이상의 키를 그룹화하는 데 사용할 수 있습니다.

# 키 가져오기
<a name="getkeys"></a>

 AWS Payment Cryptography 키는 암호화 구성 요소의 단일 단위를 나타내며이 서비스의 암호화 작업에만 사용할 수 있습니다. GetKeys API는 KeyIdentifier를 입력으로 받아 속성, 상태 및 타임스탬프를 포함한 키 메타데이터를 반환하지만 실제 암호화 키 구성 요소는 반환하지 않습니다.

**Example**  

```
$ aws payment-cryptography get-key --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h
```

```
{
  "Key": {
      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
      "KeyAttributes": {
          "KeyUsage": "TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY",
          "KeyClass": "SYMMETRIC_KEY",
          "KeyAlgorithm": "AES_128",
          "KeyModesOfUse": {
              "Encrypt": true,
              "Decrypt": true,
              "Wrap": true,
              "Unwrap": true,
              "Generate": false,
              "Sign": false,
              "Verify": false,
              "DeriveKey": false,
              "NoRestrictions": false
          }
      },
      "KeyCheckValue": "0A3674",
      "KeyCheckValueAlgorithm": "CMAC",
      "Enabled": true,
      "Exportable": true,
      "KeyState": "CREATE_COMPLETE",
      "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
      "CreateTimestamp": "2023-06-02T07:38:14.913000-07:00",
      "UsageStartTimestamp": "2023-06-02T07:38:14.857000-07:00"
  }
}
```

# 키 페어와 연결된 퍼블릭 키/인증서 가져오기
<a name="keys.getpubliccertificate-example"></a>

퍼블릭 키/인증서 가져오기는 `KeyArn`로 표시된 퍼블릭 키를 반환합니다. Payment AWS Cryptography에서 생성된 키 페어의 퍼블릭 키 부분 또는 이전에 가져온 퍼블릭 키일 수 있습니다. 가장 일반적인 사용 사례는 데이터를 암호화하는 외부 서비스에 퍼블릭 키를 제공하는 것입니다. 그런 다음 Payment Cryptography를 활용하여 해당 데이터를 애플리케이션에 전달하고 AWS Payment AWS Cryptography 내에서 보호되는 프라이빗 키를 사용하여 데이터를 해독할 수 있습니다.

이 서비스는 퍼블릭 키를 공개 인증서로 반환합니다. API 결과에는 CA와 퍼블릭 키 인증서가 포함됩니다. 두 데이터 요소 모두 base64로 인코딩됩니다.

**참고**  
 반환된 공개 인증서는 단기적인 것이며 멱등성을 갖지 않습니다. 퍼블릭 키 자체가 변경되지 않았더라도 각 API 직접 호출마다 다른 인증서를 받을 수 있습니다. 

**Example**  

```
$ aws payment-cryptography get-public-key-certificate  --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/nsq2i3mbg6sn775f
```

```
{
  "KeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2VENDQXFXZ0F3SUJBZ0lSQUo1OWd2VkpDd3dlYldMNldYZEpYYkl3RFFZSktvWklodmNOQVFFTkJRQXcKZ1lreEN6QUpCZ05WQkFZVEFsVlRNUmt3RndZRFZRUUtEQkJCVjFNZ1EzSjVjSFJ2WjNKaGNHaDVNU0V3SHdZRApWUVFMREJoQlYxTWdVR0Y1YldWdWRDQkRjbmx3ZEc5bmNtRndhSGt4RVRBUEJnTlZCQWdNQ0ZacGNtZHBibWxoCk1SVXdFd1lEVlFRRERBdzFNamt3TWpjME5UVTBPVFV4RWpBUUJnTlZCQWNNQ1VGeWJHbHVaM1J2YmpBZUZ3MHkKTXpBMk1EWXdNalEzTlRWYUZ3MHlNekE1TURRd016UTNOVFZhTUN3eEZUQVRCZ05WQkFNTUREVXlPVEF5TnpRMQpOVFE1TlRFVE1CRUdBMVVFQlJNS05EUTBPREV4TnpZMU1UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQCkFEQ0NBUW9DZ2dFQkFOZ0loOS9lckd2azJTbHJ6K1ZaVkl0WXpEMDh3QkoxWVZKaDY1Z1J3NkFzbWJ4RUpYc1cKMjI5b3B1ZjhlOFU5TlBQbXU4TSs1YlRkcUxlbmI0cUowMm5abEtKWmVsdjdpVmQ5YjBmRnV6azlWb1RMMVN4dwpqeTBRd0ZDcTZUUlZveGE2d21PMGRwMHVMV2NBSm9UcENBc2U4ckk4czUxczlFMERaanZqald2cHhwOVRwMUhQClhBNmlzQ2lyUTR2b2FwWlpQNENLTjR6Wm13TE5oaUtuSDVhVnRyWkgyeXBzSll4aGIrTWcwUHZUUnRrRE9VTDcKKzdjb2diUWVlNWx1NDZJWDlyN1ZyRWVTYjEraENrQW5vb1JOL3k1aCtremYySzU4WWxpSWJEdE5aemlYRldIWgpXUnhYK1BWMnhwMFhGMmJUZTVEd2gyVWZ6U1JlNzhqZXlya0NBd0VBQWFOOE1Ib3dDUVlEVlIwVEJBSXdBREFmCkJnTlZIU01FR0RBV2dCUXVpSzJoYkc3VTlOUmYyM0FodTRMVkJtV3QwekFkQmdOVkhRNEVGZ1FVZTFLbWJqby8KOVMwVDZKOUVzT2R2bHRuKzNGb3dEZ1lEVlIwUEFRSC9CQVFEQWdXZ01CMEdBMVVkSlFRV01CUUdDQ3NHQVFVRgpCd01CQmdnckJnRUZCUWNEQWpBTkJna3Foa2lHOXcwQkFRMEZBQU9DQWdFQXNndUZpOVNsZmxCMHVTc2pySXFDCmQ2S3ZSZUdwSmlEZjVjVW4xZmJCeXlzL3NHVzI0dWRkeEc4SDdzQXp0MnlTZnM5L3hTZ1NIOFlqM25sU2l3clkKcS80R2x3Zk5FajBnanY2K1crNk1BazNWK2tjUVhMaUtwZlFrN3Z5OGMvcWRwK2tYd2N2K1pxUG1IUk5yNGl6eQpDSU5zVm04cDl5M0pZWlkwZWZrZU52bDR6enI4RGtNa3hva0liMVcyZVA0cm1BR2w2UHhLYVZmNnNLT1NoYlFXCm1heDBPalg2azdWNWdvbXdSMGVaVEtNQXhTUWpQRU5OSDllMi9kZTRJNG5WVXRFbWU2RjM5SWdiZmZicEhjMEkKNXdsN3FidUMvYnprcnNsNGRzOXB6Q3lQcFVUZjVQOWg5MkVqMzNURzJ1VEZURzRVQm0wMUVMYzFaTjhXbW12WgpWUk92M1VUSWlmQnd2em16OUpjUUZ5R3Nsa2prOTBJdkV0U3lld2psYW52cy9kanRJL2JzRFFPKzI1M2ltOFFRClJkSWVaUTRleWI5YTJxeDVtWDZHOWJ6RDBVRkVxN2JoTlppZlhzNE1YWEFjS051TnpYS1Zja1hKM0trYWt1TUcKVE5BTzc4T01qUUlTWk5NeXE2WmM2MVJVcFBVZ1R1K2Vhd1FGRzBBU0Yxb2w4Wjc4cEFSeE9Oc1lGdkQ5Y3BnUQpzSnlzeDB0Zjl6aTR5Zi80aWNOSkVlWVVNY0lGSXlFKzE0eDBpcFVSRTRGenRad2orYlZFeHdiM0h4aVJQMncyCkJLSnVKeXd4ZGx2L1hTZU1XaDl3UkNCb3lLeXFxWVdWcDcweW15N01oSFlVSERUWEFPL1NJN3B5VnVLaDBReUYKR1pEOHRibi9TR2RqQ0pETEM4bWlmNk09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=",
  "KeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUY0VENDQThtZ0F3SUJBZ0lSQUtlN2piaHFKZjJPd3FGUWI5c3VuOEV3RFFZSktvWklodmNOQVFFTkJRQXcKZ1lreEN6QUpCZ05WQkFZVEFsVlRNUmt3RndZRFZRUUtEQkJCVjFNZ1EzSjVjSFJ2WjNKaGNHaDVNU0V3SHdZRApWUVFMREJoQlYxTWdVR0Y1YldWdWRDQkRjbmx3ZEc5bmNtRndhSGt4RVRBUEJnTlZCQWdNQ0ZacGNtZHBibWxoCk1SVXdFd1lEVlFRRERBdzFNamt3TWpjME5UVTBPVFV4RWpBUUJnTlZCQWNNQ1VGeWJHbHVaM1J2YmpBZUZ3MHkKTXpBMk1EWXdNalEzTlRKYUZ3MHlPREEyTURZd016UTNOVEphTUlHSk1Rc3dDUVlEVlFRR0V3SlZVekVaTUJjRwpBMVVFQ2d3UVFWZFRJRU55ZVhCMGIyZHlZWEJvZVRFaE1COEdBMVVFQ3d3WVFWZFRJRkJoZVcxbGJuUWdRM0o1CmNIUnZaM0poY0doNU1SRXdEd1lEVlFRSURBaFdhWEpuYVc1cFlURVZNQk1HQTFVRUF3d01OVEk1TURJM05EVTEKTkRrMU1SSXdFQVlEVlFRSERBbEJjbXhwYm1kMGIyNHdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBdwpnZ0lLQW9JQ0FRQzJyMld2eGJxZjJSUHhOem1JUk5ZeWZRQ2labGxYUVBQSDQycnAyQ1VtTk1VMkc2ZzdFRUZBCm5TWnNvRlN6Z1NJaEhUSWU4UDdUd1l3ckpPL3VNcEtka3lac1ppTEhUNGo4M1l1VkNlT1dSVERjdnRWMFV0M1IKaCs5UWVyaHhRQnVrK2dnZkRkT0FFUkR3S1pWckZqM3diT1FFMXY2WnRYSmpVZytWTXZKcEphUTg0WkFvYnpyUgpuY2JaL0hnbFhDM09xampSSk1laGJFaE93ZFJCTU4yQ2dTNHlhWTB3YlBvazhMSlRORVp5ZnkxUEtkaTd1UmxxCm9qeEdjc3pCRHFvdCsvTURBNVdZUjd5NVhiOGdOdSt0alkrMWdQSGRkWHFhRTR2bXV2cEtsQUttcml2SDRYWXQKZk9sa1kzYnRJckVuWDEwQkp1UXVGN0dRNyt3ZjN6TDZ4NFNIcGpiQWxpMDQyUmdXTVpibmlscW15YnhuUkRrUwpjZXZ3aEx2L0tnT09WM05KZlplWlVzT1N6NWNzTmRLME4rM2FCUlZQcVc5b2k3dDJ2dTc5eCtvb1pIS2FibFdiCmJDMDJxR1VDaTE3cHhDQ0JJdUVDZWJiWDhSS3dLa3RwbTRSOUZWYjBXZGFqNUc1ekdudTBsUlRMUVNaZ0QyU1EKSjRmQjh2em9Bb3BYenpSSStMSjNBaC9NcThXSTNHTHFIakhzcm5vdVJzMmNzcjVBYnNMbXUyUTlvMFJmNTd1RApwK1R1cXpKTysrNFpUWDlsb0N3UXdzKzNEZWUyL1pUSmJCNkFCdy9xdnovQjhsL2duY29Wc3lHTFhkaXdleTV1CjJHNnl2NGgrN0FBQldvdjhwWVBPUlRMY1FkanhVdWNDdllRYjJiRXY4ZGh1anN6TWo2ZDBDUUlEQVFBQm8wSXcKUURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRdWlLMmhiRzdVOU5SZjIzQWh1NExWQm1XdAowekFPQmdOVkhROEJBZjhFQkFNQ0FZWXdEUVlKS29aSWh2Y05BUUVOQlFBRGdnSUJBSS9Ta1NaS0pyMm1JakJ6ClJxQXQ3dmJ4eWNhQXhCU3VqbDlqVSttYkh1RDg4Qyt3TDh4TzNYRHJ1Vm9IZTdYanhrNXpaN0RWMjMza3haQlEKR3BET1hWaGNZdE5UNzk2YXd1K0VNU2kzK3RzTVJBMmMxODJ2ZVNDSE9HQmVseTlRS3FHWkJBZGU2ZGNzTkpMTwpiRE10NlB3NXpiRHNqalJnMGY5SGQrRFZheXV6QzBtdXVGWEZkT0txU0VWZVNmZWVNOUl5KzFMWDMzOFlVd05zCjdhS2ppaFVFSkg4ZkVFU1NEUGE5OGNOSEsyZ0t5UENrRUorMGlNZkJiTi9yUE1CYlhqTUtHYWpXSFFhWWtieDUKalVRUmdvd25ZbStycDRwRnNhalpSTFB0NE9mbkswNWYvRHdCUXVGWUUzUFJ2d2NQSWxJNHpkcWh0NE9ZSVY4RAo2MktleVEzb3R6eTdsVXIxamNrZldkSHpHc3NKVjYxc0xRTTBudVFNUnRTZjlHeEpYTEkyNjFaRWFMYVY5WFduCnY3YnByb090UTNiYk9RbjI0elJDVm5kZ0Z3aCtUVHMzVmFOQjhURmY2QjFoV1R5aTYzOCtoa1FTRnJTbXI1WTcKTXNGUXZXSVZVbjQ2cWNjVGNuNlc2Y2JIUlhyQkRiR0tlWUJiVjVXSkJwRUtSN0JuQ25HNnJCbmxGNjZ5eTUyLwpSbWZLRWZwWG1qbkh0WW94UnlQVlJZWDhPcnkzUFQrYSt0REtlMDBXY1MyM0U3MWl2QTBNdnVrODlwTzJIUVorCjNHUU9xdWJpQ3RMbVppdVFCZC9aN1NGWGlzcUxyTE5aOW52Q2VRSkxTckVDajRpZjV2dmJkWVhLdkozamhtSjkKeVZvc0xZVzA3SklzSFE0aDAwVWphSnhrVjdoWgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t"
}
```

# 키 태그 지정
<a name="tagging-keys"></a>

 AWS Payment Cryptography에서는 키를 [생성할](create-keys.md) 때 AWS Payment Cryptography 키에 태그를 추가하고 삭제 보류 중인 키가 아닌 한 기존 키에 태그를 지정하거나 태그를 해제할 수 있습니다. 태그는 선택 사항이지만 매우 유용할 수 있습니다.

 모범 사례, 태그 지정 전략, 태그의 형식 및 구문을 포함한 태그에 대한 일반적인 정보는의 [AWS 리소스 태그 지정](/tag-editor/latest/userguide/tagging.html)을 참조하세요*Amazon Web Services 일반 참조*.

**Topics**
+ [AWS Payment Cryptography의 태그 정보](tags-about.md)
+ [콘솔에서 키 태그 보기](manage-tags-console.md)
+ [API 작업으로 키 태그 관리](manage-tags-api.md)
+ [태그에 대한 액세스 제어](tag-permissions.md)
+ [태그를 사용하여 키에 대한 액세스 제어](tag-authorization.md)

# AWS Payment Cryptography의 태그 정보
<a name="tags-about"></a>

*태그*는 AWS 리소스에 할당(또는 AWS 할당)할 수 있는 선택적 메타데이터 레이블입니다. 각 태그는*태그 키* 및 *태그 값*으로 구성되며, 둘 다 대소 문자를 구분하는 문자열입니다. 태그 값은 빈(null) 문자열일 수도 있습니다. 리소스의 각 태그에는 서로 다른 태그 키가 있어야 하지만 여러 AWS 리소스에 동일한 태그를 추가할 수 있습니다. 각 리소스에는 최대 50개의 사용자 생성 태그가 포함될 수 있습니다.

태그 키 또는 태그 값에 기밀 또는 민감한 정보를 포함하지 마세요. 태그는 결제를 AWS 서비스포함하여 많은 사용자가 액세스할 수 있습니다.

 AWS Payment Cryptography에서 키를 [생성할 때 키](create-keys.md)에 태그를 추가하고 삭제 보류 중인 키가 아니면 기존 키에 태그를 지정하거나 태그를 해제할 수 있습니다. 별칭에는 태그를 지정할 수 없습니다. 태그는 선택 사항이지만 매우 유용할 수 있습니다.

예를 들어 Alpha 프로젝트에 사용하는 모든 AWS Payment Cryptography 키와 Amazon S3 버킷에 `"Project"="Alpha"` 태그를 추가할 수 있습니다. 또 다른 예는 특정 은행 식별 번호 (BIN) 와 관련된 모든 키에 `"BIN"="20130622"` 태그를 추가하는 것입니다.

```
      [
      {
        "Key": "Project",
        "Value": "Alpha"
      },
      {
        "Key": "BIN",
        "Value": "20130622"
      }
    ]
```

형식 및 구문을 포함한 태그에 대한 일반적인 내용은의 [AWS 리소스 태그 지정](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)을 참조하세요*Amazon Web Services 일반 참조*.

태그는 다음을 지원합니다.
+  AWS 리소스를 식별하고 구성합니다. 많은 AWS 서비스가 태그 지정을 지원하므로 서로 다른 서비스의 리소스에 동일한 태그를 할당하여 리소스가 관련이 있음을 나타낼 수 있습니다. 예를 들어 AWS Payment Cryptography 키와 Amazon Elastic Block Store(Amazon EBS) 볼륨 또는 AWS Secrets Manager 보안 암호에 동일한 태그를 할당할 수 있습니다. 태그를 사용하여 자동화를 위해 키를 식별할 수도 있습니다.
+  AWS 비용을 추적합니다. AWS 리소스에 태그를 추가하면는 태그별로 집계된 사용량 및 비용이 포함된 비용 할당 보고서를 AWS 생성합니다. 이 기능을 사용하여 프로젝트, 애플리케이션 또는 비용 센터의 AWS Payment Cryptography 비용을 추적할 수 있습니다.

  비용 할당 태그 사용에 대한 자세한 내용은 *AWS Billing 사용자 설명서*의 [비용 할당 태그 사용](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)을 참조하세요. 태그 키 및 태그 값에 대한 규칙에 대한 자세한 내용은 *AWS Billing 사용 설명서*의 [사용자 정의 태그 제한](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html)을 참조하세요.
+  AWS 리소스에 대한 액세스를 제어합니다. 태그를 기반으로 키에 대한 액세스를 허용하고 거부하는 것은 속성 기반 액세스 제어(ABAC)에 대한 AWS Payment Cryptography 지원의 일부입니다. 태그에 기반으로 AWS Payment Cryptography에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 [AWS Payment Cryptography 태그 기반 권한 부여](security_iam_service-with-iam.md#security_iam_service-with-iam-tags)을 참조하세요. 태그를 사용하여 AWS 리소스에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS 리소스 태그를 사용하여 리소스에 대한 액세스 제어를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html).

AWS Payment Cryptography는 TagResource, UntagResource 또는 ListTagsForResource 작업을 사용할 때 AWS CloudTrail 로그에 항목을 기록합니다.

# 콘솔에서 키 태그 보기
<a name="manage-tags-console"></a>

콘솔에서 태그를 보려면 키가 포함된 IAM 정책의 키에 대한 태그 지정 권한이 필요합니다. 콘솔에서 키를 볼 수 있는 권한과 함께 이러한 권한이 필요합니다.

# API 작업으로 키 태그 관리
<a name="manage-tags-api"></a>

[AWS Payment Cryptography API](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/Welcome.html)를 이용해 현재 관리 중인 키에 대한 태그를 추가, 삭제, 나열할 수 있습니다. 이 예제들은 [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/)를 사용하지만, 사용자는 어떤 지원되는 프로그래밍 언어라도 사용할 수 있습니다. 태그를 지정할 수 없습니다 AWS 관리형 키.

키의 태그를 추가, 편집, 보기 및 삭제하려면 필요한 사용 권한이 있어야 합니다. 자세한 내용은 [태그에 대한 액세스 제어](tag-permissions.md)을 참조하세요.

**Topics**
+ [CreateKey: 새 키에 태그 추가](#tagging-keys-create-key)
+ [TagResource: 키에 태그 추가 또는 변경](#tagging-keys-tag-resource)
+ [ListResourceTags: 키에 지정된 태그 가져오기](#tagging-keys-list-resource-tags)
+ [UntagResource: 키에서 태그 삭제](#tagging-keys-untag-resource)

## CreateKey: 새 키에 태그 추가
<a name="tagging-keys-create-key"></a>

키를 생성할 때 태그를 추가할 수 있습니다. 태그를 지정하려면 [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) 작업의 `Tags` 파라미터를 사용합니다.

키를 생성할 때 태그를 추가하려면 IAM 정책에서 호출자가 `payment-cryptography:TagResource` 권한을 가지고 있어야 합니다. 최소한 권한에 계정 및 리전의 모든 키가 포함되어야 합니다. 자세한 내용은 [태그에 대한 액세스 제어](tag-permissions.md)을 참조하세요.

`CreateKey` 의 값은`Tags` 파라미터 값은 대소문자를 구분하는 태그 키 및 태그 값 페어 모음입니다. 키의 각 태그에는 다른 태그 이름이 있어야 합니다. 태그 값은 null이거나 빈 문자열일 수 있습니다.

예를 들어 다음 AWS CLI 명령은 `Project:Alpha` 태그가 있는 대칭 암호화 키를 생성합니다. 두 개 이상의 키-값 페어를 지정할 때는 공백을 사용하여 각 페어를 구분합니다.

```
$ 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":"Project","Value":"Alpha"},{"Key":"BIN","Value":"123456"}]'
```

이 명령이 성공하면 새 키에 대한 정보가 있는 `Key` 객체를 반환합니다. 그러나 `Key`에는 태그가 포함되지 않습니다. 태그를 가져오려면 [ListResourceTags](#tagging-keys-list-resource-tags) 작업을 사용합니다.

## TagResource: 키에 태그 추가 또는 변경
<a name="tagging-keys-tag-resource"></a>

[TagResource](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_TagResource.html) 작업은 키에 하나 이상의 태그를 추가합니다. 이 작업을 사용하여 다른 AWS 계정의 태그를 추가 또는 편집할 수 없습니다.

태그를 추가하려면 새 태그 키와 태그 값을 지정합니다. 태그를 편집하려면 기존 태그 키와 새 태그 값을 지정합니다. 키의 각 태그에는 다른 태그 키가 있어야 합니다. 태그 값은 null이거나 빈 문자열일 수 있습니다.

예를 들어 다음 명령은 예제 키에 **UseCase** 및 **BIN** 태그를 추가합니다.

```
$ aws payment-cryptography tag-resource --resource-arn arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h --tags '[{"Key":"UseCase","Value":"Acquiring"},{"Key":"BIN","Value":"123456"}]' 
```

이 명령이 제대로 실행되면 메타데이터를 반환하지 않습니다. 키에 지정된 태그를 보려면 [ListResourceTags](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ListTagsForResource.html) 작업을 사용합니다.

또한 **TagResource**를 이용해 기존 태그의 태그 값을 변경할 수도 있습니다. 태그 값을 바꾸려면 동일한 태그 키를 다른 값으로 지정하세요. 수정 명령에 나열되지 않은 태그는 변경되거나 제거되지 않습니다.

예를 들어 이 명령은 `Project` 태그 값을 `Alpha`에서 `Noe`로 바꿉니다.

이 명령은 내용 없이 http/200을 반환합니다. 변경 내용을 보려면 `ListTagsForResource`을 사용하세요.

```
$ aws payment-cryptography tag-resource --resource-arn arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h \ 
        --tags '[{"Key":"Project","Value":"Noe"}]'
```

## ListResourceTags: 키에 지정된 태그 가져오기
<a name="tagging-keys-list-resource-tags"></a>

[ListResourceTags](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ListTagsForResource.html) 작업은 키에 지정된 태그를 가져옵니다. `ResourceArn`(keyArn 또는 keyAlias) 파라미터가 필요합니다. 이 작업을 사용하여 다른 AWS 계정의 키에 있는 태그를 볼 수 없습니다.

예를 들어 다음 명령은 예제 키에 대한 태그를 가져옵니다.

```
$ aws payment-cryptography list-tags-for-resource --resource-arn arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h
       
  {
    "Tags": [
        {
            "Key": "BIN",
            "Value": "20151120"
        },
        {
            "Key": "Project",
            "Value": "Production"
        }
    ]
}
```

## UntagResource: 키에서 태그 삭제
<a name="tagging-keys-untag-resource"></a>

[UntagResource](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_UntagResource.html) 작업은 키에서 태그를 삭제합니다. 삭제할 태그를 식별하려면 태그 키를 지정합니다. 이 작업을 사용하여 다른 AWS 계정의 키에서 태그를 삭제할 수 없습니다.

성공하면 `UntagResource` 작업은 어떠한 출력도 반환하지 않습니다. 또한 지정된 태그 키가 키에서 발견되지 않으면 예외를 발생시키거나 응답을 반환하지 않습니다. 작업이 작동했는지 확인하려면 [ListResourceTags](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ListTagsForResource.html) 작업을 수행합니다.

예를 들어 이 명령은 키에서 **Purpose** 태그와 해당 값을 삭제합니다.

```
$ aws payment-cryptography untag-resource \ 
        --resource-arn arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h --tag-keys Project
```

# 태그에 대한 액세스 제어
<a name="tag-permissions"></a>

API를 사용하여 태그를 추가하고, 보고, 삭제하려면 보안 주체에게 IAM 정책의 태그 지정 권한이 필요합니다.

태그에 AWS 전역 조건 키를 사용하여 이러한 권한을 제한할 수도 있습니다. AWS Payment Cryptography에서 이러한 조건은 태그 지정 작업(예: [TagResource](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_TagResource.html) 및 [UntagResource](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_UntagResource.html))에 대한 액세스를 제어할 수 있습니다.

예제 정책과 자세한 내용은 *IAM 사용 설명서*의 [태그 키를 기반으로 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys) 섹션을 참조하십시오.

태그를 만들고 관리할 수 있는 권한은 다음과 같습니다.

**payment-cryptography:TagResource**  
보안 주체가 태그를 추가하거나 편집할 수 있습니다. 키를 생성하는 동안 태그를 추가하려면 보안 주체에 특정 키로 제한되지 않는 IAM 정책에 대한 권한이 있어야 합니다.

**payment-cryptography:ListTagsForResource**  
보안 주체가 키의 태그를 볼 수 있도록 허용합니다.

**payment-cryptography:UntagResource**  
보안 주체가 키에서 태그를 삭제할 수 있도록 허용합니다.

## 정책에서 태그 지정 권한
<a name="tag-permission-examples"></a>

키 정책 또는 IAM 정책에서 태그 지정 권한을 제공할 수 있습니다. 예를 들어 다음 예제 키 정책은 키에 대한 태그 지정 권한을 사용자에게 제공합니다. 예를 들어 관리자 또는 개발자 역할로 가정할 수 있는 모든 사용자에게 태그를 볼 수 있는 권한을 제공합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "example-key-policy",
  "Statement": [
    { 
      "Sid": "EnableIAMUserPermissions",
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
      "Action": "payment-cryptography:*",
      "Resource": "*"
    },
    {
      "Sid": "AllowAllTaggingPermissions",
      "Effect": "Allow",
      "Principal": {"AWS": [
        "arn:aws:iam::111122223333:user/LeadAdmin",
        "arn:aws:iam::111122223333:user/SupportLead"
      ]},
      "Action": [
        "payment-cryptography:TagResource",
        "payment-cryptography:ListTagsForResource",
        "payment-cryptography:UntagResource"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Allow roles to view tags",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:role/Administrator",
          "arn:aws:iam::111122223333:role/Developer"
        ]
      },
      "Action": "payment-cryptography:ListTagsForResource",
      "Resource": "*"
    }
  ]
}
```

------

보안 주체에게 여러 키에 대한 태그 지정 권한을 부여하려면 IAM 정책을 사용할 수 있습니다. 이 정책이 유효하려면 각 키의 키 정책으로 인해 계정이 IAM 정책을 사용하여 키에 대한 액세스를 제어할 수 있어야 합니다.

예를 들어, 다음 IAM 정책은 보안 주체가 키를 생성할 수 있도록 허용합니다. 또한 지정된 계정의 모든 키에 태그를 만들고 관리할 수 있습니다. 이 조합을 통해 보안 주체가 [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) 작업의 태그 파라미터를 사용하여 KMS 키를 만드는 동안 키에 태그를 추가할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPolicyCreateKeys",
      "Effect": "Allow",
      "Action": "payment-cryptography:CreateKey",
      "Resource": "*"
    },
    {
      "Sid": "IAMPolicyTags",
      "Effect": "Allow",
      "Action": [
        "payment-cryptography:TagResource",
        "payment-cryptography:UntagResource",
        "payment-cryptography:ListTagsForResource"
      ],
      "Resource": "arn:aws:payment-cryptography:*:111122223333:key/*"
    }    
  ]
}
```

------

## 태그 지정 권한 제한
<a name="tag-permissions-conditions"></a>

정책 조건을 사용하여 태그 지정 권한을 제한할 수 있습니다. 다음 정책 조건을 `payment-cryptography:TagResource` 및 `payment-cryptography:UntagResource` 권한에 적용할 수 있습니다. 예를 들어, `aws:RequestTag/tag-key` 조건을 사용하여 보안 주체가 특정 태그만 추가하거나 보안 주체가 특정 태그 키를 사용하여 태그를 추가하지 못하도록 할 수 있습니다.
+ [aws:RequestTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag)
+ [aws:ResourceTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag)(IAM 정책만 해당)
+ [aws:TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tag-keys)

태그를 사용하여 키에 대한 액세스를 제어할 때 가장 좋은 방법은 `aws:RequestTag/tag-key` 또는 `aws:TagKeys` 조건 키를 사용하여 허용되는 태그 (또는 태그 키)를 결정하는 것입니다.

예를 들어 다음 IAM 정책은 이전 것과 비슷합니다. 그러나 이 정책은 보안 주체가 `Project` 태그 키가 있는 태그에 대해서만 태그(`TagResource`)를 생성하고 태그 `UntagResource`를 삭제할 수 있도록 허용합니다.

왜냐하면 `TagResource` 및 `UntagResource` 요청에는 여러 태그가 포함될 수 있으므로 `ForAllValues` 또는 `ForAnyValue` 집합 연산자와 [aws:TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) 조건을 지정해야 합니다. `ForAnyValue` 연산자를 사용하려면 요청의 태그 키 중 적어도 하나가 정책의 태그 키 중 하나와 일치해야 합니다. `ForAllValues` 연산자를 사용하려면 요청의 모든 태그 키가 정책의 태그 키 중 하나와 일치해야 합니다. `ForAllValues` 연산자는 요청에 태그가 없는 경우에도 `true`를 반환하지만 태그가 지정되지 않으면 TagResource 및 UntagResource가 실패합니다. 집합 연산자에 대한 자세한 내용은* IAM 사용 설명서*의 [여러 키 및 값 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions)을 참조하십시오.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPolicyCreateKey",
      "Effect": "Allow",
      "Action": "payment-cryptography:CreateKey",
      "Resource": "*"
    },
    {
      "Sid": "IAMPolicyViewAllTags",
      "Effect": "Allow",
      "Action": "payment-cryptography:ListTagsForResource",
      "Resource": "arn:aws:payment-cryptography:*:111122223333:key/*"
    },
    {
      "Sid": "IAMPolicyManageTags",
      "Effect": "Allow",
      "Action": [
        "payment-cryptography:TagResource",
        "payment-cryptography:UntagResource"
      ],
      "Resource": "arn:aws:payment-cryptography:*:111122223333:key/*",
      "Condition": {
          "ForAllValues:StringEquals": {"aws:TagKeys": "Project"}
      }
    }
  ]
}
```

------

# 태그를 사용하여 키에 대한 액세스 제어
<a name="tag-authorization"></a>

키의 태그를 기반으로 AWS Payment Cryptography에 대한 액세스를 제어할 수 있습니다. 예를 들어 보안 주체가 특정 태그가 있는 키만 활성화 및 비활성화할 수 있도록 허용하는 IAM 정책을 작성할 수 있습니다. 또는 IAM 정책을 사용하여 키에 특정 태그가 없으면 보안 주체가 암호화 작업에서 키를 사용하지 못하도록 할 수 있습니다.

이 기능은 속성 기반 액세스 제어(ABAC)에 대한 AWS Payment Cryptography 지원의 일부입니다. 태그를 사용하여 리소스에 AWS 대한 액세스를 제어하는 방법에 대한 자세한 내용은 [ABAC란 무엇입니까 AWS?를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html). 및 *IAM 사용 설명서*의 [AWS 리소스 태그를 사용하여 리소스에 대한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html).

AWS Payment Cryptography는 키의 태그를 기반으로 키에 대한 액세스를 제어할 수 있는 [aws:ResourceTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) 전역 조건 컨텍스트 키를 지원합니다. 여러 키가 동일한 태그를 가질 수 있으므로 이 기능을 사용하면 선택한 키 집합에 사용 권한을 적용할 수 있습니다. 태그를 변경하여 집합의 키를 쉽게 변경할 수도 있습니다.

 AWS Payment Cryptography에서 `aws:ResourceTag/tag-key` 조건 키는 IAM 정책에서만 지원됩니다. 하나의 키에만 적용되는 키 정책이나 [ListKeys](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ListKeys.html) 또는 [ListAliases](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ListAliases.html) 작업처럼 특정 키를 사용하지 않은 작업에서는 지원되지 않습니다.

태그를 사용하여 액세스를 제어하면 사용 권한을 단순하고 확장 가능하며 유연하게 관리할 수 있습니다. 그러나 제대로 설계되고 관리되지 않으면 실수로 키에 대한 액세스를 허용하거나 거부할 수 있습니다. 태그를 사용하여 액세스를 제어하는 경우 다음 방법을 고려하세요.
+ [최소 권한 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)를 강화하는 최고의 방식은 태그를 사용하는 것입니다. IAM 보안 주체에 사용하거나 관리해야 하는 키에만 필요한 권한만 부여합니다. 예를 들어 태그를 사용하여 프로젝트에 사용되는 키에 레이블을 지정합니다. 그런 다음 프로젝트 팀에 프로젝트 태그와 함께 키만 사용할 수 있는 권한을 부여합니다.
+ 보안 주체에게 태그를 추가, 편집 및 삭제할 수 있는 `payment-cryptography:TagResource` 및 `payment-cryptography:UntagResource` 권한을 부여할 때는 주의해야 합니다. 태그를 사용하여 키에 대한 액세스를 제어하는 경우 태그를 변경하면 보안 주체에게 사용 권한이 없는 키를 사용할 수 있는 권한이 부여될 수도 있습니다. 또한 다른 보안 주체가 작업을 수행하는 데 필요한 키에 대한 액세스를 거부할 수도 있습니다. 키 정책을 변경하거나 권한 부여를 생성할 권한이 없는 키 관리자는 태그를 관리할 권한이 있는 경우 키에 대한 액세스를 제어할 수 있습니다.

  가능하면 정책 조건(예: `aws:RequestTag/tag-key` 또는 `aws:TagKeys`)을 사용하여 [보안 주체의 태그 지정 권한을](tag-permissions.md#tag-permissions-conditions)를 특정 키의 특정 태그 또는 태그 패턴으로 제한합니다.
+ 현재 태그 지정 및 태그 해제 권한이 AWS 계정 있는의 보안 주체를 검토하고 필요한 경우 해당 보안 주체를 조정합니다. IAM 정책은 모든 키에 대한 태그 및 태그 해제 권한을 허용할 수 있습니다. 예를 들어 *관리자* 관리형 정책은 보안 주체가 모든 키에 대해 태그를 지정하고 태그를 해제하고 나열할 수 있도록 허용합니다.
+ 태그에 의존하는 정책을 설정하기 전에의 키에서 태그를 검토합니다 AWS 계정. 포함하려는 태그에만 정책을 적용해야 합니다. [CloudTrail 로그](monitoring-cloudtrail.md) 및 CloudWatch 경보를 사용하여 키에 대한 액세스에 영향을 줄 수 있는 태그 변경 사항을 알립니다.
+ 태그 기반 정책 조건은 패턴 일치를 사용하며 태그의 특정 인스턴스에 연결되어 있지 않습니다. 태그 기반 조건 키를 사용하는 정책은 패턴과 일치하는 모든 새 태그와 기존 태그에 영향을 줍니다. 정책 조건과 일치하는 태그를 삭제했다가 다시 만들면 이전 태그와 마찬가지로 조건이 새 태그에 적용됩니다.

예를 들어 다음과 같은 IAM 정책을 살펴보십시오. 이를 통해 보안 주체는 사용자 계정의 키 중 미국 동부 (버지니아 북부) 리전이고 `"Project"="Alpha"` 태그가 있는 키에 대해서만 [암호 해독](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_Decrypt.html) 작업을 호출할 수 있습니다. 이 정책은 예제 Alpha 프로젝트의 역할에 연결할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPolicyWithResourceTag",
      "Effect": "Allow",
      "Action": [
        "payment-cryptography:DecryptData"
      ],
      "Resource": "arn:aws:payment-cryptography:us-east-1:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Project": "Alpha"
        }
      }
    }
  ]
}
```

------

다음 예제 IAM 정책은 보안 주체가 특정 암호화 작업에 대해 계정의 모든 키를 사용하도록 허용합니다. 그러나 보안 주체가 `"Type"="Reserved"` 태그가 있거나 `"Type"` 태그가 없는 키에서 이러한 암호화 작업을 사용하는 것은 허용되지 않습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMAllowCryptographicOperations",
      "Effect": "Allow",
      "Action": [
        "payment-cryptography:EncryptData",
        "payment-cryptography:DecryptData",
        "payment-cryptography:ReEncrypt*"
      ],
      "Resource": "arn:aws:payment-cryptography:*:111122223333:key/*"
    },
    {
      "Sid": "IAMDenyOnTag",
      "Effect": "Deny",
      "Action": [
        "payment-cryptography:EncryptData",
        "payment-cryptography:DecryptData",
        "payment-cryptography:ReEncrypt*"
      ],
      "Resource": "arn:aws:payment-cryptography:*:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Type": "Reserved"
        }
      }
    },
    {
      "Sid": "IAMDenyNoTag",
      "Effect": "Deny",
      "Action": [
       "payment-cryptography:EncryptData",
       "payment-cryptography:DecryptData",
       "payment-cryptography:ReEncrypt*"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*",
      "Condition": {
        "Null": {
          "aws:ResourceTag/Type": "true"
        }
      }
    }
  ]
}
```

------

# AWS Payment Cryptography 키의 키 속성 이해
<a name="keys-validattributes"></a>

적절한 키 관리의 원칙은 키의 범위가 적절하게 지정되고 허용된 작업에만 사용할 수 있어야 한다는 것입니다. 따라서 특정 키는 특정 키 사용 모드에서만 생성할 수 있습니다. 이는 가능한 경우 [TR-31](terminology.md#terms.tr31) 정의에 따라 사용 가능한 사용 모드에 맞게 조정됩니다.

 AWS Payment Cryptography에서는 잘못된 키를 생성할 수 없지만 사용자의 편의를 위해 유효한 조합이 여기에 제공됩니다.

## 대칭 키
<a name="w2aac12c39b7"></a>
+ TR31\$1B0\$1BASE\$1DERIVATION\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1,\$1 NoRestrictions = true \$1
+ TR31\$1C0\$1CARD\$1VERIFICATION\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128\$1 ,AES\$1192\$1 ,AES\$1256\$1
  + **허용되는 주요 사용 모드 조합**: \$1 Generate = true \$1 ,\$1 Verify = true \$1 ,\$1 Generate = true, Verify= true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 주요 사용 모드 조합**: \$1 Encrypt = true, Decrypt = true, Wrap = true, Unwrap = true \$1 , \$1 Encrypt = true, Wrap = true \$1 ,\$1 Decrypt = true, Unwrap = true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1E0\$1EMV\$1MKEY\$1APP\$1CRYPTOGRAMS
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY\$1, AES\$1128\$1 ,AES\$1192\$1 ,AES\$1256\$1
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1, \$1 NoRestrictions = true \$1
+ TR31\$1E1\$1EMV\$1MKEY\$1CONFIDENTIALITY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY, AES\$1128\$1,AES\$1192\$1,AES\$1256\$1
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1, \$1 NoRestrictions = true \$1
+ TR31\$1E2\$1EMV\$1MKEY\$1INTEGRITY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128\$1 ,AES\$1192\$1 ,AES\$1256\$1
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1, \$1 NoRestrictions = true \$1
+ TR31\$1E4\$1EMV\$1MKEY\$1DYNAMIC\$1NUMBERS
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128\$1 ,AES\$1192\$1 ,AES\$1256\$1
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1, \$1 NoRestrictions = true \$1
+ TR31\$1E5\$1EMV\$1MKEY\$1CARD\$1PERSONALIZATION
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128\$1 ,AES\$1192\$1 ,AES\$1256\$1
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1, \$1 NoRestrictions = true \$1
+ TR31\$1E6\$1EMV\$1MKEY\$1OTHER
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128\$1 ,AES\$1192\$1 ,AES\$1256\$1
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1, \$1 NoRestrictions = true \$1
+ TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY
  + TR31\$1K1\$1KEY\$1BLOCK\$1PROTECTION\$1KEY를 사용하는 것이 좋습니다. **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 주요 사용 모드 조합**: \$1 Encrypt = true, Decrypt = true, Wrap = true, Unwrap = true \$1 ,\$1 Encrypt = true, Wrap = true \$1 ,\$1 Decrypt = true, Unwrap = true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1K1\$1KEY\$1BLOCK\$1PROTECTION\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 주요 사용 모드 조합**: \$1 Encrypt = true, Decrypt = true, Wrap = true, Unwrap = true \$1 ,\$1 Encrypt = true, Wrap = true \$1 ,\$1 Decrypt = true, Unwrap = true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1M1\$1ISO\$19797\$11\$1MAC\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY
  + **허용되는 주요 사용 모드 조합**: \$1 Generate = true \$1 ,\$1 Verify = true \$1 ,\$1 Generate = true, Verify= true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1M3\$1ISO\$19797\$13\$1MAC\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY
  + **허용되는 주요 사용 모드 조합**: \$1 Generate = true \$1 ,\$1 Verify = true \$1 ,\$1 Generate = true, Verify= true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1M6\$1ISO\$19797\$15\$1CMAC\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 주요 사용 모드 조합**: \$1 Generate = true \$1 ,\$1 Verify = true \$1 ,\$1 Generate = true, Verify= true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1M7\$1HMAC\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 주요 사용 모드 조합**: \$1 Generate = true \$1 ,\$1 Verify = true \$1 ,\$1 Generate = true, Verify= true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 주요 사용 모드 조합**: \$1 Encrypt = true, Decrypt = true, Wrap = true, Unwrap = true \$1 ,\$1 Encrypt = true, Wrap = true \$1 ,\$1 Decrypt = true, Unwrap = true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1V1\$1IBM3624\$1PIN\$1VERIFICATION\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 주요 사용 모드 조합**: \$1 Generate = true \$1 ,\$1 Verify = true \$1 ,\$1 Generate = true, Verify= true \$1 ,\$1 NoRestrictions = true \$1
+ TR31\$1V2\$1VISA\$1PIN\$1VERIFICATION\$1KEY
  + **허용된 키 알고리즘**: TDES\$12KEY ,TDES\$13KEY ,AES\$1128 ,AES\$1192 ,AES\$1256
  + **허용되는 주요 사용 모드 조합**: \$1 Generate = true \$1 ,\$1 Verify = true \$1 ,\$1 Generate = true, Verify= true \$1 ,\$1 NoRestrictions = true \$1

## 비대칭 키
<a name="w2aac12c39b9"></a>
+ TR31\$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION
  + **허용된 키 알고리즘**: RSA\$12048 ,RSA\$13072 ,RSA\$14096
  + **허용되는 주요 사용 모드 조합**: \$1 Encrypt = true, Decrypt = true, Wrap = true, Unwrap = true \$1 ,\$1 Encrypt = true, Wrap = true \$1 ,\$1 Decrypt = true, Unwrap = true \$1
  + **참고:** \$1 Encrypt = true, Wrap = true \$1는 데이터 암호화 또는 키 래핑을 위한 퍼블릭 키를 가져올 때 유일하게 유효한 옵션입니다.
+ TR31\$1S0\$1ASYMMETRIC\$1KEY\$1FOR\$1DIGITAL\$1SIGNATURE
  + **허용된 키 알고리즘**: RSA\$12048 ,RSA\$13072 ,RSA\$14096
  + **허용된 키 사용 모드 조합**: \$1 Sign = true \$1 ,\$1 Verify = true \$1
  + **참고:** \$1 Verify = true \$1는 루트 인증서, 중간 인증서 또는 TR-34용 서명 인증서와 같이 서명용 키를 가져올 때 유일하게 유효한 옵션입니다.
+ TR31\$1K3\$1ASYMMETRIC\$1KEY\$1FOR\$1KEY\$1AGREEMENT
  + ECDH와 같은 주요 계약 알고리즘에 사용됩니다.
  + **허용된 키 알고리즘**: ECC\$1NIST\$1P256,ECC\$1NIST\$1P384,ECC\$1NIST\$1P521
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1.
  + **참고:**DeriveKeyUsage는이 기본 키에서 파생될 키 종류를 지정하는 데 사용됩니다. 키 생성/가져오기 시 수정됩니다.
+ TR31\$1K2\$1TR34\$1ASYMMETRIC\$1KEY
  + TR-34와 같은 X9.24 호환 키 교환 메커니즘에 사용되는 비대칭 키
  + **허용된 키 알고리즘**: RSA\$12048,RSA\$13072,RSA\$14096
  + **허용되는 키 사용 모드 조합**: \$1 DeriveKey = true \$1.
  + **허용되는 주요 사용 모드 조합**: \$1 Encrypt = true, Decrypt = true, Wrap = true, Unwrap = true \$1 ,\$1 Encrypt = true, Wrap = true \$1 ,\$1 Decrypt = true, Unwrap = true \$1
  + **참고:** \$1 Encrypt = true, Wrap = true \$1는 데이터를 암호화하거나 키를 래핑하기 위한 퍼블릭 키를 가져올 때 유일하게 유효한 옵션입니다.

\$1이 알고리즘/키 유형 조합은 현재 암호화 작업에서 지원되지 않습니다.