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 exportieren
Inhalt
Exportiert symmetrische Schlüssel
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.
Exportieren Sie Schlüssel mithilfe asymmetrischer Techniken () TR-34
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 zwar den TR-34 Export, aber keinen TR-34 Import unterstützt, empfehlen wir Ihnen, zunächst einen gemeinsamen KEK zwischen Ihrem HSM und Payment Cryptography einzurichten. AWS TR-34 Sie können ihn dann verwenden TR-31, um Ihre verbleibenden Schlüssel zu übertragen.
-
Initialisieren Sie den Exportvorgang
Ausführenget-parameters-for-export, um ein Schlüsselpaar für Schlüsselexporte zu generieren. Wir verwenden dieses Schlüsselpaar, um die TR-34 Payload 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.
ParametersValidUntilTimestampAnmerkung
Alle Zertifikate sind in Base64-Kodierung.
Beispiel
$aws payment-cryptography get-parameters-for-export \--signing-key-algorithmRSA_2048 \--key-material-typeTR34_KEY_BLOCK{ "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...", "SigningKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS....", "SigningKeyAlgorithm": "RSA_2048", "ExportToken": "export-token-au7pvkbsq4mbup6i", "ParametersValidUntilTimestamp": "2023-06-13T15:40:24.036000-07:00" } -
Importieren Sie die AWS Kryptografie-Zertifikat für Zahlungen in Ihr Empfangssystem
Importieren Sie die Zertifikatskette aus Schritt 1 in Ihr Empfangssystem.
-
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 generieren und ein Zertifikat für öffentliche Schlüssel erstellen. X.509 Sie können AWS Private CA es verwenden, um Zertifikate zu generieren, aber Sie können jede beliebige Zertifizierungsstelle verwenden.
Nachdem Sie das Zertifikat erhalten haben, importieren Sie das Stammzertifikat mithilfe des ImportKey Befehls in AWS Payment Cryptography. Setzen Sie
KeyMaterialTypeaufRootCertificatePublicKeyundKeyUsageTypeaufTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE.Wir verwenden
TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATUREals,KeyUsageTypeweil dies der Stammschlüssel ist, der das Leaf-Zertifikat signiert. Sie müssen keine Leaf-Zertifikate in AWS Payment Cryptography importieren — Sie können sie direkt weitergeben.Anmerkung
Wenn Sie das Stammzertifikat zuvor importiert haben, überspringen Sie diesen Schritt. Verwenden Sie für Zwischenzertifikate
TrustedCertificatePublicKey. -
Exportieren Sie Ihren Schlüssel
Rufen Sie die ExportKey API mit
KeyMaterialTypeset to auf auf auf aufTR34_KEY_BLOCK. Sie müssen Folgendes angeben:-
Der KeyArn der Root-CA aus Schritt 3 als
CertificateAuthorityPublicKeyIdentifier -
Das Blattzertifikat aus Schritt 3 als
WrappingKeyCertificate -
Der KeyArn (oder Alias) des Schlüssels, den Sie exportieren möchten
--export-key-identifier -
Das Export-Token aus Schritt 1
Beispiel
$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 mit asymmetrischen Techniken (ECDH)
Elliptic Curve Diffie-Hellman (ECDH) verwendet die asymmetrische ECC-Kryptografie, um einen gemeinsamen Schlüssel zwischen zwei Parteien zu erstellen, ohne dass zuvor Schlüssel ausgetauscht werden müssen. ECDH-Schlüssel sind kurzlebig, weshalb Payment Cryptography sie nicht speichert. AWS Bei diesem Prozess wird mithilfe von ECDH ein einmaliges Passwort KBPK/KEK abgeleitet. Dieser abgeleitete Schlüssel wird sofort zum Umschließen des Schlüssels verwendet, 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 AWS Payment Cryptography als Partei U (Initiator) und das Empfangssystem als Partei V (Responder) bezeichnet.
Anmerkung
ECDH kann verwendet werden, um jeden 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.
-
Generieren Sie ein ECC-Schlüsselpaar
Rufen Sie
create-keyauf, um ein ECC-Schlüsselpaar für diesen Prozess zu erstellen. Diese API generiert ein Schlüsselpaar 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_KEYAnmerkung
Obwohl Low-Level-ECDH einen abgeleiteten Schlüssel generiert, der für jeden Zweck verwendet werden kann, begrenzt AWS Payment Cryptography 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" } } -
Holen Sie sich das Zertifikat für einen öffentlichen Schlüssel
Rufen Sie an
get-public-key-certificate, um den öffentlichen Schlüssel als X.509 Zertifikat zu erhalten, das von der CA Ihres Kontos signiert wurde und spezifisch für AWS Zahlungskryptografie in einer bestimmten Region ist.Beispiel
$aws payment-cryptography get-public-key-certificate \--key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv{ "KeyCertificate": "LS0tLS1CRUdJTi...", "KeyCertificateChain": "LS0tLS1CRUdJT..." } -
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.
-
Generieren Sie das ECC-Schlüsselpaar auf dem Quellsystem und stellen Sie die Zertifikatskette bereit für AWS Kryptografie im Zahlungsverkehr
Bei ECDH generiert jede Partei ein Schlüsselpaar und einigt sich auf einen gemeinsamen Schlüssel. Damit AWS Payment Cryptography den Schlüssel ableiten kann, benötigt es den öffentlichen Schlüssel der Gegenpartei im X.509 öffentlichen Schlüsselformat.
Wenn Sie Schlüssel von einem HSM übertragen, erstellen Sie ein Schlüsselpaar auf diesem HSM. Bei HSMs, die Schlüsselblöcke unterstützen, sieht der Schlüsselheader ähnlich aus wie.
D0144K3EX00E0000Beim Erstellen 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 wie dieser das Zertifikat generieren.Laden Sie das Stammzertifikat mithilfe des
importKeyBefehls mit KeyMaterialType of und of in AWS Payment Cryptography.RootCertificatePublicKeyKeyUsageTypeTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATUREVerwenden Sie für Zwischenzertifikate den
importKeyBefehl mit KeyMaterialType ofTrustedCertificatePublicKeyund KeyUsageType ofTR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE. Wiederholen Sie diesen Vorgang für mehrere Zwischenzertifikate. Verwenden Sie das ZertifikatKeyArndes 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.
-
Schlüssel und Exportschlüssel ableiten von AWS Kryptografie im Zahlungsverkehr
Beim Exportieren leitet der Dienst mithilfe von ECDH einen Schlüssel ab und verwendet ihn dann sofort als KBPK, um den zu exportierenden Schlüssel zu umschließen. TR-31 Bei dem zu exportierenden Schlüssel kann es sich um einen beliebigen TDES- oder AES-Schlüssel handeln, sofern es sich um TR-31 gültige Kombinationen handelt, sofern der umschließende 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" } } -
Leiten Sie mithilfe von ECDH auf Party V-HSM einen einmaligen Schlüssel ab
Viele HSMs und verwandte Systeme unterstützen die Erstellung 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, z. B. Ableitungsmethoden, finden Sie im API-Leitfaden.
Anmerkung
Die Ableitungsparameter wie der Hash-Typ müssen auf beiden Seiten exakt übereinstimmen. Andernfalls generieren Sie einen anderen Schlüssel.
-
Schlüssel in das Zielsystem importieren
Importieren Sie abschließend den Schlüssel aus AWS Payment Cryptography mithilfe von TR-31 Standardbefehlen. Geben Sie den von ECDH abgeleiteten Schlüssel als KBPK an und verwenden Sie den TR-31 Schlüsselblock, der zuvor aus AWS Payment Cryptography exportiert wurde.
Exportieren Sie Schlüssel mithilfe asymmetrischer Techniken (RSA Wrap)
Wenn RSA nicht TR-34 verfügbar ist, können Sie RSA wrap/unwrap für den Schlüsselaustausch verwenden. Ebenso TR-34 verwendet diese Methode asymmetrische RSA-Kryptografie, um symmetrische Schlüssel zu verschlüsseln. RSA Wrap beinhaltet jedoch nicht:
-
Signierung der Nutzdaten durch den Absender
-
Schlüsselblöcke, die die Integrität der wichtigsten Metadaten während des Transports aufrechterhalten
Anmerkung
Sie können RSA Wrap verwenden, um TDES und AES-128 Schlüssel zu exportieren.
-
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. Die Schlüssel müssen im X.509 Zertifikatsformat vorliegen. Stellen Sie sicher, dass das Zertifikat von einem Stammzertifikat signiert ist, das Sie in AWS Payment Cryptography importieren können.
-
Importieren Sie das öffentliche Stammzertifikat in AWS Kryptografie im Zahlungsverkehr
Verwenden Sie es import-key mit der
--key-materialOption, das Zertifikat zu 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": "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" } } -
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 Blattzertifikat für den Export
-
Der symmetrische Schlüssel zum Exportieren
Die Ausgabe ist eine hexadezimale, binär verpackte (verschlüsselte) Version Ihres symmetrischen Schlüssels.
Beispiel 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-jsonfile://export-key.json{ "WrappedKey": { "KeyMaterial": "18874746731E9E1C4562E4116D1C2477063FCB08454D757D81854AEAEE0A52B1F9D303FA29C02DC82AE7785353816EFAC8B5F4F79CC29A1DDA80C65F34364373D8C74E5EC67E4CB55DEA7F091210DCACD3C46FE4A5DAA0F0D9CAA7C959CA7144A5E7052F34AAED93EF44C004AE7ABEBD616C955BBA10993C06FB905319F87B9B4E1B7A7C7D17AF15B6154E807B9C574387A43197C31C6E565554437A252EFF8AC81613305760D11F9B53B08A1BA79EC7E7C82C48083C4E2D0B6F86C34AB83647BDD7E85240AD1AF3C0F6CA8C5BF323BB2D3896457C554F978F4C9436513F494130A6FADBC038D51898AAD72E02A89FF256C524E7B5D85B813751B718C4933D9DC6031F2C5B2E13351A54B6021B2DB72AA0C7EA54727FBCD557E67E5E7CC2E165576E39DB4DA33510BA9A3C847313103A18EF3B23A3440471864D58C79C569D5CD2A653AC16043CA9A61E6878F74C18EE15F9AB23754C37A945B68C0437C19F0079F74B573D9B59DAC25A20781DBE8075C947C9EDC76177A1B0794288CBF89567A541E8401C74E85B8E1C3E501860AF702F641CAA04327018A84EF3A82932A2BCF37047AB40FE77E0A6F68D0904C7E60983CD6F871D5E0E27EEF425C97D39E9394E8927EEF5D2EA9388DF3C5C241F99378DF5DADE8D0F0CF453C803BA38BA702B9651685FAFA6DCB4B14333F8D3C57F2D93E0852AA94EEC3AF3217CAE5873EFD9", "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM" } } -
-
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 #1 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ärdarstellung benötigt, z. B. base64.
-
Exportieren Sie symmetrische Schlüssel mithilfe eines vorab festgelegten Schlüsselaustauschschlüssels () TR-31
Beim Austausch mehrerer Schlüssel oder bei der Unterstützung der Schlüsselrotation tauschen die Partner in der Regel zuerst einen anfänglichen Schlüsselverschlüsselungsschlüssel (KEK) aus. Sie können KEK gegen AWS Payment Cryptography austauschen, indem Sie Techniken wie TR-34 oder Physischer Schlüsselaustausch verwenden. Nachdem Sie einen KEK eingerichtet haben, können Sie ihn verwenden, um nachfolgende Schlüssel, einschließlich anderer KEKs, zu transportieren. Wir unterstützen diesen Schlüsselaustausch mithilfe von ANSI TR-31, das von HSM-Anbietern weithin unterstützt wird.
-
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.
-
Erstellen Sie Ihren Schlüssel auf AWS Kryptografie im Zahlungsverkehr
Erstellen Sie Ihren Schlüssel, falls er noch nicht existiert. Alternativ können Sie den Schlüssel auf Ihrem anderen System erstellen und den Exportieren Sie symmetrische Schlüssel mithilfe eines vorab festgelegten Schlüsselaustauschschlüssels () TR-31 Import-Befehl verwenden.
-
Exportieren Sie Ihren Schlüssel von AWS Kryptografie im Zahlungsverkehr
Geben Sie beim Exportieren im TR-31 Format den Schlüssel an, den Sie exportieren möchten, und den zu verwendenden Wrapping-Schlüssel.
Beispiel Beispiel — Exportieren eines Schlüssels mit dem TR31-Schlüsselblock
$aws payment-cryptography export-key \--key-material='{"Tr31KeyBlock": \ { "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza" }}' \--export-key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp{ "WrappedKey": { "KeyCheckValue": "73C263", "KeyCheckValueAlgorithm": "ANSI_X9_24", "KeyMaterial": "D0144K0AB00E0000A24D3ACF3005F30A6E31D533E07F2E1B17A2A003B338B1E79E5B3AD4FBF7850FACF9A3784489581A543C84816C8D3542AE888CE6D4EDDFD09C39957B131617BC", "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK" } } -
Importieren Sie den Schlüssel in Ihr System
Verwenden Sie die Importschlüsselimplementierung Ihres Systems, um den Schlüssel zu importieren.
Exportieren Sie die DUPT-Anfangsschlüssel () IPEK/IK
Wenn Sie DUKPT verwenden, können Sie einen einzelnen Basisableitungsschlüssel (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 Bit 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 mithilfe der Methoden TR-31, TR-34, oder RSA Wrap exportieren. Beachten Sie, dass IPEK-Schlüssel nicht persistent sind und nicht für nachfolgende Operationen mit Payment Cryptography verwendet werden können. AWS
Wir erzwingen die Aufteilung zwischen den ersten beiden Teilen des KSN nicht. Wenn Sie die Ableitungs-ID zusammen 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 Ableitung verwendet. IPEK/IK 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-identifierarn: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 Schlüsselblock-Header für den Export an
Sie können Schlüsselblockinformationen ändern oder anhängen, wenn Sie in ASC TR-31 oder Formaten exportieren. TR-34 In der folgenden Tabelle werden das TR-31 Schlüsselblockformat 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:
|
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. Die Länge erscheint möglicherweise falsch, bevor die Nutzlast entschlüsselt wird, da wir möglicherweise das in der Spezifikation vorgeschriebene Schlüsselpadding hinzufügen. |
Schlüsselverwendung |
Definiert die zulässigen Zwecke für den Schlüssel, z. B.:
|
Nein |
|
Algorithmus |
Gibt den Algorithmus des zugrunde liegenden Schlüssels an. Wir unterstützen:
|
Nein |
Wir exportieren diesen Wert unverändert. |
Schlüsselverwendung |
Definiert zulässige Operationen, wie zum Beispiel:
|
Ja* |
|
Schlüsselversion |
Gibt die Versionsnummer für den Schlüssel an replacement/rotation. Der Standardwert ist 00, wenn nicht angegeben. |
Ja — Kann anhängen |
|
Wichtige Exportfähigkeit |
Steuert, ob der Schlüssel exportiert werden kann:
|
Ja* |
|
Optionale Tastenblöcke |
Ja — Kann anhängen |
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 Füllblock (PB) auf der Grundlage Ihrer name/value Paareingabe. |
*Wenn Sie Werte ändern, muss Ihr neuer Wert restriktiver sein als der aktuelle Wert in AWS Payment Cryptography. Beispiel:
-
Wenn der aktuelle Tastenverwendungsmodus 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 empfangende System senden. Hier sind einige gängige Szenarien:
-
Wenn Sie einen Schlüssel in ein Zahlungsterminal exportieren, stellen Sie die Exportfähigkeit auf ein,
Not Exportableda Terminals normalerweise nur Schlüssel importieren und diese nicht exportieren sollten. -
Wenn Sie zugehörige Schlüsselmetadaten an das Empfangssystem weitergeben müssen, verwenden Sie TR-31 optionale Header, um die Metadaten kryptografisch an den Schlüssel zu binden, anstatt eine benutzerdefinierte Nutzlast zu erstellen.
-
Stellen Sie die Schlüsselversion mithilfe des
KeyVersionFelds ein, um die Schlüsselrotation zu verfolgen.
TR-31/X9.143 definiert allgemeine Header, Sie können jedoch auch andere Header verwenden, sofern sie den AWS Payment Cryptography-Parametern entsprechen und Ihr Empfangssystem sie akzeptiert. Weitere Informationen zu Schlüsselblock-Headern beim Export finden Sie im API-Handbuch unter Schlüsselblock-Header.
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 gibt den TDES-Schlüssel an, ABCDEFABCD ist der Anfangsschlüssel)
Da wir keine Hauptverwendungsmodi angeben, erbt dieser Schlüssel den Verwendungsmodus von arn:aws:payment-cryptography:us-east- 2:111122223333: (= true). key/5rplquuwozodpwsp DeriveKey
Anmerkung
Selbst wenn Sie in diesem Beispiel die Exportfähigkeit auf Nicht exportierbar setzen, kann das KIF immer noch: KIF
-
Schlüssel ableiten, wie sie beispielsweise in DUKPT verwendet werden IPEK/IK
-
Exportieren Sie diese abgeleiteten Schlüssel, um sie auf Geräten zu installieren
Dies ist in den Standards ausdrücklich zulässig.
$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-identifierarn: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
X9.143 definiert bestimmte Header für häufige 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, muss aber nicht die anderen in den IK- und KS-Blöcken enthaltenen Daten austauschen. In der Regel wird BI für die Übertragung an ein KIF verwendet, während IK oder KS für die Übertragung in das Terminal selbst verwendet werden. |
HM |
Gibt den Hashtyp für HMAC-Operationen an |
|
Der Dienst füllt dieses Feld beim Export automatisch aus und analysiert es beim Import. Hashtypen, die vom Dienst nicht unterstützt werden, wie SHAKE128, können importiert werden, sind aber möglicherweise nicht für kryptografische Funktionen nutzbar. |
IK |
Seriennummer des Anfangsschlüssels für AES DUKPT |
16 Hex-Zeichen |
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 Initialschlüssel. Dieses Feld enthält normalerweise die Ableitungsdaten, aber keinen Zähler. Verwenden Sie KS für TDES DUKPT. |
IST |
Anfangsschlüssel-Seriennummer für TDES DUKPT |
20 Hex-Zeichen |
Dieser Wert wird verwendet, um die Verwendung des Initial DUKPT-Schlüssels auf dem Empfangsgerät zu instanziieren, und er identifiziert den Initial Key, der von einem BDK abgeleitet wurde. Dieses Feld enthält in der Regel die Ableitungsdaten plus einen auf Null gesetzten Zählerwert. Verwenden Sie IK für AES DUKPT. |
KP |
Schlüsselprüfwert des KBPK KBPK |
2 Hex-Zeichen 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. Zum Beispiel steht 010FA329 für den KCV von 0FA329, berechnet mit der 01 (CMAC) -Methode. |
Berechnet gemäß ANSI X9.24-1-2017 Anhang A; der KCV wird für die Schlüsselvalidierung verwendet, nicht als Integritätsmechanismus. |
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 Verschlüsselungsblocklänge sind |
Exportiert asymmetrische (RSA) Schlüssel
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 Base64-kodiert.
Anmerkung
Dieser Vorgang ist nicht impotent — nachfolgende Aufrufe können unterschiedliche Zertifikate generieren, selbst wenn derselbe zugrunde liegende Schlüssel verwendet wird.
Beispiel
$aws payment-cryptography get-public-key-certificate \--key-identifierarn:aws:payment-cryptography:us-east-2:111122223333:key/5dza7xqd6soanjtb
{ "KeyCertificate": "LS0tLS1CRUdJTi...", "KeyCertificateChain": "LS0tLS1CRUdJT..." }