

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

# Kunci ekspor
<a name="keys-export"></a>

**Contents**
+ [Ekspor kunci simetris](#keys-export-symmetric)
  + [Kunci ekspor menggunakan teknik asimetris (TR-34)](#keys-export-tr34)
  + [Kunci ekspor menggunakan teknik asimetris (ECDH)](#keys-export-ecdh)
  + [Kunci ekspor menggunakan teknik asimetris (RSA Wrap)](#keys-export-rsawrap)
  + [Ekspor kunci simetris menggunakan kunci pertukaran kunci yang telah ditetapkan sebelumnya (TR-31)](#keys-export-tr31)
+ [Kunci Awal DUKPT Ekspor (IPEK/IK)](#keys-export-ipek)
+ [Tentukan header blok kunci untuk ekspor](#keys-export-optionalheaders)
  + [Header Umum](#keys-export-commonheaders)
+ [Ekspor kunci asimetris (RSA)](#keys-export-publickey)

## Ekspor kunci simetris
<a name="keys-export-symmetric"></a>

**penting**  
 Pastikan Anda memiliki versi terbaru AWS CLI sebelum memulai. Untuk memutakhirkan, lihat [Menginstal file AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html). 

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

TR-34 menggunakan kriptografi asimetris RSA untuk mengenkripsi dan menandatangani kunci simetris untuk pertukaran. Enkripsi melindungi kerahasiaan, sementara tanda tangan memastikan integritas. Saat Anda mengekspor kunci, Kriptografi AWS Pembayaran bertindak sebagai host distribusi kunci (KDH), dan sistem target Anda menjadi perangkat penerima kunci (KRD).

**catatan**  
Jika HSM Anda mendukung ekspor TR-34 tetapi bukan impor TR-34, kami sarankan Anda terlebih dahulu membuat KEK bersama antara HSM Anda dan Kriptografi Pembayaran menggunakan TR-34. AWS Anda kemudian dapat menggunakan TR-31 untuk mentransfer kunci yang tersisa.

1. 

****Inisialisasi proses ekspor****  
Jalankan **get-parameters-for-export** untuk menghasilkan key pair untuk ekspor kunci. Kami menggunakan key pair ini untuk menandatangani payload TR-34. Dalam terminologi TR-34, ini adalah sertifikat penandatanganan KDH. Sertifikat berumur pendek dan hanya berlaku untuk durasi yang ditentukan dalam`ParametersValidUntilTimestamp`.
**catatan**  
Semua sertifikat dalam pengkodean base64.  
**Example**  

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

   ```
   {
     "SigningKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFTZ0F3SUJ...",
     "SigningKeyCertificateChain": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS....",
     "SigningKeyAlgorithm": "RSA_2048",
     "ExportToken": "export-token-au7pvkbsq4mbup6i",
     "ParametersValidUntilTimestamp": "2023-06-13T15:40:24.036000-07:00"
   }
   ```

1. 

****Impor sertifikat Kriptografi AWS Pembayaran ke sistem penerima Anda****  
Impor rantai sertifikat dari langkah 1 ke sistem penerima Anda.

1. 

****Siapkan sertifikat sistem penerimaan Anda****  
Untuk melindungi muatan yang ditransmisikan, pihak pengirim (KDH) mengenkripsinya. Sistem penerima Anda (biasanya HSM Anda atau HSM mitra Anda) perlu menghasilkan kunci publik dan membuat sertifikat kunci publik X.509. Anda dapat menggunakan AWS Private CA untuk menghasilkan sertifikat, tetapi Anda dapat menggunakan otoritas sertifikat apa pun.

   Setelah Anda memiliki sertifikat, impor sertifikat root ke Kriptografi AWS Pembayaran menggunakan **ImportKey** perintah. Atur `KeyMaterialType` ke `RootCertificatePublicKey` dan `KeyUsageType` ke `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE`.

   Kami menggunakan `TR31_S0_ASYMMETRIC_KEY_FOR_DIGITAL_SIGNATURE` sebagai `KeyUsageType` karena ini adalah kunci root yang menandatangani sertifikat daun. Anda tidak perlu mengimpor sertifikat daun ke dalam Kriptografi AWS Pembayaran — Anda dapat meneruskannya secara inline.
**catatan**  
Jika sebelumnya Anda mengimpor sertifikat root, lewati langkah ini. Untuk sertifikat perantara, gunakan`TrustedCertificatePublicKey`.

1. 

****Ekspor kunci Anda****  
Panggil **ExportKey** API dengan `KeyMaterialType` set ke`TR34_KEY_BLOCK`. Anda perlu menyediakan:
   + KeYarn dari akar CA dari langkah 3 sebagai `CertificateAuthorityPublicKeyIdentifier`
   + Sertifikat daun dari langkah 3 sebagai `WrappingKeyCertificate`
   + KeYarn (atau alias) dari kunci yang ingin Anda ekspor sebagai `--export-key-identifier`
   + Token ekspor dari langkah 1  
**Example**  

   ```
   $ aws payment-cryptography export-key \
       --export-key-identifier "example-export-key" \
       --key-material '{"Tr34KeyBlock": { \
       "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/4kd6xud22e64wcbk", \
       "ExportToken": "export-token-au7pvkbsq4mbup6i", \
       "KeyBlockFormat": "X9_TR34_2012", \
       "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2RENDQXFXZ0F3SUJBZ0lSQ..."} \
       }'
   ```

   ```
   {
     "WrappedKey": {
       "KeyMaterial": "308205A106092A864886F70D010702A08205923082058...",
       "WrappedKeyMaterialFormat": "TR34_KEY_BLOCK"
     }
   }
   ```

### Kunci ekspor menggunakan teknik asimetris (ECDH)
<a name="keys-export-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-export.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, [KBPK/KEK](terminology.md#terms.kbpk) satu kali diturunkan menggunakan ECDH. Kunci turunan itu segera digunakan untuk membungkus kunci yang ingin Anda transfer, yang bisa berupa KBPK lain, BDK, kunci IPEK, atau jenis kunci lainnya. 

Saat mengekspor, Kriptografi AWS Pembayaran disebut sebagai Pihak U (Inisiator) dan sistem penerima dikenal sebagai Party V (Responder). 

**catatan**  
ECDH dapat digunakan untuk menukar jenis kunci simetris apa pun, tetapi ini adalah satu-satunya pendekatan yang dapat digunakan untuk mentransfer kunci AES-256 jika KEK belum ditetapkan. 

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 sertifikat X.509 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 V)****  
Dengan banyak HSMs, Anda perlu menginstal, memuat, atau mempercayai sertifikat publik yang dihasilkan pada langkah 1 untuk membuat kunci. Ini dapat mencakup seluruh rantai sertifikat atau hanya sertifikat root, tergantung pada HSM. Konsultasikan dokumentasi HSM Anda untuk instruksi khusus.

1. 

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

   Saat mentransfer kunci dari HSM, buat key pair pada HSM itu. Untuk blok kunci dukungan HSMs itu, header kunci akan terlihat mirip dengan`D0144K3EX00E0000`. Saat membuat sertifikat, Anda biasanya menghasilkan CSR di 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 ekspor berikutnya. `KeyArn`
**catatan**  
Jangan mengimpor sertifikat daun. Berikan langsung selama perintah ekspor.

1. 

****Dapatkan kunci dan kunci ekspor dari Kriptografi AWS Pembayaran****  
Saat mengekspor, layanan memperoleh kunci menggunakan ECDH dan kemudian segera menggunakannya sebagai [KBPK](terminology.md#terms.kbpk) untuk membungkus kunci ekspor menggunakan TR-31. Kunci yang akan diekspor dapat berupa kunci TDES atau AES yang tunduk pada kombinasi TR-31 yang valid, selama kunci pembungkus setidaknya sekuat kunci yang akan diekspor. 

   ```
   $ aws payment-cryptography export-key \
               --export-key-identifier arn:aws:payment-cryptography:us-west-2:529027455495:key/e3a65davqhbpjm4h \
               --key-material='{
                 "DiffieHellmanTr31KeyBlock": {
                   "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/swseahwtq2oj6zi5",
                   "DerivationData": {
                     "SharedInformation": "ADEF567890"
                   },
                   "DeriveKeyAlgorithm": "AES_256",
                   "KeyDerivationFunction": "NIST_SP800",
                   "KeyDerivationHashAlgorithm": "SHA_256",
                   "PrivateKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/wc3rjsssguhxtilv",
                   "PublicKeyCertificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FUR..."
                 }
               }'
   ```

   ```
   {
               "WrappedKey": {
                   "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK",
                   "KeyMaterial": "D0112K1TB00E00007012724C0FAAF64DA50E2FF4F9A94DF50441143294E0E995DB2171554223EAA56D078C4CFCB1C112B33BBF05597EE700",
                   "KeyCheckValue": "E421AD",
                   "KeyCheckValueAlgorithm": "ANSI_X9_24"
               }
           }
   ```

1. 

****Dapatkan kunci satu kali menggunakan ECDH pada Party V HSM****  
Banyak HSMs 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_ExportDiffieHellmanTr31KeyBlock.html). 
**catatan**  
 Parameter derivasi seperti tipe hash harus sama persis di kedua sisi. Jika tidak, Anda akan menghasilkan kunci yang berbeda. 

1. 

****Kunci impor ke sistem target****  
Terakhir, impor kunci dari Kriptografi AWS Pembayaran menggunakan perintah TR-31 standar. Tentukan kunci turunan ECDH sebagai KBPK dan gunakan blok kunci TR-31 yang sebelumnya diekspor dari Kriptografi Pembayaran. AWS 

### Kunci ekspor menggunakan teknik asimetris (RSA Wrap)
<a name="keys-export-rsawrap"></a>

 Ketika TR-34 tidak tersedia, Anda dapat menggunakan RSA wrap/unwrap untuk pertukaran kunci. Seperti TR-34, metode ini menggunakan kriptografi asimetris RSA untuk mengenkripsi kunci simetris. Namun, bungkus RSA tidak termasuk: 
+ Penandatanganan muatan oleh pihak pengirim
+ Blok kunci yang menjaga integritas metadata kunci selama transportasi

**catatan**  
Anda dapat menggunakan bungkus RSA untuk mengekspor tombol TDES dan AES-128.

1. 

****Buat kunci RSA dan sertifikat pada sistem penerima Anda****  
Buat atau identifikasi kunci RSA untuk menerima kunci yang dibungkus. Kami membutuhkan kunci dalam format sertifikat X.509. Pastikan sertifikat ditandatangani oleh root certificate yang dapat Anda impor ke AWS Payment Cryptography.

1. 

****Impor sertifikat publik root ke Kriptografi AWS Pembayaran****  
Gunakan **import-key** dengan `--key-material` opsi untuk mengimpor sertifikat

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

   ```
   {
     "Key": {
       "CreateTimestamp": "2023-09-14T10:50:32.365000-07:00",
       "Enabled": true,
       "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/nsq2i3mbg6sn775f",
       "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-09-14T10:50:32.365000-07:00"
     }
   }
   ```

1. 

****Ekspor kunci Anda****  
Beri tahu Kriptografi AWS Pembayaran untuk mengekspor kunci Anda menggunakan sertifikat daun Anda. Anda perlu menentukan: 
   + ARN untuk sertifikat root yang Anda impor di langkah 2
   + Sertifikat daun untuk ekspor
   + Kunci simetris untuk mengekspor

   Outputnya adalah versi biner berbungkus (terenkripsi) hex-encode dari kunci simetris Anda.  
**Example Contoh - Mengekspor kunci**  

   ```
   $ cat export-key.json
   ```

   ```
   {
     "ExportKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
     "KeyMaterial": {
       "KeyCryptogram": {
         "CertificateAuthorityPublicKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/zabouwe3574jysdl",
         "WrappingKeyCertificate": "LS0tLS1CRUdJTiBDEXAMPLE...",
         "WrappingSpec": "RSA_OAEP_SHA_256"
       }
     }
   }
   ```

   ```
   $ aws payment-cryptography export-key \
       --cli-input-json file://export-key.json
   ```

   ```
   {
     "WrappedKey": {
       "KeyMaterial": "18874746731E9E1C4562E4116D1C2477063FCB08454D757D81854AEAEE0A52B1F9D303FA29C02DC82AE7785353816EFAC8B5F4F79CC29A1DDA80C65F34364373D8C74E5EC67E4CB55DEA7F091210DCACD3C46FE4A5DAA0F0D9CAA7C959CA7144A5E7052F34AAED93EF44C004AE7ABEBD616C955BBA10993C06FB905319F87B9B4E1B7A7C7D17AF15B6154E807B9C574387A43197C31C6E565554437A252EFF8AC81613305760D11F9B53B08A1BA79EC7E7C82C48083C4E2D0B6F86C34AB83647BDD7E85240AD1AF3C0F6CA8C5BF323BB2D3896457C554F978F4C9436513F494130A6FADBC038D51898AAD72E02A89FF256C524E7B5D85B813751B718C4933D9DC6031F2C5B2E13351A54B6021B2DB72AA0C7EA54727FBCD557E67E5E7CC2E165576E39DB4DA33510BA9A3C847313103A18EF3B23A3440471864D58C79C569D5CD2A653AC16043CA9A61E6878F74C18EE15F9AB23754C37A945B68C0437C19F0079F74B573D9B59DAC25A20781DBE8075C947C9EDC76177A1B0794288CBF89567A541E8401C74E85B8E1C3E501860AF702F641CAA04327018A84EF3A82932A2BCF37047AB40FE77E0A6F68D0904C7E60983CD6F871D5E0E27EEF425C97D39E9394E8927EEF5D2EA9388DF3C5C241F99378DF5DADE8D0F0CF453C803BA38BA702B9651685FAFA6DCB4B14333F8D3C57F2D93E0852AA94EEC3AF3217CAE5873EFD9",
       "WrappedKeyMaterialFormat": "KEY_CRYPTOGRAM"
     }
   }
   ```

1. 

****Impor kunci ke sistem penerima Anda****  
Banyak HSMs dan sistem terkait mendukung kunci impor menggunakan RSA unwrap (termasuk Kriptografi AWS Pembayaran). Saat mengimpor, tentukan:
   + Kunci publik dari langkah 1 sebagai sertifikat enkripsi
   + Format sebagai RSA
   + Mode Padding sebagai PKCS \$11 v2.2 OAEP (dengan SHA 256)
**catatan**  
Kami menampilkan kunci yang dibungkus dalam format HexBinary. Anda mungkin perlu mengonversi format jika sistem Anda memerlukan representasi biner yang berbeda, seperti base64.

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

[Saat bertukar beberapa kunci atau mendukung rotasi kunci, Anda biasanya menukar kunci enkripsi kunci awal (KEK) terlebih dahulu menggunakan komponen kunci kertas atau, dengan Kriptografi AWS Pembayaran, menggunakan TR-34.](#keys-export-tr34) Setelah membuat KEK, Anda dapat menggunakannya untuk mengangkut kunci berikutnya, termasuk yang lain KEKs. Kami mendukung pertukaran kunci ini menggunakan ANSI TR-31, yang didukung secara luas oleh vendor HSM.

1. 

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

1. 

****Buat kunci Anda pada Kriptografi AWS Pembayaran****  
Buat kunci Anda jika belum ada. Atau, Anda dapat membuat kunci pada sistem Anda yang lain dan menggunakan perintah [impor](#keys-export-tr31).

1. 

****Ekspor kunci Anda dari Kriptografi AWS Pembayaran****  
Saat mengekspor dalam format TR-31, tentukan kunci yang ingin Anda ekspor dan kunci pembungkus yang akan digunakan.  
**Example Contoh - Mengekspor kunci menggunakan blok TR31 kunci**  

   ```
   $ aws payment-cryptography export-key \
       --key-material='{"Tr31KeyBlock": \
       { "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza" }}' \
       --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp
   ```

   ```
   {
     "WrappedKey": {
       "KeyCheckValue": "73C263",
       "KeyCheckValueAlgorithm": "ANSI_X9_24",
       "KeyMaterial": "D0144K0AB00E0000A24D3ACF3005F30A6E31D533E07F2E1B17A2A003B338B1E79E5B3AD4FBF7850FACF9A3784489581A543C84816C8D3542AE888CE6D4EDDFD09C39957B131617BC",
       "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK"
     }
   }
   ```

1. 

****Impor kunci ke sistem Anda****  
Gunakan implementasi kunci impor sistem Anda untuk mengimpor kunci.

## Kunci Awal DUKPT Ekspor (IPEK/IK)
<a name="keys-export-ipek"></a>

Saat menggunakan [DUKPT](terminology.md#terms.dukpt), Anda dapat menghasilkan Base Derivation Key (BDK) tunggal untuk armada terminal. Terminal tidak memiliki akses langsung ke BDK. Sebagai gantinya, setiap terminal menerima kunci terminal awal yang unik, yang dikenal sebagai IPEK atau Initial Key (IK). Setiap IPEK berasal dari BDK menggunakan Key Serial Number (KSN) yang unik.

Struktur KSN bervariasi menurut jenis enkripsi:
+ Untuk TDES: KSN 10-byte meliputi:
  + 24 bit untuk Key Set ID
  + 19 bit untuk ID terminal
  + 21 bit untuk penghitung transaksi
+ Untuk AES: KSN 12-byte meliputi:
  + 32 bit untuk ID BDK
  + 32 bit untuk pengenal derivasi (ID)
  + 32 bit untuk penghitung transaksi

Kami menyediakan mekanisme untuk menghasilkan dan mengekspor kunci awal ini. Anda dapat mengekspor kunci yang dihasilkan menggunakan metode pembungkus TR-31, TR-34, atau RSA. Perhatikan bahwa kunci IPEK tidak bertahan dan tidak dapat digunakan untuk operasi selanjutnya pada Kriptografi AWS Pembayaran.

Kami tidak memberlakukan pemisahan antara dua bagian pertama KSN. Jika Anda ingin menyimpan pengenal derivasi dengan BDK, Anda dapat menggunakan tag. AWS 

**catatan**  
Bagian counter dari KSN (32 bit untuk AES DUKPT) tidak digunakan untuk derivasi IPEK/IK. Misalnya, input 12345678901234560001 dan 12345678901234569999 akan menghasilkan IPEK yang sama.

```
$ aws payment-cryptography export-key \
    --key-material='{"Tr31KeyBlock": { \
    "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza"}} ' \
    --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \
    --export-attributes 'ExportDukptInitialKey={KeySerialNumber=12345678901234560001}'
```

```
{
"WrappedKey": {
    "KeyCheckValue": "73C263",
    "KeyCheckValueAlgorithm": "ANSI_X9_24",
    "KeyMaterial": "B0096B1TX00S000038A8A06588B9011F0D5EEF1CCAECFA6962647A89195B7A98BDA65DDE7C57FEA507559AF2A5D601D1",
    "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK"
}
}
```

## Tentukan header blok kunci untuk ekspor
<a name="keys-export-optionalheaders"></a>

Anda dapat memodifikasi atau menambahkan informasi blok kunci saat mengekspor dalam format ASC TR-31 atau TR-34. Tabel berikut menjelaskan format blok kunci TR-31 dan elemen mana yang dapat Anda modifikasi selama ekspor.


| Atribut Blok Kunci | Tujuan | Bisakah Anda memodifikasi selama ekspor? | Catatan | 
| --- | --- | --- | --- | 
| ID Versi |  Mendefinisikan metode yang digunakan untuk melindungi bahan utama. Standar meliputi:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/keys-export.html)  | Tidak |  Kami menggunakan versi B untuk tombol pembungkus TDES dan versi D untuk tombol pembungkus AES. Kami mendukung versi A dan C hanya untuk operasi impor.  | 
| Panjang Blok Kunci | Menentukan panjang pesan yang tersisa | Tidak |  Kami menghitung nilai ini secara otomatis. Panjangnya mungkin tampak salah sebelum mendekripsi muatan karena kami dapat menambahkan padding kunci seperti yang dipersyaratkan oleh spesifikasi.  | 
| Penggunaan Kunci |  Mendefinisikan tujuan yang diizinkan untuk kunci, seperti:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/keys-export.html)  | Tidak |  | 
| Algoritme |  Menentukan algoritma kunci yang mendasarinya. Kami mendukung: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/keys-export.html)  | Tidak | Kami mengekspor nilai ini apa adanya. | 
| Penggunaan Kunci |  Mendefinisikan operasi yang diizinkan, seperti:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/keys-export.html)  | Ya\$1 |  | 
| Versi Kunci | Menunjukkan nomor versi untuk penggantian/rotasi kunci. Default ke 00 jika tidak ditentukan. | Ya - Dapat menambahkan |  | 
| Ekspor Kunci |  Mengontrol apakah kunci dapat diekspor:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/keys-export.html)  | Ya\$1 |  | 
| Blok Kunci Opsional | Ya - Dapat menambahkan |  Blok kunci opsional adalah name/value pasangan yang terikat secara kriptografis ke kunci. Misalnya, KeySet ID untuk kunci DUKPT. Kami secara otomatis menghitung jumlah blok, panjang setiap blok, dan blok padding (PB) berdasarkan input name/value pasangan Anda.  |  | 

*\$1Saat memodifikasi nilai, nilai baru Anda harus lebih ketat daripada nilai saat ini dalam AWS Kriptografi Pembayaran.* Contoh: 
+ Jika mode penggunaan kunci saat ini adalah Generate=True, Verify=True, Anda dapat mengubahnya menjadi Generate=True, Verify=False
+ Jika kunci sudah disetel ke tidak dapat diekspor, Anda tidak dapat mengubahnya menjadi ekspor

Saat Anda mengekspor kunci, kami secara otomatis menerapkan nilai saat ini dari kunci yang diekspor. Namun, Anda mungkin ingin memodifikasi atau menambahkan nilai-nilai tersebut sebelum mengirim ke sistem penerima. Berikut adalah beberapa skenario umum: 
+ Saat mengekspor kunci ke terminal pembayaran, atur ekspornya `Not Exportable` karena terminal biasanya hanya mengimpor kunci dan tidak boleh mengekspornya.
+ Saat Anda perlu meneruskan metadata kunci terkait ke sistem penerima, gunakan header opsional TR-31 untuk mengikat metadata secara kriptografis ke kunci alih-alih membuat muatan khusus.
+ Atur Versi Kunci menggunakan `KeyVersion` bidang untuk melacak rotasi kunci.

TR-31/X9.143 mendefinisikan header umum, tetapi Anda dapat menggunakan header lain selama mereka memenuhi parameter Kriptografi AWS Pembayaran dan sistem penerima Anda dapat menerimanya. Untuk informasi selengkapnya tentang header blok kunci selama ekspor, lihat [Header Blok Kunci](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_KeyBlockHeaders.html) di Panduan API.

Berikut adalah contoh mengekspor kunci BDK (misalnya, ke KIF) dengan spesifikasi berikut: 
+ Versi kunci: 02
+ KeyExportability: TIDAK DAPAT DIEKSPOR
+ KeySetID: 00ABCDEFAB (00 menunjukkan kunci TDES, ABCDEFABCD adalah kunci awal)

 Karena kita tidak menentukan mode penggunaan kunci, kunci ini mewarisi mode penggunaan dari arn:aws:payment-cryptography:us-east- 2:111122223333:key/5rplquuwozodpwsp (= true). DeriveKey 

**catatan**  
Bahkan ketika Anda menyetel exportability ke Not Exportable dalam contoh ini, [KIF](terminology.md#terms.kif) masih dapat:   
Turunkan kunci seperti [IPEK/IK yang digunakan dalam DUKPT](terminology.md#terms.ipek)
Ekspor kunci turunan ini untuk dipasang di perangkat
Ini secara khusus diizinkan oleh standar.

```
$ aws payment-cryptography export-key \
    --key-material='{"Tr31KeyBlock": { \
    "WrappingKeyIdentifier": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ov6icy4ryas4zcza", \
    "KeyBlockHeaders": { \
    "KeyModesOfUse": { \
    "Derive": true}, \
    "KeyExportability": "NON_EXPORTABLE", \
    "KeyVersion": "02", \
    "OptionalBlocks": { \
    "BI": "00ABCDEFABCD"}}} \
    }' \
    --export-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5rplquuwozodpwsp
```

```
{
"WrappedKey": {
    "WrappedKeyMaterialFormat": "TR31_KEY_BLOCK",
    "KeyMaterial": "EXAMPLE_KEY_MATERIAL_TR31",
    "KeyCheckValue": "A4C9B3",
    "KeyCheckValueAlgorithm": "ANSI_X9_24"
    }
}
```

### Header Umum
<a name="keys-export-commonheaders"></a>

X9.143 mendefinisikan header tertentu untuk kasus penggunaan umum. Dengan pengecualian header HM (HMAC Hash), Kriptografi AWS Pembayaran tidak mengurai atau menggunakan header ini.


| Nama Header | Tujuan | Validasi Khas | Catatan | 
| --- | --- | --- | --- | 
| BI | Pengidentifikasi Kunci Derivasi Dasar untuk DUKPT | 2 karakter hex (00 untuk TDES, 11 untuk AES) kemudian 10 karakter hex untuk TDES KSI atau 8 karakter hex untuk BDK ID (AES DUKPT). | Berisi (ID BDK, untuk AES DUKPT) atau Pengenal Set Kunci (KSI, untuk TDES DUKPT). Dapat digunakan saat menukar ID BDK atau KSI, tetapi tidak perlu bertukar data lain yang terdapat dalam blok IK dan KS. Biasanya BI digunakan saat mentransmisikan ke KIF sedangkan IK atau KS digunakan saat menyuntikkan ke terminal itu sendiri. | 
| HM | Menentukan jenis hash untuk operasi HMAC |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/payment-cryptography/latest/userguide/keys-export.html)  | Layanan secara otomatis mengisi bidang ini pada ekspor dan akan menguraikannya pada impor. Jenis hash yang tidak didukung oleh layanan seperti SHAKE128 dapat diimpor tetapi mungkin tidak dapat digunakan untuk fungsi kriptografi. | 
| IK |  Nomor Seri Kunci Awal untuk AES DUKPT | 16 karakter hex  | Nilai ini digunakan untuk membuat instance penggunaan kunci DUKPT Awal pada perangkat penerima dan mengidentifikasi Kunci Awal yang berasal dari BDK. Bidang ini biasanya berisi data derivasi tetapi tidak ada penghitung. Gunakan KS untuk TDES DUKPT. | 
| KS |  Nomor Seri Kunci Awal untuk TDES DUKPT | 20 karakter hex  | Nilai ini digunakan untuk membuat instance penggunaan kunci DUKPT Awal pada perangkat penerima dan mengidentifikasi Kunci Awal yang berasal dari BDK. Bidang ini biasanya berisi data derivasi\$1nilai penghitung nol. Gunakan IK untuk AES DUKPT. | 
| KP | [KCV](terminology.md#terms.kcv) dari kunci pembungkus | 2 karakter hex mewakili metode KCV (00 untuk metode X9.24 dan 01 untuk metode CMAC). Diikuti oleh nilai KCV yang biasanya 6 karakter hex. Misalnya 010 FA329 mewakili KCV dari 0 FA329 dihitung menggunakan 01 (CMAC) metode.   | Nilai ini digunakan untuk membuat instance penggunaan kunci DUKPT Awal pada perangkat penerima dan mengidentifikasi Kunci Awal yang berasal dari BDK. Bidang ini biasanya berisi data derivasi\$1nilai penghitung nol. Gunakan IK untuk AES DUKPT. | 
| PB | Blok bantalan | karakter ASCII acak yang dapat dicetak  | Layanan secara otomatis mengisi bidang ini pada ekspor untuk memastikan header opsional adalah kelipatan panjang blok enkripsi | 

## Ekspor kunci asimetris (RSA)
<a name="keys-export-publickey"></a>

Untuk mengekspor kunci publik dalam bentuk sertifikat, gunakan **get-public-key-certificate** perintah. Perintah ini mengembalikan: 
+ Sertifikat
+ Sertifikat root

Kedua sertifikat dalam pengkodean base64.

**catatan**  
Operasi ini tidak idempoten—panggilan berikutnya mungkin menghasilkan sertifikat yang berbeda bahkan saat menggunakan kunci dasar yang sama.

**Example**  

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

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