Kunci asimetris di KMS menggunakan pasangan kunci yang terhubung secara matematis—kunci publik dan kunci privat—untuk mengenkripsi data atau menghasilkan tanda tangan digital antar sistem dengan tingkat kepercayaan berbeda. Kunci publik tersedia untuk semua pihak, sedangkan kunci privat harus dijaga kerahasiaannya dan hanya digunakan oleh pengguna tepercaya.
Gunakan kunci asimetris ketika:
Anda perlu mengenkripsi data di luar KMS menggunakan kunci publik yang disimpan secara lokal, lalu mendekripsinya di dalam KMS.
Anda perlu menandatangani data di KMS dan memungkinkan pihak eksternal memverifikasi tanda tangan tersebut menggunakan kunci publik, tanpa memberikan akses ke kunci privat.
KMS juga dapat menghasilkan permintaan penandatanganan sertifikat (CSR) untuk kunci master pelanggan (CMK) asimetris. Kirimkan CSR tersebut ke Otoritas Sertifikat (CA) untuk mendapatkan sertifikat digital guna keamanan email, terminal, penandatanganan kode, layanan website tepercaya, atau otorisasi identitas.
Jenis kunci yang didukung
KMS mendukung algoritma kunci asimetris RSA, Elliptic Curve Cryptography (ECC), dan SM2. Setiap algoritma mendukung serangkaian operasi tetap—pilih berdasarkan kasus penggunaan Anda.
| Algorithm | Key spec | Encrypt/Decrypt | Sign/Verify |
|---|---|---|---|
| RSA | RSA_2048 | Yes | Yes |
| RSA | RSA_3072 | Yes | Yes |
| ECC | EC_P256 (NIST P-256) | No | Yes |
| ECC | EC_P256K (SECG secp256k1) | No | Yes |
| SM2 | EC_SM2 (GB/T 32918) | Yes | Yes |
Kunci ECC (EC_P256,EC_P256K) hanya mendukung penandatanganan dan verifikasi. Kunci ini tidak dapat digunakan untuk enkripsi atau dekripsi.
Enkripsi data
Enkripsi asimetris melindungi data sensitif selama transmisi antar pihak yang tidak dapat berbagi kunci rahasia sebelumnya. Alur umumnya sebagai berikut:
Penerima informasi mendistribusikan kunci publik kepada pengirim.
Pengirim menggunakan kunci publik untuk mengenkripsi informasi sensitif.
Pengirim mengirim ciphertext kepada penerima informasi.
Penerima informasi memanggil
AsymmetricDecryptuntuk mendekripsi ciphertext menggunakan kunci privat.
Hanya penerima informasi yang dapat menggunakan kunci privat, sehingga teks biasa dari informasi sensitif tidak dapat dicegat dan didekripsi oleh pihak yang tidak berwenang selama transmisi.
Skenario umum mencakup pertukaran kunci sesi dalam Proses jabat tangan TLS dan impor kunci enkripsi antar hardware security modules (HSM).
Untuk implementasi langkah demi langkah, lihat Enkripsi dan dekripsi data menggunakan CMK asimetris.
Tanda tangan digital
Kunci privat menandatangani data; kunci publik memverifikasi tanda tangan. Karena hanya pemegang kunci privat yang dapat menghasilkan tanda tangan valid, tanda tangan digital memberikan tiga jaminan:
Integritas: Jika data dimodifikasi setelah ditandatangani, verifikasi akan gagal.
Keaslian: Tanda tangan yang valid mengonfirmasi bahwa penandatangan memiliki kunci privat.
Non-repudiasi: Penandatangan tidak dapat mengingkari pembuatan tanda tangan yang sesuai dengan data tersebut.
Alur penandatanganan umum:
Penandatangan memanggil
AsymmetricSigndi KMS untuk menandatangani data menggunakan kunci privat.Penandatangan mendistribusikan kunci publik (melalui
GetPublicKey) dan mengirim data beserta tanda tangan kepada penerima.Penerima menggunakan kunci publik dengan
AsymmetricVerify(atau pustaka kriptografi lokal) untuk memverifikasi tanda tangan.
Kasus penggunaan — penandatanganan kode: Tandatangani artefak biner sebelum distribusi. Konsumen memverifikasi tanda tangan untuk memastikan kode tidak dimodifikasi.
Kasus penggunaan — identitas berbasis sertifikat: CA menandatangani sertifikat digital untuk mengaitkan kunci publik dengan identitas suatu entitas. Sertifikat tersebut berisi kunci publik entitas, tujuan kunci, tanggal kedaluwarsa, dan penerbit. Penerima memverifikasi sertifikat menggunakan kunci publik CA, lalu menggunakan kunci publik entitas untuk memverifikasi tanda tangan pesan.
Untuk implementasi langkah demi langkah, lihat Hasilkan dan verifikasi tanda tangan digital menggunakan CMK asimetris.
Pengendalian versi utama
KMS tidak mendukung rotasi kunci otomatis untuk CMK asimetris. Karena kunci publik didistribusikan secara eksternal, rotasi pasangan kunci memerlukan redistribusi kunci publik baru ke semua pihak yang menggunakannya.
Untuk membuat pasangan kunci baru dalam CMK yang sudah ada, panggil CreateKeyVersion. Ini akan menghasilkan versi baru dengan pasangan kunci publik/privat baru. Setelah membuat versi baru, distribusikan kunci publik baru ke semua pihak sebelum menggunakan versi baru tersebut untuk penandatanganan atau enkripsi.
Berbeda dengan CMK simetris, CMK asimetris tidak memiliki versi kunci primary. Semua pemanggilan API untuk operasi CMK asimetris harus menentukan baik ID CMK (atau alias) maupun ID versi kunci.
Operasi API
KMS memisahkan operasi kunci publik dari operasi kunci privat.
Operasi kunci publik — dapat dipanggil oleh pihak mana pun yang berwenang:
| Operation | Description |
|---|---|
GetPublicKey | Ambil kunci publik dari pasangan kunci asimetris untuk penggunaan lokal dengan OpenSSL, JCE, atau pustaka kriptografi lainnya. |
AsymmetricEncrypt | Enkripsi data menggunakan KMS. KMS mencatat semua pemanggilan dan menerapkan kebijakan Resource Access Management (RAM) pada operasi tersebut. |
AsymmetricVerify | Verifikasi tanda tangan digital menggunakan KMS. KMS mencatat semua pemanggilan dan menerapkan kebijakan RAM pada operasi tersebut. |
Operasi kunci privat — dilakukan secara eksklusif di dalam KMS:
| Operation | Description |
|---|---|
AsymmetricDecrypt | Dekripsi data yang dienkripsi dengan kunci publik yang sesuai. |
AsymmetricSign | Tandatangani data menggunakan kunci privat untuk menghasilkan tanda tangan digital. |
Untuk operasi kunci publik, memanggil GetPublicKey dan menggunakan pustaka lokal (OpenSSL, JCE) menghindari pencatatan log per pemanggilan dan penerapan kebijakan RAM. Gunakan AsymmetricEncrypt atau AsymmetricVerify secara langsung ketika Anda memerlukan log audit tingkat pemanggilan atau kontrol akses detail halus melalui RAM.