

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

# AWS Payment Cryptography의 리전별 기능
<a name="advanced.regional"></a>

특정 기능은 리전별로 다를 수 있으며 달리 사용되지 않을 수 있습니다. 이러한 기능은이 단원에서 자세히 설명합니다.

# AS2805
<a name="advanced.regional.as2805"></a>

Australia Standard 2805(AS2805)는 주로 카드 기반 결제 거래에 사용되는 전자 송금의 표준입니다. 이는 [Standards Australia](https://www.standards.org.au/)에서 유지 관리합니다. 표준은 메시지 형식부터 암호화 표준까지 다양한 주제를 다루는 6개의 책으로 구성됩니다.

6부에서는 host-to-host(node-to-node) 통신 및 관련 암호화 요구 사항을 비롯한 키 관리에 대한 지침을 제공하는 반면, 다른 측면은 다른 부분에서 다룹니다. 이 표준의 모든 암호화는 현재 TDES를 기반으로 합니다.

**참고**  
 AS2805는 현재 ap-southeast-2 리전에서 사용할 수 있습니다. 가까운 시일 내에 추가 리전으로 롤아웃될 예정입니다.

AS2805는 아래에 요약된 다른 구현과 비교하여 여러 가지 차이점이 있습니다.

*키 보호*  
TR-31/X9.143과 같은 키 블록 대신 키 변형을 사용합니다. AWS 결제 암호화는 모든 키를 키 블록으로 내부적으로 저장하지만 AS2805 정의 변형을 사용하여 가져오기, 내보내기 및 계산을 허용합니다.

*단방향 키*  
AS2805에서는 단방향 키를 사용해야 합니다. 두 노드 모두 메시지 인증 코드(MAC)를 생성해야 하는 경우 두 개의 키를 사용합니다.

*핀 블록*  
AS2805는 트랜잭션당 고유한 핀 암호화 키에 대한 키 유도 기술을 정의합니다. 이는 DUKPT 대신 사용할 수 있습니다. AS2805 체계는 DUKPT의 트랜잭션 카운터 사용과 비교하여 트랜잭션 데이터(트레이스 번호 및 트랜잭션 금액)에 의존합니다.

*키 교환 검증*  
핀 키와 같은 작업 키 교환을 시작하기 전에 KEK를 검증하는 프로세스를 정의합니다. 다른 체계에서는 KEK가 자주 교환되지 않으며 KCV를 사용하여 검증됩니다.

AS2805는 키 블록이 아닌 키 변형의 개념을 사용하여 키가 의도한(및 유일한) 용도로만 사용되도록 합니다. 다음은 키를 사용하여 다른 암호화 함수를 가져오거나 내보내거나 수행할 때 AWS Payment Cryptography가 변형과 키 블록을 매핑하는 방법입니다.


| AS2805 키 유형 | AWS Payment Cryptography 키 유형 | 
| --- | --- | 
| TERMINAL\$1MAJOR\$1KEY\$1VARIANT\$100 |  TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY | 
| PIN\$1ENCRYPTION\$1KEY\$1VARIANT\$128 |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY | 
| MESSAGE\$1AUTHENTICATION\$1KEY\$1VARIANT\$124 |  TR31\$1M0\$1ISO\$116609\$1MAC\$1KEY | 
| DATA\$1ENCRYPTION\$1KEY\$1VARIANT\$122 |  TR31\$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY | 
| VARIANT\$1MASK\$182,VARIANT\$1MASK\$182C0 |  KEK 검증 프로세스의 일부로 사용할 수 있는 옵션입니다. 이러한 키 유형은 임시적이며 서비스에 저장되지 않습니다. | 

node1과 node2라는 두 개의 노드가 주어지면 다음 예제는 node1의 관점에서 가져온 것입니다. AWS Payment Cryptography는 프로세스의 양쪽에서 APIs를 지원합니다.

**Topics**
+ [초기 키(KEK) 교환](as2805.kekexchange.md)
+ [KEK 검증](as2805.kekvalidation.md)
+ [작업 키 생성 및 전송](as2805.workingkeys.create.md)
+ [작업 키 내보내기](as2805.workingkeys.export.md)
+ [핀 번역](as2805.pintranslation.md)
+ [Mac 생성 및 검증](as2805.mac.md)

# 초기 키(KEK) 교환
<a name="as2805.kekexchange"></a>

 AS2805에서 각 측에는 자체 KEK가 있습니다. KEK(s)는 전송 측에서 키를 보호/래핑하고 node2로 전송해야 할 때마다 사용되는 전송 측 키를 나타냅니다. KEK(r)는 반대(node2) 측에서 생성한 키입니다.

**참고**  
이러한 용어는 상대적입니다. 한 면은 키(발신 면)를 생성하고 다른 면은 키를 수신합니다. 따라서 KEY1이 주어지면 node1에서는 KEK(s)라고 하고 node2에서는 KEK(r)라고 합니다.

 KEK for AS2805는 키 블록이 아닌 암호를 보호하는 데 사용되므로 항상 키 유형 = TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY입니다. AS2805 6.1에 정의된 대로 TERMINAL\$1MAJOR\$1KEY\$1VARIANT\$100에 매핑됩니다.

단계:

**1. 키 생성**  
[CreateKey](create-keys.md) API를 사용하여 키를 생성합니다. TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY 유형의 키를 생성합니다.

**2. node2와 키를 교환하는 방법 결정**  
[상대방과 KEK를 교환](keys-export.md)하는 방법을 결정합니다. AS2805의 경우 가장 일반적이고 상호 운용 가능한 방법은 RSA 래핑입니다.

**3.KEKs 내보내기**  
위의 선택에 따라 node2에서 퍼블릭 키 인증서를 받게 됩니다. 해당 인증서를 사용하여 내보내기를 실행하여 키를 보호합니다(또는 ECDH를 사용하는 경우 키를 추출합니다).

**4. KEKr 가져오기**  
위의 선택에 따라 퍼블릭 키 인증서를 node2로 보냅니다. 해당 인증서를 사용하여 로 가져오기를 실행하여 노드 2의 KEKr를 서비스에 로드합니다.

# KEK 검증
<a name="as2805.kekvalidation"></a>

![\[AWS Payment Cryptography를 사용하는 PIN 애플리케이션의 상위 수준 네트워크 다이어그램 예제\]](http://docs.aws.amazon.com/ko_kr/payment-cryptography/latest/userguide/images/as2805/kek_validation.png)


서비스(node1)가 node2에 연결되면 각 측은 KEK 검증이라는 프로세스를 사용하여 후속 작업에 동일한 KEK를 사용하고 있는지 확인합니다.

**1: 첫 번째 키를 검증하는 단계**

**1.1 KRs 수신**  
Node2는 KRs을 생성하여 로그온 프로세스의 일부로 사용자에게 전송합니다. AWS Payment Cryptography를 사용하여이 값 또는 다른 솔루션을 생성할 수 있습니다.

**1.2 KEK 검증 응답 생성**  
노드는 입력이 1단계에서 제공된 KEK(r) 및 KRs인 KEK 검증 응답을 생성합니다.  

**Example**  

```
cat >> generate-kek-validation-response.json
{
    "KekValidationType": {
        "KekValidationResponse": {
            "RandomKeySend": "9217DC67B8763BABCFDF3DADFCD0F84A"
        }
    },
    "RandomKeySendVariantMask": "VARIANT_MASK_82",
    "KeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza"
}
```

```
$ aws payment-cryptography-data generate-as2805-kek-validation --cli-input-json file://generate-kek-validation-response.json
```

```
{
 "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
 "KeyCheckValue": "0A3674",
 "RandomKeyReceive": "A4B7E249C40C98178C1B856DB7FB76EB",
 "RandomKeySend": "9217DC67B8763BABCFDF3DADFCD0F84A"
}
```

**1.3 계산된 KRr 반환**  
계산된 KRr을 node2로 반환합니다. 이 노드는 이를 1단계에서 계산된 값과 비교합니다.

**2. 두 번째 키를 검증하는 단계**

**2.1 KRr 및 KRs 생성**  
노드는 AWS Payment Cryptography를 사용하여 무작위 값과이 값의 반전(역방향) 복사본을 생성합니다. 서비스는 KEK(들)로 래핑된 이러한 두 값을 모두 출력합니다. 이를 KR(s) 및 KR(r)이라고 합니다.  

**Example**  

```
cat >> generate-kek-validation-request.json 
{
    "KekValidationType": {
        "KekValidationRequest": {
            "DeriveKeyAlgorithm": "TDES_2KEY"
        }
    },
"RandomKeySendVariantMask": "VARIANT_MASK_82",
    "KeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv"
}
```

```
$ aws payment-cryptography-data generate-as2805-kek-validation --cli-input-json file://generate-kek-validation-request.json
```

```
{
 "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv",
 "KeyCheckValue": "DC1081",
 "RandomKeyReceive": "A4B7E249C40C98178C1B856DB7FB76EB",
 "RandomKeySend": "9217DC67B8763BABCFDF3DADFCD0F84A"
}
```

**2.2 KRs node2로 전송**  
KRs node2로 전송합니다. 이후 검증을 위해 KRr을 유지합니다.

**2.3 Node2에서 KEK 검증 응답 생성**  
Node2는 KEKr 및 KRs 사용하고 KRr을 생성하여 서비스로 다시 보냅니다.

**2.4 응답 검증**  
1단계의 KRr과 3단계에서 반환된 값을 비교합니다. 일치하는 경우 계속 진행합니다.

# 작업 키 생성 및 전송
<a name="as2805.workingkeys.create"></a>

AS2805에 사용되는 일반적인 작업 키에는 두 가지 키 세트가 포함됩니다.

영역 핀 키(ZPK), 영역 암호화 키(ZEK) 및 영역 인증 키(ZAK)와 같은 노드 간 키입니다.

DUKPT를 사용하지 않는 경우 터미널 메인 키(TMK) 및 터미널 핀 키(TPK)와 같은 터미널과 노드 간의 키입니다.

**참고**  
터미널 키당 키를 최소화하고 가능한 경우 더 적은 수의 키를 사용하는 TR-34 및 DUKPT와 같은 기술을 활용하는 것이 좋습니다.

**Example**  
이 예제에서는 선택적 태그를 사용하여이 키의 용도와 사용을 추적했습니다. 태그는 시스템 암호화 함수의 일부로 사용되지 않지만 분류, 재무 추적에 사용할 수 있으며 IAM 정책을 적용하는 데 사용할 수 있습니다.  

```
cat >> create-zone-pin-key.json 
{
    "KeyAttributes": {
        "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY",
        "KeyClass": "SYMMETRIC_KEY",
        "KeyAlgorithm": "TDES_2KEY",
        "KeyModesOfUse": {
            "Encrypt": true,
            "Decrypt": true,
            "Wrap": true,
            "Unwrap": true,
            "Generate": false,
            "Sign": false,
            "Verify": false,
            "DeriveKey": false,
            "NoRestrictions": false
        }
    },
    "KeyCheckValueAlgorithm": "ANSI_X9_24",
    "Exportable": true,
    "Enabled": true,
    "Tags": [
        {
            "Key": "AS2805_KEYTYPE",
            "Value": "ZONE_PIN_KEY_VARIANT28"
        }
    ]
}
```

```
$ aws payment-cryptography-data create-key --cli-input-json file://create-zone-pin-key.json --region ap-southeast-2
```

```
{
 "Key": {
 "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh",
 "KeyAttributes": {
 "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY",
 "KeyClass": "SYMMETRIC_KEY",
 "KeyAlgorithm": "TDES_2KEY",
 "KeyModesOfUse": {
 "Encrypt": true,
 "Decrypt": true,
 "Wrap": true,
 "Unwrap": true,
 "Generate": false,
 "Sign": false,
 "Verify": false,
 "DeriveKey": false,
 "NoRestrictions": false
 }
 },
 "KeyCheckValue": "9A325B",
 "KeyCheckValueAlgorithm": "ANSI_X9_24",
 "Enabled": true,
 "Exportable": true,
 "KeyState": "CREATE_COMPLETE",
 "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
 "CreateTimestamp": "2025-12-17T09:05:27.586000-08:00",
 "UsageStartTimestamp": "2025-12-17T09:05:27.570000-08:00"
 }
}
```

# 작업 키 내보내기
<a name="as2805.workingkeys.export"></a>

다른 당사자와의 호환성을 유지하기 위해 AWS Payment Cryptography는 TR-31과 같은 키 블록 대신 키 변형을 사용하는 AS2805 대칭 키 래핑 기술을 지원합니다. 당사자 간에 여러 키를 공유하는 경우 각 키를 개별적으로 내보내야 합니다. 데이터가 양방향으로 전송되는 경우 각 측에서 메시지 인증 코드를 생성하는 데 사용하는 ZAK(s) 및 ZAK(r)와 같이 동일한 유형의 당사자 간에 두 개의 키가 있을 수 있습니다.

이러한 형식으로 가져오고 내보낼 추가 파라미터는 명령에 지정됩니다.

```
cat >> export-zone-pin-key.json 
{
    "ExportKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh",
    "KeyMaterial": {
        "As2805KeyCryptogram": {
            "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv",
            "As2805KeyVariant: "PIN_ENCRYPTION_KEY_VARIANT_28"
        }
    }
}
```

```
$ aws payment-cryptography-data export-key --cli-input-json file://export-zone-pin-key.json --region ap-southeast-2
```

```
{
    "WrappedKey": {
        "KeyCheckValue": "DC1081",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "KeyMaterial": "HDC10AEF038E695DDD72AF08DC1BB422D",
        "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM",
        "WrappingKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv"
    }
}
```

# 핀 번역
<a name="as2805.pintranslation"></a>

AS2805는 섹션 6.4의 세션별 키 유도 모드를 설명합니다. DUKPT와 같은 목적을 제공하며 DUKPT가 섹션 6.7에서 다루기 때문에 두 알고리즘 중 하나를 사용할 수 있습니다. 이 체계에서 세션 핀 키(KPE라고 함)는 SystemTraceAuditNumber(STAN) 및 TransactionAmount를 파생 데이터로 사용하여 터미널 핀 키에서 파생됩니다.

번역 핀은 다양한 형식으로 변환할 수 있는 일반적인 함수입니다. 이 예제에서는 결제 네트워크에 핀을 보낼 때와 같이 KPE의 핀을 핀 암호화 키(PEK)로 변환합니다.

```
cat >> translate-pin-as2805.json 
{
    "EncryptedPinBlock": "B3B34B43BAB5F81A",
    "IncomingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
    "IncomingTranslationAttributes": {
        "IsoFormat0": {
            "PrimaryAccountNumber": "9999179999900013"
        }
    },
      "IncomingAs2805Attributes": {
        "SystemTraceAuditNumber": "000348",
        "TransactionAmount": "000000000328"
    },
    "OutgoingKeyIdentifier": "",
    "OutgoingTranslationAttributes": {    
        "IsoFormat0": {
            "PrimaryAccountNumber": "9999179999900013"
        }
    }
}
```

```
$ aws payment-cryptography-data translate-pin-data --cli-input-json file://translate-pin-as2805.json  --region ap-southeast-2
```

```
{
    "WrappedKey": {
        "KeyCheckValue": "DC1081",
        "KeyCheckValueAlgorithm": "ANSI_X9_24",
        "KeyMaterial": "HDC10AEF038E695DDD72AF08DC1BB422D",
        "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM",
        "WrappingKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/rhfm6tenpxapkmrv"
    }
}
```

# Mac 생성 및 검증
<a name="as2805.mac"></a>

MAC 생성 및 확인 명령은 HMAC, CMAC, EMV MACs 등을 포함한 다양한 MAC를 지원합니다. AS2805의 경우 AS2805.4.1에 정의된 추가 변형이 있습니다. 일반적으로 AS2805에서 수신 메시지는이 MAC를 사용하여 확인되며 발신 메시지에는 MAC도 포함됩니다.

```
cat verify-mac.json 
{
    "KeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "Mac": "86304058",
    "MessageData": "73D8BA54D3852951DAEA41",
    "VerificationAttributes": {
        "Algorithm": "AS2805_4_1"
    }
}
```

```
$ aws payment-cryptography-data verify-mac --cli-input-json file://verify-mac.json --region ap-southeast-2
```

```
{
    "KeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "KeyCheckValue": "2976E7"
}
```