

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# データオペレーション
<a name="data-operations"></a>

 AWS Payment Cryptography キーを確立したら、それを使用して暗号化オペレーションを実行できます。さまざまなオペレーションが、暗号化、ハッシュ、CVV2 生成などのドメイン固有のアルゴリズムなど、さまざまなタイプのアクティビティを実行します。

暗号化されたデータは、対応する復号キー (暗号化タイプによって対称キーまたは秘密キー) がないと復号化できません。ハッシュとドメイン固有のアルゴリズムも同様に、対称キーまたはパブリックキーなしでは検証できません。

特定のオペレーションに有効なキータイプについては、「[暗号オペレーションに有効なキー](crypto-ops-validkeys-ops.md)」セクションを参照してください。

**注記**  
本番稼働以外の環境では、テストデータを使用することをお勧めします。本番稼働以外の環境でプロダクションキーとデータ (PAN、BDK ID など) を使用すると、PCI DSS や PCI P2PE などのコンプライアンス範囲に影響する可能性があります。

**Topics**
+ [データの暗号化、復号、再暗号化](crypto-ops.encryptdecrypt.md)
+ [カードデータの生成と検証](crypto-ops-carddata.md)
+ [PIN データの生成、変換、検証](data-operations.pindata.md)
+ [認証リクエスト (ARQC) 暗号文の検証](data-operations.verifyauthrequestcryptogram.md)
+ [MAC の生成と検証](crypto-ops-mac.md)
+ [暗号化オペレーション用の検証キー](crypto-ops-validkeys-ops.md)

# データの暗号化、復号、再暗号化
<a name="crypto-ops.encryptdecrypt"></a>

暗号化と復号化の方法を使用して、TDES、AES、RSAなどのさまざまな対称および非対称技術を使用してデータを暗号化または復号化できます。これらのメソッドは、[DUKPT](terminology.md#terms.dukpt) および [EMV](terminology.md#terms.emv) 手法を使用して派生したキーもサポートします。基になるデータを公開せずに新しいキーでデータを保護するユースケースでは、ReEncrypt コマンドを使用することもできます。

**注記**  
 暗号化/復号関数を使用する場合、すべての入力は hexBinary にあると見なされます。例えば、1 の値は 31 (16 進数) として入力され、小文字の t は 74 (16 進数) として表されます。出力もすべて HexBinary 形式になります。

使用可能なすべてのオプションの詳細については、「 API Guide for [Encrypt](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_EncryptData.html), [Decrypt](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_DecryptData.html), and [Re-Encrypt](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ReEncryptData.html)」を参照してください。

**Topics**
+ [[データの暗号化]](encrypt-data.md)
+ [データの復号化](decrypt-data.md)

# [データの暗号化]
<a name="encrypt-data"></a>

 `Encrypt Data` API は、対称および非対称データ暗号化キーと、[DUKPT](terminology.md#terms.dukpt) および [EMV](terminology.md#terms.emv) 派生キーを使用してデータを暗号化するために使用されます。`TDES` や `RSA`、`AES` など、さまざまなアルゴリズムとバリエーションをサポートしています。

プライマリ入力は、データの暗号化に使用される暗号化キー、暗号化する hexBinary 形式のプレーンテキストデータ、初期化ベクトルや TDES などのブロック暗号モードなどの暗号化属性です。プレーンテキストデータは、 の場合は 8 バイト`TDES`、 の場合は 16 バイト、 の場合はキー`AES`の長さの倍数である必要があります`RSA`。対称キー入力 (TDES、AES、DUKPT、EMV) は、入力データがこれらの要件を満たしていない場合に備えてパディングする必要があります。次の表は、各キータイプのプレーンテキストの最大長と、RSA キー`EncryptionAttributes`用に で定義したパディングタイプを示しています。


| パディングタイプ | RSA\$12048 | RSA\$13072 | RSA\$14096 | 
| --- | --- | --- | --- | 
| OAEP SHA1 | 428 | 684 | 940 | 
| OAEP SHA256 | 380 | 636 | 892 | 
| OAEP SHA512 | 252 | 508 | 764 | 
| PKCS1 | 488 | 744 | 1,000 | 
| None | 488 | 744 | 1,000 | 

主な出力には、HexBinary 形式の暗号文として暗号化されたデータと、暗号化キーのチェックサム値が含まれます。使用可能なすべてのオプションの詳細については、「 API Guide for [Encrypt](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_EncryptData.html)」を参照してください。

**Topics**
+ [AES 対称キーを使用したデータの暗号化](#w2aac15c16c11c13)
+ [DUKPT キーを使用したデータの暗号化](#w2aac15c16c11c15)
+ [EMV 派生対称キーを使用してデータを暗号化する](#w2aac15c16c11c17)
+ [RSA キーを使用したセッションデータの暗号化](#crypto-ops.encrypt-rsa)

## AES 対称キーを使用したデータの暗号化
<a name="w2aac15c16c11c13"></a>

**注記**  
 すべての例では、関連するキーが既に存在することを前提としています。キーは [CreateKey](create-keys.md) オペレーションを使用して作成することも、[ImportKey](keys-import.md) オペレーションを使用してインポートすることもできます。

**Example**  
 この例では、[CreateKey](create-keys.md) オペレーションを使用して作成された、または [ImportKey](keys-import.md) オペレーションを使用してインポートされた対称キーを使用してプレーンテキストデータを暗号化します。このオペレーションでは、キーの KeyModesOfUse が `Encrypt` に設定され、KeyUsage が `TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY` に設定されている必要があります。その他のオプションについては、「[暗号化オペレーション用キー](crypto-ops-validkeys-ops.md)」を参照してください。  

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 31323334313233343132333431323334 --encryption-attributes 'Symmetric={Mode=CBC}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## DUKPT キーを使用したデータの暗号化
<a name="w2aac15c16c11c15"></a>

**Example**  
 この例では、[DUKPT](terminology.md#terms.dukpt) キーを使用してプレーンテキストデータを暗号化します。 AWS Payment Cryptography は、 `TDES`および `AES` DUKPT キーをサポートしています。このオペレーションでは、キーの KeyModesOfUse が `DeriveKey` に設定され、KeyUsage が `TR31_B0_BASE_DERIVATION_KEY` に設定されている必要があります。その他のオプションについては、「[暗号化オペレーション用キー](crypto-ops-validkeys-ops.md)」を参照してください。  

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 31323334313233343132333431323334 --encryption-attributes 'Dukpt={KeySerialNumber=FFFF9876543210E00001}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## EMV 派生対称キーを使用してデータを暗号化する
<a name="w2aac15c16c11c17"></a>

**Example**  
 この例では、作成済みの EMV 派生対称キーを使用してクリアテキストデータを暗号化します。このようなコマンドを使用して、EMV カードにデータを送信できます。このオペレーションでは、キーの KeyModesOfUse を に設定`Derive`し、KeyUsage を `TR31_E1_EMV_MKEY_CONFIDENTIALITY`または に設定する必要があります`TR31_E6_EMV_MKEY_OTHER`。詳細については、[「暗号化オペレーションのキー](crypto-ops-validkeys-ops.md)」を参照してください。  

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 33612AB9D6929C3A828EB6030082B2BD --encryption-attributes 'Emv={MajorKeyDerivationMode=EMV_OPTION_A,PanSequenceNumber=27,PrimaryAccountNumber=1000000000000432,SessionDerivationData=02BB000000000000, InitializationVector=1500000000000999,Mode=CBC}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## RSA キーを使用したセッションデータの暗号化
<a name="crypto-ops.encrypt-rsa"></a>

**Example**  
 この例では、[ImportKey](keys-import.md) オペレーションを使用してインポートされた [RSA 公開キー](terminology.md#terms.publickey)を使用してプレーンテキストデータを暗号化します。このオペレーションでは、キーの KeyModesOfUse が `Encrypt` に設定され、KeyUsage が `TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION` に設定されている必要があります。その他のオプションについては、「[暗号化オペレーション用キー](crypto-ops-validkeys-ops.md)」を参照してください。  
 PKCS \$17 または現在サポートされているないその他のパディングスキームについては、サービスを呼び出す前に申請し、パディングインジケータ「'Asymmetric=\$1\$1'」を省略してパディングなしを選択してください。  

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/thfezpmsalcfwmsg --plain-text 31323334313233343132333431323334 --encryption-attributes 'Asymmetric={PaddingType=OAEP_SHA256}'
```

```
     
{
 "CipherText": "12DF6A2F64CC566D124900D68E8AFEAA794CA819876E258564D525001D00AC93047A83FB13 \ 
 E73F06329A100704FA484A15A49F06A7A2E55A241D276491AA91F6D2D8590C60CDE57A642BC64A897F4832A3930 \ 
 0FAEC7981102CA0F7370BFBF757F271EF0BB2516007AB111060A9633D1736A9158042D30C5AE11F8C5473EC70F067 \ 
 72590DEA1638E2B41FAE6FB1662258596072B13F8E2F62F5D9FAF92C12BB70F42F2ECDCF56AADF0E311D4118FE3591 \ 
 FB672998CCE9D00FFFE05D2CD154E3120C5443C8CF9131C7A6A6C05F5723B8F5C07A4003A5A6173E1B425E2B5E42AD \ 
 7A2966734309387C9938B029AFB20828ACFC6D00CD1539234A4A8D9B94CDD4F23A",
 "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/5dza7xqd6soanjtb",
 "KeyCheckValue": "FF9DE9CE"
}
```

# データの復号化
<a name="decrypt-data"></a>

 `Decrypt Data` API は、対称および非対称データ暗号化キーと、[DUKPT](terminology.md#terms.dukpt) および [EMV](terminology.md#terms.emv) 派生キーを使用してデータを復号するために使用されます。`TDES` や `RSA`、`AES` など、さまざまなアルゴリズムとバリエーションをサポートしています。

 主な入力は、データの復号化に使用される復号化キー、復号化対象の HexBinary 形式の暗号文データ、および初期化ベクトルやブロック暗号モードなどの復号化属性です。主な出力には、HexBinary 形式のプレーンテキストとして復号化されたデータと、復号キーのチェックサム値が含まれます。使用可能なすべてのオプションの詳細については、[「Decrypt](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_DecryptData.html) 用 API ガイド」を参照してください。

**Topics**
+ [AES 対称キーを使用したデータの復号化](#w2aac15c16c13b9)
+ [DUKPT キーを使用したデータの復号化](#w2aac15c16c13c11)
+ [EMV 派生対称キーを使用したデータの復号](#w2aac15c16c13c13)
+ [RSA キーを使用してデータを復号化します。](#crypto-ops.decrypt-rsa)

## AES 対称キーを使用したデータの復号化
<a name="w2aac15c16c13b9"></a>

**Example**  
 この例では、対称キーを使用して暗号文データを復号します。この例では、 `AES`キーを示していますが、 `TDES_2KEY`と もサポート`TDES_3KEY`されています。このオペレーションでは、キーの KeyModesOfUse が `Decrypt` に設定され、KeyUsage が `TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY` に設定されている必要があります。その他のオプションについては、「[暗号化オペレーション用キー](crypto-ops-validkeys-ops.md)」を参照してください。  

```
$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-attributes 'Symmetric={Mode=CBC}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "PlainText": "31323334313233343132333431323334"
}
```

## DUKPT キーを使用したデータの復号化
<a name="w2aac15c16c13c11"></a>

**注記**  
 DUKPT で復号データを P2PE トランザクションに使用すると、PCI DSS の範囲を決定する際に考慮する必要があるクレジットカード PAN やその他のカード会員データがアプリケーションに返される可能性があります。

**Example**  
 [この例では、[CreateKey](create-keys.md) オペレーションを使用して作成された、または ImportKey オペレーションを使用してインポートされた [DUKPT](terminology.md#terms.dukpt) キーを使用して暗号文データを復号化します。](keys-import.md)このオペレーションでは、キーの KeyModesOfUse が `DeriveKey` に設定され、KeyUsage が `TR31_B0_BASE_DERIVATION_KEY` に設定されている必要があります。その他のオプションについては、「[暗号化オペレーション用キー](crypto-ops-validkeys-ops.md)」を参照してください。`TDES`アルゴリズムを使用する場合`DUKPT`、暗号文データ長は 16 バイトの倍数でなければなりません。`AES`アルゴリズムの場合、暗号文データ長は 32 バイトの倍数でなければなりません。  

```
$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-attributes 'Dukpt={KeySerialNumber=FFFF9876543210E00001}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "PlainText": "31323334313233343132333431323334"
}
```

## EMV 派生対称キーを使用したデータの復号
<a name="w2aac15c16c13c13"></a>

**Example**  
 この例では、[CreateKey](create-keys.md) オペレーションを使用して作成されたか、[ImportKey](keys-import.md) オペレーションを使用してインポートされた EMV 派生対称キーを使用して暗号文データを復号します。このオペレーションでは、キーの KeyModesOfUse を に設定`Derive`し、KeyUsage を `TR31_E1_EMV_MKEY_CONFIDENTIALITY`または に設定する必要があります`TR31_E6_EMV_MKEY_OTHER`。詳細については、[「暗号化オペレーションのキー](crypto-ops-validkeys-ops.md)」を参照してください。  

```
$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-attributes 'Emv={MajorKeyDerivationMode=EMV_OPTION_A,PanSequenceNumber=27,PrimaryAccountNumber=1000000000000432,SessionDerivationData=02BB000000000000, InitializationVector=1500000000000999,Mode=CBC}'
```

```
{
"KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
"KeyCheckValue": "71D7AE",
"PlainText": "31323334313233343132333431323334"
}
```

## RSA キーを使用してデータを復号化します。
<a name="crypto-ops.decrypt-rsa"></a>

**Example**  
 [この例では、CreateKey オペレーションを使用して作成された [RSA key pair](terminology.md#terms.privatekey) を使用して暗号文データを復号化します。](create-keys.md)このオペレーションでは、キーの KeyModesOfUse が `Decrypt` に設定され、KeyUsage が `TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION` に設定されている必要があります。その他のオプションについては、「[暗号化オペレーション用キー](crypto-ops-validkeys-ops.md)」を参照してください。  
 PKCS \$17 または現在サポートされているないその他のパディングスキームについては、パディングインジケータ 「'Asymmetric= \$1\$1'」 を省略してパディングなしを選択し、サービスを呼び出したらパディングを削除してください。  

```
$ aws payment-cryptography-data decrypt-data \ 
        --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5dza7xqd6soanjtb --cipher-text 8F4C1CAFE7A5DEF9A40BEDE7F2A264635C... \ 
        --decryption-attributes 'Asymmetric={PaddingType=OAEP_SHA256}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/5dza7xqd6soanjtb",
    "KeyCheckValue": "FF9DE9CE",
    "PlainText": "31323334313233343132333431323334"
}
```

# カードデータの生成と検証
<a name="crypto-ops-carddata"></a>

カードデータにカードデータから派生したデータ (CVV、CVV2、CVC、DCVV など) が組み込まれていることを生成して検証します。

**Topics**
+ [カードデータの生成](generate-card-data.md)
+ [カードデータの検証](verify-card-data.md)

# カードデータの生成
<a name="generate-card-data"></a>

 `Generate Card Data` API は CVV、CVV2、ダイナミック CVV2 などのアルゴリズムを使用してカードデータを生成するために使用されます。このコマンドで使用できるキーについては、「[暗号化オペレーションに有効なキー](crypto-ops-validkeys-ops.md)」セクションを参照してください。

CVV、CVV2、iCVV、CAVV V7 などの多くの暗号化値は同じ暗号化アルゴリズムを使用しますが、入力値は異なります。例えば、[CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) には ServiceCode、カード番号、有効期限の入力があります。[CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html) にはこれらの入力が 2 つしかありませんが、CVV2/CVC2 の場合、ServiceCode は 000 に固定されているためです。同様に、iCVV の場合、ServiceCode は 999 に固定されます。一部のアルゴリズムでは、CAVV V8 などの既存のフィールドを再利用する場合があります。その場合は、プロバイダーマニュアルを参照して正しい入力値を確認する必要があります。

**注記**  
 正しい結果を生成するには、有効期限を同じ形式 (MMYY と YYMM など) で入力する必要があります。

# CVV2 の生成
<a name="generate-cvv2"></a>

**Example**  
この例では、 の入力`PAN`とカードの有効期限を使用して、特定の PAN の CVV2 を生成します。これは、カード認証キーが[生成済み](create-keys.md#cvvkey-example)であることを前提としています。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --primary-account-number=171234567890123 --generation-attributes CardVerificationValue2={CardExpiryDate=0123}
```

```
  {
      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
      "KeyCheckValue": "CADDA1",
      "ValidationData": "801"
  }
```

# iCVV の生成
<a name="generate-iCVV"></a>

**Example**  
この例では、入力が 、サービスコードが 999`PAN`、カードの有効期限がある特定の PAN の [iCVV](terminology.md#terms.icvv) を生成します。これは、カード認証キーが[生成済み](create-keys.md#cvvkey-example)であることを前提としています。  
使用可能なすべてのパラメータについては、 API リファレンスガイドの [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) を参照してください。  

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=999}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "CADDA1",
    "ValidationData": "801"
}
```

# カードデータの検証
<a name="verify-card-data"></a>

`Verify Card Data` は、`DISCOVER_DYNAMIC_CARD_VERIFICATION_CODE` などの暗号化原理に依存する支払いアルゴリズムを使用して作成されたデータを検証するために使用されます。

入力値は通常、インバウンドトランザクションの一部として発行者またはサポートされているプラットフォームパートナーに提供されます。ARQC 暗号文 (EMV チップカードに使用) を検証するには、「[ARQC の検証](data-operations.verifyauthrequestcryptogram.md)」を参照してください。

詳細については、 API ガイドの[VerifyCardValidationData](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyCardValidationData.html)」を参照してください。

値が検証されると、API は http/200 を返します。値が検証されないと、API は http/400 を返します。

# CVV2 の検証
<a name="verify-cvv2"></a>

**Example**  
この例では、特定の PAN の CVV/CVV2 を検証します。CVV2 は通常、カード所有者またはユーザーがトランザクション中に検証のために提供します。入力内容を検証するために、ランタイム時に[検証に使用するキー (CVK)](create-keys.md#cvvkey-example)、`PAN`、カードの有効期限、CVV2 の入力値が提供されます。カードの有効期限の形式は、初期値の生成に使用した形式と一致する必要があります。  
使用可能なすべてのパラメータについては、 API リファレンスガイドの [CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html) を参照してください。  

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --primary-account-number=171234567890123 --verification-attributes CardVerificationValue2={CardExpiryDate=0123} --validation-data 801
```

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

# iCVV を検証する
<a name="verify-iCVV"></a>

**Example**  
この例では、[検証に使用するキー (CVK)](create-keys.md#cvvkey-example)、999 のサービスコード`PAN`、カードの有効期限、検証するトランザクションによって提供される [iCVV](terminology.md#terms.icvv) の入力を含む特定の PAN の iCVV を検証します。  
iCVV はユーザーが入力した値 (CVV2 など) ではなく、EMV カードに埋め込まれています。提供されたときに常に検証する必要があるかどうかを考慮する必要があります。  
使用可能なすべてのパラメータについては、 API リファレンスガイドの [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) を参照してください。  

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

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "CADDA1",
    "ValidationData": "801"
}
```

# PIN データの生成、変換、検証
<a name="data-operations.pindata"></a>

PIN データ関数を使用すると、ランダムなピンや PIN 検証値 (PVV) を生成したり、受信した暗号化ピンを PVV や PIN オフセットと照合して検証したりできます。

ピン変換を使用すると、PCI PIN 要件 1 で規定されているクリアテキストでピンを公開しなくても、1 つの動作キーから別のキーに PIN を変換できます。

**注記**  
 PIN の生成と検証は一般に発行者の機能であり、PIN 変換は一般的な取得者の機能であるため、最低特権アクセスを検討し、システムのユースケースに適したポリシーを設定することをお勧めします。

**Topics**
+ [PIN データ変換](translate-pin-data.md)
+ [PIN データ生成](generate-pin-data.md)
+ [PIN データ検証](verify-pin-data.md)

# PIN データ変換
<a name="translate-pin-data"></a>

PIN データ変換機能を使用すると、暗号化された PIN データを HSM から送信することなく、あるキーセットから別のキーセットに変換できます。P2PE 暗号化に使用されます。P2PE 暗号化では、作業キーは変更されるはずなのに、処理システムがデータを復号する必要も許可もされません。主な入力は、暗号化されたデータ、データの暗号化に使用される暗号化キー、入力値の生成に使用されるパラメーターです。その他の入力セットは、出力の暗号化に使用するキーや出力の作成に使用されるパラメーターなど、要求された出力パラメーターです。主な出力は、新しく暗号化されたデータセットと、その生成に使用されたパラメーターです。

**注記**  
PCI に準拠するには、受信と送信の PrimaryAccountNumber の値が一致する必要があります。ある PAN から別の PAN に PIN を翻訳することはできません。

**Topics**
+ [PEK から DUKPT へのピン](#crypto-ops-pindata.pektodukpt)
+ [PEK から PEK への PIN](#crypto-ops-pindata.pektopek)

## PEK から DUKPT へのピン
<a name="crypto-ops-pindata.pektodukpt"></a>

**Example**  
この例では、[DUKPT](terminology.md#terms.dukpt) を使用した AES ISO 4 PIN ブロックから ISO 0 PIN ブロックを使用した PEK TDES 暗号化に PIN を変換します。これは、支払いターミナルが ISO 4 でピンを暗号化し、次の接続がまだ AES をサポートしていない場合に、ダウンストリーム処理のために TDES に変換される可能性がある場合に一般的です。  

```
$ aws payment-cryptography-data translate-pin-data --encrypted-pin-block "AC17DC148BDA645E" --outgoing-translation-attributes=IsoFormat0='{PrimaryAccountNumber=171234567890123}' --outgoing-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt  --incoming-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/4pmyquwjs3yj4vwe --incoming-translation-attributes IsoFormat4="{PrimaryAccountNumber=171234567890123}" --incoming-dukpt-attributes KeySerialNumber="FFFF9876543210E00008"  
```

```
    {
            "PinBlock": "1F4209C670E49F83E75CC72E81B787D9",
            "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
            "KeyCheckValue": "7CC9E2"
        }
```

## PEK から PEK への PIN
<a name="crypto-ops-pindata.pektopek"></a>

**Example**  
この例では、ある PEK (PIN 暗号化キー) で暗号化された PIN を別の PEK に変換します。これは一般的に、異なる暗号化キーを使用する異なるシステムまたはパートナー間でトランザクションをルーティングするときに使用され、プロセス全体で PIN を暗号化して PCI PIN コンプライアンスを維持します。どちらのキーもこの例では TDES 3KEY 暗号化を使用しますが、AES ISO-4 から TDES ISO-0、DUKPT から PEK、AS2805 から PEK へのさまざまなオプションを使用できます。  

```
$ aws payment-cryptography-data translate-pin-data --encrypted-pin-block "AC17DC148BDA645E" \
    --incoming-translation-attributes IsoFormat0='{PrimaryAccountNumber=171234567890123}' \
    --incoming-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt \
    --outgoing-translation-attributes IsoFormat0='{PrimaryAccountNumber=171234567890123}' \
    --outgoing-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh
```

```
{
    "PinBlock": "E8F2A6C4D1B93E7F",
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh",
    "KeyCheckValue": "9A325B"
}
```
出力 PIN ブロックが 2 番目の PEK で暗号化され、対応するキーを保持するダウンストリームシステムに安全に送信できるようになりました。

# PIN データ生成
<a name="generate-pin-data"></a>

生成 PIN データ関数は、トランザクション時または認可時にユーザーがピンエントリを検証するために使用される [PVV](terminology.md#terms.pvv) やピンブロックオフセットなど、PIN 関連の値を生成するために使用されます。この API では、さまざまなアルゴリズムを使用して新しいランダム PIN を生成することもできます。

# ランダムピンと一致する Visa PVV を生成する
<a name="generate-pvv-random"></a>

**Example**  
この例では、出力が暗号化された (PinData.PinBlock) と `PIN block` (pinData.Offset) である新しい `PVV` (ランダム) ピンを生成します。PinData.PinBlock) pinData.Offset). 主な入力は、`PAN`、`Pin Verification Key`、`Pin Encryption Key`、`PIN block format` です。  
 このコマンドでは、キーのタイプが である必要があります`TR31_V2_VISA_PIN_VERIFICATION_KEY`。  

```
$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes VisaPin={PinVerificationKeyIndex=1}
```

```
{
            "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
            "GenerationKeyCheckValue": "7F2363",
            "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
            "EncryptionKeyCheckValue": "7CC9E2",
            "EncryptedPinBlock": "AC17DC148BDA645E",
            "PinData": {
                "VerificationValue": "5507"
            }
        }
```

# 既知のピンの Visa PVV を生成する
<a name="generate-pvv-givenpin"></a>

**Example**  
この例では、特定の (暗号化された) ピンの PVV を生成します。暗号化されたピンは、支払いターミナルから、または[ユーザーが選択できるピンフロー](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/python_sdk_example/ecdh_flows)を使用してカード所有者からなど、アップストリームで受信できます。キー入力は、`PAN`、、`Pin Verification Key`、`Pin Encryption Key`、`Encrypted Pin Block`および です`PIN block format`。  

```
$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes VisaPinVerificationValue={PinVerificationKeyIndex=1,EncryptedPinBlock=AA584CED31790F37}
```

```
{
            "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
            "GenerationKeyCheckValue": "7F2363",
            "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
            "EncryptionKeyCheckValue": "7CC9E2",
            "EncryptedPinBlock": "AC17DC148BDA645E",
            "PinData": {
                "VerificationValue": "5507"
            }
        }
```

# ピンの IBM3624 ピンオフセットを生成する
<a name="generate-ibm3624"></a>

 IBM 3624 PIN オフセットは、IBM メソッドとも呼ばれます。このメソッドは、検証データ (通常は PAN) と PIN キー (PVK) を使用して自然/中間 PIN を生成します。自然ピンは実質的に派生値であり、決定論的であることは、カード所有者レベルでピンデータを保存する必要がないため、発行者の処理が非常に効率的です。最も明白なのは、このスキームはカード所有者が選択できるピンやランダムなピンを考慮していないことです。これらのタイプのピンを許可するために、オフセットアルゴリズムがスキームに追加されました。オフセットは、選択したユーザー (またはランダム) ピンと自然キーの差を表します。オフセット値は、カード発行者またはカードプロセッサによって保存されます。トランザクション時に、 AWS Payment Cryptography サービスは内部的に自然ピンを再計算し、オフセットを適用してピンを見つけます。次に、これをトランザクション認可によって提供される値と比較します。

IBM3624 にはいくつかのオプションがあります。
+ `Ibm3624NaturalPin` は自然ピンと暗号化されたピンブロックを出力します
+ `Ibm3624PinFromOffset` はオフセットを指定して暗号化されたピンブロックを生成します
+ `Ibm3624RandomPin` はランダムピンを生成し、次に一致するオフセットと暗号化されたピンブロックを生成します。
+  `Ibm3624PinOffset` は、ユーザーが選択したピンを指定してピンオフセットを生成します。

 AWS Payment Cryptography の内部では、次の手順が実行されます。
+ 提供されたパンを 16 文字にパディングします。<16 が指定されている場合は、指定されたパディング文字を使用して右側にパディングします。
+ PIN 生成キーを使用して検証データを暗号化します。
+ 小数化テーブルを使用して、暗号化されたデータを小数化します。これは、インスタンス「A」が 9 にマッピングされ、1 が 1 にマッピングされる可能性があるため、16 進数桁を 10 進数にマッピングします。
+ 出力の 16 進表現から最初の 4 桁を取得します。これは自然なピンです。
+ ユーザーが選択したピンまたはランダムピンを生成した場合、モジュロはカスタマーピンで自然ピンを減算します。結果はピンオフセットです。

**Topics**
+ [例: ピンの IBM3624 ピンオフセットを生成する](#generate-ibm3624-random-example)

## 例: ピンの IBM3624 ピンオフセットを生成する
<a name="generate-ibm3624-random-example"></a>

この例では、出力が暗号化された (PinData.PinBlock) と`IBM3624`オフセット値 `PIN block` (pinData.Offset).PinData.PinBlock) 入力は、`PAN`、検証データ (通常はパン）、パディング文字、`Pin Verification Key`、、 `Pin Encryption Key`です`PIN block format`。

 このコマンドでは、ピン生成キーが タイプ`TR31_V1_IBM3624_PIN_VERIFICATION_KEY`で、暗号化キーが タイプである必要があります `TR31_P0_PIN_ENCRYPTION_KEY` 

**Example**  
次の例は、ランダムピンを生成し、Ibm3624RandomPin を使用して暗号化されたピンブロックと IBM3624 オフセット値を出力する方法を示しています。 Ibm3624RandomPin   

```
$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes Ibm3624RandomPin="{DecimalizationTable=9876543210654321,PinValidationDataPadCharacter=D,PinValidationData=171234567890123}"
```

```
{
              "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
              "GenerationKeyCheckValue": "7F2363",
              "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
              "EncryptionKeyCheckValue": "7CC9E2",
              "EncryptedPinBlock": "AC17DC148BDA645E",
              "PinData": {
                  "PinOffset": "5507"
              }
          }
```

# PIN データ検証
<a name="verify-pin-data"></a>

PIN データ検証機能は PIN が正しいかどうかの検証に使用されます。この検証には通常、以前に保存した暗証番号の値と、カード所有者が POI で入力した暗証番号の値との照合が含まれます。この機能によって、いずれのソースの基になる値も表示されずに 2 つの値が照合されます。

## PVV メソッドを使用して暗号化された PIN を検証する
<a name="verify-pin-data.pvv-example"></a>

**Example**  
この例では、特定の PAN の PIN を検証します。PIN は通常、検証のためにトランザクション時にカード所有者またはユーザーによって提供され、ファイル上の値と比較されます (カード所有者からの入力は、ターミナルまたは他のアップストリームプロバイダーからの暗号化された値として提供されます）。この入力を検証するために、実行時に次の値も提供されます。入力ピンの暗号化に使用されるキー (これは多くの場合 `IWK`)`PAN`、および検証する値 ( `PVV`または )`PIN offset`。  
 AWS Payment Cryptography がピンを検証できる場合、http/200 が返されます。PIN が検証されない場合、http/400 が返されます。  

```
$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0  --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=5507}" --encrypted-pin-block AC17DC148BDA645E 
```

```
        {
            "VerificationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
            "VerificationKeyCheckValue": "7F2363",
            "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
            "EncryptionKeyCheckValue": "7CC9E2",
    
        }
```

## PVV メソッドを使用して暗号化された PIN を検証する - エラーの不正な PIN
<a name="verify-pin-data.pvv-example.badpin"></a>

**Example**  
この例では、特定の PAN の PIN を検証しようとしますが、ピンが正しくないため失敗します。  
SDKs を使用する場合、これは \$1"Message"Pin ブロックの検証に失敗しました。"Reason"INVALID\$1PIN"\$1 と表示されます。  

```
$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0  --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=9999}" --encrypted-pin-block AC17DC148BDA645E 
```

```
        An error occurred (VerificationFailedException) when calling the VerifyPinData operation: Pin block verification failed. 
```

## PVV メソッドを使用して暗号化された PIN を検証する - エラーの不正な入力
<a name="verify-pin-data.pvv-example.badkey"></a>

**Example**  
この例では、特定の PAN の PIN を検証しようとしますが、不正な入力が原因で失敗し、受信データが有効な PIN ではありませんでした。一般的な原因は、1/wrong key being used 2/input parameters such as pan or pin block format are incorrect 3/pin block is corrupted です。  

```
$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier  --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0  --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=9999}" --encrypted-pin-block AC17DC148BDA645E 
```

```
        An error occurred (ValidationException) when calling the VerifyPinData operation: Pin block provided is invalid. Please check your input to ensure all field values are correct.
```

# 以前に保存した IBM3624 ピンオフセットに対して PIN を検証する
<a name="verify-pin-data.ibm3624-example"></a>

この例では、カード発行者/プロセッサにファイルに保存されているピンオフセットに対して、カード所有者が提供した PIN を検証します。入力は、支払いターミナル (またはカードネットワークなどの他のアップストリームプロバイダー) によって提供される暗号化されたピンの追加[ピンの IBM3624 ピンオフセットを生成する](generate-ibm3624.md)と似ています。ピンが一致した場合、API は http 200 を返します。出力は暗号化された `PIN block` (PinData.PinBlock) と`IBM3624`オフセット値 (pinData.Offset).

 このコマンドでは、ピン生成キーが タイプ`TR31_V1_IBM3624_PIN_VERIFICATION_KEY`で、暗号化キーが タイプである必要があります `TR31_P0_PIN_ENCRYPTION_KEY` 

**Example**  

```
$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes Ibm3624RandomPin="{DecimalizationTable=9876543210654321,PinValidationDataPadCharacter=D,PinValidationData=171234567890123}"
```

```
{
"GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
"GenerationKeyCheckValue": "7F2363",
"EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
"EncryptionKeyCheckValue": "7CC9E2",
"EncryptedPinBlock": "AC17DC148BDA645E",
"PinData": {
  "PinOffset": "5507"
}
}
```

# 認証リクエスト (ARQC) 暗号文の検証
<a name="data-operations.verifyauthrequestcryptogram"></a>

 認証リクエスト暗号検証 API は [ARQC](terminology.md#terms.arqc) の検証に使用されます。ARQC の生成は AWS Payment Cryptography の範囲外であり、通常はトランザクション認可時に EMV チップカード (またはモバイルウォレットなどのデジタル対応物) 上で行われます。ARQC は各取引に固有のもので、カードの有効性を暗号的に示すとともに、取引データが現在の (予想される) 取引と完全に一致することを保証することを目的としています。

AWS Payment Cryptography には、ARQC を検証し、[EMV 4.4 Book 2 で定義されているものや Visa ](https://www.emvco.com/specifications/?post_id=80377)や Mastercard で使用されるその他のスキームなど、オプションの ARPC 値を生成するためのさまざまなオプションが用意されています。使用可能なすべてのオプションの完全なリストについては、 [API ガイド](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyCardValidationData.html)の VerifyCardValidationData セクションを参照してください。

ARQC 暗号文には通常、次の入力が必要です (ただし、実装によって異なる場合があります）。
+ [PAN](terminology.md#terms.pan) - プライマリーアカウント番号フィールドで指定
+ [PAN シーケンス番号 (PSN)](terminology.md#terms.psn) - PanSequenceNumber フィールドで指定
+ 共通セッションキー (CSK) などのキー派生方法 - SessionKeyDerivationAttributes で指定
+ マスターキー派生モード (EMV オプション A など) - メジャーキー派生モードで指定
+ トランザクションデータ - TransactionData フィールドで指定される、さまざまなトランザクション、ターミナル、カードデータの文字列 (金額、日付など)
+ [発行者マスターキー](terminology.md#terms.imk) - 個々のトランザクションを保護するために使用される暗号文 (AC) キーの生成に使用されるマスターキーで、KeyIdentifier フィールドで指定されます。

**Topics**
+ [トランザクションデータの作成](#w2aac15c25c13)
+ [トランザクションデータパディング](#w2aac15c25c15)
+ [例](#w2aac15c25c17)

## トランザクションデータの作成
<a name="w2aac15c25c13"></a>

トランザクションデータフィールドの正確な内容 (および順序) は実装とネットワークスキームによって異なりますが、推奨される最小フィールド (および連結シーケンス) は [EMV 4.4 Book 2 Section 8.1.1 - Data Selection](https://www.emvco.com/specifications/?post_id=80377) で定義されています。最初の 3 つのフィールドが金額 (17.00)、その他の金額 (0.00)、購入国の場合、トランザクションデータは次のように始まります。
+ 000000001700 - 金額 - 12 桁の小数点以下 2 桁を暗示します
+ 000000000000 - その他の金額 - 12 桁の数字は 2 桁の十進法で表記されます
+ 0124 - 4 桁の国コード 
+  アウトプット (一部) トランザクションデータ (一部) - 0000000017000000000000000124 

## トランザクションデータパディング
<a name="w2aac15c25c15"></a>

トランザクションデータは、サービスに送信する前にパディングする必要があります。ほとんどのスキームでは、ISO 9797 メソッド 2 のパディングを使用します。このパディングでは、フィールドが暗号化ブロックサイズの倍数になるまで、16 進数文字列に 16 進数 80 の後に 00 が続きます。TDES の場合は 8 バイトまたは 16 文字、AES の場合は 16 バイトまたは 32 文字です。代替方法 (方法 1) はそれほど一般的ではなく、パディング文字として 00 だけを使用します。

### ISO 9797 メソッド 1: パディング
<a name="w2aac15c25c15b5"></a>

 パディングなし: 00000000170000000000000008400080008000084016051700000000093800000B03011203 (74 文字または 37 バイト) 

 パディング付き: 00000000170000000000000008400080008000084016051700000000093800000B03011203 **000000** (80 文字または 40 バイト) 

### ISO 9797 メソッド 2: パディング
<a name="w2aac15c25c15b7"></a>

 パディングなし:ing.17000000084000800080000840160517923093800000B1F220103000000 (80 文字または 40 バイト) 

 パディング付き:17000000084000800080000840160517093800000B1F220103000000 **80000000** (88 文字または 44 バイト) 

## 例
<a name="w2aac15c25c17"></a>

### VISA CVN (10)
<a name="w2aac15c25c17b3"></a>

**Example**  
この例では、Visa CVN10 を使用して生成された ARQC の検証を行います。  
 AWS Payment Cryptography が ARQC を検証できる場合、http/200 が返されます。ARCQ (認可リクエスト暗号) が検証されない場合、http/400 レスポンスが返されます。  

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

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

### ビザ CVN18 とビザ CVN22
<a name="w2aac15c25c17b5"></a>

**Example**  
この例では、Visa CVN18 または CVN22 を使用して生成された ARQC を検証します。CVN18 と CVN22 の暗号化オペレーションは同じですが、トランザクションデータに含まれるデータは異なります。CVN10 と比較すると、同じ入力でもまったく異なる暗号文が生成されます。  
 AWS Payment Cryptography が ARQC を検証できる場合、http/200 が返されます。ARCQ が検証されていない場合、http/400 が返されます。  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram \ 
--auth-request-cryptogram 61EDCC708B4C97B4
--key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \ 
--major-key-derivation-mode EMV_OPTION_A 
--transaction-data 00000000170000000000000008400080008000084016051700000000093800000B1F22010300000000000 \
00000000000000000000000000000000000000000008000000000000000
--session-key-derivation-attributes='{"EmvCommon":{"ApplicationTransactionCounter":"000B", \
"PanSequenceNumber":"01","PrimaryAccountNumber":"9137631040001422"}}'
```

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

# MAC の生成と検証
<a name="crypto-ops-mac"></a>

メッセージ認証コード (MAC) は通常、メッセージの完全性 (変更されているかどうか) を認証するために使用されます。HMAC (ハッシュベースのメッセージ認証コード）、CBC-MAC、CMAC (暗号ベースのメッセージ認証コード) などの暗号化ハッシュは、暗号化を利用して MAC の送信者をさらに保証します。HMAC はハッシュ関数をベースにしていますが、CMAC はブロック暗号に基づいています。このサービスは、CBC-MAC のタイプである ISO9797 アルゴリズム 1 および 3 もサポートしています。 MACs 

すべての MAC アルゴリズムは、暗号化ハッシュ関数と共有シークレットキーを組み合わせます。これらはメッセージとシークレットキー ( キーのキーマテリアルなど) を使用して、一意のタグまたはmacを返します。メッセージの文字が 1 字でも変更されている場合、またはシークレットキーが同一ではない場合、結果として得られるタグはまったく異なるものになります。暗号化MAC は、シークレットキーをリクエストすることによって信頼性も提供するため、シークレットキーがなければ、同一の HMAC タグを生成することは不可能となります。Cryptographic MAC は対称署名と呼ばれることもあります。これらはデジタル署名のように機能しますが、署名と検証の両方に単一のキーを使用するからです。

AWS Payment Cryptography は、いくつかのタイプの MACs をサポートしています。

**ISO9797 アルゴリズム 1**  
ISO9797\$1ALGORITHM1 `KeyUsage`の で表されます。フィールドがブロックサイズの倍数でない場合 (TDES では 8 バイト/16 進数文字、AES では 16 バイト/32 文字）、 AWS Payment Cryptography は ISO9797 パディング方法 1 を自動的に適用します。他のパディング方法が必要な場合は、サービスを呼び出す前に適用できます。

**ISO9797 アルゴリズム 3 (リテールマック)**  
ISO9797\$1ALGORITHM3 `KeyUsage`の で表されます。アルゴリズム 1 と同じパディングルールが適用されます

**ISO9797 アルゴリズム 5 (CMAC)**  
TR31\$1M6\$1ISO\$19797\$15\$1CMAC\$1KEYの `KeyUsage` で示されます。

**HMAC**  
TR31\$1M7\$1HMAC\$1KEY including HMAC\$1SHA224、HMAC\$1SHA256、HMAC\$1SHA384、HMAC\$1SHA512の `KeyUsage` で示されます。

**AS2805.4.1 MAC**  
TR31\$1M0\$1ISO\$116609\$1MAC\$1KEY `KeyUsage`の で表されます。AS2805 の詳細については、「」を参照してください。 [AS2805](advanced.regional.as2805.md)

**DUKPT MAC**  
DUKPT MAC は通常、支払いターミナルとの間で送受信されるメッセージのソースとペイロードを確認するために使用されます。DUKPT 取得手法を使用してキーを取得し、MAC を実行します。このオプションで使用されるキーは、TR31\$1B0\$1BASE\$1DERIVATION\$1KEY `KeyUsage`の によって示されます。

**EMV MAC**  
EMV MAC は通常、EMV ドキュメントでは整合性キーと呼ばれます。EMV 導出手法を使用してキーを取得し、内部的に ISO9797\$1ALGORITHM3 を使用します。通常、発行者スクリプトをチップカードに送信して再プログラミングするために使用されます。このオプションで使用されるキーは、TR31\$1E2\$1EMV\$1MKEY\$1INTEGRITY `KeyUsage`の で示されます。スクリプトを送信し、オフラインピンを更新する場合は、これらのオペレーションの両方を実行する [GenerateMacEmvPinChange](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMacEmvPinChange) を参照してください。

**Topics**
+ [MAC の生成](generate-mac.md)
+ [MAC の検証](verify-mac.md)

# MAC の生成
<a name="generate-mac"></a>

Generate MAC API は、既知の暗号化キーを使用して送信側と受信側間のデータ検証用の MAC (メッセージ認証コード) を生成することで、カード磁気ストライプからのトラックデータなどのカード関連データを認証するために使用されます。MAC の生成に使用されるデータには、メッセージデータ、秘密 MAC 暗号化キー、および送信用の固有の MAC 値を生成する MAC アルゴリズムが含まれます。MAC の受信側は、同じ MAC メッセージデータ、MAC 暗号化キー、およびアルゴリズムを使用して、比較とデータ認証のために別の MAC 値を再現します。メッセージの文字が 1 字でも変わっている場合、またはシークレットキーが同一ではない場合、結果として得られる 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 進数文字を指します。

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 進数文字）、AES の場合は 16 バイト (32 進数文字) の倍数であるアルゴリズムのブロックサイズにデータをパディングする必要があります。

**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 (ハッシュベースのメッセージ認証コード) を生成します。キーは、KeyUsage が `TR31_M7_HMAC_KEY` に設定され、KeyModesOfUse が `Generate` に設定されている必要があります。ハッシュの長さ (256 など) は、キーの作成時に定義され、変更できません。

オプションの mac-length パラメータは出力 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 を生成します。キーは、KeyUsage が `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 を生成します。キーは、KeyUsage が `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"
}
```

# MAC の検証
<a name="verify-mac"></a>

MAC (メッセージ認証コード) を検証するための MAC (メッセージ認証コード) の検証には MAC (MAC) API が使用されます。認証用の MAC 値を再生成するには、MAC の生成時に使用したのと同じ暗号キーを使用する必要があります。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) を呼び出してインポートすることもできます。API は、このオペレーションで DUKPT MAC、HMAC、および EMV MAC 暗号化キーをサポートします。

値が検証されると、レスポンスパラメータ `MacDataVerificationSuccessful` は `Http/200` を返し、検証されなかった場合は、`Http/400` を返すと共に、`Mac verification failed` を示すメッセージを表示します。

**Topics**
+ [HMAC の検証](#verify-mac-hmac)
+ [DUKPT CMAC を使用して MAC を検証する](#verify-mac-dukpt-cmac)

## HMAC の検証
<a name="verify-mac-hmac"></a>

この例では、HMAC `HMAC_SHA256` アルゴリズムと HMAC 暗号化キーを使用してカードデータ認証用の HMAC (ハッシュベースのメッセージ認証コード) を検証します。キーは KeyUsage を に設定`TR31_M7_HMAC_KEY`し、KeyModesOfUse を true `Verify`に設定する必要があります。

**Example**  

```
$ aws payment-cryptography-data verify-mac \ 
     --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \ 
     --message-data "3b343038383439303031303733393431353d32343038323236303030373030303f33" \ 
     --mac ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C \ 
     --verification-attributes Algorithm=HMAC_SHA256
```

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

## DUKPT CMAC を使用して MAC を検証する
<a name="verify-mac-dukpt-cmac"></a>

この例では、カードデータ認証に DUKPT (トランザクションあたりの派生一意キー) と CMAC を使用して MAC を検証します。キーは KeyUsage を に設定`TR31_B0_BASE_DERIVATION_KEY`し、KeyModesOfUse を true `DeriveKey`に設定する必要があります。DUKPT キーは、基本派生キー (BDK) とキーシリアル番号 (KSN) を使用して、トランザクションごとに一意のキーを取得します。DukptKeyVariant の値は、送信者と受信者の間で一致する必要があります。REQUEST は通常、ターミナルからバックエンド、バックエンドからターミナルへの VERIFY、および 1 つのキーを両方向に使用する場合の「IRECTIONAL」に使用されます。

**Example**  

```
$ aws payment-cryptography-data verify-mac \ 
     --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \ 
     --message-data "3b343038383439303031303733393431353d32343038323236303030373030303f33" \ 
     --mac D8E804EE74BF1D909A2C01C0BDE8EF34 \ 
     --verification-attributes DukptCmac='{"KeySerialNumber":"932A6E954ABB32DD00000001","DukptKeyVariant":"BIDIRECTIONAL"}'
```

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

# 暗号化オペレーション用の検証キー
<a name="crypto-ops-validkeys-ops"></a>

特定のキーは特定のオペレーションにのみ使用できます。また、オペレーションによってはキーを使用できるキーモードが制限される場合があります。以下の許可される組み合わせの説明をご覧ください。

**注記**  
組み合わせによっては許可されているものの、CVV コード `(generate)` を生成しても検証できないなど、使用できない状況が生じる場合があります。`(verify)`

**Topics**
+ [GenerateCardData](#w2aac15c31b9)
+ [VerifyCardData](#w2aac15c31c11)
+ [PIN データを生成 (VISA/ABA スキーム用)](#w2aac15c31c15)
+ [PIN データを生成 (用) `IBM3624`](#w2aac15c31c17)
+ [VerifyPinData (ビザ/ABA スキーム用)](#w2aac15c31c21)
+ [VerifyPinData (`IBM3624` 用)](#w2aac15c31c23)
+ [データを復号化する](#w2aac15c31c27)
+ [データを暗号化する](#w2aac15c31c33)
+ [PIN データ変換](#w2aac15c31c39)
+ [MAC の生成/検証](#crypto-ops-validkeys.generatemac)
+ [GenerateMacEmvPinChange](#crypto-ops-validkeys.generatemacemvpinchange)
+ [VerifyAuthRequestCryptogram](#w2aac15c31c51)
+ [インポート/エクスポートキー](#crypto-ops-validkeys.importexport)
+ [使用されていないキーのタイプ](#w2aac15c31c57)

## GenerateCardData
<a name="w2aac15c31b9"></a>


| API エンドポイント | 暗号化オペレーションまたはアルゴリズム | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | --- | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1C0\$1CARD\$1VERIFICATION\$1KEY |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1 Generate = true \$1,\$1 Generate = true, Verify = true \$1 | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1C0\$1CARD\$1VERIFICATION\$1KEY |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1 Generate = true \$1,\$1 Generate = true, Verify = true \$1 | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E6\$1EMV\$1MKEY\$1OTHER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1DeriveKey = true\$1 | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E4\$1EMV\$1MKEY\$1DYNAMIC\$1NUMBER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1DeriveKey = true\$1 | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E6\$1EMV\$1MKEY\$1OTHER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1DeriveKey = true\$1 | 

## VerifyCardData
<a name="w2aac15c31c11"></a>


| 暗号化オペレーションまたはアルゴリズム | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1C0\$1CARD\$1VERIFICATION\$1KEY |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1 Generate = true \$1,\$1 Generate = true, Verify = true \$1 | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1C0\$1CARD\$1VERIFICATION\$1KEY |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1 Generate = true \$1,\$1 Generate = true, Verify = true \$1 | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E6\$1EMV\$1MKEY\$1OTHER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1DeriveKey = true\$1 | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E4\$1EMV\$1MKEY\$1DYNAMIC\$1NUMBER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1DeriveKey = true\$1 | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E6\$1EMV\$1MKEY\$1OTHER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1DeriveKey = true\$1 | 

## PIN データを生成 (VISA/ABA スキーム用)
<a name="w2aac15c31c15"></a>

`VISA_PIN or VISA_PIN_VERIFICATION_VALUE`


| キータイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  PIN 暗号化キー  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  PIN 生成キー  |  TR31\$1V2\$1VISA\$1PIN\$1VERIFICATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## PIN データを生成 (用) `IBM3624`
<a name="w2aac15c31c17"></a>

`IBM3624_PIN_OFFSET,IBM3624_NATURAL_PIN,IBM3624_RANDOM_PIN, IBM3624_PIN_FROM_OFFSET)`


| キータイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  PIN 暗号化キー  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  IBM 3624\$1NATURAL\$1PIN、IBM 3624\$1RANDOM\$1PIN、IBM 3624\$1PIN\$1FROM\$1OFFSET 用 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) IBM 3624\$1PIN\$1OFFSET 用 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | 
|  PIN 生成キー  |  TR31\$1V1\$1IBM3624\$1PIN\$1VERIFICATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## VerifyPinData (ビザ/ABA スキーム用)
<a name="w2aac15c31c21"></a>

`VISA_PIN`


| キータイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  PIN 暗号化キー  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  PIN 生成キー  |  TR31\$1V2\$1VISA\$1PIN\$1VERIFICATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## VerifyPinData (`IBM3624` 用)
<a name="w2aac15c31c23"></a>

`IBM3624_PIN_OFFSET,IBM3624_NATURAL_PIN,IBM3624_RANDOM_PIN, IBM3624_PIN_FROM_OFFSET)`


| キータイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  PIN 暗号化キー  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  IBM 3624\$1NATURAL\$1PIN、IBM 3624\$1RANDOM\$1PIN、IBM 3624\$1PIN\$1FROM\$1OFFSET 用 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | 
|  PIN 検証キー  |  TR31\$1V1\$1IBM3624\$1PIN\$1VERIFICATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## データを復号化する
<a name="w2aac15c31c27"></a>


| キータイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  DUKPT  |  TR31\$1B0\$1BASE\$1DERIVATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  EMV  |  TR31\$1E1\$1EMV\$1MKEY\$1CONFIDENTIALITY TR31\$1E6\$1EMV\$1MKEY\$1OTHER  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | 
|  RSA  |  TR31\$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  対称キー  |  TR31\$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## データを暗号化する
<a name="w2aac15c31c33"></a>


| キータイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  DUKPT  |  TR31\$1B0\$1BASE\$1DERIVATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  EMV  |  TR31\$1E1\$1EMV\$1MKEY\$1CONFIDENTIALITY TR31\$1E6\$1EMV\$1MKEY\$1OTHER  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | 
|  RSA  |  TR31\$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  対称キー  |  TR31\$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## PIN データ変換
<a name="w2aac15c31c39"></a>


| Direction | キータイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | --- | 
|  インバウンドデータソース  |  DUKPT  |  TR31\$1B0\$1BASE\$1DERIVATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  インバウンドデータソース  |  DUKPT以外 (PEK、AWK、IWK など)  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  アウトバウンドデータターゲット  |  DUKPT  |  TR31\$1B0\$1BASE\$1DERIVATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  アウトバウンドデータターゲット  |  DUKPT以外 (PEK、IWK、AWK など)  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## MAC の生成/検証
<a name="crypto-ops-validkeys.generatemac"></a>

 MAC キーは、メッセージ/データ本文の暗号化ハッシュを作成するために使用されます。一致するオペレーションを実行できないため、キーモードが制限されたキーを作成することはお勧めしません。ただし、他のシステムがオペレーションペアの残りの半分を実行することを意図している場合、1 つのオペレーションのみでキーをインポート/エクスポートできます。


| 許可されたキーの使用 | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  MAC キー   |  TR31\$1M1\$1ISO\$19797\$11\$1MAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  MAC キー (小売 MAC)   |  TR31\$1M1\$1ISO\$19797\$13\$1MAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  MAC キー (CMAC)   |  TR31\$1M6\$1ISO\$19797\$15\$1CMAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  MAC キー (HMAC)   |  TR31\$1M7\$1HMAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  MAC キー (AS2805)   |  TR31\$1M0\$1ISO\$116609\$1MAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## GenerateMacEmvPinChange
<a name="crypto-ops-validkeys.generatemacemvpinchange"></a>

 GenerateMacEmvPinChange は、EMV オフライン PIN 変更オペレーションの MAC 生成と PIN 暗号化を組み合わせます。このオペレーションには、MAC 生成用の整合性キーと PIN 暗号化用の機密性キーの 2 つの異なるキータイプが必要です。


| キータイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  Secure Messaging Integrity キー   |  TR31\$1E2\$1EMV\$1MKEY\$1INTEGRITY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Secure Messaging の機密性キー   |  TR31\$1E1\$1EMV\$1MKEY\$1CONFIDENTIALITY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  現在の PIN PEK (PIN 暗号化キー)   |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  新しい PIN PEK (PIN 暗号化キー)   |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  ARQC キー   Visa および Amex 取得スキームにのみ適用されます。   |  TR31\$1E0\$1EMV\$1MKEY\$1APP\$1CRYPTOGRAMS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## VerifyAuthRequestCryptogram
<a name="w2aac15c31c51"></a>


| 許可されたキーの使用 | EMV オプション | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  TR31\$1E0\$1EMV\$1MKEY\$1APP\$1CRYPTOGRAMS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## インポート/エクスポートキー
<a name="crypto-ops-validkeys.importexport"></a>


| オペレーションのタイプ | 許可されたキーの使用 | 許可されたキーアルゴリズム | 許可されたキーモードの組み合わせ | 
| --- | --- | --- | --- | 
|  TR-31 ラップキー  |  TR31\$1K1\$1KEY\$1BLOCK\$1PROTECTION\$1KEY TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  信頼された CA のインポート  |  TR31\$1S0\$1ASYMMETRIC\$1KEY\$1FOR\$1DIGITAL\$1SIGNATURE  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  非対称暗号化用のパブリックキー証明書のインポート  |  TR31\$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  ECDH などのキーアグリーメントアルゴリズムに使用されるキー  |  TR31\$1K3\$1ASYMMETRIC\$1KEY\$1FOR\$1KEY\$1AGREEMENT  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## 使用されていないキーのタイプ
<a name="w2aac15c31c57"></a>

以下のキータイプは現在 AWS Payment Cryptography では使用されていません
+  TR31\$1P1\$1PIN\$1GENERATION\$1KEY 