Topik ini memberikan informasi tentang cara membuat dan menggunakan kunci untuk enkripsi asimetris menggunakan kunci RSA. Jika Anda ingin menggunakan kunci asimetris untuk membuat dan memvalidasi tanda tangan, lihat Membuat dan memvalidasi tanda tangan digital. Jika Anda ingin menggunakan kunci simetris untuk enkripsi dan dekripsi, lihat Mengenkripsi dan mendekripsi data.
Enkripsi asimetris menggunakan bagian kunci publik dari kunci asimetris dan dekripsi menggunakan bagian kunci pribadi dari kunci tersebut. Cloud Key Management Service menyediakan fungsi untuk mengambil kunci publik dan fungsi untuk mendekripsi ciphertext yang dienkripsi dengan kunci publik. Cloud KMS tidak mengizinkan akses langsung ke kunci pribadi.
Sebelum memulai
Topik ini memberikan contoh yang berjalan di command line. Untuk menyederhanakan penggunaan contoh, gunakan Cloud Shell. Contoh enkripsi menggunakan OpenSSL, yang sudah diinstal sebelumnya di Cloud Shell.
Buat kunci asimetris dengan tujuan penggunaan kunci
ASYMMETRIC_DECRYPT. Untuk melihat algoritma yang didukung untuk tujuan kunciASYMMETRIC_DECRYPT, lihat Algoritma enkripsi asimetris. Anda tidak dapat mengikuti prosedur ini dengan kunci yang memiliki tujuanASYMMETRIC_SIGN.Jika Anda akan menggunakan command line, instal OpenSSL jika Anda belum memilikinya. Jika Anda menggunakan Cloud Shell, OpenSSL sudah diinstal.
- Pengguna macOS: Versi OpenSSL yang diinstal di macOS tidak mendukung flag yang digunakan untuk mendekripsi data dalam topik ini. Untuk mengikuti langkah-langkah ini di macOS, instal OpenSSL dari Homebrew.
Kontrol akses ke kunci
Untuk pengguna atau layanan yang akan mengambil kunci publik, berikan izin
cloudkms.cryptoKeyVersions.viewPublicKeypada kunci asimetris. Kunci publik diperlukan untuk mengenkripsi data.Untuk pengguna atau layanan yang akan mendekripsi data yang dienkripsi dengan kunci publik, berikan izin
cloudkms.cryptoKeyVersions.useToDecryptpada kunci asimetris.
Pelajari izin dan peran di Cloud KMS di Izin dan Peran.
Mengenkripsi data
Untuk mengenkripsi data menggunakan kunci enkripsi asimetris, ambil kunci publik dan gunakan kunci publik untuk mengenkripsi data.
gcloud
Contoh ini mengharuskan OpenSSL diinstal di sistem lokal Anda.
Download kunci publik
Download kunci publik:
gcloud kms keys versions get-public-key key-version \
--key key \
--keyring key-ring \
--location location \
--output-file public-key-path
Ganti key-version dengan versi kunci yang memiliki kunci publik. Ganti key dengan nama kunci. Ganti key-ring dengan nama key ring tempat kunci berada. Ganti location dengan lokasi Cloud KMS untuk key ring. Ganti public-key-path dengan lokasi untuk menyimpan kunci publik di sistem lokal.
Mengenkripsi data
Enkripsi data menggunakan kunci publik yang baru saja Anda download dan simpan output ke file:
openssl pkeyutl -in cleartext-data-input-file \
-encrypt \
-pubin \
-inkey public-key-path \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha256 \
-pkeyopt rsa_mgf1_md:sha256 \
> encrypted-data-output-file
Ganti cleartext-data-input-file dengan jalur dan nama file yang akan dienkripsi.
Ganti public-key-path dengan jalur dan nama file tempat Anda mendownload kunci publik.
Ganti encrypted-data-output-file dengan jalur dan nama file untuk menyimpan data terenkripsi.
C#
Untuk menjalankan kode ini, siapkan lingkungan pengembangan C# terlebih dahulu dan instal SDK C# Cloud KMS.
Go
Untuk menggunakan Cloud KMS di command line, Instal atau upgrade ke versi terbaru Google Cloud CLI terlebih dahulu.
Java
Untuk menjalankan kode ini, siapkan lingkungan pengembangan Java terlebih dahulu dan instal Cloud KMS Java SDK.