

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

# Kunci impor
<a name="keys-import"></a>

**penting**  
 Contoh memerlukan versi terbaru AWS CLI V2. Sebelum memulai, pastikan Anda telah meningkatkan ke [versi terbaru](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). 

**Contents**
+ [Pengantar kunci impor](#keys-import-introduction)
+ [Mengimpor kunci simetris](#keys-import-symmetric)
  + [Kunci impor menggunakan teknik asimetris () TR-34](#keys-import-tr34)
  + [Kunci impor menggunakan teknik asimetris (ECDH)](#keys-import-ecdh)
  + [Kunci impor menggunakan teknik asimetris (RSA Unwrap)](#keys-import-rsaunwrap)
  + [Impor kunci simetris menggunakan kunci pertukaran kunci yang telah ditetapkan sebelumnya () TR-31](#keys-import-tr31)
+ [Mengimpor kunci publik asimetris (RSA, ECC)](#keys-import-asymmetric)
  + [Mengimpor kunci publik RSA](#keys-import-rsapublickey)
  + [Mengimpor kunci publik ECC](#keys-import-eccpublickey)

## Pengantar kunci impor
<a name="keys-import-introduction"></a>

**catatan**  
Saat mengimpor kunci menggunakan X9.143, TR-31 atau blok TR-34 kunci, Kriptografi AWS Pembayaran biasanya mempertahankan (tetapi tidak menggunakan) header opsional apa pun. Header HM (HMAC hash type) digunakan selama operasi kriptografi. Header KP (KCV dari kunci pembungkus) khusus untuk proses impor dan tidak dipertahankan. 

Ketika bertukar kunci dengan rekanan, biasanya untuk pertama menukar kunci pertukaran kunci (KEK). Kunci ini kemudian akan digunakan untuk melindungi kunci berikutnya. Menggunakan format elektronik, KEK dapat ditukar menggunakan teknik asimetris seperti TR-34, ECDH atau RSA wrap. Kunci selanjutnya akan ditukar menggunakan pertukaran kunci simetris seperti. TR-31 KEK ini akan berumur panjang dan hanya dapat diperbarui setiap beberapa tahun berdasarkan kebijakan dan periode kripto yang ditentukan. 

Jika hanya satu atau dua kunci yang dipertukarkan, Anda juga dapat memilih untuk menggunakan teknik asimetris untuk langsung menukar kunci tersebut seperti BDK. AWS Kriptografi Pembayaran mendukung kedua metode pertukaran kunci.

## Mengimpor kunci simetris
<a name="keys-import-symmetric"></a>

### Kunci impor menggunakan teknik asimetris () TR-34
<a name="keys-import-tr34"></a>

![AWS Proses impor kunci enkripsi kunci Kriptografi Pembayaran](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/images/keyimport-process-kek-import.png)


 TR-34 menggunakan kriptografi asimetris RSA untuk mengenkripsi dan menandatangani kunci simetris untuk pertukaran. Ini memastikan kerahasiaan (enkripsi) dan integritas (tanda tangan) dari kunci yang dibungkus. 

 Untuk mengimpor kunci Anda sendiri, lihat proyek sampel Kriptografi AWS Pembayaran di [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export). Untuk petunjuk tentang cara import/export mengunci dari platform lain, kode sampel tersedia di [GitHub](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/key-import-export)atau lihat panduan pengguna untuk platform tersebut. 

1. 

****Panggil perintah Inisialisasi Impor****  
Panggilan `get-parameters-for-import` untuk menginisialisasi proses impor. API ini menghasilkan key pair untuk impor kunci, menandatangani kunci, dan mengembalikan sertifikat dan root sertifikat. Enkripsi kunci yang akan diekspor menggunakan kunci ini. Dalam TR-34 terminologi, ini dikenal sebagai Sertifikat KRD. Sertifikat ini dikodekan base64, berumur pendek, dan dimaksudkan hanya untuk tujuan ini. Simpan `ImportToken` nilainya. 

   ```
   $ aws payment-cryptography get-parameters-for-import \
       --key-material-type TR34_KEY_BLOCK \
       --wrapping-key-algorithm RSA_2048
   ```

   ```
   {
       "ImportToken": "import-token-bwxli6ocftypneu5",
       "ParametersValidUntilTimestamp": 1698245002.065,
       "WrappingKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0....",
       "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0....",
       "WrappingKeyAlgorithm": "RSA_2048"
   }
   ```

1. 

****Instal sertifikat publik pada sistem sumber utama****  
Dengan sebagian besar HSM, Anda perlu menginstal, memuat, atau mempercayai sertifikat publik yang dihasilkan pada langkah 1 untuk mengekspor kunci yang menggunakannya. Ini dapat mencakup seluruh rantai sertifikat atau hanya sertifikat root dari langkah 1, tergantung pada HSM. 

1. 

****Hasilkan key pair pada sistem sumber dan berikan rantai sertifikat AWS Kriptografi Pembayaran****  
Untuk memastikan integritas muatan yang ditransmisikan, pihak pengirim (Key Distribution Host atau KDH) menandatanganinya. Buat kunci publik untuk tujuan ini dan buat sertifikat kunci publik (X509) untuk memberikan kembali Kriptografi AWS Pembayaran. 

    Saat mentransfer kunci dari HSM, buat key pair pada HSM itu. HSM, pihak ketiga, atau layanan seperti AWS Private CA dapat menghasilkan sertifikat. 

   Muat sertifikat root ke Kriptografi AWS Pembayaran menggunakan `importKey` perintah dengan KeyMaterialType dari `RootCertificatePublicKey` dan KeyUsageType dari. `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE` 

   Untuk sertifikat perantara, gunakan `importKey` perintah dengan KeyMaterialType dari `TrustedCertificatePublicKey` dan KeyUsageType dari`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. Ulangi proses ini untuk beberapa sertifikat perantara. Gunakan sertifikat impor terakhir dalam rantai sebagai masukan ke perintah impor berikutnya. `KeyArn` 
**catatan**  
Jangan mengimpor sertifikat daun. Berikan langsung selama perintah impor.

1. 

****Ekspor kunci dari sistem sumber****  
Banyak HSM dan sistem terkait mendukung kunci ekspor menggunakan norma. TR-34 Tentukan kunci publik dari langkah 1 sebagai sertifikat KRD (enkripsi) dan kunci dari langkah 3 sebagai sertifikat KDH (penandatanganan). Untuk mengimpor ke Kriptografi AWS Pembayaran, tentukan formatnya sebagai format dua pass TR-34.2012 non-CMS, yang juga dapat disebut sebagai format Diebold. TR-34 

1. 

****Panggil Kunci Impor****  
Panggil ImportKey API dengan file KeyMaterialType . `TR34_KEY_BLOCK` Gunakan keYarn dari CA terakhir yang diimpor pada langkah 3 untuk`certificate-authority-public-key-identifier`, bahan kunci yang dibungkus dari langkah 4 untuk`key-material`, dan sertifikat daun dari langkah 3 untuk`signing-key-certificate`. Sertakan token impor dari langkah 1. 

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"Tr34KeyBlock": { \
       "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl", \
       "ImportToken": "import-token-bwxli6ocftypneu5", \
       "KeyBlockFormat": "X9_TR34_2012", \
       "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...", \
       "WrappedKeyBlock": "308205A106092A864886F70D010702A08205923082058E020101310D300B0609608648016503040201308203..."} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-06-13T16:52:52.859000-04:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
       "KeyAttributes": {
         "KeyAlgorithm": "TDES_3KEY",
         "KeyClass": "SYMMETRIC_KEY",
         "KeyModesOfUse": {
           "Decrypt": true,
           "DeriveKey": false,
           "Encrypt": true,
           "Generate": false,
           "NoRestrictions": false,
           "Sign": false,
           "Unwrap": true,
           "Verify": false,
           "Wrap": true
         },
         "KeyUsage": "TR31_K1_KEY_ENCRYPTION_KEY"
       },
       "KeyCheckValue": "CB94A2",
       "KeyCheckValueAlgorithm": "ANSI_X9_24",
       "KeyOrigin": "EXTERNAL",
       "KeyState": "CREATE_COMPLETE",
       "UsageStartTimestamp": "2023-06-13T16:52:52.859000-04:00"
     }
   }
   ```

1. 

****Gunakan kunci yang diimpor untuk operasi kriptografi atau impor berikutnya****  
Jika yang diimpor KeyUsage adalah TR31\_K0\_KEY\_ENCRYPTION\_KEY, Anda dapat menggunakan kunci ini untuk impor kunci berikutnya menggunakan. TR-31 Untuk jenis kunci lainnya (seperti TR31\_D0\_SYMMETRIC\_DATA\_ENCRYPTION\_KEY), Anda dapat menggunakan kunci secara langsung untuk operasi kriptografi. 

### Kunci impor menggunakan teknik asimetris (ECDH)
<a name="keys-import-ecdh"></a>

![AWS Proses impor kunci enkripsi kunci Kriptografi Pembayaran menggunakan ECDH](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/images/keyimport-ecdh-import.png)


Elliptic Curve Diffie-Hellman (ECDH) menggunakan kriptografi asimetris ECC untuk membuat kunci bersama antara dua pihak tanpa memerlukan kunci yang telah dipertukarkan sebelumnya. Kunci ECDH bersifat sementara, jadi Kriptografi AWS Pembayaran tidak menyimpannya. Dalam proses ini, satu kali [KBPK/KEK](terminology.md#terms.kbpk)diturunkan menggunakan ECDH. Kunci turunan itu segera digunakan untuk membungkus kunci sebenarnya yang ingin Anda transfer, yang bisa berupa KBPK lain, kunci IPEK, atau jenis kunci lainnya. 

Saat mengimpor, sistem pengiriman umumnya dikenal sebagai Pihak U (Inisiator) dan Kriptografi AWS Pembayaran dikenal sebagai Party V (Responder). 

**catatan**  
 Meskipun ECDH dapat digunakan untuk menukar jenis kunci simetris apa pun, itu adalah satu-satunya pendekatan yang dapat mentransfer kunci dengan aman. AES-256 

1. 

****Hasilkan Pasangan Kunci ECC****  
Panggilan `create-key` untuk membuat key pair ECC untuk proses ini. API ini menghasilkan key pair untuk impor atau ekspor kunci. Saat pembuatan, tentukan jenis kunci apa yang dapat diturunkan menggunakan kunci ECC ini. Saat menggunakan ECDH untuk menukar (membungkus) kunci lainnya, gunakan nilai. `TR31_K1_KEY_BLOCK_PROTECTION_KEY`
**catatan**  
 Meskipun ECDH tingkat rendah menghasilkan kunci turunan yang dapat digunakan untuk tujuan apa pun, Kriptografi AWS Pembayaran membatasi penggunaan kembali kunci yang tidak disengaja untuk berbagai tujuan dengan mengizinkan kunci hanya digunakan untuk satu jenis kunci turunan. 

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

1. 

****Dapatkan Sertifikat Kunci Publik****  
Hubungi `get-public-key-certificate` untuk menerima kunci publik sebagai X.509 sertifikat yang ditandatangani oleh CA akun Anda yang khusus untuk Kriptografi AWS Pembayaran di wilayah tertentu.  
**Example**  

   ```
   $ aws payment-cryptography get-public-key-certificate \
                    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv
   ```

   ```
   {
               "KeyCertificate": "LS0tLS1CRUdJTi...",
               "KeyCertificateChain": "LS0tLS1CRUdJT..."
         }
   ```

1. 

****Instal sertifikat publik pada sistem rekanan (Partai U)****  
Dengan banyak HSM, Anda perlu menginstal, memuat, atau mempercayai sertifikat publik yang dihasilkan pada langkah 1 untuk mengekspor kunci yang menggunakannya. Ini dapat mencakup seluruh rantai sertifikat atau hanya sertifikat root dari langkah 1, tergantung pada HSM. Konsultasikan dokumentasi HSM Anda untuk informasi lebih lanjut.

1. 

****Hasilkan key pair ECC pada sistem sumber dan berikan rantai sertifikat AWS Kriptografi Pembayaran****  
Dalam ECDH, masing-masing pihak menghasilkan key pair dan menyetujui common key. Agar Kriptografi AWS Pembayaran mendapatkan kunci, diperlukan kunci publik rekanan dalam format kunci X.509 publik.

   Saat mentransfer kunci dari HSM, buat key pair pada HSM itu. Untuk HSM yang mendukung blok kunci, header kunci akan terlihat mirip `D0144K3EX00E0000` dengan. Saat membuat sertifikat, Anda biasanya menghasilkan CSR pada HSM dan kemudian HSM, pihak ketiga, atau layanan seperti AWS Private CA dapat menghasilkan sertifikat.

   Muat sertifikat root ke Kriptografi AWS Pembayaran menggunakan `importKey` perintah dengan KeyMaterialType dari `RootCertificatePublicKey` dan KeyUsageType dari. `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`

   Untuk sertifikat perantara, gunakan `importKey` perintah dengan KeyMaterialType dari `TrustedCertificatePublicKey` dan KeyUsageType dari`TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`. Ulangi proses ini untuk beberapa sertifikat perantara. Gunakan sertifikat impor terakhir dalam rantai sebagai masukan ke perintah impor berikutnya. `KeyArn`
**catatan**  
Jangan mengimpor sertifikat daun. Berikan langsung selama perintah impor.

1. 

****Dapatkan kunci satu kali menggunakan ECDH pada Party U HSM****  
Banyak HSM dan sistem terkait mendukung pembuatan kunci menggunakan ECDH. Tentukan kunci publik dari langkah 1 sebagai kunci publik dan kunci dari langkah 3 sebagai kunci pribadi. Untuk opsi yang diizinkan, seperti metode derivasi, lihat panduan [API](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportDiffieHellmanTr31KeyBlock.html). 
**catatan**  
 Parameter derivasi seperti tipe hash harus sama persis di kedua sisi. Jika tidak, Anda akan menghasilkan kunci yang berbeda. 

1. 

****Ekspor kunci dari sistem sumber****  
Terakhir, ekspor kunci yang ingin Anda bawa ke Kriptografi AWS Pembayaran menggunakan TR-31 perintah standar. Tentukan kunci turunan ECDH sebagai KBPK. Kunci yang akan diekspor dapat berupa kunci TDES atau AES yang tunduk pada kombinasi yang TR-31 valid, selama kunci pembungkus setidaknya sekuat kunci yang akan diekspor. 

1. 

****Panggil Kunci Impor****  
Panggil `import-key` API dengan KeyMaterialType file`DiffieHellmanTr31KeyBlock`. Gunakan keYarn dari CA terakhir yang diimpor pada langkah 3 untuk`certificate-authority-public-key-identifier`, bahan kunci yang dibungkus dari langkah 4 untuk`key-material`, dan sertifikat daun dari langkah 3 untuk. `public-key-certificate` Sertakan kunci pribadi ARN dari langkah 1.

   ```
   $ aws payment-cryptography import-key \
             --key-material='{
               "DiffieHellmanTr31KeyBlock": {
                 "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
                 "DerivationData": {
                   "SharedInformation": "1234567890"
                 },
                 "DeriveKeyAlgorithm": "AES_256",
                 "KeyDerivationFunction": "NIST_SP800",
                 "KeyDerivationHashAlgorithm": "SHA_256",
                 "PrivateKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
                 "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN....",
                 "WrappedKeyBlock": "D0112K1TB00E0000D603CCA8ACB71517906600FF8F0F195A38776A7190A0EF0024F088A5342DB98E2735084A7841CB00E16D373A70857E9A"
               }
             }'
   ```

   ```
   {
           "Key": {
             "CreateTimestamp": "2025-03-13T16:52:52.859000-04:00",
             "Enabled": true,
             "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza",
             "KeyAttributes": {
               "KeyAlgorithm": "TDES_3KEY",
               "KeyClass": "SYMMETRIC_KEY",
               "KeyModesOfUse": {
                 "Decrypt": true,
                 "DeriveKey": false,
                 "Encrypt": true,
                 "Generate": false,
                 "NoRestrictions": false,
                 "Sign": false,
                 "Unwrap": true,
                 "Verify": false,
                 "Wrap": true
               },
               "KeyUsage": "TR31_K1_KEY_ENCRYPTION_KEY"
             },
             "KeyCheckValue": "CB94A2",
             "KeyCheckValueAlgorithm": "ANSI_X9_24",
             "KeyOrigin": "EXTERNAL",
             "KeyState": "CREATE_COMPLETE",
             "UsageStartTimestamp": "2025-03-13T16:52:52.859000-04:00"
           }
         }
   ```

1. 

****Gunakan kunci yang diimpor untuk operasi kriptografi atau impor berikutnya****  
Jika yang diimpor KeyUsage adalah TR31\_K0\_KEY\_ENCRYPTION\_KEY, Anda dapat menggunakan kunci ini untuk impor kunci berikutnya menggunakan. TR-31 Untuk jenis kunci lainnya (seperti TR31\_D0\_SYMMETRIC\_DATA\_ENCRYPTION\_KEY), Anda dapat menggunakan kunci secara langsung untuk operasi kriptografi.

### Kunci impor menggunakan teknik asimetris (RSA Unwrap)
<a name="keys-import-rsaunwrap"></a>

 Ikhtisar: Kriptografi AWS Pembayaran mendukung RSA wrap/unwrap untuk pertukaran kunci ketika TR-34 tidak memungkinkan. Seperti TR-34, teknik ini menggunakan kriptografi asimetris RSA untuk mengenkripsi kunci simetris untuk pertukaran. Namun, tidak seperti TR-34, metode ini tidak memiliki pihak pengirim yang menandatangani payload. Selain itu, teknik pembungkus RSA ini tidak menjaga integritas metadata kunci selama transfer karena tidak menyertakan blok kunci. 

**catatan**  
 Anda dapat menggunakan bungkus RSA untuk mengimpor atau mengekspor TDES dan AES-128 kunci. 

1. 

****Panggil perintah Inisialisasi Impor****  
Panggilan **get-parameters-for-import** untuk menginisialisasi proses impor dengan `KeyMaterialType` dari. `KEY_CRYPTOGRAM` Gunakan `RSA_2048` untuk `WrappingKeyAlgorithm` saat bertukar tombol TDES. Gunakan `RSA_3072` atau `RSA_4096` saat bertukar TDES atau AES-128 kunci. API ini menghasilkan key pair untuk impor kunci, menandatangani kunci menggunakan root sertifikat, dan mengembalikan sertifikat dan root sertifikat. Enkripsi kunci yang akan diekspor menggunakan kunci ini. Sertifikat ini berumur pendek dan dimaksudkan hanya 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"
   }
   ```

1. 

****Instal sertifikat publik pada sistem sumber utama****  
Dengan banyak HSM, Anda perlu menginstal, memuat, atau mempercayai sertifikat publik (root) and/or yang dihasilkan pada langkah 1 untuk mengekspor kunci menggunakannya. 

1. 

****Ekspor kunci dari sistem sumber****  
Banyak HSM dan sistem terkait mendukung kunci ekspor menggunakan bungkus RSA. Tentukan kunci publik dari langkah 1 sebagai sertifikat enkripsi (`WrappingKeyCertificate`). Jika Anda membutuhkan rantai kepercayaan, gunakan `WrappingKeyCertificateChain` dari langkah 1. Saat mengekspor kunci dari HSM Anda, tentukan formatnya sebagai RSA, dengan Mode Padding = PKCS \#1 v2.2 OAEP (dengan SHA 256 atau SHA 512). 

1. 

****Panggilan **kunci impor******  
Panggil **import-key** API dengan `KeyMaterialType` file`KeyMaterial`. Anda membutuhkan `ImportToken` dari langkah 1 dan `key-material` (bahan kunci yang dibungkus) dari langkah 3. Berikan 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"
     }
   }
   ```

1. 

****Gunakan kunci yang diimpor untuk operasi kriptografi atau impor berikutnya****  
Jika diimpor `KeyUsage` adalah `TR31_K0_KEY_ENCRYPTION_KEY` atau`TR31_K1_KEY_BLOCK_PROTECTION_KEY`, Anda dapat menggunakan kunci ini untuk impor kunci berikutnya menggunakan TR-31. Jika jenis kunci adalah jenis lain (seperti`TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`), Anda dapat menggunakan kunci secara langsung untuk operasi kriptografi. 

### Impor kunci simetris menggunakan kunci pertukaran kunci yang telah ditetapkan sebelumnya () TR-31
<a name="keys-import-tr31"></a>

![AWS Proses impor kunci simetris Kriptografi Pembayaran](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/images/keyimport-process-wk-import.png)


Saat bertukar beberapa kunci atau mendukung rotasi kunci, mitra biasanya pertama kali menukar kunci enkripsi kunci awal (KEK). Anda dapat menukar KEK dengan Kriptografi AWS Pembayaran, menggunakan teknik seperti [TR-34](#keys-import-tr34)atau[Pertukaran Kunci Fisik](keys-physicalkeyexchange.md).

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

1. 

****Kunci Enkripsi Kunci Impor (KEK)****  
Pastikan Anda telah mengimpor KEK Anda dan memiliki keYarn (atau KeyAlias) yang tersedia.

1. 

****Buat kunci pada platform sumber****  
Jika kuncinya tidak ada, buat di platform sumber. Atau, Anda dapat membuat kunci pada Kriptografi AWS Pembayaran dan menggunakan **export** perintah. 

1. 

****Ekspor kunci dari platform sumber****  
Saat mengekspor, tentukan format ekspor sebagai TR-31. Platform sumber akan meminta kunci untuk mengekspor dan kunci enkripsi kunci untuk digunakan. 

1. 

****Impor ke AWS Kriptografi Pembayaran****  
Saat memanggil **import-key** perintah, gunakan keYarn (atau alias) kunci enkripsi kunci Anda untuk. `WrappingKeyIdentifier` Gunakan output dari platform sumber untuk`WrappedKeyBlock`.   
**Example**  

   ```
   $ 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 publik asimetris (RSA, ECC)
<a name="keys-import-asymmetric"></a>

Semua sertifikat yang diimpor harus setidaknya sekuat sertifikat penerbitannya (pendahulunya) dalam rantai. Ini berarti bahwa RSA\_2048 CA hanya dapat digunakan untuk melindungi sertifikat daun RSA\_2048 dan sertifikat ECC harus dilindungi oleh sertifikat ECC lain dengan kekuatan setara. Sertifikat ECC P384 hanya dapat diterbitkan oleh P384 atau P521 CA. Semua sertifikat harus belum kedaluwarsa pada saat impor. 

### Mengimpor kunci publik RSA
<a name="keys-import-rsapublickey"></a>

AWS Kriptografi Pembayaran mendukung impor kunci RSA publik sebagai sertifikat. X.509 Untuk mengimpor sertifikat, pertama impor sertifikat root nya. Semua sertifikat harus belum kedaluwarsa pada saat impor. Sertifikat harus dalam format PEM dan base64 dikodekan. 

1. 

****Impor Root Certificate ke AWS Kriptografi Pembayaran****  
Gunakan perintah berikut untuk mengimpor sertifikat root:  
**Example**  

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

1. 

****Impor Sertifikat Kunci Publik ke AWS Kriptografi Pembayaran****  
Anda sekarang dapat mengimpor kunci publik. Karena TR-34 dan ECDH mengandalkan lulus sertifikat daun saat run-time, opsi ini hanya digunakan saat mengenkripsi data menggunakan kunci publik dari sistem lain. KeyUsage akan diatur ke TR31\_D1\_ASYMMETRIC\_KEY\_FOR\_DATA\_ENCRYPTION.  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"Tr31KeyBlock": { \
       "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \
       "WrappedKeyBlock": "D0112B0AX00E00002E0A3D58252CB67564853373D1EBCC1E23B2ADE7B15E967CC27B85D5999EF58E11662991FF5EB1381E987D744334B99D"} \
       }'
   ```

   ```
   {
     "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"
     }
   }
   ```

### Mengimpor kunci publik ECC
<a name="keys-import-eccpublickey"></a>

AWS Kriptografi Pembayaran mendukung impor kunci ECC publik sebagai sertifikat. X.509 Untuk mengimpor sertifikat, pertama-tama impor sertifikat CA root dan sertifikat perantara apa pun. Semua sertifikat harus belum kedaluwarsa pada saat impor. Sertifikat harus dalam format PEM dan base64 dikodekan.

1. 

****Impor Sertifikat Root ECC ke AWS Kriptografi Pembayaran****  
Gunakan perintah berikut untuk mengimpor sertifikat root:  
**Example**  

   ```
   $ aws payment-cryptography import-key \
       --key-material='{"RootCertificatePublicKey": { \
       "KeyAttributes": { \
       "KeyAlgorithm": "ECC_NIST_P521", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": { \
       "Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQekNDQWFDZ0F3SUJBZ0lDSjNVd0NnWUlLb1pJemowRUF3UXdNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnAKWjI1bFpFTmxjblJwWm1sallYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNQjRYRFRJMU1ETXlPREF3TURBdwpNRm9YRFRJMk1ETXlPREF3TURBd01Gb3dNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnBaMjVsWkVObGNuUnBabWxqCllYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNSUdiTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFqQTRHR0FBUUEKRDVEUXc5RW1Tb1lJVkRnbUpmRm1wL1pzMXp1M0ZobThrdUdkYlA4NWgwNTdydkhHZ3VISW03V3N1aTlpdXNvNApFWEZnV3ZUdy85amhZcVJrMi9yY1RHb0JrS2NpV3Q2UHMxVmpSUVZhVEZmbmxPdjRNTURQUEFEUWthVU45cVNNCkF5MTF0RklKNlFGWDR0aGx3RzBaZkFwd0NMV1ZyMzFrRU45RDJhVUh6Mjg5WlM2all6QmhNQjhHQTFVZEl3UVkKTUJhQUZFMjhnay9QZnZ3NklsNm9yQzNwRmJtK280emxNQjBHQTFVZERnUVdCQlJOdklKUHozNzhPaUplcUt3dAo2Ulc1dnFPTTVUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lDeERBS0JnZ3Foa2pPClBRUURCQU9CakFBd2dZZ0NRZ0ZRRit5VUVSYTZoQ0RwSDVHeVhlaVFYYU0wc25Fd3o2TmlmOHlSTlF1dzJ5MUoKdTNoKzZYa2N6Y3lVT01NSzhaRnhBVDhFOERMVUtpdjM1VmdzSkFDN09RSkNBSWMzdEVNV01tZTVCV3ZXTFVxSQpnV3h5U3UxWDdRSTJrR2dUK1FqRGlhQ2E4b091NVlJTmZscW4reUswR29yNGJzMTBZaUh4SHhpV2t0UVRSdVp4CkhIU3UKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-08-08T18:52:01.023000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wv4gb6h3xcqjk6sm",
       "KeyAttributes": {
         "KeyAlgorithm": "ECC_NIST_P521",
         "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": "2025-03-08T18:52:01.023000+00:00"
     }
   }
   ```

1. 

****Impor Sertifikat Menengah ke AWS Kriptografi Pembayaran****  
Gunakan perintah berikut untuk mengimpor sertifikat perantara:  
**Example**  

   ```
   $ aws payment-cryptography import-key \
                   --key-material='{"TrustedCertificatePublicKey": { \
                   --certificate-authority-public-key-identifier='"arn:aws:payment-cryptography:us-east-2:111122223333:key/wv4gb6h3xcqjk6sm"  \
       "KeyAttributes": { \
       "KeyAlgorithm": "ECC_NIST_P521", \
       "KeyClass": "PUBLIC_KEY", \
       "KeyModesOfUse": { \
       "Verify": true}, \
       "KeyUsage": "TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE"}, \
       "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLekNDQVkyZ0F3SUJBZ0lDVDAwd0NnWUlLb1pJemowRUF3UXdNakVlTUJ3R0ExVUVDd3dWVTJWc1psTnAKWjI1bFpFTmxjblJwWm1sallYUmxNUkF3RGdZRFZRUUREQWRMUkVnZ1EwRXhNQjRYRFRJMU1ETXlPREF3TURBdwpNRm9YRFRJMk1ETXlPREF3TURBd01Gb3dNREVlTUJ3R0ExVUVBd3dWUzBSSUlFbHVkR1Z5YldWa2FXRjBaU0JEClFTQXhNUTR3REFZRFZRUUZFd1V4TURJd01UQ0JtekFRQmdjcWhrak9QUUlCQmdVcmdRUUFJd09CaGdBRUFPOGwKZFM4c09YQlNWQlVINWxmRWZkNTZxYVVIenExZVN3VGZKdnI5eEFmb2hRNTNWZ2hLUlZoNzhNR2tJTjVCNTBJTAozbmhaU1JnUnRoS20xNkxwc084NEFGa1Z0ZEpOaEJpYUlQZlRlYXltOHh6OU44KzFWZ3RMTDZBcTBtNkwwMUFwCkUvUmxzUUJ3NWxoakM4VHVOWU1QaUpMYUNPbjJrZVh6SU5SSm01SjJtR3Q1bzFJd1VEQWZCZ05WSFNNRUdEQVcKZ0JSbklBNi9Vc3RMYUpzTzlpYjg1Zm9DWEcwRk96QWRCZ05WSFE0RUZnUVVaeUFPdjFMTFMyaWJEdlltL09YNgpBbHh0QlRzd0RnWURWUjBQQVFIL0JBUURBZ2JBTUFvR0NDcUdTTTQ5QkFNRUE0R0xBRENCaHdKQ0FmTnJjdXBkClpQd3ZqTGdVeFZiN1NtSXNhY2Z6MVZrNWZFYXZHNlVzdU95Y1lGbHlQQTlJZGgyK0lOcW5jSVg4VEo2cDFJRWkKN3RCTHpPb1l0ZWd2Q1dsL0FrRkRzWHFsWkI5bU93WnNEQy9HZEpEcm5uQ0ZkR29hM1NwZytqbGdhOGdQTmxLbAo1dE9IU0lVZnZxcFhEcWYrdXV6SEc1Z3FjdUhnQU8wOUhuMloyNUc4eVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg=="} \
       }'
   ```

   ```
   {
     "Key": {
       "CreateTimestamp": "2025-03-20T18:52:01.023000+00:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
       "KeyAttributes": {
         "KeyAlgorithm": "ECC",
         "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": "2025-03-25T18:52:01.023000+00:00"
     }
   }
   ```

1. 

****Impor Sertifikat Kunci Publik (Daun) ke AWS Kriptografi Pembayaran****  
 Meskipun Anda dapat mengimpor sertifikat ECC daun, saat ini tidak ada fungsi yang ditentukan dalam Kriptografi AWS Pembayaran untuk itu selain penyimpanan. Ini karena saat menggunakan fungsi ECDH, sertifikat daun diteruskan saat runtime. 