Schlüssel importieren - AWS Kryptografie für Zahlungen

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

Wichtig

Beispiele erfordern die neueste Version von AWS CLI V2. Bevor Sie beginnen, stellen Sie sicher, dass Sie auf die neueste Version aktualisiert haben.

Symmetrische Schlüssel importieren

Schlüssel mithilfe asymmetrischer Techniken importieren (TR-34)

AWS Prozess zum Importieren von Verschlüsselungsschlüsseln für Zahlungen

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 Github an. Anweisungen zum Importieren/Exportieren von Schlüsseln von anderen Plattformen finden Sie im Beispielcode auf Github 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 Schlüsselpaar 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" }
  2. 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.

  3. 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 Schlüsselpaar auf diesem HSM. Das HSM, ein Drittanbieter oder ein Dienst, der das Zertifikat generieren kann. AWS Private CA

    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 ofTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE. Wiederholen Sie diesen Vorgang für mehrere Zwischenzertifikate. Verwenden Sie das Zertifikat KeyArn des zuletzt 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.

  4. 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.

  5. 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ürcertificate-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" } }
  6. Verwenden Sie den importierten Schlüssel für kryptografische Operationen oder nachfolgenden Import

    Wenn der importierte Schlüssel TR31 _K0_KEY_ENCRYPTION_KEY KeyUsage war, können Sie diesen Schlüssel für nachfolgende Schlüsselimporte mit TR-31 verwenden. Bei anderen Schlüsseltypen (wie TR31 _D0_SYMMETRIC_DATA_ENCRYPTION_KEY) können Sie den Schlüssel direkt für kryptografische Operationen verwenden.

Importieren Sie Schlüssel mithilfe asymmetrischer Techniken (RSA Unwrap)

Ü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 Schlüsselpaar 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" }
  2. 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.

  3. Schlüssel aus dem Quellsystem exportieren

    Viele HSMs und verwandte Systeme unterstützen den Export von Schlüsseln mit 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 #1 v2.2 OAEP (mit SHA 256 oder SHA 512) an.

  4. Rufen Sie an import-key

    Rufen Sie die import-key API mit einem KeyMaterialType von auf auf auf aufKeyMaterial. 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" } }
  5. Verwenden Sie den importierten Schlüssel für kryptografische Operationen oder nachfolgenden Import

    Wenn der importierte Schlüssel importiert KeyUsage wurdeTR31_K0_KEY_ENCRYPTION_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)

AWS Importprozess für symmetrische Schlüssel im Zahlungskryptografiebereich

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 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.

  2. 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.

  3. Exportieren Sie den Schlüssel von der Quellplattform

    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.

  4. 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ürWrappedKeyBlock.

    $ 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" } }

Asymmetrische (RSA) Schlüssel importieren

Öffentliche RSA-Schlüssel werden importiert

AWS Payment Cryptography unterstützt den Import von öffentlichen RSA-Schlüsseln 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:

    $ 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" } }
  2. Importieren Sie das Public-Key-Zertifikat in die AWS Zahlungskryptografie

    Sie können jetzt einen öffentlichen Schlüssel importieren. Es gibt zwei Möglichkeiten, öffentliche Schlüssel zu importieren:

    • Verwenden Sie diese Option, TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE wenn der Schlüssel dazu dient, Signaturen zu überprüfen (z. B. beim Import mit TR-34).

    • TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTIONWird verwendet, wenn Daten für die Verwendung mit einem anderen System verschlüsselt werden sollen.

    $ 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" } }