

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

# MAC 생성
<a name="generate-mac"></a>

MAC API 생성은 알려진 암호화 키를 사용하여 전송 당사자와 수신 당사자 간의 데이터 검증을 위한 MAC(메시지 인증 코드)를 생성하여 카드 마그네틱 스트라이프에서 데이터 추적과 같은 카드 관련 데이터를 인증하는 데 사용됩니다. MAC 생성에 사용되는 데이터에는 메시지 데이터, 비밀 MAC 암호화 키 및 전송을 위한 고유한 MAC 값을 생성하는 MAC 알고리즘이 포함됩니다. MAC의 수신 당사자는 동일한 MAC 메시지 데이터, MAC 암호화 키 및 알고리즘을 사용하여 비교 및 데이터 인증을 위해 다른 MAC 값을 다시 만듭니다. 메시지의 한 문자라도 변경되거나 인증에 사용된 MAC 키가 동일하지 않은 경우 결과 MAC 값은 달라집니다. API는이 작업에 대해 ISO 9797-1 알고리즘 1 및 ISO 9797-1 알고리즘 3 MAC(정적 MAC 키 및 파생된 DUKPT 키 사용), HMAC 및 EMV MAC 암호화 키를 지원합니다.

`message-data`의 입력 값은 hexBinary 데이터여야 합니다.

이 API의 모든 옵션에 대한 자세한 내용은 [GenerateMac](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMac.html) 및 [VerifyMac](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyMac.html)을 참조하세요.

선택적 파라미터 mac-length를 사용하면 출력 값을 잘라낼 수 있습니다(코드 내에서도 가능합니다). 길이가 8이면 8바이트 또는 16 16진수 문자입니다.

MAC 키는 [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html)를 호출하여 AWS Payment Cryptography로 생성하거나 [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html)를 호출하여 가져올 수 있습니다.

**참고**  
CMAC 및 HMAC 알고리즘에는 패딩이 필요하지 않습니다. 다른 모든 경우에는 TDES의 경우 8바이트(16 16진수 문자), AES의 경우 16바이트(32 16진수 문자)의 배수인 알고리즘의 블록 크기로 데이터를 패딩해야 합니다.

**Topics**
+ [HMAC 생성](#generate-mac-hmac)
+ [ISO 9797-1 알고리즘 3을 사용하여 MAC 생성](#generate-mac-iso9797-alg3)
+ [CMAC를 사용하여 MAC 생성](#generate-mac-cmac)
+ [DUKPT CMAC를 사용하여 MAC 생성](#generate-mac-dukpt-cmac)

## HMAC 생성
<a name="generate-mac-hmac"></a>

이 예제에서는 HMAC 알고리즘 `HMAC_SHA256`과 HMAC 암호화 키를 사용하여 카드 데이터 인증을 위한 HMAC(해시 기반 메시지 인증 코드)를 생성합니다. 키에는 KeyUse가 `TR31_M7_HMAC_KEY`로 설정되고 KeyModeSofUse는 `Generate`로 설정되어 있어야 합니다. 해시 길이(예: 256)는 키가 생성될 때 정의되며 수정할 수 없습니다.

선택적 mac 길이 파라미터는 출력 MAC를 잘라내지만 서비스 외부에서도 수행할 수 있습니다. 이 값은 바이트 단위이므로 16의 값은 길이가 32인 16진수 문자열을 예상합니다.

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \
    --generation-attributes Algorithm=HMAC
```

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

## ISO 9797-1 알고리즘 3을 사용하여 MAC 생성
<a name="generate-mac-iso9797-alg3"></a>

이 예제에서는 카드 데이터 인증을 위해 ISO 9797-1 알고리즘 3(소매 MAC)을 사용하여 MAC를 생성합니다. 키에는 KeyUse가 `TR31_M3_ISO_9797_3_MAC_KEY`로 설정되고 KeyModeSofUse는 `Generate`로 설정되어 있어야 합니다.

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ 
    --generation-attributes="Algorithm=ISO9797_ALGORITHM3"
```

```
           
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
    "KeyCheckValue": "2976EA",
    "Mac": "A8F7A73DAF87B6D0"
}
```

## CMAC를 사용하여 MAC 생성
<a name="generate-mac-cmac"></a>

CMAC는 키가 AES이지만 TDES도 지원하는 경우에 가장 일반적으로 사용됩니다. 이 예제에서는 AES 키를 사용한 카드 데이터 인증을 위해 CMAC(ISO 9797-1 알고리즘 5)를 사용하여 MAC를 생성합니다. 키에는 KeyUse가 `TR31_M6_ISO_9797_5_CMAC_KEY`로 설정되고 KeyModeSofUse는 `Generate`로 설정되어 있어야 합니다.

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ 
    --generation-attributes Algorithm="CMAC"
```

```
           
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "C1EB8F",
    "Mac": "1F8C36E63F91E4E93DF7842BF5E2E5F7"
}
```

## DUKPT CMAC를 사용하여 MAC 생성
<a name="generate-mac-dukpt-cmac"></a>

이 예제에서는 카드 데이터 인증을 위해 CMAC와 함께 DUKPT(트랜잭션당 파생된 고유 키)를 사용하여 MAC를 생성합니다. 키는 KeyUsage를 로 설정하고 `TR31_B0_BASE_DERIVATION_KEY` KeyModesOfUse를 true로 `DeriveKey` 설정해야 합니다. DUKPT 키는 기본 파생 키(BDK)와 키 일련 번호(KSN)를 사용하여 각 트랜잭션에 대해 고유한 키를 파생합니다.



**Example**  

```
$ aws payment-cryptography-data generate-mac --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" --generation-attributes="DukptCmac={KeySerialNumber="932A6E954ABB32DD00000001",Direction=BIDIRECTIONAL}"
```

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