View a markdown version of this page

Enkripsi saat diam - AWS Wickr

Panduan ini mendokumentasikan konsol administrasi AWS Wickr baru, yang dirilis pada 13 Maret 2025. Untuk dokumentasi tentang versi klasik konsol administrasi AWS Wickr, lihat Panduan Administrasi Klasik.

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

Enkripsi saat diam

AWS Wickr Data Retention Service secara transparan mengenkripsi semua pesan yang disimpan dan lampiran file saat istirahat secara default. Anda tidak perlu melakukan konfigurasi tambahan apa pun untuk memastikan data Anda dienkripsi saat istirahat. Layanan Penyimpanan Data menerapkan enkripsi di sisi server untuk semua data pelanggan yang disimpan di Amazon S3.

Layanan Retensi Data mengenkripsi data pelanggan saat istirahat menggunakan kunci KMS (CMK) yang dikelola pelanggan. Saat Anda menggunakan Layanan Retensi Data AWS Service Catalog, CMK simetris secara otomatis dibuat di akun Anda dan dikonfigurasi sebagai kunci enkripsi default untuk semua data yang disimpan. Anda mempertahankan kendali penuh atas kunci ini, termasuk kemampuan untuk mengaudit penggunaan, memutar kunci, dan mencabut akses.

Mengenkripsi data saat istirahat menggunakan kunci KMS yang dikelola pelanggan untuk retensi data

Bagaimana Layanan Retensi Data menggunakan kunci KMS yang dikelola pelanggan

Saat Layanan Penyimpanan Data diterapkan, kunci KMS (RetentionKey) yang dikelola pelanggan simetris akan dibuat di akun Anda. AWS Kunci ini digunakan untuk mengenkripsi sumber daya berikut:

  • Pesan yang disimpan — Semua pesan Wickr (teks, reaksi, dan lainnya) yang ditangkap oleh bot retensi data dienkripsi dengan CMK sebelum disimpan di bucket S3 Anda. Pesan dienkripsi di dalam Enclave Nitro menggunakan AWS Encryption SDK, lalu diunggah ke Amazon S3 dengan menggunakan CMK yang sama. SSE-KMS

  • Lampiran file yang disimpan - Lampiran file yang terkait dengan pesan didekripsi dari enkripsi ujung ke ujung Wickr di dalam Enklave Nitro, dienkripsi ulang dengan CMK, dan disimpan di Amazon S3 dengan. SSE-KMS

  • Status akun terenkripsi — Kunci pribadi kriptografi bot penyimpanan data dan status akun dienkripsi dengan CMK dan disimpan di DynamoDB. Dekripsi keadaan ini membutuhkan pengesahan Enklave Nitro.

  • Enkripsi default bucket S3 — Bucket retensi S3 dikonfigurasi dengan SSE-KMS menggunakan CMK sebagai kunci enkripsi default. Kebijakan bucket memberlakukan bahwa semua objek harus diunggah dengan enkripsi sisi aws:kms server.

  • Bucket keluaran terdekripsi — Ketika pelanggan memicu dekripsi sesuai permintaan (melalui mesin status Step Functions), output yang didekripsi juga disimpan dalam bucket S3 terpisah yang dienkripsi dengan CMK yang sama.

Cross-account arsitektur peran

Layanan Penyimpanan Data beroperasi di Wickr-managed AWS akun dan mengakses sumber daya pelanggan melalui peran IAM lintas akun (). DRSCustomerCrossAccountRole-{networkId}-{region} Wickr DRS Enclave Role mengasumsikan peran sisi pelanggan ini menggunakan AWS STS ID eksternal () wickr-drs-{networkId} untuk melakukan operasi KMS dan S3.

Pengesahan Nitro Enclave

kms:DecryptPanggilan langsung (di luar S3 SSE-KMS) memerlukan pengesahan Nitro Enclave. Kebijakan kunci KMS memberlakukan bahwa, dan kms:RecipientAttestation:PCR2 kondisi harus ada kms:RecipientAttestation:PCR0kms:RecipientAttestation:PCR1, memastikan bahwa dekripsi data sensitif (status akun, konten pesan) hanya dapat terjadi di dalam enklave yang diverifikasi. Ini mencegah operator mana pun — termasuk Wickr — mendekripsi data pelanggan di luar enklave.

AWS Nitro Enclave memproses pesan menggunakan kunci KMS Anda untuk mendekripsi kunci pribadi modul penyimpanan data, mendekripsi konten Wickr-encrypted pesan, dan mengenkripsi ulang dengan kunci data unik per pesan sebelum menyimpannya di bucket S3 Anda.

Mengkonfigurasi kunci KMS yang dikelola pelanggan di Layanan Retensi Data

Layanan Retensi Data mendukung kunci KMS simetris dengan penggunaan kunci ENCRYPT_DECRYPT dan spesifikasi kunci. SYMMETRIC_DEFAULT Rotasi tombol otomatis diaktifkan secara default ketika kunci dibuat melalui Service Catalog.

Selain itu, kunci KMS asimetris kedua (ECC_NIST_P384, KEY_AGREEMENT) dibuat untuk alur kerja pemulihan kata sandi. Kunci ini digunakan untuk perjanjian kunci ECDH dan tidak dapat digunakan untuk umum. encryption/decryption Kunci ini secara opsional digunakan untuk pelanggan yang bermigrasi dari arsitektur berbasis docker Bot Retensi Data.

catatan

Multi-region kunci saat ini tidak didukung. Kunci KMS harus berada di wilayah yang sama dengan bucket S3 dan penerapan Layanan Retensi Data.

Mengkonfigurasi izin untuk menggunakan kunci KMS yang dikelola pelanggan

Kebijakan kunci berikut dikonfigurasi secara otomatis saat menerapkan melalui Service Catalog. Jika Anda perlu mengonfigurasi kunci secara manual, gunakan kebijakan hak istimewa terkecil berikut ini:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "YourExistingStatements", "Effect": "...", "...": "..." }, { "Sid": "EnclaveGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{customer-account-id}:role/DRSCustomerCrossAccountRole-{networkId}-{region}" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": [ "aws:wickr:network:id", "aws:wickr:app:id" ] } } }, { "Sid": "EnclaveDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{customer-account-id}:role/DRSCustomerCrossAccountRole-{networkId}-{region}" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "EnclaveDecryptWithAttestation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{customer-account-id}:role/DRSCustomerCrossAccountRole-{networkId}-{region}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:app:id" } } }, { "Sid": "DRSDecryptionLambda", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{customer-account-id}:role/{DecryptionLambdaRoleName}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:network:id" } } } ] }

Tujuan dari setiap pernyataan:

AktifkanamPolicies

Memungkinkan root akun Anda untuk mengelola kunci. Ini adalah pernyataan administrator kunci standar.

EnclaveGenerateDataKey

kms:GenerateDataKey— Dipanggil oleh Nitro Enclave untuk menghasilkan kunci enkripsi data untuk mengenkripsi konten pesan dan status akun sebelum disimpan di S3. Hanya diizinkan ketika enclave menyediakan dokumen pengesahan Nitro Enclave yang valid (PCR0/1/2kondisi) dan kunci konteks enkripsi aws:wickr:network:id atau aws:wickr:app:id hadir.

EnclaveDescribeKey

kms:DescribeKey— Memungkinkan enclave untuk mengambil metadata kunci (spesifikasi kunci, penggunaan, status) untuk validasi selama inisialisasi.

EnclaveDecryptWithAttestation

kms:Decrypt— Dipanggil oleh Enclave Nitro untuk mendekripsi status akun (kunci pribadi) yang diperlukan untuk dekripsi pesan Wickr. Ini hanya diizinkan ketika enclave menyediakan dokumen pengesahan (PCR0/1/2 kondisi) Nitro Enclave yang valid, dan kunci konteks enkripsi aws:wickr:app:id hadir, memastikan dekripsi tidak dapat terjadi di luar enclave.

DRSDecryptionLambda

kms:Decrypt— Dipanggil oleh Lambda dekripsi sesuai permintaan untuk mendekripsi pesan yang disimpan saat Anda memicu mesin status dekripsi. Peran ini tidak dapat diakses oleh layanan Wickr dan hanya ada bagi Anda untuk mendekripsi pesan Anda sendiri dari bucket S3 terenkripsi.

Jika migrasi diperlukan dari instalasi penyimpanan data sebelumnya, Anda harus memberikan kata sandi Docker-bot modul Anda ke layanan sebelum retensi data tanpa server dapat diaktifkan. Untuk informasi selengkapnya, lihat Instruksi pemulihan kata sandi. Untuk detail tentang kebijakan yang diperlukan untuk kunci pemulihan kata sandi Anda, lihatPengaturan kunci KMS kustom untuk layanan retensi data.

Jika Anda perlu mengonfigurasi kunci KMS secara manual, lihat Pengaturan kunci KMS kustom untuk layanan retensi data kebijakan paling tidak permisif untuk kunci Anda.

Membuat penerapan Retensi Data baru dengan kunci KMS yang dikelola pelanggan

Layanan Retensi Data dikerahkan melalui AWS Service Catalog. Saat Anda meluncurkan WickrDataRetentionProduct produk, CloudFormation template secara otomatis:

  1. Membuat CMK simetris dengan alias wickr-drs-{networkId}-{region}-{suffix}-key

  2. Membuat CMK asimetris (ECC P-384) untuk pemulihan kata sandi dengan alias wickr-drs-{networkId}-{region}-{suffix}-password-recovery-key

  3. Membuat bucket S3 dengan enkripsi SSE-KMS default menggunakan CMK simetris

  4. Membuat DRSCustomerCrossAccountRole dengan izin KMS yang sesuai

  5. Mendaftarkan bucket ARN dan S3 kunci KMS dengan Wickr Admin API melalui Lambda Sumber Daya Kustom

ARN kunci KMS juga terdaftar melalui titik akhir Wickr Admin SDK:

PUT /networks/{networkId}/serverless-resources { "s3BucketName": "wickr-drs-{networkId}-{region}-{suffix}", "kmsKeyArn": "arn:aws:kms:{region}:{accountId}:key/{keyId}", "passwordRecoveryKmsKeyArn": "arn:aws:kms:{region}:{accountId}:key/{keyId}" }

kmsKeyArnParameter harus berupa ARN kunci KMS yang valid. API memvalidasi format ARN sebelum menyimpannya.

Mengubah konfigurasi enkripsi pada penerapan yang ada

Layanan Penyimpanan Data saat ini tidak mendukung perubahan CMK setelah penerapan. Kunci KMS digabungkan dengan erat ke:

  • Konfigurasi enkripsi default bucket S3

  • Status akun terenkripsi yang disimpan di DynamoDB

  • Kebijakan utama dengan kondisi pengesahan Nitro Enclave

Untuk mengubah kunci enkripsi, Anda harus:

  1. Menerapkan instance Layanan Retensi Data baru dengan kunci KMS baru.

  2. Pesan yang sebelumnya disimpan dienkripsi dengan kunci lama tetap dapat diakses hanya dengan kunci asli.

penting

Jangan menonaktifkan atau menghapus kunci KMS asli saat pesan terenkripsi ada di keranjang penyimpanan. Melakukannya akan membuat pesan-pesan itu tidak dapat dipulihkan secara permanen.

Mencakup akses ke kunci KMS yang dikelola pelanggan

Pengesahan Nitro Enclave (kontrol akses utama)

Mekanisme utama untuk akses pelingkupan ke CMK adalah pengesahan Enclave Nitro. Kebijakan utama mensyaratkan kms:RecipientAttestation:PCR0PCR1,, dan PCR2 ketentuan untuk kms:Decrypt panggilan langsung. Ini memastikan:

  • Hanya biner enklave Wickr DRS terverifikasi yang dapat mendekripsi data sensitif.

  • Bahkan peran lintas akun tidak dapat mendekripsi data di luar enklave.

  • CloudTrail log termasuk nilai PCR aktual untuk audit.

Perlindungan wakil yang bingung

Peran lintas akun menggunakan ID eksternal (wickr-drs-{networkId}) dalam AssumeRole panggilan STS. Ini mencegah serangan wakil yang membingungkan di mana layanan lain mungkin mencoba menggunakan peran kantong Wickr DRS untuk mengakses sumber daya Anda.

kms: kondisi ViaService

Operasi SSE-KMS dekripsi S3 dicakup menggunakan kondisi. kms:ViaService Ini memastikan bahwa S3-mediated dekripsi hanya diizinkan ketika permintaan datang melalui layanan S3.

Konteks enkripsi

S3 SSE-KMS secara otomatis menyertakan objek S3 ARN sebagai konteks enkripsi. Kebijakan kunci menggunakan konteks enkripsi ini untuk cakupan izin dekripsi S3 ke awalan tertentu (misalnya, awalan alat kata sandi).

Memantau interaksi Layanan Retensi Data dengan AWS KMS

Anda dapat memantau semua panggilan API KMS yang dilakukan oleh Layanan Retensi Data menggunakan CloudTrail. Untuk mencari entri CloudTrail log, gunakan CloudTrail konsol atau CloudTrail LookupEvents operasi.

Bidang CloudTrail peristiwa berikut dapat digunakan untuk mengaudit penggunaan KMS oleh Layanan Retensi Data:

Bidang Nilai yang diharapkan
eventName Encrypt, Decrypt, GenerateDataKey
userIdentity.arn arn:aws:sts::{customerAccountId}:assumed-role/DRSCustomerCrossAccountRole-{networkId}-{region}atau drs-create-account atau drs-password-recovery
requestParameters.keyId ARN CMK Anda (misalnya,) arn:aws:kms:{region}:{accountId}:key/{keyId}
additionalEventData.recipient.attestationDocument Hadir untuk panggilan Dekripsi yang dibuktikan enklave (berisi nilai PCR)
requestParameters.encryptionContext Untuk S3 SSE-KMS: {"aws:s3:arn": "arn:aws:s3:::{bucketName}/{objectKey}"}

Peristiwa penting untuk dipantau:

  • Encrypt — Terjadi ketika enclave mengenkripsi konten pesan atau status akun sebelum disimpan. S3/DynamoDB

  • GenerateDataKey— Terjadi ketika S3 menghasilkan kunci data untuk enkripsi SSE-KMS amplop selama unggahan objek.

  • Dekripsi - Terjadi ketika enclave mendekripsi status akun (dengan pengesahan) atau ketika S3 mendekripsi objek secara otomatis saat dibaca.

  • DeriveSharedSecret— Terjadi pada kunci pemulihan kata sandi saat enclave melakukan perjanjian kunci ECDH selama aliran pemulihan kata sandi.

  • GetPublicKey— Terjadi pada kunci pemulihan kata sandi ketika collect.py skrip Anda mengambil kunci publik untuk enkripsi ECDH lokal.

Selain itu, produk Service Catalog membuat CloudWatch dashboard (WickrDataRetentionService-{networkId}) yang menyertakan widget untuk metrik keberhasilan kunci KMS (Enkripsi, GenerateDataKey, Dekripsi operasi) dan alarm kesalahan dekripsi yang memicu ketika kegagalan dekripsi terdeteksi.