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.
Generieren Sie eine zufällige PIN und die zugehörige PVV und überprüfen Sie dann den Wert
Themen
Erstellen Sie den oder die Schlüssel
Um eine zufällige PIN und die PVV zu generieren, benötigen Sie zwei Schlüssel, einen Pin Verification Key (PVK) zum Generieren des PVV und einen Pin Encryption Key zum Verschlüsseln der PIN. Die PIN selbst wird nach dem Zufallsprinzip und sicher innerhalb des Dienstes generiert und steht kryptografisch in keinem Zusammenhang mit einem der Schlüssel.
Der PGK muss ein Schlüssel des Algorithmus TDES_2KEY sein, der auf dem PVV-Algorithmus selbst basiert. Ein PEK kann TDES_2KEY, TDES_3KEY oder AES_128 sein. In diesem Fall wäre AES_128 eine gute Wahl, da das PEK für den internen Gebrauch in Ihrem System vorgesehen ist. Wenn ein PEK für den Austausch mit anderen Systemen (z. B. Kartennetzwerken, Acquirern ATMs) verwendet wird oder im Rahmen einer Migration verschoben wird, ist TDES_2KEY aus Kompatibilitätsgründen möglicherweise die geeignetere Wahl.
Erstellen Sie das PEK
$
aws payment-cryptography create-key \ --exportable --key-attributes KeyAlgorithm=AES_128,KeyUsage=TR31_P0_PIN_ENCRYPTION_KEY,\ KeyClass=SYMMETRIC_KEY,\ KeyModesOfUse='{Encrypt=true,Decrypt=true,Wrap=true,Unwrap=true}' --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'
Die Antwort gibt die Anforderungsparameter zurück, einschließlich eines ARN für nachfolgende Aufrufe sowie eines Key Check Value (KCV).
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "KeyAttributes": { "KeyUsage": "TR31_P0_PIN_ENCRYPTION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "AES_128", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": true, "Sign": false, "Verify": true, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "7CC9E2", "KeyCheckValueAlgorithm": "CMAC", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00", "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00" } }
Notieren Sie sich den Wert, der den Schlüssel darstelltKeyArn
, zum Beispiel arn:aws:payment-cryptography:us-east-2: :key/ivi5ksfsuplneuyt. Das brauchst du im nächsten Schritt.
Erstelle das PVK
$
aws payment-cryptography create-key --exportable --key-attributes KeyAlgorithm=TDES_2KEY,KeyUsage=TR31_V2_VISA_PIN_VERIFICATION_KEY,KeyClass=SYMMETRIC_KEY,KeyModesOfUse='{Generate=true,Verify=true}' --tags='[{"Key":"CARD_BIN","Value":"12345678"}]'
Die Antwort gibt die Anforderungsparameter zurück, einschließlich eines ARN für nachfolgende Aufrufe sowie eines Key Check Value (KCV).
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2::key/ov6icy4ryas4zcza", "KeyAttributes": { "KeyUsage": "TR31_V2_VISA_PIN_VERIFICATION_KEY", "KeyClass": "SYMMETRIC_KEY", "KeyAlgorithm": "TDES_2KEY", "KeyModesOfUse": { "Encrypt": false, "Decrypt": false, "Wrap": false, "Unwrap": false, "Generate": true, "Sign": false, "Verify": true, "DeriveKey": false, "NoRestrictions": false } }, "KeyCheckValue": "51A200", "KeyCheckValueAlgorithm": "ANSI_X9_24", "Enabled": true, "Exportable": true, "KeyState": "CREATE_COMPLETE", "KeyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY", "CreateTimestamp": "2023-06-05T06:41:46.648000-07:00", "UsageStartTimestamp": "2023-06-05T06:41:46.626000-07:00" } }
Notieren Sie sich den Wert, der den Schlüssel darstelltKeyArn
, zum Beispiel arn:aws:payment-cryptography:us-east-2: :key/ov6icy4ryas4zcza. Das brauchst du im nächsten Schritt.
Generieren Sie eine zufällige PIN, generieren Sie PVV und geben Sie die verschlüsselte PIN und PVV zurück
In diesem Beispiel generieren wir eine neue (zufällige) 4-stellige PIN, bei der die Ausgänge verschlüsselt PIN block
sind (. PinData PinBlock) und a PVV
(pinData. VerificationValue). Bei den Tasteneingaben handelt es sich PAN
um das Pin Verification Key
(auch als Pin-Generierungsschlüssel bezeichnete), das Pin Encryption Key
und das PIN-Block-Format.
Dieser Befehl setzt voraus, dass der Schlüssel vom Typ istTR31_V2_VISA_PIN_VERIFICATION_KEY
.
$
aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes VisaPin={PinVerificationKeyIndex=1}
{ "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2", "GenerationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", "EncryptedPinBlock": "AC17DC148BDA645E", "PinData": { "VerificationValue": "5507" } }
Überprüfen Sie die verschlüsselte PIN mit der PVV-Methode
In diesem Beispiel validieren wir eine PIN für eine bestimmte PAN. Die PIN wird in der Regel vom Karteninhaber oder Benutzer während der Transaktion zur Validierung bereitgestellt und mit dem in der Datei hinterlegten Wert verglichen (die Eingabe des Karteninhabers wird als verschlüsselter Wert vom Terminal oder einem anderen Upstream-Anbieter bereitgestellt). Um diese Eingabe zu validieren, werden zur Laufzeit auch die folgenden Werte bereitgestellt: Die verschlüsselte PIN, der zur Verschlüsselung der Eingabe-Pin verwendete Schlüssel (oft als IWK bezeichnet) PAN
und der Wert, gegen den verifiziert werden soll (entweder a PVV
oderPIN offset
).
Wenn AWS Payment Cryptography die PIN validieren kann, wird ein http/200 zurückgegeben. Wenn die PIN nicht validiert wird, wird ein http/400 zurückgegeben.
$
aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=5507}" --encrypted-pin-block AC17DC148BDA645E
{ "VerificationKeyArn": "arn:aws:payment-cryptography:us-east-2::key/37y2tsl45p5zjbh2", "VerificationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2::key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", }