

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

# Konteks enkripsi
<a name="encrypt_context"></a>

**catatan**  
Anda tidak dapat menentukan konteks enkripsi dalam operasi kriptografi dengan kunci KMS [asimetris atau kunci KMS](symmetric-asymmetric.md) [HMAC](hmac.md). Algoritma asimetris dan algoritma MAC tidak mendukung konteks enkripsi.

Semua [operasi AWS KMS kriptografi](kms-cryptography.md#cryptographic-operations) dengan [kunci KMS enkripsi simetris](symm-asymm-choose-key-spec.md#symmetric-cmks) menerima *konteks enkripsi*, satu set opsional pasangan nilai kunci non-rahasia yang dapat berisi informasi kontekstual tambahan tentang data. Anda dapat menyisipkan konteks enkripsi dalam `Encrypt` operasi AWS KMS untuk meningkatkan otorisasi dan auditabilitas panggilan dekripsi AWS KMS API Anda. AWS KMS menggunakan konteks enkripsi sebagai data otentikasi tambahan (AAD) untuk mendukung enkripsi yang diautentikasi. Konteks enkripsi terikat secara kriptografis ke ciphertext sehingga konteks enkripsi yang sama diperlukan untuk mendekripsi data.

Konteks enkripsi tidak rahasia dan tidak dienkripsi. Konteks enkripsi muncul dalam plaintext di [Log AWS CloudTrail](logging-using-cloudtrail.md), sehingga Anda dapat menggunakannya untuk mengidentifikasi dan mengategorikan operasi kriptografi Anda. Konteks enkripsi Anda tidak boleh menyertakan informasi sensitif. Sebaiknya konteks enkripsi Anda menjelaskan data yang dienkripsi atau didekripsi. Misalnya, ketika mengenkripsi file, Anda mungkin menggunakan bagian dari jalur file sebagai konteks enkripsi.

```
"encryptionContext": {
    "department": "10103.0"
}
```

Misalnya, saat mengenkripsi volume dan snapshot yang dibuat dengan operasi [Amazon Elastic Block Store (](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)Amazon EBS) [CreateSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshot.html), Amazon EBS menggunakan ID volume sebagai nilai konteks enkripsi.

```
"encryptionContext": {
  "aws:ebs:id": "vol-abcde12345abc1234"
}
```

Anda juga dapat menggunakan konteks enkripsi untuk memperbaiki atau membatasi akses ke AWS KMS keys akun Anda. Anda dapat menggunakan konteks enkripsi [sebagai batasan dalam hibah](grants.md) dan sebagai *[kondisi dalam pernyataan kebijakan](policy-conditions.md)*. Kunci konteks enkripsi dan nilainya dapat berupa string arbitrer dengan. `aws` Nilai-nilai ini kontras [tag yang AWS dihasilkan](https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html#tag-conventions) seperti [aws:cloudformation:stack-name](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-resource-tags.html). Untuk informasi selengkapnya, lihat [*kms:EncryptionContext: kunci-konteks*](conditions-kms.md#conditions-kms-encryption-context) 

Untuk mempelajari cara menggunakan konteks enkripsi untuk melindungi integritas data terenkripsi, lihat posting [Cara Melindungi Integritas Data Terenkripsi Anda dengan Menggunakan AWS Key Management Service dan EncryptionContext](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/) di Blog Keamanan. AWS 

## Aturan konteks enkripsi
<a name="encryption-context-rules"></a>

AWS KMS memberlakukan aturan berikut untuk kunci dan nilai konteks enkripsi.
+ Kunci dan nilai dalam pasangan konteks enkripsi harus berupa string literal sederhana. Jika Anda menggunakan jenis yang berbeda, seperti bilangan bulat atau float, AWS KMS menafsirkannya sebagai string.
+ Kunci dan nilai dalam konteks enkripsi dapat mencakup karakter Unicode. Jika konteks enkripsi menyertakan karakter yang tidak diizinkan dalam kebijakan utama atau kebijakan IAM, Anda tidak akan dapat menentukan konteks enkripsi dalam kunci kondisi kebijakan, seperti [`kms:EncryptionContext:context-key`](conditions-kms.md#conditions-kms-encryption-context)dan [`kms:EncryptionContextKeys`](conditions-kms.md#conditions-kms-encryption-context-keys). Untuk detail tentang aturan dokumen kebijakan utama, lihat[Format kebijakan utama](key-policy-overview.md#key-policy-format). Untuk detail tentang aturan dokumen kebijakan IAM, lihat [Persyaratan nama IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) di Panduan Pengguna *IAM*.

## Konteks enkripsi dalam kebijakan
<a name="encryption-context-authorization"></a>

Konteks enkripsi digunakan terutama untuk memverifikasi integritas dan keaslian. Tetapi Anda juga dapat menggunakan konteks enkripsi untuk mengontrol akses ke enkripsi simetris AWS KMS keys dalam kebijakan utama dan kebijakan IAM. 

Kunci EncryptionContextKeys kondisi [kms:EncryptionContext:](conditions-kms.md#conditions-kms-encryption-context) dan [kms:](conditions-kms.md#conditions-kms-encryption-context) mengizinkan (atau menolak) izin hanya jika permintaan menyertakan kunci konteks enkripsi tertentu atau pasangan kunci-nilai. 

Misalnya, pernyataan kebijakan kunci berikut memungkinkan `RoleForExampleApp` peran untuk menggunakan kunci KMS dalam `Decrypt` operasi. Ini menggunakan kunci `kms:EncryptionContext:context-key` kondisi untuk mengizinkan izin ini hanya ketika konteks enkripsi dalam permintaan menyertakan pasangan konteks `AppName:ExampleApp` enkripsi.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

Untuk informasi lebih lanjut tentang kunci kondisi konteks enkripsi, lihat [Kunci kondisi untuk AWS KMS](policy-conditions.md).

## Konteks enkripsi dalam hibah
<a name="encryption-context-grants"></a>

Saat [membuat hibah](grants.md), Anda dapat menyertakan [batasan hibah](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) yang menetapkan ketentuan untuk izin hibah. AWS KMS mendukung dua kendala hibah, `EncryptionContextEquals` dan`EncryptionContextSubset`, keduanya melibatkan [konteks enkripsi](#encrypt_context) dalam permintaan untuk operasi kriptografi. Ketika Anda menggunakan batasan hibah ini, izin dalam hibah hanya efektif ketika konteks enkripsi dalam permintaan untuk operasi kriptografi memenuhi persyaratan batasan hibah. 

Misalnya, Anda dapat menambahkan batasan `EncryptionContextEquals` hibah ke hibah yang memungkinkan operasi. [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) Dengan batasan ini, hibah memungkinkan operasi hanya ketika konteks enkripsi dalam permintaan cocok huruf besar/kecil untuk konteks enkripsi dalam batasan hibah.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/exampleUser \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --operations GenerateDataKey \
    --constraints EncryptionContextEquals={Purpose=Test}
```

Permintaan seperti berikut dari prinsipal penerima hibah akan memenuhi batasan `EncryptionContextEquals`.

```
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --key-spec AES_256 \
    --encryption-context Purpose=Test
```

Untuk detail tentang batasan hibah, lihat [Menggunakan batas pemberian izin](create-grant-overview.md#grant-constraints). Untuk informasi mendetail tentang hibah, lihat [Hibah di AWS KMS](grants.md).

## Konteks enkripsi pencatatan
<a name="encryption-context-auditing"></a>

AWS KMS digunakan AWS CloudTrail untuk mencatat konteks enkripsi sehingga Anda dapat menentukan kunci dan data KMS mana yang telah diakses. Entri log menunjukkan dengan tepat kunci KMS mana yang digunakan untuk mengenkripsi atau mendekripsi data tertentu yang direferensikan oleh konteks enkripsi dalam entri log.

**penting**  
Karena konteks enkripsi dicatat, konteks tidak boleh berisi informasi sensitif.

## Menyimpan konteks enkripsi
<a name="encryption-context-storing"></a>

Untuk menyederhanakan penggunaan konteks enkripsi ketika Anda memanggil operasi [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) atau [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html), Anda dapat menyimpan konteks enkripsi bersama data terenkripsi. Sebaiknya Anda hanya menyimpan konteks enkripsi yang mencukupi untuk membantu Anda membuat konteks enkripsi penuh ketika Anda membutuhkannya untuk enkripsi atau dekripsi. 

Misalnya, jika konteks enkripsi sepenuhnya memenuhi syarat untuk file, simpan hanya bagian dari jalur tersebut dengan konten file terenkripsi. Kemudian, ketika Anda membutuhkan konteks enkripsi penuh, rekonstruksi konteks dari fragmen yang disimpan. Jika seseorang merusak file, seperti mengganti namanya atau memindahkannya ke lokasi lain, perubahan nilai konteks enkripsi dan permintaan dekripsi akan gagal.