Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Hasilkan pin acak dan PVV terkait lalu verifikasi nilainya
Topik
Buat kunci (s)
Untuk menghasilkan pin acak dan PVV, Anda memerlukan dua kunci, Kunci Verifikasi Pin (PVK) untuk menghasilkan PVV dan Kunci Enkripsi Pin untuk mengenkripsi pin. Pin itu sendiri dihasilkan secara acak dengan aman di dalam layanan dan tidak terkait dengan salah satu kunci secara kriptografi.
PGK harus menjadi kunci algoritma TDES_2KEY berdasarkan algoritma PVV itu sendiri. PEK dapat berupa TDES_2KEY, TDES_3KEY atau AES_128. Dalam hal ini, karena PEK ditujukan untuk penggunaan internal dalam sistem Anda, AES_128 akan menjadi pilihan yang baik. Jika PEK digunakan untuk pertukaran dengan sistem lain (misalnya jaringan kartu, pengakuisisi, ATMs) atau sedang dipindahkan sebagai bagian dari migrasi, TDES_2KEY mungkin menjadi pilihan yang lebih tepat untuk alasan kompatibilitas.
Buat 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"}]'
Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (KCV).
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333: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" } }
Perhatikan KeyArn
yang mewakili kunci, misalnya arn:aws:payment-cryptography:us-east- 2:111122223333:key/ivi5ksfsuplneuyt. Anda membutuhkannya di langkah berikutnya.
Buat 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"}]'
Respons menggemakan kembali parameter permintaan, termasuk ARN untuk panggilan berikutnya serta Nilai Pemeriksaan Kunci (KCV).
{ "Key": { "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333: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" } }
Perhatikan KeyArn
yang mewakili kunci, misalnya arn:aws:payment-cryptography:us-east- 2:111122223333:key/ov6icy4ryas4zcza. Anda membutuhkannya di langkah berikutnya.
Hasilkan pin acak, hasilkan PVV dan kembalikan PIN dan PVV terenkripsi
Dalam contoh ini, kami akan menghasilkan pin 4 digit baru (acak) di mana output akan dienkripsi PIN block
(. PinData PinBlock) dan a PVV
(pinData. VerificationValue). Input kuncinya adalahPAN
, Pin Verification Key
(juga dikenal sebagai kunci pembuatan pin), Pin Encryption Key
dan format Blok PIN.
Perintah ini mengharuskan kuncinya bertipeTR31_V2_VISA_PIN_VERIFICATION_KEY
.
$
aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333: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:111122223333:key/37y2tsl45p5zjbh2", "GenerationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", "EncryptedPinBlock": "AC17DC148BDA645E", "PinData": { "VerificationValue": "5507" } }
Validasi PIN terenkripsi menggunakan metode PVV
Dalam contoh ini, kita akan memvalidasi PIN untuk PAN tertentu. PIN biasanya disediakan oleh pemegang kartu atau pengguna selama waktu transaksi untuk validasi dan dibandingkan dengan nilai pada file (input dari pemegang kartu diberikan sebagai nilai terenkripsi dari terminal atau penyedia hulu lainnya). Untuk memvalidasi input ini, nilai berikut juga akan diberikan saat runtime - Pin terenkripsi, kunci yang digunakan untuk mengenkripsi pin input (sering disebut sebagai IWK), PAN
dan nilai untuk memverifikasi terhadap (baik a atau). PVV
PIN offset
Jika Kriptografi AWS Pembayaran dapat memvalidasi pin, http/200 dikembalikan. Jika pin tidak divalidasi, itu akan mengembalikan http/400.
$
aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333: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:111122223333:key/37y2tsl45p5zjbh2", "VerificationKeyCheckValue": "7F2363", "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt", "EncryptionKeyCheckValue": "7CC9E2", }