

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

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

オーストラリア標準 2805 (AS2805) は、主にカードベースの支払い取引に使用される電子送金の標準です。オーストラリア[標準規格](https://www.standards.org.au/)によって管理されています。この標準は、メッセージ形式から暗号化標準まで、さまざまなトピックをカバーする 6 冊の本で構成されています。

パート 6 では、host-to-host (node-to-node) 通信や関連する暗号化要件など、キー管理に関するガイダンスを提供しますが、その他の側面については他の部分で説明します。この標準の暗号化はすべて、現在 TDES に基づいています。

**注記**  
 AS2805 は現在、ap-southeast-2 リージョンで使用できます。近い将来、追加のリージョンに展開される予定です。

AS2805 には、他の実装といくつかの違いがあります。以下に要約します。

*キー保護*  
TR-31/X9.143 などのキーブロックではなくキーバリアントに依存します。 AWS Payment Cryptography は、すべてのキーを内部的にキーブロックとして保存しますが、AS2805 で定義されたバリアントを使用したインポート、エクスポート、計算を許可します。

*一方向キー*  
AS2805 では、単方向キーの使用が義務付けられています。両方のノードがメッセージ認証コード (MAC) を生成する必要がある場合は、2 つのキーを使用します。

*ピンブロック*  
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 の 2 つのノードがある場合、次の例は 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 (複数可) は、送信側がキーを保護/ラップして node2 に送信する必要がある場合に使用される送信側キーを指します。KEK(r) は、反対側 (node2) 側で作成されたキーです。

**注記**  
これらの用語は相対的です。一方の側がキーを作成し (送信側）、もう一方の側がキーを受け取ります。したがって、KEY1 を指定すると、node1 では KEK (複数可）、node2 では KEK (r) と呼ばれます。

 AS2805 の KEK は常にキータイプ = 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/ja_jp/payment-cryptography/latest/userguide/images/as2805/kek_validation.png)


サービス (node1) が node2 に接続すると、各側は KEK 検証と呼ばれるプロセスを使用した後続のオペレーションに同じ KEK を使用していることを確認します。

**1. 最初のキーを検証するステップ**

**1.1 KRs受信**  
Node2 は KRs を生成し、ログオンプロセスの一環として送信します。Payment Cryptography AWS を使用して、この値または別のソリューションを生成できます。

**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 番目のキーを検証するステップ**

**2.1 KRr と KRs を生成する**  
Payment Cryptography を使用して、ノードはランダムな値とこの値の反転 (反転) AWS コピーを生成します。サービスは、KEK (複数可) によってラップされたこれらの値の両方を出力します。これらは KR (複数可) および 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 node2 に KRsを送信する**  
KRsします。後で検証できるように KRr を保持します。

**2.3 Node2 が KEK 検証レスポンスを生成する**  
Node2 は KEKr と KRs を使用し、KRr を生成してサービスに送り返します。

**2.4 レスポンスを検証する**  
ステップ 1 の KRr とステップ 3 から返された値を比較します。一致する場合は、続行します。

# 作業キーの作成と送信
<a name="as2805.workingkeys.create"></a>

AS2805 で使用される一般的な作業キーには、次の 2 つのキーセットが含まれます。

ゾーンピンキー (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 (複数可) や ZAK (r) など、同じタイプの当事者間に 2 つのキーが存在する可能性があります。

これらの形式でインポートおよびエクスポートする追加のパラメータは、 コマンドで指定します。

```
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 コマンドの生成と検証は、MACs、CMAC、EMV MAC など、さまざまな 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"
}
```