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
Für Beispiele ist möglicherweise die neueste Version von AWS CLI V2 erforderlich. Bevor Sie beginnen, stellen Sie bitte sicher, dass Sie auf die neueste Version aktualisiert haben.
Symmetrische Schlüssel importieren
Themen
Schlüssel mithilfe asymmetrischer Techniken importieren (TR-34)
Überblick: TR-34 verwendet asymmetrische RSA-Kryptografie, um symmetrische Schlüssel für den Austausch zu verschlüsseln und die Herkunft der Daten sicherzustellen (Signierung). Dadurch werden sowohl die Vertraulichkeit (Verschlüsselung) als auch die Integrität (Signatur) des verpackten Schlüssels gewährleistet.
Wenn Sie Ihre eigenen Schlüssel importieren möchten, schauen Sie sich bitte das Beispielprojekt auf Github
- 1. Rufen Sie den Befehl initialize import 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. Letztlich sollte der zu exportierende Schlüssel mit diesem Schlüssel verschlüsselt werden. In der TR-34-Terminologie wird dies als KRD-Zertifikat bezeichnet. Beachten Sie, dass diese Zertifikate nur von kurzer Dauer sind und nur für diesen Zweck bestimmt sind. - 2. Installieren Sie das öffentliche Zertifikat auf dem Schlüsselquellsystem
-
Bei vielen HSMs müssen Sie möglicherweise das in Schritt 1 generierte öffentliche Zertifikat installieren/laden/als vertrauenswürdig einstufen, um damit Schlüssel exportieren zu können.
- 3. Generieren Sie einen öffentlichen Schlüssel und stellen Sie den Zertifikatsstamm für Payment Cryptography bereit AWS
-
Um die Integrität der übertragenen Nutzdaten zu gewährleisten, wird sie von der sendenden Partei signiert (bekannt als Key Distribution Host oder KDH). Die sendende Partei möchte zu diesem Zweck einen öffentlichen Schlüssel generieren und anschließend ein Public-Key-Zertifikat (X509) erstellen, das an Payment Cryptography zurückgegeben werden kann. AWS AWS Private CA ist eine Option zum Generieren von Zertifikaten, es gibt jedoch keine Einschränkungen hinsichtlich der verwendeten Zertifizierungsstelle.
Sobald Sie das Zertifikat haben, sollten Sie das Stammzertifikat mithilfe der
importKey
Befehle and KeyMaterialType ofROOT_PUBLIC_KEY_CERTIFICATE
und KeyUsageType ofTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE
in AWS Payment Cryptography laden. - 4. Schlüssel aus dem Quellsystem exportieren
-
Viele HSMs und verwandte Systeme unterstützen die Möglichkeit, Schlüssel gemäß der TR-34-Norm zu exportieren. Sie sollten den öffentlichen Schlüssel aus Schritt 1 als KRD-Zertifikat (Verschlüsselung) und den Schlüssel aus Schritt 3 als KDH-Zertifikat (Signierzertifikat) angeben. Für den Import in AWS Payment Cryptography sollten Sie das Format TR-34.2012 angeben, das kein CMS-Format mit zwei Durchgängen ist. Dieses Format kann auch als TR-34 Diebold-Format bezeichnet werden.
- 5. Rufen Sie den Importschlüssel auf
-
Als letzten Schritt rufen Sie die ImportKey-API mit einem KeyMaterialType von
TR34_KEY_BLOCK
auf. Dascertificate-authority-public-key-identifier
ist der KeyARN der in Schritt 3 importierten Root-CA, das Schlüsselmaterial aus Schritt 4key-material
wird verpackt undsigning-key-certificate
ist das Leaf-Zertifikat aus Schritt 3. Sie müssen auch das Import-Token aus Schritt 1 angeben. - 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, kann dieser Schlüssel für nachfolgende Schlüsselimporte mit TR-31 verwendet werden. Wenn der Schlüsseltyp ein anderer Typ war (z. B. TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY), kann der Schlüssel direkt für kryptografische Operationen verwendet werden.
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. Ähnlich wie bei TR-34 verwendet diese Technik asymmetrische RSA-Kryptografie, um symmetrische Schlüssel für den Austausch zu verschlüsseln. Im Gegensatz zu TR-34 ist bei dieser Methode die Nutzdaten jedoch nicht von der sendenden Partei signiert. Außerdem gewährleistet diese RSA-Wrap-Technik nicht die Integrität der Schlüsselmetadaten während der Übertragung, da keine Schlüsselblöcke enthalten sind.
Anmerkung
RSA Wrap kann verwendet werden, um TDES- und AES-128-Schlüssel zu importieren oder zu exportieren.
- 1. Rufen Sie den Befehl initialize import auf
-
Rufen Sie
get-parameters-for-import
auf, um den Importvorgang mit dem Schlüsselmaterialtyp KEY_CRYPTOGRAM zu initialisieren. WrappingKeyAlgorithm kann beim Austausch von TDES-Schlüsseln RSA_2048 sein. RSA_3072 oder RSA_4096 können beim Austausch von TDES- oder AES-128-Schlüsseln verwendet werden. 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. Letztlich sollte der zu exportierende Schlüssel mit diesem Schlüssel verschlüsselt werden. Beachten Sie, dass diese Zertifikate nur von kurzer Dauer sind und nur für diesen Zweck bestimmt sind.$
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 möglicherweise das in Schritt 1 generierte öffentliche Zertifikat (und/oder sein Stammzertifikat) installieren/laden/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 die Möglichkeit, Schlüssel mithilfe von RSA Wrap zu exportieren. Sie sollten den öffentlichen Schlüssel aus Schritt 1 als (Verschlüsselungs-) Zertifikat (WrappingKeyZertifikat) angeben. Wenn Sie die Vertrauenskette benötigen, ist diese im Antwortfeld WrappingKeyCertificateChain in Schritt #1 enthalten. Wenn Sie den Schlüssel aus Ihrem HSM exportieren, sollten Sie als Format RSA, Padding Mode = PKCS #1 v2.2 OAEP (mit SHA 256 oder SHA 512) angeben.
- 4. Rufen Sie den Importschlüssel auf
-
Als letzten Schritt rufen Sie die ImportKey-API mit einem KeyMaterialType von
KeyMaterial
auf. Sie benötigen das Import-Token aus Schritt 1 und daskey-material
(verpackte Schlüsselmaterial) aus Schritt 3. Sie müssen die wichtigsten Parameter (z. B. die Schlüsselverwendung) angeben, 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 TR31_K0_KEY_ENCRYPTION_KEY KeyUsage war, kann dieser Schlüssel für nachfolgende Schlüsselimporte mit TR-31 verwendet werden. Wenn der Schlüsseltyp ein anderer Typ war (z. B. TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY), kann der Schlüssel direkt für kryptografische Operationen verwendet werden.
Importieren Sie symmetrische Schlüssel mithilfe eines vorab festgelegten Schlüsselaustauschschlüssels (TR-31)
Wenn Partner mehrere Schlüssel austauschen (oder um die Schlüsselrotation zu unterstützen), ist es üblich, zunächst einen Initial Key Encryption Key (KEK) unter Verwendung von Techniken wie Papierschlüsselkomponenten oder im Fall von AWS Zahlungskryptografie mithilfe von TR-34 auszutauschen.
Sobald ein KEK eingerichtet ist, können Sie diesen Schlüssel verwenden, um nachfolgende Schlüssel (einschließlich anderer KEK) zu transportieren. AWS Die Zahlungskryptografie unterstützt diese Art des Schlüsselaustauschs mithilfe von ANSI TR-31, das weit verbreitet ist und von HSM-Anbietern weitgehend unterstützt wird.
- 1. Schlüsselverschlüsselungsschlüssel (KEK) importieren
-
Es wird davon ausgegangen, dass Sie Ihren KEK bereits importiert haben und dass Ihnen der KeyARN (oder KeyAlias) zur Verfügung steht.
- 2. Schlüssel auf der Quellplattform erstellen
-
Wenn der Schlüssel noch nicht existiert, erstellen Sie den Schlüssel auf der Quellplattform. Umgekehrt können Sie den Schlüssel in AWS Payment Cryptography erstellen und stattdessen den
export
Befehl verwenden. - 3. Exportieren Sie den Schlüssel von der Quellplattform
-
Achten Sie beim Exportieren darauf, dass Sie als Exportformat TR-31 angeben. Die Quellplattform fragt Sie außerdem nach dem Schlüssel, der exportiert werden soll, und nach dem zu verwendenden Schlüssel.
- 4. In AWS Payment Cryptography importieren
-
Wenn Sie den ImportKey-Befehl aufrufen, WrappingKeyIdentifier sollte dies der KeyARN (oder Alias) Ihres Schlüsselverschlüsselungsschlüssels sein und WrappedKeyBlock die Ausgabe von der Quellplattform sein.
$
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" } }
Importiert asymmetrische (RSA) Schlüssel
Öffentliche RSA-Schlüssel importieren
AWS Payment Cryptography unterstützt den Import von öffentlichen RSA-Schlüsseln in Form von X.509-Zertifikaten. Um ein Zertifikat zu importieren, müssen Sie zuerst das Stammzertifikat importieren. Alle Zertifikate sollten zum Zeitpunkt des Imports noch nicht abgelaufen sein. Das Zertifikat sollte im PEM-Format vorliegen und Base64-codiert sein.
- 1. In das Stammzertifikat in Payment Cryptography importieren AWS
-
$
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.
TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE
kann verwendet werden, wenn der Schlüssel dazu dient, Signaturen zu verifizieren (z. B. beim Import mit TR-34).TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION
kann beim Verschlüsseln von Daten verwendet werden, die für die Verwendung mit einem anderen System bestimmt sind.$
aws payment-cryptography import-key \ --key-material='{"TrustedCertificatePublicKey":{"CertificateAuthorityPublicKeyIdentifier":"arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", \ "KeyAttributes":{"KeyAlgorithm":"RSA_2048","KeyClass":"PUBLIC_KEY","KeyModesOfUse":{"Verify":true},"KeyUsage":"TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"},\ "PublicKeyCertificate":"LS0tLS1CRUdJTiB..."}}'
{ "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" } }