

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

# Gantungan kunci
<a name="choose-keyring"></a>

Implementasi bahasa pemrograman yang didukung menggunakan *keyrings* untuk melakukan enkripsi [amplop](concepts.md#envelope-encryption). Keyrings menghasilkan, mengenkripsi, dan mendekripsi kunci data. Keyrings menentukan sumber kunci data unik yang melindungi setiap pesan, dan kunci [pembungkus yang mengenkripsi kunci](concepts.md#master-key) data tersebut. Anda menentukan keyring saat mengenkripsi dan keyring yang sama atau berbeda saat mendekripsi. Anda dapat menggunakan gantungan kunci yang disediakan SDK atau menulis gantungan kunci kustom Anda sendiri yang kompatibel. 

[Anda dapat menggunakan setiap keyring satu per satu atau menggabungkan keyrings menjadi multi-keyring.](use-multi-keyring.md) Meskipun sebagian besar keyrings dapat menghasilkan, mengenkripsi, dan mendekripsi kunci data, Anda dapat membuat keyring yang hanya melakukan satu operasi tertentu, seperti keyring yang hanya menghasilkan kunci data, dan menggunakan keyring tersebut dalam kombinasi dengan yang lain.

Kami menyarankan Anda menggunakan keyring yang melindungi kunci pembungkus Anda dan melakukan operasi kriptografi dalam batas aman, seperti AWS KMS keyring, yang menggunakan AWS KMS keys yang tidak pernah meninggalkan () tidak terenkripsi. [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/)AWS KMS Anda juga dapat menulis keyring yang menggunakan kunci pembungkus yang disimpan dalam modul keamanan perangkat keras Anda (HSMs) atau dilindungi oleh layanan kunci utama lainnya. Untuk detailnya, lihat topik [Antarmuka Keyring](https://github.com/awslabs/aws-encryption-sdk-specification/blob/master/framework/keyring-interface.md) di *AWS Encryption SDK Spesifikasi*. 

Keyrings memainkan peran kunci master dan [penyedia [kunci master](concepts.md#master-key)](concepts.md#master-key-provider) yang digunakan dalam implementasi bahasa pemrograman lainnya. Jika Anda menggunakan implementasi bahasa yang berbeda AWS Encryption SDK untuk mengenkripsi dan mendekripsi data Anda, pastikan untuk menggunakan keyrings yang kompatibel dan penyedia kunci master. Lihat perinciannya di [Kompatibilitas keyring](#keyring-compatibility).

Topik ini menjelaskan cara menggunakan fitur keyring AWS Encryption SDK dan cara memilih keyring.

## Cara kerja gantungan kunci
<a name="using-keyrings"></a>

Ketika Anda mengenkripsi data, AWS Encryption SDK meminta keyring untuk materi enkripsi. Keyring mengembalikan kunci data plaintext dan salinan kunci data yang dienkripsi oleh masing-masing kunci pembungkus di keyring. AWS Encryption SDK Menggunakan kunci plaintext untuk mengenkripsi data, dan kemudian menghancurkan kunci data plaintext. Kemudian, AWS Encryption SDK mengembalikan [pesan terenkripsi yang](concepts.md#message) mencakup kunci data terenkripsi dan data terenkripsi.

![\[Mengenkripsi dengan keyring dengan beberapa tombol pembungkus.\]](http://docs.aws.amazon.com/id_id/encryption-sdk/latest/developer-guide/images/keyring-encrypt.png)


Saat mendekripsi data, Anda dapat menggunakan keyring yang sama dengan yang Anda gunakan untuk mengenkripsi data, atau yang lain. Untuk mendekripsi data, keyring dekripsi harus menyertakan (atau memiliki akses ke) setidaknya satu kunci pembungkus dalam keyring enkripsi. 

 AWS Encryption SDK Lolos kunci data terenkripsi dari pesan terenkripsi ke keyring, dan meminta keyring untuk mendekripsi salah satu dari mereka. Keyring menggunakan kunci pembungkusnya untuk mendekripsi salah satu kunci data terenkripsi dan mengembalikan kunci data plaintext. AWS Encryption SDK Menggunakan kunci data plaintext untuk mendekripsi data. Jika tidak ada kunci pembungkus di keyring yang dapat mendekripsi salah satu kunci data terenkripsi, operasi dekripsi gagal.

![\[Mendekripsi dengan keyring.\]](http://docs.aws.amazon.com/id_id/encryption-sdk/latest/developer-guide/images/keyring-decrypt.png)


[Anda dapat menggunakan keyring tunggal atau juga menggabungkan keyrings dari jenis yang sama atau jenis yang berbeda ke dalam multi-keyring.](use-multi-keyring.md) Saat Anda mengenkripsi data, multi-keyring mengembalikan salinan kunci data yang dienkripsi oleh semua kunci pembungkus di semua keyring yang terdiri dari multi-keyring. Anda dapat mendekripsi data menggunakan keyring dengan salah satu tombol pembungkus di multi-keyring.

## Kompatibilitas keyring
<a name="keyring-compatibility"></a>

Meskipun implementasi bahasa yang berbeda AWS Encryption SDK memiliki beberapa perbedaan arsitektur, mereka sepenuhnya kompatibel, tunduk pada kendala bahasa. Anda dapat mengenkripsi data Anda menggunakan satu implementasi bahasa dan mendekripsi dengan implementasi bahasa lainnya. Namun, Anda harus menggunakan kunci pembungkus yang sama atau sesuai untuk mengenkripsi dan mendekripsi kunci data Anda. Untuk informasi tentang kendala bahasa, lihat topik tentang setiap implementasi bahasa, seperti [Kompatibilitas AWS Encryption SDK for JavaScript](javascript-compatibility.md) dalam topik. AWS Encryption SDK for JavaScript 

Keyrings didukung dalam bahasa pemrograman berikut:
+ AWS Encryption SDK for C
+ AWS Encryption SDK for JavaScript
+ AWS Encryption SDK untuk .NET
+ Versi 3. *x* dari AWS Encryption SDK for Java
+ Versi 4. *x* dari AWS Encryption SDK for Python, bila digunakan dengan dependensi [Perpustakaan Penyedia Materi Kriptografi](https://github.com/aws/aws-cryptographic-material-providers-library) (MPL) opsional.
+ AWS Encryption SDK untuk Rust
+ AWS Encryption SDK untuk Go

### Memvariasikan persyaratan untuk gantungan kunci enkripsi
<a name="encrypt-keyring-requirements"></a>

Dalam implementasi AWS Encryption SDK bahasa selain AWS Encryption SDK for C, semua kunci pembungkus dalam keyring enkripsi (atau multi-keyring) atau penyedia kunci utama harus dapat mengenkripsi kunci data. Jika ada kunci pembungkus gagal untuk mengenkripsi, metode enkripsi gagal. Akibatnya, penelepon harus memiliki [izin yang diperlukan](use-kms-keyring.md#kms-keyring-permissions) untuk semua kunci di keyring. Jika Anda menggunakan keyring penemuan untuk mengenkripsi data, sendiri atau dalam multi-keyring, operasi enkripsi gagal. 

Pengecualiannya adalah AWS Encryption SDK for C, di mana operasi enkripsi mengabaikan keyring penemuan standar, tetapi gagal jika Anda menentukan keyring penemuan Multi-wilayah, sendiri atau dalam multi-keyring.

### Gantungan Kunci yang Kompatibel dan Penyedia Kunci Utama
<a name="keyring-compat-table"></a>

Tabel berikut menunjukkan kunci master dan penyedia kunci master mana yang kompatibel dengan gantungan kunci yang disediakan AWS Encryption SDK . Setiap ketidakcocokan kecil karena kendala bahasa dijelaskan dalam topik tentang implementasi bahasa.


| Gantungan kunci: | Penyedia Kunci Utama: | 
| --- | --- | 
| [AWS KMS gantungan kunci](use-kms-keyring.md) |  [KMSMasterKunci (Java)](https://aws.github.io/aws-encryption-sdk-java/com/amazonaws/encryptionsdk/kms/KmsMasterKey.html) [KMSMasterKeyProvider (Jawa)](https://aws.github.io/aws-encryption-sdk-java/com/amazonaws/encryptionsdk/kms/KmsMasterKeyProvider.html) [KMSMasterKunci (Python)](https://aws-encryption-sdk-python.readthedocs.io/en/latest/generated/aws_encryption_sdk.key_providers.kms.html) [KMSMasterKeyProvider (Python)](https://aws-encryption-sdk-python.readthedocs.io/en/latest/generated/aws_encryption_sdk.key_providers.kms.html#aws_encryption_sdk.key_providers.kms.KMSMasterKeyProvider)  Itu AWS Encryption SDK for Python dan AWS Encryption SDK for Java tidak termasuk kunci master atau penyedia kunci master yang setara dengan [keyring penemuan AWS KMS regional](use-kms-keyring.md#kms-keyring-regional).    | 
| [AWS KMS Gantungan kunci hierarkis](use-hierarchical-keyring.md) | Didukung oleh bahasa dan versi pemrograman berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/encryption-sdk/latest/developer-guide/choose-keyring.html) | 
| [AWS KMS Gantungan kunci ECDH](use-kms-ecdh-keyring.md) | Didukung oleh bahasa dan versi pemrograman berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/encryption-sdk/latest/developer-guide/choose-keyring.html) | 
| [Gantungan kunci AES mentah](use-raw-aes-keyring.md) | Ketika mereka digunakan dengan kunci enkripsi simetris:[JceMasterKey](https://aws.github.io/aws-encryption-sdk-java/com/amazonaws/encryptionsdk/jce/JceMasterKey.html)(Jawa)[RawMasterKey](https://aws-encryption-sdk-python.readthedocs.io/en/latest/generated/aws_encryption_sdk.key_providers.raw.html#aws_encryption_sdk.key_providers.raw.RawMasterKey)(Python) | 
| [Gantungan kunci RSA mentah](use-raw-rsa-keyring.md) | Ketika mereka digunakan dengan kunci enkripsi asimetris:[JceMasterKey](https://aws.github.io/aws-encryption-sdk-java/com/amazonaws/encryptionsdk/jce/JceMasterKey.html)(Jawa)[RawMasterKey](https://aws-encryption-sdk-python.readthedocs.io/en/latest/generated/aws_encryption_sdk.key_providers.raw.html#aws_encryption_sdk.key_providers.raw.RawMasterKey)(Python) Raw RSA keyring tidak mendukung kunci KMS asimetris. Jika Anda ingin menggunakan tombol KMS RSA asimetris, versi 4. *x* dan yang lebih baru AWS Encryption SDK untuk .NET mendukung AWS KMS keyrings yang menggunakan enkripsi simetris (`SYMMETRIC_DEFAULT`) atau RSA asimetris. AWS KMS keys  | 
| [Gantungan kunci ECDH mentah](use-raw-ecdh-keyring.md) | Didukung oleh bahasa dan versi pemrograman berikut: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/encryption-sdk/latest/developer-guide/choose-keyring.html) | 