Kunci impor - AWS Kriptografi Pembayaran

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kunci impor

penting

Contoh mungkin memerlukan AWS CLI V2 versi terbaru. Sebelum memulai, pastikan Anda telah meningkatkan ke versi terbaru.

Mengimpor kunci simetris

Kunci impor menggunakan teknik asimetris (TR-34)

AWS Proses impor kunci enkripsi kunci Kriptografi Pembayaran

Tinjauan: TR-34 menggunakan kriptografi asimetris RSA untuk mengenkripsi kunci simetris untuk pertukaran serta memastikan sumber data (penandatanganan). Ini memastikan kerahasiaan (enkripsi) dan integritas (tanda tangan) dari kunci yang dibungkus.

Jika Anda ingin mengimpor kunci Anda sendiri, silakan periksa proyek sampel di Github. Untuk petunjuk tentang cara mengimpor/mengekspor kunci dari platform lain, silakan baca panduan pengguna untuk platform tersebut.

1. Panggil perintah inisialisasi impor

Panggilan get-parameters-for-import untuk menginisialisasi proses impor. API ini akan menghasilkan keypair untuk tujuan impor kunci, menandatangani kunci dan mengembalikan sertifikat dan root sertifikat. Pada akhirnya, kunci yang akan diekspor harus dienkripsi menggunakan kunci ini. Dalam terminologi TR-34, ini dikenal sebagai Sertifikat KRD. Perhatikan bahwa sertifikat ini berumur pendek dan hanya ditujukan untuk tujuan ini.

2. Instal sertifikat publik pada sistem sumber utama

Dengan banyak HSM, Anda mungkin perlu menginstal/memuat/mempercayai sertifikat publik yang dihasilkan pada langkah 1 untuk mengekspor kunci menggunakannya.

3. Hasilkan kunci publik dan berikan root sertifikat ke Kriptografi AWS Pembayaran

Untuk memastikan integritas muatan yang ditransmisikan, itu ditandatangani oleh pihak pengirim (dikenal sebagai Host Distribusi Utama atau KDH). Pihak pengirim akan ingin menghasilkan kunci publik untuk tujuan ini dan kemudian membuat sertifikat kunci publik (X509) yang dapat diberikan kembali ke Kriptografi AWS Pembayaran. AWS Private CA adalah salah satu opsi untuk menghasilkan sertifikat, tetapi tidak ada batasan pada otoritas sertifikat yang digunakan.

Setelah Anda memiliki sertifikat, Anda akan ingin memuat sertifikat root ke Kriptografi AWS Pembayaran menggunakan importKey perintah dan KeyMaterialType dari ROOT_PUBLIC_KEY_CERTIFICATE dan KeyUsageType dari. TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE

4. Ekspor kunci dari sistem sumber

Banyak HSM dan sistem terkait mendukung kemampuan untuk mengekspor kunci menggunakan norma TR-34. Anda akan ingin menentukan kunci publik dari langkah 1 sebagai sertifikat KRD (enkripsi) dan kunci dari langkah 3 sebagai sertifikat KDH (penandatanganan). Untuk mengimpor ke Kriptografi AWS Pembayaran, Anda akan ingin menentukan format menjadi TR-34.2012 non-CMS dua format pass yang juga dapat disebut sebagai format TR-34 Diebold.

5. Panggil kunci impor

Sebagai langkah terakhir, Anda akan memanggil ImportKey API dengan file KeyMaterialType . TR34_KEY_BLOCK certificate-authority-public-key-identifierAkan menjadi keYarn dari root CA yang diimpor pada langkah 3, key-material akan dibungkus bahan kunci dari langkah 4 dan signing-key-certificate merupakan sertifikat daun dari langkah 3. Anda juga perlu memberikan token impor dari langkah 1.

6. Gunakan kunci impor untuk operasi kriptografi atau impor berikutnya

Jika yang diimpor KeyUsage adalah TR31_K0_KEY_ENCRYPTION_KEY, maka kunci ini dapat digunakan untuk impor kunci berikutnya menggunakan TR-31. Jika jenis kunci adalah jenis lain (seperti TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY), maka kunci tersebut dapat langsung digunakan untuk operasi kriptografi.

Kunci impor menggunakan teknik asimetris (RSA Unwrap)

Ikhtisar: Kriptografi AWS Pembayaran mendukung pembungkus/buka RSA untuk pertukaran kunci ketika TR-34 tidak layak. Mirip dengan TR-34, teknik ini menggunakan kriptografi asimetris RSA untuk mengenkripsi kunci simetris untuk pertukaran. Namun, tidak seperti TR-34, metode ini tidak memiliki muatan yang ditandatangani oleh pihak pengirim. Selain itu, teknik pembungkus RSA ini tidak menjaga integritas metadata kunci selama transfer karena tidak menyertakan blok kunci.

catatan

Bungkus RSA dapat digunakan untuk mengimpor atau mengekspor kunci TDES dan AES-128.

1. Panggil perintah inisialisasi impor

Panggilan get-parameters-for-import untuk menginisialisasi proses impor dengan tipe material kunci dari KEY_CRYPTOGRAM. WrappingKeyAlgorithm bisa RSA_2048 saat menukar kunci TDES. RSA_3072 atau RSA_4096 dapat digunakan saat menukar tombol TDES atau AES-128. API ini akan menghasilkan keypair untuk tujuan impor kunci, menandatangani kunci menggunakan root sertifikat dan mengembalikan sertifikat dan root sertifikat. Pada akhirnya, kunci yang akan diekspor harus dienkripsi menggunakan kunci ini. Perhatikan bahwa sertifikat ini berumur pendek dan hanya ditujukan untuk tujuan ini.

$ 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. Instal sertifikat publik pada sistem sumber utama

Dengan banyak HSM, Anda mungkin perlu menginstal/memuat/mempercayai sertifikat publik (dan/atau akarnya) yang dihasilkan pada langkah 1 untuk mengekspor kunci menggunakannya.

3. Ekspor kunci dari sistem sumber

Banyak HSM dan sistem terkait mendukung kemampuan untuk mengekspor kunci menggunakan bungkus RSA. Anda akan ingin menentukan kunci publik dari langkah 1 sebagai sertifikat (enkripsi) (WrappingKeyCertificate). Jika Anda membutuhkan rantai kepercayaan, ini terkandung dalam bidang respons WrappingKeyCertificateChain di langkah #1. Saat mengekspor kunci dari HSM Anda, Anda akan ingin menentukan formatnya menjadi RSA, Mode Padding = PKCS #1 v2.2 OAEP (dengan SHA 256 atau SHA 512).

4. Panggil kunci impor

Sebagai langkah terakhir, Anda akan memanggil ImportKey API dengan file KeyMaterialType . KeyMaterial Anda akan memerlukan token impor dari langkah 1 dan key-material (bahan kunci yang dibungkus) dari langkah 3. Anda harus memberikan parameter kunci (seperti Key Usage) karena RSA wrap tidak menggunakan blok kunci.

$ 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. Gunakan kunci impor untuk operasi kriptografi atau impor berikutnya

Jika yang diimpor KeyUsage adalah TR31_K0_KEY_ENCRYPTION_KEY, maka kunci ini dapat digunakan untuk impor kunci berikutnya menggunakan TR-31. Jika jenis kunci adalah jenis lain (seperti TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY), maka kunci tersebut dapat langsung digunakan untuk operasi kriptografi.

Impor kunci simetris menggunakan kunci pertukaran kunci yang telah ditetapkan sebelumnya (TR-31)

AWS Proses impor kunci simetris Kriptografi Pembayaran

Ketika mitra bertukar beberapa kunci (atau untuk mendukung rotasi kunci), biasanya untuk pertama menukar kunci enkripsi kunci awal (KEK) menggunakan teknik seperti komponen kunci kertas atau dalam kasus Kriptografi AWS Pembayaran menggunakan TR-34.

Setelah KEK dibuat, Anda dapat menggunakan kunci ini untuk mengangkut kunci berikutnya (termasuk KEK lainnya). AWS Kriptografi Pembayaran mendukung pertukaran kunci semacam ini menggunakan ANSI TR-31 yang banyak digunakan dan didukung secara luas oleh vendor HSM.

1. Kunci Enkripsi Kunci Impor (KEK)

Diasumsikan bahwa Anda telah mengimpor KEK Anda dan memiliki keYarn (atau KeyAlias) yang tersedia untuk Anda.

2. Buat kunci pada platform sumber

Jika kunci belum ada, buat kunci di platform sumber. Sebaliknya, Anda dapat membuat kunci pada Kriptografi AWS Pembayaran dan menggunakan export perintah sebagai gantinya.

3. Ekspor kunci dari platform sumber

Saat mengekspor, pastikan Anda menentukan format ekspor sebagai TR-31. Platform sumber juga akan meminta Anda untuk kunci yang akan diekspor dan kunci enkripsi kunci untuk digunakan.

4. Impor ke Kriptografi AWS Pembayaran

Saat memanggil perintah ImportKey, WrappingKeyIdentifier harus keYarn (atau alias) kunci enkripsi kunci Anda dan WrappedKeyBlock merupakan output dari platform sumber.

$ 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" } }

Mengimpor kunci asimetris (RSA)

Mengimpor kunci publik RSA

AWS Kriptografi Pembayaran mendukung impor kunci RSA publik dalam bentuk sertifikat X.509. Untuk mengimpor sertifikat, Anda harus terlebih dahulu mengimpor sertifikat akarnya. Semua sertifikat harus tidak kedaluwarsa pada saat impor. Sertifikat harus dalam format PEM dan harus dikodekan base64.

1. Impor ke Sertifikat Root ke Kriptografi AWS Pembayaran
$ 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. Impor Sertifikat Kunci Publik ke Kriptografi AWS Pembayaran

Anda sekarang dapat mengimpor kunci publik. Ada dua opsi untuk mengimpor kunci publik. TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATUREdapat digunakan jika tujuan kuncinya adalah untuk memverifikasi tanda tangan (misalnya saat mengimpor menggunakan TR-34). TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTIONdapat digunakan saat mengenkripsi data yang dimaksudkan untuk digunakan dengan sistem lain.

$ 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" } }