

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Schlüssel importieren und exportieren
<a name="keys-importexport"></a>

Sie können AWS Payment Cryptography Keys aus anderen Lösungen importieren und in andere Lösungen exportieren, z. B. HSMs Viele Kunden tauschen Schlüssel mithilfe von Import- und Exportfunktionen mit Dienstanbietern aus. Wir haben die AWS Zahlungskryptografie so konzipiert, dass sie einen modernen, elektronischen Ansatz für die Schlüsselverwaltung verwendet, der Ihnen hilft, die Einhaltung von Vorschriften und Kontrollen aufrechtzuerhalten. Wir empfehlen die Verwendung eines standardbasierten elektronischen Schlüsselaustauschs anstelle von Schlüsselkomponenten auf Papierbasis.

**Minimale Schlüsselstärken und Auswirkung auf Import- und Exportfunktionen**  
PCI erfordert bestimmte Mindestschlüsselstärken für kryptografische Operationen, Schlüsselspeicherung und Schlüsselübertragung. Diese Anforderungen können sich ändern, wenn die PCI-Standards überarbeitet werden. Die Regeln legen fest, dass Wrapping-Schlüssel, die für die Speicherung oder den Transport verwendet werden, mindestens so stark sein müssen wie der zu schützende Schlüssel. Wir setzen diese Anforderung beim Export automatisch durch und verhindern, dass Schlüssel durch schwächere Schlüssel geschützt werden, wie in der folgenden Tabelle dargestellt.  
In der folgenden Tabelle sind die unterstützten Kombinationen von Schlüsseln, zu schützenden Schlüsseln und Schutzmethoden aufgeführt.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/keys-importexport.html)
Weitere Informationen finden Sie in [Anhang D — Minimale und äquivalente Schlüsselgrößen und Stärken zugelassener Algorithmen](https://docs-prv.pcisecuritystandards.org/PTS/Derived%20Test%20Requirements/PCI_HSM_DTRs_v4.pdf) in den PCI-HSM-Standards. 

**Austausch des Schlüsselverschlüsselungsschlüssels (KEK)**  
Wir empfehlen die Verwendung des [ANSI X9.24](terminology.md#terms.tr34) TR-34-Standards. Dieser anfängliche Schlüsseltyp kann als Key Encryption Key (KEK), Zone Master Key (ZMK) oder Zone Control Master Key (ZCMK) bezeichnet werden. [Wenn Ihre Systeme oder Partner TR-34 noch nicht unterstützen, können Sie RSA Wrap/Unwrap verwenden.](terminology.md#terms.rsawrap) [Wenn Sie den Austausch von AES-256-Schlüsseln benötigen, können Sie ECDH verwenden.](terminology.md#terms.ecdh)   
Wenn Sie die Verarbeitung von Schlüsselkomponenten in paper fortsetzen müssen, bis alle Partner den elektronischen Schlüsselaustausch unterstützen, sollten Sie erwägen, ein Offline-HSM zu verwenden oder einen [Schlüsselverwahrer eines Drittanbieters als](terminology.md#terms.kcaas) Service in Anspruch zu nehmen.  
Um Ihre eigenen Testschlüssel zu importieren oder Schlüssel mit Ihren vorhandenen zu synchronisieren HSMs, lesen Sie bitte den Beispielcode für AWS Zahlungskryptografie unter. [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export) 

**Working Key (WK) Exchange**  
Wir verwenden Industriestandards ([ANSI X9.24 TR 31-2018 und X9.143](terminology.md#terms.tr31)) für den Austausch von Arbeitsschlüsseln. Dies setzt voraus, dass Sie bereits einen KEK mit TR-34, RSA Wrap, ECDH oder ähnlichen Schemata ausgetauscht haben. Dieser Ansatz erfüllt die PCI-PIN-Anforderung, Schlüsselmaterial jederzeit kryptografisch an seinen Typ und seine Verwendung zu binden. Zu den Arbeitsschlüsseln gehören Acquirer-Arbeitsschlüssel, Issuer-Arbeitsschlüssel, BDK und IPEK. 

**Topics**
+ [Schlüssel importieren](keys-import.md)
+ [Schlüssel exportieren](keys-export.md)
+ [Fortgeschrittene Themen](keyexchange-advanced.md)

# Schlüssel importieren
<a name="keys-import"></a>

**Wichtig**  
 Beispiele erfordern die neueste Version von AWS CLI V2. Bevor Sie beginnen, stellen Sie sicher, dass Sie auf die [neueste Version](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) aktualisiert haben. 

**Contents**
+ [Einführung in das Importieren von Schlüsseln](#keys-import-introduction)
+ [Symmetrische Schlüssel importieren](#keys-import-symmetric)
  + [Schlüssel mithilfe asymmetrischer Techniken importieren (TR-34)](#keys-import-tr34)
  + [Importieren Sie Schlüssel mithilfe asymmetrischer Techniken (ECDH)](#keys-import-ecdh)
  + [Importieren Sie Schlüssel mithilfe asymmetrischer Techniken (RSA Unwrap)](#keys-import-rsaunwrap)
  + [Importieren Sie symmetrische Schlüssel mithilfe eines vorab festgelegten Schlüsselaustauschschlüssels (TR-31)](#keys-import-tr31)
+ [Import asymmetrischer (RSA, ECC) öffentlicher Schlüssel](#keys-import-asymmetric)
  + [Öffentliche RSA-Schlüssel werden importiert](#keys-import-rsapublickey)
  + [Öffentliche ECC-Schlüssel werden importiert](#keys-import-eccpublickey)

## Einführung in das Importieren von Schlüsseln
<a name="keys-import-introduction"></a>

**Anmerkung**  
Beim Import von Schlüsseln mit X9.143-, TR-31- oder TR-34-Schlüsselblöcken behält AWS Payment Cryptography in der Regel optionale Header bei (verwendet sie jedoch nicht). Der HM-Header (HMAC Hash Type) wird bei kryptografischen Vorgängen verwendet. Der KP-Header (KCV oder Wrapping Key) ist spezifisch für den Importvorgang und wird nicht beibehalten. 

Beim Schlüsselaustausch mit einer Gegenpartei erfolgt in der Regel zunächst der Austausch eines Schlüsselaustauschschlüssels (KEK). Dieser Schlüssel wird dann verwendet, um nachfolgende Schlüssel zu schützen. Unter Verwendung elektronischer Formate kann der KEK mithilfe asymmetrischer Techniken wie TR-34, ECDH oder RSA Wrap ausgetauscht werden. Nachfolgende Schlüssel werden über einen symmetrischen Schlüsselaustausch wie TR-31 ausgetauscht. Dieser KEK wird langlebig sein und möglicherweise nur alle paar Jahre aktualisiert, je nach den Richtlinien und der festgelegten Kryptoperiode. 

Wenn nur ein oder zwei Schlüssel ausgetauscht werden, können Sie auch asymmetrische Techniken verwenden, um diesen Schlüssel direkt auszutauschen, z. B. einen BDK. AWS Die Zahlungskryptografie unterstützt beide Methoden des Schlüsselaustauschs.

## Symmetrische Schlüssel importieren
<a name="keys-import-symmetric"></a>

### Schlüssel mithilfe asymmetrischer Techniken importieren (TR-34)
<a name="keys-import-tr34"></a>

![\[AWS Prozess zum Importieren von Verschlüsselungsschlüsseln für Zahlungen\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/images/keyimport-process-kek-import.png)


 TR-34 verwendet asymmetrische RSA-Kryptografie, um symmetrische Schlüssel für den Austausch zu verschlüsseln und zu signieren. Dadurch wird sowohl die Vertraulichkeit (Verschlüsselung) als auch die Integrität (Signatur) des verpackten Schlüssels gewährleistet. 

 Um Ihre eigenen Schlüssel zu importieren, schauen Sie sich das Beispielprojekt AWS Payment Cryptography auf an [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export). Anweisungen zum Verwenden von import/export Schlüsseln von anderen Plattformen finden Sie im Beispielcode [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export)oder im Benutzerhandbuch für diese Plattformen. 

1. 

****Rufen Sie den Befehl Import initialisieren auf****  
Rufen Sie `get-parameters-for-import` auf, um den Importvorgang zu initialisieren. Diese API generiert ein key pair für Schlüsselimporte, signiert den Schlüssel und gibt das Zertifikat und den Zertifikatsstamm zurück. Verschlüsseln Sie den zu exportierenden Schlüssel mit diesem Schlüssel. In der TR-34-Terminologie wird dies als KRD-Zertifikat bezeichnet. Diese Zertifikate sind Base64-kodiert, kurzlebig und nur für diesen Zweck bestimmt. Speichern Sie den Wert. `ImportToken` 

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

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

1. 

****Installieren Sie das öffentliche Zertifikat auf dem Schlüsselquellsystem****  
In den meisten HSMs Fällen müssen Sie das in Schritt 1 generierte öffentliche Zertifikat installieren, laden oder als vertrauenswürdig einstufen, um damit Schlüssel exportieren zu können. Dies kann je nach HSM die gesamte Zertifikatskette oder nur das Stammzertifikat aus Schritt 1 umfassen. 

1. 

****Generieren Sie ein key pair auf dem Quellsystem und stellen Sie die Zertifikatskette für die AWS Zahlungskryptografie bereit****  
Um die Integrität der übertragenen Nutzdaten zu gewährleisten, signiert die sendende Partei (Key Distribution Host oder KDH) sie. Generieren Sie zu diesem Zweck einen öffentlichen Schlüssel und erstellen Sie ein Public-Key-Zertifikat (X509), das Sie der Zahlungskryptografie zur Verfügung stellen können AWS . 

    Wenn Sie Schlüssel von einem HSM übertragen, erstellen Sie ein key pair auf diesem HSM. Das HSM, ein Drittanbieter oder ein Dienst, der das Zertifikat generieren AWS Private CA kann. 

   Laden Sie das Stammzertifikat mithilfe der `importKey` Befehle mit KeyMaterialType of `RootCertificatePublicKey` und KeyUsageType of in AWS Payment Cryptography. `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE` 

   Verwenden Sie für Zwischenzertifikate den `importKey` Befehl mit KeyMaterialType of `TrustedCertificatePublicKey` und KeyUsageType of`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. Wiederholen Sie diesen Vorgang für mehrere Zwischenzertifikate. Verwenden Sie das Zertifikat `KeyArn` des letzten importierten Zertifikats in der Kette als Eingabe für nachfolgende Importbefehle. 
**Anmerkung**  
Importieren Sie das Leaf-Zertifikat nicht. Geben Sie es direkt während des Importbefehls an.

1. 

****Schlüssel aus dem Quellsystem exportieren****  
Viele HSMs und verwandte Systeme unterstützen den Export von Schlüsseln gemäß der TR-34-Norm. Geben Sie den öffentlichen Schlüssel aus Schritt 1 als KRD-Zertifikat (Verschlüsselung) und den Schlüssel aus Schritt 3 als KDH-Zertifikat (Signierzertifikat) an. Geben Sie für den Import in AWS Payment Cryptography das Format TR-34.2012 ohne CMS Two-Pass-Format an, das auch als TR-34 Diebold-Format bezeichnet werden kann. 

1. 

****Rufen Sie Import Key auf****  
Rufen Sie die ImportKey-API mit einem KeyMaterialType von auf. `TR34_KEY_BLOCK` Verwenden Sie den KeyARN der letzten in Schritt 3 importierten CA für`certificate-authority-public-key-identifier`, das verpackte Schlüsselmaterial aus Schritt 4 für `key-material` und das Leaf-Zertifikat aus Schritt 3 für. `signing-key-certificate` Fügen Sie das Import-Token aus Schritt 1 hinzu. 

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

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

1. 

****Verwenden Sie den importierten Schlüssel für kryptografische Operationen oder nachfolgenden Import****  
Wenn der importierte Schlüssel TR31 \$1K0\$1KEY\$1ENCRYPTION\$1KEY KeyUsage war, können Sie diesen Schlüssel für nachfolgende Schlüsselimporte mit TR-31 verwenden. Bei anderen Schlüsseltypen (wie TR31 \$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY) können Sie den Schlüssel direkt für kryptografische Operationen verwenden. 

### Importieren Sie Schlüssel mithilfe asymmetrischer Techniken (ECDH)
<a name="keys-import-ecdh"></a>

![\[AWS Verfahren zum Importieren von Verschlüsselungsschlüsseln für Zahlungen mithilfe von ECDH\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/images/keyimport-ecdh-import.png)


Elliptic Curve Diffie-Hellman (ECDH) verwendet asymmetrische ECC-Kryptografie, um einen gemeinsamen Schlüssel zwischen zwei Parteien einzurichten, ohne dass zuvor ausgetauschte Schlüssel erforderlich sind. ECDH-Schlüssel sind kurzlebig und werden daher von Payment Cryptography nicht gespeichert. AWS Bei diesem Prozess wird mithilfe von ECDH ein einmaliges [KBPK/KEK abgeleitet](terminology.md#terms.kbpk). Dieser abgeleitete Schlüssel wird sofort verwendet, um den eigentlichen Schlüssel zu umschließen, den Sie übertragen möchten. Dabei kann es sich um einen anderen KBPK-, IPEK-Schlüssel oder andere Schlüsseltypen handeln. 

Beim Import wird das sendende System allgemein als Party U (Initiator) und die AWS Zahlungskryptografie als Party V (Responder) bezeichnet. 

**Anmerkung**  
 ECDH kann zwar für den Austausch aller symmetrischen Schlüsseltypen verwendet werden, ist jedoch die einzige Methode, mit der AES-256-Schlüssel sicher übertragen werden können. 

1. 

****ECC-Schlüsselpaar generieren****  
Rufen Sie `create-key` auf, um ein ECC-Schlüsselpaar für diesen Prozess zu erstellen. Diese API generiert ein key pair für Schlüsselimporte oder -exporte. Geben Sie bei der Erstellung an, welche Art von Schlüsseln mit diesem ECC-Schlüssel abgeleitet werden können. Wenn Sie ECDH zum Austauschen (Umschließen) anderer Schlüssel verwenden, verwenden Sie den Wert. `TR31_K1_KEY_BLOCK_PROTECTION_KEY`
**Anmerkung**  
 ECDH auf niedriger Ebene generiert zwar einen abgeleiteten Schlüssel, der für jeden Zweck verwendet werden kann, aber die AWS Zahlungskryptografie begrenzt die versehentliche Wiederverwendung eines Schlüssels für mehrere Zwecke, indem ein Schlüssel nur für einen einzigen abgeleiteten Schlüsseltyp verwendet werden kann. 

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

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

1. 

****Holen Sie sich ein Public-Key-Zertifikat****  
Rufen Sie an`get-public-key-certificate`, um den öffentlichen Schlüssel als X.509-Zertifikat zu erhalten, das von der Zertifizierungsstelle Ihres Kontos signiert wurde und für die AWS Zahlungskryptografie in einer bestimmten Region spezifisch ist.  
**Example**  

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

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

1. 

****Installieren Sie das öffentliche Zertifikat auf dem System der Gegenpartei (Partei U)****  
Bei vielen HSMs müssen Sie das in Schritt 1 generierte öffentliche Zertifikat installieren, laden oder als vertrauenswürdig einstufen, um damit Schlüssel exportieren zu können. Dies kann je nach HSM die gesamte Zertifikatskette oder nur das Stammzertifikat aus Schritt 1 umfassen. Weitere Informationen finden Sie in Ihrer HSM-Dokumentation.

1. 

****Generieren Sie ein ECC-Schlüsselpaar auf dem Quellsystem und stellen Sie die Zertifikatskette für die AWS Zahlungskryptografie bereit****  
In ECDH generiert jede Partei ein key pair und einigt sich auf einen gemeinsamen Schlüssel. Damit AWS Payment Cryptography den Schlüssel ableiten kann, benötigt sie den öffentlichen Schlüssel der Gegenpartei im öffentlichen X.509-Schlüsselformat.

   Wenn Sie Schlüssel von einem HSM übertragen, erstellen Sie ein key pair auf diesem HSM. Für HSMs die Unterstützung von Schlüsselblöcken sieht der Schlüsselheader ähnlich aus wie. `D0144K3EX00E0000` Bei der Erstellung des Zertifikats generieren Sie in der Regel eine CSR auf dem HSM und dann das HSM, ein Drittanbieter oder ein Dienst, der das Zertifikat generieren AWS Private CA kann.

   Laden Sie das Stammzertifikat mithilfe der `importKey` Befehle mit KeyMaterialType of und of in AWS Payment Cryptography. `RootCertificatePublicKey` KeyUsageType `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`

   Verwenden Sie für Zwischenzertifikate den `importKey` Befehl mit KeyMaterialType of `TrustedCertificatePublicKey` und KeyUsageType of`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. Wiederholen Sie diesen Vorgang für mehrere Zwischenzertifikate. Verwenden Sie das Zertifikat `KeyArn` des letzten importierten Zertifikats in der Kette als Eingabe für nachfolgende Importbefehle.
**Anmerkung**  
Importieren Sie das Leaf-Zertifikat nicht. Geben Sie es direkt während des Importbefehls an.

1. 

****Leiten Sie einen Einmalschlüssel mithilfe von ECDH auf Party U HSM ab****  
Viele HSMs und verwandte Systeme unterstützen die Einrichtung von Schlüsseln mithilfe von ECDH. Geben Sie den öffentlichen Schlüssel aus Schritt 1 als öffentlichen Schlüssel und den Schlüssel aus Schritt 3 als privaten Schlüssel an. Zulässige Optionen, wie z. B. Ableitungsmethoden, finden Sie im [API-Leitfaden](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportDiffieHellmanTr31KeyBlock.html). 
**Anmerkung**  
 Die Ableitungsparameter wie der Hashtyp müssen auf beiden Seiten exakt übereinstimmen. Andernfalls generieren Sie einen anderen Schlüssel. 

1. 

****Schlüssel aus dem Quellsystem exportieren****  
Exportieren Sie abschließend den Schlüssel, den Sie mit den AWS TR-31-Standardbefehlen nach Payment Cryptography transportieren möchten. Geben Sie den von ECDH abgeleiteten Schlüssel als KBPK an. Der zu exportierende Schlüssel kann ein beliebiger TDES- oder AES-Schlüssel sein, der TR-31-gültigen Kombinationen unterliegt, sofern der Wrapping-Schlüssel mindestens so stark ist wie der zu exportierende Schlüssel. 

1. 

****Rufen Sie Import Key auf****  
Rufen Sie die `import-key` API mit einem KeyMaterialType von auf auf auf`DiffieHellmanTr31KeyBlock`. Verwenden Sie den KeyARN der letzten in Schritt 3 importierten CA für`certificate-authority-public-key-identifier`, das verpackte Schlüsselmaterial aus Schritt 4 für `key-material` und das Leaf-Zertifikat aus Schritt 3 für`public-key-certificate`. Fügen Sie den privaten Schlüssel ARN aus Schritt 1 hinzu.

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

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

1. 

****Verwenden Sie den importierten Schlüssel für kryptografische Operationen oder nachfolgenden Import****  
Wenn der importierte Schlüssel TR31 \$1K0\$1KEY\$1ENCRYPTION\$1KEY KeyUsage war, können Sie diesen Schlüssel für nachfolgende Schlüsselimporte mit TR-31 verwenden. Bei anderen Schlüsseltypen (wie TR31 \$1D0\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY) können Sie den Schlüssel direkt für kryptografische Operationen verwenden.

### Importieren Sie Schlüssel mithilfe asymmetrischer Techniken (RSA Unwrap)
<a name="keys-import-rsaunwrap"></a>

 Überblick: AWS Payment Cryptography unterstützt RSA wrap/unwrap für den Schlüsselaustausch, wenn TR-34 nicht möglich ist. Wie TR-34 verwendet diese Technik asymmetrische RSA-Kryptografie, um symmetrische Schlüssel für den Austausch zu verschlüsseln. Im Gegensatz zu TR-34 muss bei dieser Methode die sendende Partei die Nutzdaten jedoch nicht signieren. Außerdem gewährleistet diese RSA-Wrap-Technik nicht die Integrität der wichtigsten Metadaten während der Übertragung, da sie keine Schlüsselblöcke enthält. 

**Anmerkung**  
 Sie können RSA Wrap verwenden, um TDES- und AES-128-Schlüssel zu importieren oder zu exportieren. 

1. 

****Rufen Sie den Befehl Import initialisieren auf****  
Rufen Sie **get-parameters-for-import** auf, um den Importvorgang mit einem `KeyMaterialType` von zu initialisieren. `KEY_CRYPTOGRAM` Wird `RSA_2048` für `WrappingKeyAlgorithm` beim Austausch von TDES-Schlüsseln verwendet. Verwenden Sie `RSA_3072` oder `RSA_4096` beim Austausch von TDES- oder AES-128-Schlüsseln. Diese API generiert ein key pair für Schlüsselimporte, signiert den Schlüssel mit einem Zertifikatsstamm und gibt sowohl das Zertifikat als auch den Zertifikatsstamm zurück. Verschlüsseln Sie den zu exportierenden Schlüssel mit diesem Schlüssel. Diese Zertifikate sind kurzlebig und nur für diesen Zweck bestimmt. 

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

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

1. 

****Installieren Sie das öffentliche Zertifikat auf dem Schlüsselquellsystem****  
Bei vielen HSMs müssen Sie das in Schritt 1 generierte öffentliche Zertifikat (und/oder sein Stammzertifikat) installieren, laden oder als vertrauenswürdig einstufen, um damit Schlüssel exportieren zu können. 

1. 

****Schlüssel aus dem Quellsystem exportieren****  
Viele HSMs und verwandte Systeme unterstützen den Export von Schlüsseln mithilfe von RSA Wrap. Geben Sie den öffentlichen Schlüssel aus Schritt 1 als Verschlüsselungszertifikat () `WrappingKeyCertificate` an. Wenn Sie die Vertrauenskette benötigen, verwenden Sie die `WrappingKeyCertificateChain` aus Schritt 1. Wenn Sie den Schlüssel aus Ihrem HSM exportieren, geben Sie als Format RSA mit Padding Mode = PKCS \$11 v2.2 OAEP (mit SHA 256 oder SHA 512) an. 

1. 

****Rufen Sie an **import-key******  
Rufen Sie die **import-key** API mit einem `KeyMaterialType` von auf auf auf auf`KeyMaterial`. Sie benötigen das `ImportToken` aus Schritt 1 und das `key-material` (verpackte Schlüsselmaterial) aus Schritt 3. Geben Sie die wichtigsten Parameter an (z. B. die Schlüsselverwendung), da RSA Wrap keine Schlüsselblöcke verwendet. 

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

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

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

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

1. 

****Verwenden Sie den importierten Schlüssel für kryptografische Operationen oder nachfolgenden Import****  
Wenn der importierte Schlüssel `TR31_K0_KEY_ENCRYPTION_KEY` oder `KeyUsage` war`TR31_K1_KEY_BLOCK_PROTECTION_KEY`, können Sie diesen Schlüssel für nachfolgende Schlüsselimporte mit TR-31 verwenden. Wenn es sich bei dem Schlüsseltyp um einen anderen Typ handelt (z. B.`TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`), können Sie den Schlüssel direkt für kryptografische Operationen verwenden. 

### Importieren Sie symmetrische Schlüssel mithilfe eines vorab festgelegten Schlüsselaustauschschlüssels (TR-31)
<a name="keys-import-tr31"></a>

![\[AWS Importprozess für symmetrische Schlüssel im Zahlungskryptografiebereich\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/images/keyimport-process-wk-import.png)


Beim Austausch mehrerer Schlüssel oder bei der Unterstützung der Schlüsselrotation tauschen die Partner in der Regel zunächst einen Initial Key Encryption Key (KEK) aus. Sie können dazu Techniken wie Schlüsselkomponenten auf paper oder, für AWS Zahlungskryptografie, [TR-34](#keys-import-tr34) verwenden.

 Nachdem Sie einen KEK eingerichtet haben, können Sie ihn verwenden, um nachfolgende Schlüssel (einschließlich anderer) zu transportieren. KEKs AWS Die Zahlungskryptografie unterstützt diesen Schlüsselaustausch mithilfe von ANSI TR-31, das von HSM-Anbietern häufig verwendet und unterstützt wird. 

1. 

****Schlüsselverschlüsselungsschlüssel (KEK) importieren****  
Stellen Sie sicher, dass Sie Ihren KEK bereits importiert haben und dass der KeyARN (oder KeyAlias) verfügbar ist.

1. 

****Schlüssel auf der Quellplattform erstellen****  
Wenn der Schlüssel nicht existiert, erstellen Sie ihn auf der Quellplattform. Alternativ können Sie den Schlüssel in AWS Payment Cryptography erstellen und den **export** Befehl verwenden. 

1. 

****Schlüssel von der Quellplattform exportieren****  
Geben Sie beim Exportieren das Exportformat als TR-31 an. Die Quellplattform fragt nach dem zu exportierenden Schlüssel und dem zu verwendenden Verschlüsselungsschlüssel. 

1. 

****In AWS Payment Cryptography importieren****  
Verwenden Sie beim Aufrufen des **import-key** Befehls den KeyARN (oder Alias) Ihres Schlüssels für. `WrappingKeyIdentifier` Verwenden Sie die Ausgabe der Quellplattform für`WrappedKeyBlock`.   
**Example**  

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

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

## Import asymmetrischer (RSA, ECC) öffentlicher Schlüssel
<a name="keys-import-asymmetric"></a>

Alle importierten Zertifikate müssen mindestens so stark sein wie ihr ausstellendes (Vorgänger-) Zertifikat in der Kette. Das bedeutet, dass eine RSA\$12048-CA nur zum Schutz eines RSA\$12048-Blattzertifikats verwendet werden kann und dass ein ECC-Zertifikat durch ein anderes ECC-Zertifikat gleicher Stärke geschützt werden muss. Ein ECC P384-Zertifikat kann nur von einer P384- oder P521-CA ausgestellt werden. Alle Zertifikate dürfen zum Zeitpunkt des Imports noch nicht abgelaufen sein. 

### Öffentliche RSA-Schlüssel werden importiert
<a name="keys-import-rsapublickey"></a>

AWS Payment Cryptography unterstützt den Import öffentlicher RSA-Schlüssel als X.509-Zertifikate. Um ein Zertifikat zu importieren, importieren Sie zunächst das Stammzertifikat. Alle Zertifikate dürfen zum Zeitpunkt des Imports noch nicht abgelaufen sein. Das Zertifikat sollte im PEM-Format vorliegen und Base64-kodiert sein. 

1. 

****Importieren Sie das Stammzertifikat in Payment Cryptography AWS****  
Verwenden Sie den folgenden Befehl, um das Stammzertifikat zu importieren:  
**Example**  

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

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

1. 

****Importieren Sie das Public-Key-Zertifikat in die AWS Zahlungskryptografie****  
Sie können jetzt einen öffentlichen Schlüssel importieren. Da TR-34 und ECDH darauf angewiesen sind, das Leaf-Zertifikat zur Laufzeit zu übergeben, wird diese Option nur verwendet, wenn Daten mit einem öffentlichen Schlüssel aus einem anderen System verschlüsselt werden. KeyUsage wird auf \$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION gesetzt. TR31  
**Example**  

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

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

### Öffentliche ECC-Schlüssel werden importiert
<a name="keys-import-eccpublickey"></a>

AWS Payment Cryptography unterstützt den Import von öffentlichen ECC-Schlüsseln als X.509-Zertifikate. Um ein Zertifikat zu importieren, importieren Sie zunächst das Root-CA-Zertifikat und alle Zwischenzertifikate. Alle Zertifikate dürfen zum Zeitpunkt des Imports noch nicht abgelaufen sein. Das Zertifikat sollte im PEM-Format vorliegen und Base64-kodiert sein.

1. 

****Importieren Sie das ECC-Root-Zertifikat in Payment Cryptography AWS****  
Verwenden Sie den folgenden Befehl, um das Stammzertifikat zu importieren:  
**Example**  

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

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

1. 

****Zwischenzertifikat in AWS Payment Cryptography importieren****  
Verwenden Sie den folgenden Befehl, um ein Zwischenzertifikat zu importieren:  
**Example**  

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

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

1. 

****Importieren Sie das Public-Key-Zertifikat (Leaf) in die AWS Zahlungskryptografie****  
 Obwohl Sie ein Leaf-ECC-Zertifikat importieren können, gibt es in AWS Payment Cryptography derzeit außer der Speicherung keine definierten Funktionen dafür. Das liegt daran, dass bei der Verwendung von ECDH-Funktionen das Leaf-Zertifikat zur Laufzeit übergeben wird. 

# Schlüssel exportieren
<a name="keys-export"></a>

**Contents**
+ [Exportieren Sie symmetrische Schlüssel](#keys-export-symmetric)
  + [Exportieren Sie Schlüssel mithilfe asymmetrischer Techniken (TR-34)](#keys-export-tr34)
  + [Exportieren Sie Schlüssel mithilfe asymmetrischer Techniken (ECDH)](#keys-export-ecdh)
  + [Exportieren Sie Schlüssel mithilfe asymmetrischer Techniken (RSA Wrap)](#keys-export-rsawrap)
  + [Exportieren Sie symmetrische Schlüssel mithilfe eines vorab festgelegten Schlüsselaustauschschlüssels (TR-31)](#keys-export-tr31)
+ [Exportieren Sie die DUKPT-Anfangsschlüssel (IPEK/IK)](#keys-export-ipek)
+ [Geben Sie die Header der Schlüsselblöcke für den Export an](#keys-export-optionalheaders)
  + [Allgemeine Header](#keys-export-commonheaders)
+ [Exportieren Sie asymmetrische (RSA) Schlüssel](#keys-export-publickey)

## Exportieren Sie symmetrische Schlüssel
<a name="keys-export-symmetric"></a>

**Wichtig**  
 Stellen Sie sicher, dass Sie die neueste Version von haben, AWS CLI bevor Sie beginnen. Informationen zum Upgrade finden Sie unter [Installation von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). 

### Exportieren Sie Schlüssel mithilfe asymmetrischer Techniken (TR-34)
<a name="keys-export-tr34"></a>

TR-34 verwendet asymmetrische RSA-Kryptografie, um symmetrische Schlüssel für den Austausch zu verschlüsseln und zu signieren. Die Verschlüsselung schützt die Vertraulichkeit, während die Signatur die Integrität gewährleistet. Wenn Sie Schlüssel exportieren, fungiert AWS Payment Cryptography als Key Distribution Host (KDH), und Ihr Zielsystem wird zum Schlüsselempfangsgerät (KRD).

**Anmerkung**  
Wenn Ihr HSM den TR-34-Export, aber keinen TR-34-Import unterstützt, empfehlen wir Ihnen, zunächst mithilfe von TR-34 einen gemeinsamen KEK zwischen Ihrem HSM und Payment Cryptography einzurichten. AWS Anschließend können Sie TR-31 verwenden, um Ihre verbleibenden Schlüssel zu übertragen.

1. 

****Initialisieren Sie den Exportvorgang****  
Führen Sie aus**get-parameters-for-export**, um ein key pair für Schlüsselexporte zu generieren. Wir verwenden dieses key pair, um die TR-34-Nutzlast zu signieren. In der TR-34-Terminologie ist dies das KDH-Signaturzertifikat. Die Zertifikate sind kurzlebig und nur für die unter angegebene Dauer gültig. `ParametersValidUntilTimestamp`
**Anmerkung**  
Alle Zertifikate sind in der Base64-Kodierung.  
**Example**  

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

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

1. 

****Importieren Sie das AWS Payment Cryptography Zertifikat in Ihr Empfangssystem****  
Importieren Sie die Zertifikatskette aus Schritt 1 in Ihr Empfangssystem.

1. 

****Richten Sie die Zertifikate Ihres Empfangssystems ein****  
Um die übertragene Nutzlast zu schützen, verschlüsselt die sendende Partei (KDH) sie. Ihr Empfangssystem (in der Regel Ihr HSM oder das HSM Ihres Partners) muss einen öffentlichen Schlüssel und ein X.509-Public-Key-Zertifikat generieren. Sie können AWS Private CA es zum Generieren von Zertifikaten verwenden, aber Sie können jede Zertifizierungsstelle verwenden.

   Nachdem Sie das Zertifikat erhalten haben, importieren Sie das Stammzertifikat mithilfe des **ImportKey** Befehls in AWS Payment Cryptography. Setzen Sie `KeyMaterialType` auf `RootCertificatePublicKey` und `KeyUsageType` auf `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`.

   Wir verwenden `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE` as, `KeyUsageType` weil dies der Stammschlüssel ist, der das Leaf-Zertifikat signiert. Sie müssen Leaf-Zertifikate nicht in AWS Payment Cryptography importieren — Sie können sie direkt weiterleiten.
**Anmerkung**  
Wenn Sie das Stammzertifikat bereits importiert haben, überspringen Sie diesen Schritt. Verwenden Sie für Zwischenzertifikate`TrustedCertificatePublicKey`.

1. 

****Exportieren Sie Ihren Schlüssel****  
Rufen Sie die **ExportKey** API mit `KeyMaterialType` set auf auf auf auf auf auf auf auf auf `TR34_KEY_BLOCK` Sie müssen Folgendes angeben:
   + Der KeyARN der Root-CA aus Schritt 3 als `CertificateAuthorityPublicKeyIdentifier`
   + Das Leaf-Zertifikat aus Schritt 3 als `WrappingKeyCertificate`
   + Der KeyArn (oder Alias) des Schlüssels, den Sie exportieren möchten als `--export-key-identifier`
   + Das Export-Token aus Schritt 1  
**Example**  

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

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

### Exportieren Sie Schlüssel mithilfe asymmetrischer Techniken (ECDH)
<a name="keys-export-ecdh"></a>

![\[AWS Verfahren zum Import von Verschlüsselungsschlüsseln für Zahlungen mithilfe von ECDH\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/images/keyimport-ecdh-export.png)


Elliptic Curve Diffie-Hellman (ECDH) verwendet asymmetrische ECC-Kryptografie, um einen gemeinsamen Schlüssel zwischen zwei Parteien einzurichten, ohne dass zuvor ausgetauschte Schlüssel erforderlich sind. ECDH-Schlüssel sind kurzlebig und werden daher von Payment Cryptography nicht gespeichert. AWS Bei diesem Prozess wird mithilfe von ECDH ein einmaliges [KBPK/KEK abgeleitet](terminology.md#terms.kbpk). Dieser abgeleitete Schlüssel wird sofort verwendet, um den Schlüssel zu umschließen, den Sie übertragen möchten. Dabei kann es sich um einen anderen KBPK-, BDK-, IPEK-Schlüssel oder andere Schlüsseltypen handeln. 

Beim Export wird die AWS Zahlungskryptografie als Party U (Initiator) und das Empfangssystem als Party V (Responder) bezeichnet. 

**Anmerkung**  
ECDH kann verwendet werden, um jeden beliebigen symmetrischen Schlüsseltyp auszutauschen, aber es ist der einzige Ansatz, der für die Übertragung von AES-256-Schlüsseln verwendet werden kann, wenn noch kein KEK eingerichtet ist. 

1. 

****ECC-Schlüsselpaar generieren****  
Rufen Sie `create-key` auf, um ein ECC-Schlüsselpaar für diesen Prozess zu erstellen. Diese API generiert ein key pair für Schlüsselimporte oder -exporte. Geben Sie bei der Erstellung an, welche Art von Schlüsseln mit diesem ECC-Schlüssel abgeleitet werden können. Wenn Sie ECDH zum Austauschen (Umschließen) anderer Schlüssel verwenden, verwenden Sie den Wert. `TR31_K1_KEY_BLOCK_PROTECTION_KEY`
**Anmerkung**  
 ECDH auf niedriger Ebene generiert zwar einen abgeleiteten Schlüssel, der für jeden Zweck verwendet werden kann, aber die AWS Zahlungskryptografie begrenzt die versehentliche Wiederverwendung eines Schlüssels für mehrere Zwecke, indem ein Schlüssel nur für einen einzigen abgeleiteten Schlüsseltyp verwendet werden kann. 

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

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

1. 

****Holen Sie sich ein Public-Key-Zertifikat****  
Rufen Sie an`get-public-key-certificate`, um den öffentlichen Schlüssel als X.509-Zertifikat zu erhalten, das von der Zertifizierungsstelle Ihres Kontos signiert wurde und für die AWS Zahlungskryptografie in einer bestimmten Region spezifisch ist.  
**Example**  

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

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

1. 

****Installieren Sie das öffentliche Zertifikat auf dem System der Gegenpartei (Partei V)****  
Bei vielen HSMs müssen Sie das in Schritt 1 generierte öffentliche Zertifikat installieren, laden oder als vertrauenswürdig einstufen, um Schlüssel zu erstellen. Dies kann je nach HSM die gesamte Zertifikatskette oder nur das Stammzertifikat umfassen. Spezifische Anweisungen finden Sie in Ihrer HSM-Dokumentation.

1. 

****Generieren Sie ein ECC-Schlüsselpaar auf dem Quellsystem und stellen Sie die Zertifikatskette für die AWS Zahlungskryptografie bereit****  
In ECDH generiert jede Partei ein key pair und einigt sich auf einen gemeinsamen Schlüssel. Damit AWS Payment Cryptography den Schlüssel ableiten kann, benötigt sie den öffentlichen Schlüssel der Gegenpartei im öffentlichen X.509-Schlüsselformat.

   Wenn Sie Schlüssel von einem HSM übertragen, erstellen Sie ein key pair auf diesem HSM. Für HSMs die Unterstützung von Schlüsselblöcken sieht der Schlüsselheader ähnlich aus wie. `D0144K3EX00E0000` Bei der Erstellung des Zertifikats generieren Sie in der Regel eine CSR auf dem HSM, und dann AWS Private CA kann das HSM, ein Drittanbieter oder ein Dienst das Zertifikat generieren.

   Laden Sie das Stammzertifikat mithilfe der `importKey` Befehle mit KeyMaterialType of und of in AWS Payment Cryptography. `RootCertificatePublicKey` KeyUsageType `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`

   Verwenden Sie für Zwischenzertifikate den `importKey` Befehl mit KeyMaterialType of `TrustedCertificatePublicKey` und KeyUsageType of`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. Wiederholen Sie diesen Vorgang für mehrere Zwischenzertifikate. Verwenden Sie das Zertifikat `KeyArn` des letzten importierten Zertifikats in der Kette als Eingabe für nachfolgende Exportbefehle.
**Anmerkung**  
Importieren Sie das Leaf-Zertifikat nicht. Geben Sie es direkt während des Exportbefehls an.

1. 

****Schlüssel aus AWS Payment Cryptography ableiten und Schlüssel exportieren****  
Beim Exportieren leitet der Dienst mithilfe von ECDH einen Schlüssel ab und verwendet ihn dann sofort als [KBPK](terminology.md#terms.kbpk), um den Schlüssel für den Export mit TR-31 zu verpacken. Der zu exportierende Schlüssel kann ein beliebiger TDES- oder AES-Schlüssel sein, sofern die TR-31-gültigen Kombinationen eingehalten werden, sofern der Wrapping-Schlüssel mindestens so stark ist wie der zu exportierende Schlüssel. 

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

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

1. 

****Leiten Sie den Einmalschlüssel mithilfe von ECDH auf Party V HSM ab****  
Viele HSMs und verwandte Systeme unterstützen die Einrichtung von Schlüsseln mithilfe von ECDH. Geben Sie den öffentlichen Schlüssel aus Schritt 1 als öffentlichen Schlüssel und den Schlüssel aus Schritt 3 als privaten Schlüssel an. Zulässige Optionen, wie z. B. Ableitungsmethoden, finden Sie im [API-Leitfaden](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ExportDiffieHellmanTr31KeyBlock.html). 
**Anmerkung**  
 Die Ableitungsparameter wie der Hashtyp müssen auf beiden Seiten exakt übereinstimmen. Andernfalls generieren Sie einen anderen Schlüssel. 

1. 

****Schlüssel in das Zielsystem importieren****  
Importieren Sie abschließend den Schlüssel aus AWS Payment Cryptography mithilfe der TR-31-Standardbefehle. Geben Sie den von ECDH abgeleiteten Schlüssel als KBPK an und verwenden Sie den TR-31-Schlüsselblock, der zuvor aus Payment Cryptography exportiert wurde. AWS 

### Exportieren Sie Schlüssel mithilfe asymmetrischer Techniken (RSA Wrap)
<a name="keys-export-rsawrap"></a>

 Wenn TR-34 nicht verfügbar ist, können Sie wrap/unwrap RSA für den Schlüsselaustausch verwenden. Wie TR-34 verwendet diese Methode asymmetrische RSA-Kryptografie, um symmetrische Schlüssel zu verschlüsseln. RSA Wrap beinhaltet jedoch nicht: 
+ Signierung der Nutzdaten durch die sendende Partei
+ Schlüsselblöcke, die die Integrität wichtiger Metadaten während des Transports aufrechterhalten

**Anmerkung**  
Sie können RSA Wrap verwenden, um TDES- und AES-128-Schlüssel zu exportieren.

1. 

****Erstellen Sie einen RSA-Schlüssel und ein Zertifikat auf Ihrem Empfangssystem****  
Erstellen oder identifizieren Sie einen RSA-Schlüssel für den Empfang des verpackten Schlüssels. Wir benötigen Schlüssel im X.509-Zertifikatsformat. Stellen Sie sicher, dass das Zertifikat mit einem Stammzertifikat signiert ist, das Sie in AWS Payment Cryptography importieren können.

1. 

****Importieren Sie das öffentliche Stammzertifikat in AWS Payment Cryptography****  
Verwenden Sie es **import-key** mit der `--key-material` Option zum Importieren des Zertifikats

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

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

1. 

****Exportieren Sie Ihren Schlüssel****  
Weisen Sie AWS Payment Cryptography an, Ihren Schlüssel mithilfe Ihres Leaf-Zertifikats zu exportieren. Sie müssen Folgendes angeben: 
   + Der ARN für das Stammzertifikat, das Sie in Schritt 2 importiert haben
   + Das Leaf-Zertifikat für den Export
   + Der zu exportierende symmetrische Schlüssel

   Die Ausgabe ist eine hexadezimale, binär umhüllte (verschlüsselte) Version Ihres symmetrischen Schlüssels.  
**Example Beispiel — Exportieren eines Schlüssels**  

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

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

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

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

1. 

****Importieren Sie den Schlüssel in Ihr Empfangssystem****  
Viele HSMs und verwandte Systeme unterstützen den Import von Schlüsseln mithilfe von RSA Unwrap (einschließlich AWS Payment Cryptography). Geben Sie beim Import Folgendes an:
   + Der öffentliche Schlüssel aus Schritt 1 als Verschlüsselungszertifikat
   + Das Format als RSA
   + Padding-Modus als PKCS \$11 v2.2 OAEP (mit SHA 256)
**Anmerkung**  
Wir geben den verpackten Schlüssel im HexBinary-Format aus. Möglicherweise müssen Sie das Format konvertieren, wenn Ihr System eine andere binäre Darstellung benötigt, z. B. base64.

### Exportieren Sie symmetrische Schlüssel mithilfe eines vorab festgelegten Schlüsselaustauschschlüssels (TR-31)
<a name="keys-export-tr31"></a>

Wenn Sie mehrere Schlüssel austauschen oder die Schlüsselrotation unterstützen, tauschen Sie in der Regel zunächst einen Initial Key Encryption Key (KEK) mit Papierschlüsselkomponenten oder, bei AWS Zahlungskryptografie, mithilfe von [TR-34](#keys-export-tr34) aus. Nachdem Sie einen KEK eingerichtet haben, können Sie ihn verwenden, um nachfolgende Schlüssel, einschließlich anderer, zu transportieren. KEKs Wir unterstützen diesen Schlüsselaustausch mithilfe von ANSI TR-31, das von HSM-Anbietern weitgehend unterstützt wird.

1. 

****Richten Sie Ihren Key Encryption Key (KEK) ein****  
Stellen Sie sicher, dass Sie Ihren KEK bereits ausgetauscht haben und den KeyARN (oder KeyAlias) verfügbar haben.

1. 

****Erstellen Sie Ihren Schlüssel für Payment Cryptography AWS****  
Erstellen Sie Ihren Schlüssel, falls er noch nicht existiert. Alternativ können Sie den Schlüssel auf Ihrem anderen System erstellen und den [Import-Befehl](#keys-export-tr31) verwenden.

1. 

****Exportieren Sie Ihren Schlüssel aus AWS Payment Cryptography****  
Geben Sie beim Exportieren im TR-31-Format den Schlüssel, den Sie exportieren möchten, und den zu verwendenden Wrapping-Schlüssel an.  
**Example Beispiel — Exportieren eines Schlüssels mithilfe des Schlüsselblocks TR31**  

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

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

1. 

****Importieren Sie den Schlüssel in Ihr System****  
Verwenden Sie die Importschlüssel-Implementierung Ihres Systems, um den Schlüssel zu importieren.

## Exportieren Sie die DUKPT-Anfangsschlüssel (IPEK/IK)
<a name="keys-export-ipek"></a>

Wenn Sie [DUKPT](terminology.md#terms.dukpt) verwenden, können Sie einen einzelnen Base Derivation Key (BDK) für eine Flotte von Terminals generieren. Die Terminals haben keinen direkten Zugang zum BDK. Stattdessen erhält jedes Terminal einen eindeutigen ersten Terminalschlüssel, der als IPEK oder Initial Key (IK) bezeichnet wird. Jedes IPEK wird mithilfe einer eindeutigen Schlüsselseriennummer (KSN) vom BDK abgeleitet.

Die KSN-Struktur variiert je nach Verschlüsselungstyp:
+ Für TDES: Das 10-Byte-KSN beinhaltet:
  + 24 Bit für die Schlüsselsatz-ID
  + 19 Bit für die Terminal-ID
  + 21 Bits für den Transaktionszähler
+ Für AES: Das 12-Byte-KSN beinhaltet:
  + 32 Bit für die BDK-ID
  + 32 Bit für den Ableitungsbezeichner (ID)
  + 32 Bit für den Transaktionszähler

Wir bieten einen Mechanismus zum Generieren und Exportieren dieser Anfangsschlüssel. Sie können die generierten Schlüssel mit den Methoden TR-31, TR-34 oder RSA Wrap exportieren. Beachten Sie, dass IPEK-Schlüssel nicht dauerhaft gespeichert werden und nicht für nachfolgende Operationen mit Zahlungskryptografie verwendet werden können. AWS 

Wir erzwingen die Aufteilung zwischen den ersten beiden Teilen des KSN nicht. Wenn Sie den Ableitungsbezeichner mit dem BDK speichern möchten, können Sie Tags verwenden. AWS 

**Anmerkung**  
Der Zählerteil des KSN (32 Bit für AES DUKPT) wird nicht für die IPEK/IK-Ableitung verwendet. Beispielsweise erzeugen Eingaben von 12345678901234560001 und 12345678901234569999 dasselbe IPEK.

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

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

## Geben Sie die Header der Schlüsselblöcke für den Export an
<a name="keys-export-optionalheaders"></a>

Sie können Schlüsselblockinformationen ändern oder anhängen, wenn Sie in die Formate ASC TR-31 oder TR-34 exportieren. In der folgenden Tabelle werden das TR-31-Tastenblockformat und die Elemente beschrieben, die Sie beim Export ändern können.


| Schlüsselblock-Attribut | Zweck | Können Sie während des Exports Änderungen vornehmen? | Hinweise | 
| --- | --- | --- | --- | 
| Versions-ID |  Definiert die Methode, die zum Schutz des Schlüsselmaterials verwendet wird. Der Standard beinhaltet:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/keys-export.html)  | Nein |  Wir verwenden Version B für TDES-Wrapping Keys und Version D für AES-Wrapping Keys. Wir unterstützen die Versionen A und C nur für Importvorgänge.  | 
| Länge des Schlüsselblocks | Gibt die Länge der verbleibenden Nachricht an | Nein |  Wir berechnen diesen Wert automatisch. Vor dem Entschlüsseln der Payload erscheint die Länge möglicherweise falsch, da wir möglicherweise die in der Spezifikation vorgeschriebene Tastenbelegung hinzufügen.  | 
| Schlüsselverwendung |  Definiert die zulässigen Zwecke für den Schlüssel, z. B.:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/keys-export.html)  | Nein |  | 
| Algorithmus |  Gibt den Algorithmus des zugrunde liegenden Schlüssels an. Wir unterstützen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/keys-export.html)  | Nein | Wir exportieren diesen Wert unverändert. | 
| Schlüsselverwendung |  Definiert zulässige Operationen, wie z. B.:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/keys-export.html)  | Ja\$1 |  | 
| Schlüsselversion | Gibt die Versionsnummer für den Austausch bzw. die Rotation von Schlüsseln an. Der Standardwert ist 00, falls nicht angegeben. | Ja — Kann angehängt werden |  | 
| Wichtigste Exportfähigkeit |  Steuert, ob der Schlüssel exportiert werden kann:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/keys-export.html)  | Ja\$1 |  | 
| Optionale Schlüsselblöcke | Ja — Kann angehängt werden |  Optionale Schlüsselblöcke sind name/value Paare, die kryptografisch an den Schlüssel gebunden sind. Zum Beispiel KeySet ID für DUKPT-Schlüssel. Wir berechnen automatisch die Anzahl der Blöcke, die Länge jedes Blocks und den Polsterblock (PB) auf der Grundlage Ihrer name/value Paareingabe.  |  | 

*\$1Wenn Sie Werte ändern, muss Ihr neuer Wert restriktiver sein als der aktuelle Wert in AWS Payment Cryptography.* Beispiel: 
+ Wenn der aktuelle Schlüsselverwendungsmodus Generate=True, Verify=True ist, können Sie ihn in Generate=True, Verify=False ändern
+ Wenn der Schlüssel bereits auf „Nicht exportierbar“ gesetzt ist, können Sie ihn nicht in „exportierbar“ ändern

Wenn Sie Schlüssel exportieren, wenden wir automatisch die aktuellen Werte des exportierten Schlüssels an. Möglicherweise möchten Sie diese Werte jedoch ändern oder anhängen, bevor Sie sie an das Empfangssystem senden. Hier sind einige gängige Szenarien: 
+ Wenn Sie einen Schlüssel in ein Zahlungsterminal exportieren, stellen Sie dessen Exportfähigkeit auf ein, `Not Exportable` da Terminals normalerweise nur Schlüssel importieren und sie nicht exportieren sollten.
+ Wenn Sie zugehörige Schlüsselmetadaten an das Empfangssystem übergeben müssen, verwenden Sie optionale TR-31-Header, um die Metadaten kryptografisch an den Schlüssel zu binden, anstatt eine benutzerdefinierte Payload zu erstellen.
+ Stellen Sie mithilfe des Felds die Schlüsselversion ein, um die `KeyVersion` Schlüsselrotation zu verfolgen.

TR-31/X9.143 definiert allgemeine Header, aber Sie können auch andere Header verwenden, sofern sie die AWS Payment-Kryptografie-Parameter erfüllen und Ihr Empfangssystem sie akzeptiert. [Weitere Informationen zu Schlüsselblock-Headern beim Export finden Sie unter Schlüsselblock-Header im API-Leitfaden.](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_KeyBlockHeaders.html)

Hier ist ein Beispiel für den Export eines BDK-Schlüssels (z. B. in ein KIF) mit diesen Spezifikationen: 
+ Schlüsselversion: 02
+ KeyExportability: NICHT EXPORTIERBAR
+ KeySetID: 00ABCDEFAB (00 steht für den TDES-Schlüssel, ABCDEFABCD ist der Anfangsschlüssel)

 Da wir keine wichtigen Verwendungsmodi angeben, erbt dieser Schlüssel den Verwendungsmodus von arn:aws:payment-cryptography:us-east- 2:111122223333:key/5rplquuwozodpwsp (= true). DeriveKey 

**Anmerkung**  
Selbst wenn Sie in diesem Beispiel [die](terminology.md#terms.kif) Exportierbarkeit auf Nicht exportierbar setzen, kann der KIF dennoch:   
[Schlüssel wie IPEK/IK ableiten, die in DUKPT verwendet werden](terminology.md#terms.ipek)
Exportieren Sie diese abgeleiteten Schlüssel, um sie auf Geräten zu installieren
Dies ist in den Normen ausdrücklich erlaubt.

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

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

### Allgemeine Header
<a name="keys-export-commonheaders"></a>

X9.143 definiert bestimmte Header für allgemeine Anwendungsfälle. Mit Ausnahme des HM-Headers (HMAC Hash) analysiert oder verwendet AWS Payment Cryptography diese Header nicht.


| Header-Name | Zweck | Typische Validierung | Hinweise | 
| --- | --- | --- | --- | 
| BI | Schlüssel-ID für die Basisableitung für DUKPT | 2 Hex-Zeichen (00 für TDES, 11 für AES), dann 10 Hex-Zeichen für TDES KSI oder 8 Hex-Zeichen für BDK-ID (AES DUKPT). | Enthält die (BDK-ID, für AES DUKPT) oder den Key Set Identifier (KSI, für TDES DUKPT). Kann beim Austausch der BDK-ID oder des KSI verwendet werden, die anderen in den IK- und KS-Blöcken enthaltenen Daten müssen jedoch nicht ausgetauscht werden. In der Regel wird BI bei der Übertragung an ein KIF verwendet, wohingegen IK oder KS bei der Injektion in das Terminal selbst verwendet werden. | 
| HM | Gibt den Hash-Typ für HMAC-Operationen an |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/payment-cryptography/latest/userguide/keys-export.html)  | Der Dienst füllt dieses Feld beim Export automatisch aus und analysiert es beim Import. Hash-Typen, die vom Dienst nicht unterstützt werden, z. B. SHAKE128 können importiert werden, sind aber möglicherweise nicht für kryptografische Funktionen nutzbar. | 
| IK |  Seriennummer des ursprünglichen Schlüssels für AES DUKPT | 16 Hex-Zeichen  | Dieser Wert wird verwendet, um die Verwendung des ursprünglichen DUKPT-Schlüssels auf dem Empfangsgerät zu instanziieren, und er identifiziert den von einem BDK abgeleiteten Anfangsschlüssel. Dieses Feld enthält normalerweise die Ableitungsdaten, aber keinen Zähler. Verwenden Sie KS für TDES DUKPT. | 
| IST |  Seriennummer des ursprünglichen Schlüssels für TDES DUKPT | 20 Hex-Zeichen  | Dieser Wert wird verwendet, um die Verwendung des ursprünglichen DUKPT-Schlüssels auf dem Empfangsgerät zu instanziieren, und er identifiziert den von einem BDK abgeleiteten Anfangsschlüssel. Dieses Feld enthält in der Regel die Ableitungsdaten und einen Zählerwert, der auf Null gesetzt wurde. Verwenden Sie IK für AES DUKPT. | 
| KP | [KCV des Wickelschlüssels](terminology.md#terms.kcv) | 2 Hexadezimalzeichen stehen für die KCV-Methode (00 für die X9.24-Methode und 01 für die CMAC-Methode). Gefolgt vom KCV-Wert, der normalerweise aus 6 Hex-Zeichen besteht. Beispielsweise FA329 steht 010 für einen KCV-Wert von 0, der mit der Methode 01 (CMAC) FA329 berechnet wurde.   | Dieser Wert wird verwendet, um die Verwendung des Initial-DUKPT-Schlüssels auf dem Empfangsgerät zu instanziieren, und er identifiziert den von einem BDK abgeleiteten Anfangsschlüssel. Dieses Feld enthält in der Regel die Ableitungsdaten und einen Zählerwert, der auf Null gesetzt wurde. Verwenden Sie IK für AES DUKPT. | 
| PB | Polsterblock | zufällige druckbare ASCII-Zeichen  | Der Dienst füllt dieses Feld beim Export automatisch aus, um sicherzustellen, dass optionale Header ein Vielfaches der Länge des Verschlüsselungsblocks sind | 

## Exportieren Sie asymmetrische (RSA) Schlüssel
<a name="keys-export-publickey"></a>

Verwenden Sie den Befehl, um einen öffentlichen Schlüssel in Zertifikatsform zu exportieren. **get-public-key-certificate** Dieser Befehl gibt Folgendes zurück: 
+ Das Zertifikat
+ Das Stammzertifikat

Beide Zertifikate sind in Base64-Kodierung.

**Anmerkung**  
Dieser Vorgang ist nicht idempotent — nachfolgende Aufrufe können unterschiedliche Zertifikate generieren, selbst wenn derselbe zugrunde liegende Schlüssel verwendet wird.

**Example**  

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

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

# Fortgeschrittene Themen
<a name="keyexchange-advanced"></a>

In diesem Abschnitt werden erweiterte Szenarien und Konfigurationen für den Schlüsselaustausch behandelt.

**Topics**
+ [Bringen Sie Ihre eigene Zertifizierungsstelle (BYOCA) mit](keyexchange-byoca.md)

# Bringen Sie Ihre eigene Zertifizierungsstelle (BYOCA) mit
<a name="keyexchange-byoca"></a>

Wenn ein Public-Key-Zertifikat für asymmetrische (RSA, ECC) Schlüssel benötigt wird, die innerhalb des Dienstes erstellt wurden, werden diese Zertifikate standardmäßig von einer AWS Payment Cryptography and Account Unique Certificate Authority (CA) ausgestellt. Dadurch soll die Verwendung von X.509 vereinfacht werden, ohne dass eine Zertifizierungsstelle identifiziert oder eingerichtet oder Certificate Signing Requests (CSR) verwaltet werden müssen.

AWS Payment Cryptography bietet auch die Möglichkeit, Ihre eigene CA zu verwenden, wenn dies aus Richtlinien- oder Compliance-Gründen erforderlich ist.

## -Übersicht
<a name="keyexchange-byoca.overview"></a>

Mit der BYOCA-Funktion können Sie überall, wo Zertifikate verwendet werden, Ihre eigene Zertifizierungsstelle verwenden, einschließlich TR-34-Import/Export, RSA Unwrap und ECDH-basierte Schlüsselübertragungen. Dies ist nützlich, wenn Sie eine konsistente Zertifikatskette in Ihrem Unternehmen aufrechterhalten müssen oder wenn Sie mit Partnern zusammenarbeiten, die bestimmte CA-Zertifikate benötigen. Das folgende Beispiel zeigt den BYOCA-Workflow mithilfe des TR-34-Schlüsselexports.

Die drei wichtigsten Unterschiede zum standardmäßigen TR-34-Exportablauf sind:

1. Der RSA-Signaturschlüssel wird explizit mit erstellt. [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html) Zuvor wurde er implizit über erstellt. [GetParametersForExport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForExport.html)

1. Eine neue API [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)erstellt eine Certificate Signing Request (CSR), die von Ihrer externen CA signiert werden kann.

1. Die [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html)API wurde erweitert, sodass zur Laufzeit ein Zertifikat bereitgestellt werden kann. Bisher wurde dies implizit von bereitgestellt`import-token`, was zu einem optionalen Feld wird.

**Wichtige Überlegungen**  
Diese Beispiele verwenden RSA-2048-Schlüssel und umschließen einen TDES-2KEY-Schlüssel. Achten Sie beim Exportieren von AES-128 darauf, dass es sich bei allen Schlüsseln um RSA-3072 oder RSA-4096 handelt.
Der häufigste Fehler ist, dass der Schlüssel, der durch und dargestellt wird, nicht übereinstimmt. `SigningKeyIdentifier` `SigningKeyCertificate`

## VON OCA Workflow
<a name="keyexchange-byoca.workflow"></a>

Die folgenden Schritte demonstrieren den vollständigen BYOCA-Workflow für den TR-34-Export.

**Topics**
+ [Schritt 1: RSA-Schlüssel erstellen](#keyexchange-byoca.create-rsa)
+ [Schritt 2: Anfrage zum Signieren eines Zertifikats generieren](#keyexchange-byoca.generate-csr)
+ [Schritt 3: CSR überprüfen (optional)](#keyexchange-byoca.review-csr)
+ [Schritt 4: Signieren Sie die CSR bei einer Zertifizierungsstelle](#keyexchange-byoca.sign-csr)
+ [Schritt 5: CA-Zertifikat importieren](#keyexchange-byoca.import-ca)
+ [Schritt 6: Holen Sie sich das KRD-Verschlüsselungszertifikat](#keyexchange-byoca.get-krd)
+ [Schritt 7: Schlüssel mit BYOCA exportieren](#keyexchange-byoca.export-key)

### Schritt 1: RSA-Schlüssel erstellen
<a name="keyexchange-byoca.create-rsa"></a>

Erstellen Sie zunächst ein RSA-Schlüsselpaar, das letztendlich das KDH-Signaturzertifikat sein wird. Sie können Tags hinzufügen, um den Zweck des Schlüssels zu identifizieren.

**Example RSA-Schlüssel zum Signieren erstellen**  

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

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

Notieren Sie sich das, `KeyArn` da Sie es im nächsten Schritt benötigen werden.

### Schritt 2: Anfrage zum Signieren eines Zertifikats generieren
<a name="keyexchange-byoca.generate-csr"></a>

Generieren Sie mithilfe der [GetCertificateSigningRequest](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetCertificateSigningRequest.html)API eine Certificate Signing Request (CSR), die von Ihrer externen Zertifizierungsstelle signiert werden soll. Die Ausgabe ist eine Base64-codierte PEM-Datei. Wenn Sie den Inhalt base64-dekodieren und speichern, haben Sie eine gültige CSR im PEM-Format.

**Example CSR generieren**  

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

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

Das `CertificateSigningRequest` Feld enthält die Base64-kodierte CSR, die Sie zur Unterzeichnung an Ihre Zertifizierungsstelle senden.

### Schritt 3: CSR überprüfen (optional)
<a name="keyexchange-byoca.review-csr"></a>

Sie können optional OpenSSL verwenden, um den CSR-Inhalt zu überprüfen und sicherzustellen, dass er gültig und erwartungsgemäß ist.

**Example CSR mit OpenSSL überprüfen**  

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

### Schritt 4: Signieren Sie die CSR bei einer Zertifizierungsstelle
<a name="keyexchange-byoca.sign-csr"></a>

Nachdem Sie die CSR generiert haben, müssen Sie sie von einer Zertifizierungsstelle (CA) signieren lassen. In Produktionsumgebungen würden Sie in der Regel die etablierte CA-Infrastruktur Ihres Unternehmens verwenden AWS Private CA . Zu Testzwecken können Sie OpenSSL verwenden, um ein selbstsigniertes Zertifikat zu erstellen.

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

Um die CSR mit zu signieren AWS Private CA, dekodieren Sie zuerst die Base64-kodierte CSR und speichern Sie sie in einer Datei. Verwenden Sie dann die API. [IssueCertificate](https://docs.aws.amazon.com/acm-pca/latest/APIReference/API_IssueCertificate.html)

**Example Signieren Sie CSR mit AWS Private CA**  

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

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

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

Rufen Sie dann das signierte Zertifikat ab:

**Example Signiertes Zertifikat abrufen**  

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

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

Speichern Sie den Inhalt des Zertifikats zur Verwendung im Exportschritt. Sie müssen es Base64-kodieren, wenn Sie es der API zur Verfügung stellen. `ExportKey`

#### OpenSSL zum Testen verwenden
<a name="keyexchange-byoca.sign-csr-openssl"></a>

Zu Testzwecken können Sie OpenSSL verwenden, um eine selbstsignierte CA zu erstellen und die CSR zu signieren. Erstellen Sie zunächst einen privaten CA-Schlüssel und ein selbstsigniertes Zertifikat:

**Example Test-CA mit OpenSSL erstellen**  

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

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

Dekodieren Sie dann die CSR aus dem vorherigen Schritt und signieren Sie sie mit Ihrer Testzertifizierungsstelle:

**Example CSR mit OpenSSL signieren**  

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

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

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

Das signierte Zertifikat ist jetzt da. `signed-cert.pem` Sie müssen dieses Zertifikat base64-kodieren, wenn Sie es der API zur Verfügung stellen: `ExportKey`

**Example Das signierte Zertifikat mit Base64 kodieren**  

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

### Schritt 5: CA-Zertifikat importieren
<a name="keyexchange-byoca.import-ca"></a>

Jeder verwendeten CA muss zuerst vertraut werden, um zu verhindern, dass willkürliche Zertifikate verwendet werden. Importieren Sie das Stammzertifikat Ihrer externen CA mithilfe der [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html)API. Wenn Sie eine Zwischenzertifizierungsstelle verwenden, rufen Sie `import-key` erneut auf, geben Sie jedoch `TrustedPublicKey` stattdessen den Root-CA-ARN an `RootCertificatePublicKey` und geben Sie ihn an.

**Example Root-CA-Zertifikat importieren**  

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

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

Notieren Sie sich die Zertifizierungsstellen, die im Exportschritt verwendet werden sollen. `KeyArn`

### Schritt 6: Holen Sie sich das KRD-Verschlüsselungszertifikat
<a name="keyexchange-byoca.get-krd"></a>

In diesem Beispiel importieren wir zurück in AWS Payment Cryptography, also rufen wir den Dienst auf, um über die API ein KRD-Zertifikat mit öffentlichem Schlüssel zu erhalten. [GetParametersForImport](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GetParametersForImport.html) In einem realen Szenario würde dies durch das andere System bereitgestellt werden, z. B. ein HSM, ein Geldautomat, ein Zahlungsterminal oder ein Zahlungsterminal-Managementsystem.

**Example Parameter für den Import abrufen**  

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

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

### Schritt 7: Schlüssel mit BYOCA exportieren
<a name="keyexchange-byoca.export-key"></a>

Exportieren Sie abschließend den Schlüssel mithilfe von TR-34 mit Ihrem eigenen CA-signierten Zertifikat mithilfe der API. [ExportKey](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ExportKey.html) Geben Sie das Signaturzertifikat an, das von Ihrer externen Zertifizierungsstelle signiert wurde.

**Example TR-34 Export mit BYOCA**  

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

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

Der exportierte Schlüsselblock kann jetzt vom Empfangssystem mithilfe des standardmäßigen TR-34-Importprozesses importiert werden.

## Weitere Hinweise
<a name="keyexchange-byoca.notes"></a>
+ Diese Beispiele werden mit der AWS-CLI gezeigt. Dieselbe Funktionalität ist in allen AWS verfügbar, SDKs einschließlich Java, Python, Go und Rust.
+ Wenn Sie mit einer selbstsignierten CA testen, können Sie OpenSSL verwenden, um eine Test-CA zu erstellen und die CSR zu signieren. Verwenden Sie in der Produktion die etablierte CA-Infrastruktur Ihres Unternehmens.