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
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 dibuat secara acak dengan aman di dalam layanan dan tidak terkait dengan kunci mana pun secara kriptografis.
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 dimaksudkan untuk penggunaan internal dalam sistem Anda, AES_128 akan menjadi pilihan yang baik. Jika PEK digunakan untuk pertukaran dengan sistem lain (misalnya jaringan kartu, pengakuis, ATM) atau dipindahkan sebagai bagian dari migrasi, TDES_2KEY mungkin merupakan 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 Key Check Value (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 Key Check Value (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
contoh
Dalam contoh ini, kita akan menghasilkan pin 4 digit baru (acak) di mana outputnya akan terenkripsi PIN block (PinData.PinBlock) dan PVV (pinData.VerificationValue). Input kunci 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
contoh
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-nilai berikut juga akan diberikan saat runtime - Pin terenkripsi, kunci yang digunakan untuk mengenkripsi pin input (sering disebut sebagai IWK), PAN dan nilai untuk diverifikasi (baik a PVV atauPIN offset).
Jika AWS Kriptografi Pembayaran dapat memvalidasi pin, an http/200 dikembalikan. Jika pin tidak divalidasi, itu akan mengembalikan sebuah 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", }