KMS menangani operasi kriptografi untuk Anda sehingga aplikasi tidak perlu mengelola bahan kunci atau menerapkan logika enkripsi secara langsung. Saat Anda membuat customer master key (CMK) tanpa menentukan parameter KeySpec, KMS secara default membuat kunci simetris.
Enkripsi simetris merupakan metode enkripsi data yang paling umum digunakan. KMS mendukung algoritma kunci simetris berstandar industri dan melindungi data Anda dengan kriptografi kuat.
Algoritma yang didukung
| Algorithm | Key length | Key type (KeySpec) | Encryption mode | Protection level |
|---|---|---|---|---|
| AES (Advanced Encryption Standard) | 256 bits | Aliyun_AES_256 | GCM (Galois/Counter Mode) | Software, Hardware Security Module (HSM) |
| SM4 | 128 bits | Aliyun_SM4 | GCM | HSM only |
KMS menyediakan algoritma SM4 hanya melalui Managed HSM. Untuk detailnya, lihat Managed HSM overview.
Enkripsi dan dekripsi data
KMS menggunakan model API yang disederhanakan sehingga bahan kunci tidak masuk ke dalam kode aplikasi Anda.
To encrypt data, panggil salah satu operasi berikut dan tentukan ID CMK atau alias-nya. KMS akan mengembalikan ciphertext—aplikasi Anda tidak pernah menangani bahan kunci mentah.
| Operation | Description |
|---|---|
Encrypt | Mengenkripsi plaintext menggunakan CMK simetris |
ReEncrypt | Mengenkripsi ulang ciphertext dengan CMK berbeda tanpa mengekspos plaintext |
GenerateDataKey | Menghasilkan kunci data acak untuk enkripsi lokal dan mengembalikan salinan dalam bentuk plaintext maupun terenkripsi |
GenerateDataKeyWithoutPlaintext | Menghasilkan kunci data acak untuk enkripsi lokal dan hanya mengembalikan salinan terenkripsinya |
To decrypt data, panggil Decrypt dan berikan ciphertext-nya. KMS secara otomatis mengidentifikasi CMK yang digunakan untuk enkripsi—Anda tidak perlu menentukan ID CMK.
Encryption context
Kunci simetris di KMS menggunakan mode GCM, yang mendukung additional authenticated data (AAD). KMS mengekspos AAD sebagai EncryptionContext, yaitu string JSON yang dapat Anda gunakan dalam operasi API KMS seperti Encrypt, GenerateDataKey, dan Decrypt.
EncryptionContext memberikan perlindungan tambahan terhadap integritas data terenkripsi. Anda dapat menggunakannya untuk menyesuaikan data autentikasi.
Untuk detail cara menggunakan EncryptionContext dalam pemanggilan API, lihat EncryptionContext.
Envelope encryption
Untuk mengenkripsi volume data besar, gunakan enkripsi amplop: KMS menghasilkan kunci data, Anda menggunakannya untuk mengenkripsi data secara lokal, lalu menyimpan kunci data terenkripsi bersama data terenkripsi tersebut.
Panggil GenerateDataKey untuk mendapatkan kunci data dalam bentuk plaintext (untuk penggunaan lokal langsung) dan salinan terenkripsinya (untuk penyimpanan). Panggil GenerateDataKeyWithoutPlaintext jika Anda ingin menyimpan kunci data terenkripsi tanpa sama sekali menangani salinan plaintext-nya.
Hierarki kunci dua tingkat ini mempercepat enkripsi amplop. Untuk panduan langkah demi langkah, lihat Use envelope encryption to encrypt and decrypt local data.
Key rotation
Setiap CMK simetris mendukung beberapa versi kunci. KMS secara otomatis melakukan rotasi CMK dengan menghasilkan versi kunci baru, dan Anda dapat menyesuaikan jadwal rotasinya.
Setelah rotasi, KMS menggunakan versi kunci baru untuk semua pemanggilan Encrypt, GenerateDataKey, dan GenerateDataKeyWithoutPlaintext berikutnya. Ciphertext yang dienkripsi sebelum rotasi tetap dapat didekripsi—KMS secara otomatis mengidentifikasi versi kunci yang digunakan saat enkripsi dan menerapkan bahan kunci yang tepat selama Decrypt. Tidak diperlukan re-enkripsi data yang sudah ada setelah rotasi.
Untuk detail konfigurasi, lihat Automatic key rotation.
Bring Your Own Key (BYOK)
BYOK memungkinkan Anda mengimpor bahan kunci eksternal ke dalam CMK, bukan menggunakan bahan kunci yang dihasilkan KMS, sehingga dapat membantu memenuhi persyaratan kepatuhan atau regulasi tertentu.
Untuk melindungi kunci yang diimpor, impor bahan kunci Anda ke dalam CMK dengan tingkat proteksi HSM menggunakan Managed HSM. Kami merekomendasikan agar Anda menggunakan Managed HSM untuk melindungi kunci Anda. Kunci yang disimpan di managed HSM dapat dihapus, tetapi plaintext-nya tidak dapat diekspor, sehingga membatasi permukaan serangan.
Untuk instruksi impor, lihat Import key material.
What's next
Managed HSM overview — pelajari cara KMS berintegrasi dengan hardware security modules
EncryptionContext — gunakan additional authenticated data dalam operasi API
Use envelope encryption to encrypt and decrypt local data — enkripsi set data besar secara lokal menggunakan kunci data
Automatic key rotation — konfigurasikan jadwal rotasi CMK
Import key material — gunakan bahan kunci Anda sendiri dengan BYOK