1. Ringkasan
Cloud KMS adalah key management service yang dihosting di cloud yang memungkinkan Anda mengelola kunci kriptografis untuk layanan cloud seperti saat Anda mengelolanya di infrastruktur lokal. Library ini mencakup dukungan untuk enkripsi, dekripsi, penandatanganan, dan verifikasi menggunakan berbagai jenis dan sumber kunci, termasuk Cloud HSM untuk kunci yang didukung hardware. Tutorial ini mengajarkan cara menandatangani dan memverifikasi data menggunakan kunci Cloud KMS asimetris.
Andaakan mempelajari
- Cara mengaktifkan Cloud KMS API
- Cara membuat Key Ring
- Cara membuat Kunci Kripto untuk penandatanganan/verifikasi asimetris
2. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. (Jika belum memiliki akun Gmail atau G Suite, Anda harus membuatnya.)
Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID
.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Dalam codelab ini, Anda akan menggunakan Cloud Shell, lingkungan virtual gratis yang berjalan di Google Cloud. Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Kecuali jika diinstruksikan lain, jalankan semua perintah dari shell ini.
3. Mengaktifkan Layanan Cloud KMS
Sebelum dapat menggunakan Cloud KMS, Anda harus mengaktifkan layanan ini terlebih dahulu di project Anda. Tindakan ini hanya perlu dilakukan sekali per project. Untuk mengaktifkan layanan Cloud KMS, jalankan perintah berikut:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
Pengaktifan dapat memerlukan waktu hingga satu menit. Perintah akan melaporkan keberhasilan saat selesai.
4. Membuat Kunci KMS
Buat Key Ring Cloud KMS. Di Cloud KMS, Key Ring adalah kumpulan kunci kriptografis yang logis. Key Ring berisi metadata tentang kunci seperti lokasinya. Buat Key Ring bernama my-keyring
di region global
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Sekarang buat Kunci Kripto bernama my-asymmetric-signing-key
dengan tujuan asymmetric-signing
di dalam Key Ring yang baru saja Anda buat.
$ gcloud kms keys create "my-asymmetric-signing-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-signing" \ --default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. Data Tanda Tangan
Tidak seperti enkripsi, mendekripsi data yang dienkripsi menggunakan kunci Cloud KMS asimetris memerlukan akses online ke layanan Cloud KMS. Dekripsi ciphertext dari file menggunakan alat command line gcloud
:
Buat file dengan data yang akan ditandatangani dan gunakan alat command line gcloud
untuk menandatangani data dengan kunci Cloud KMS:
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --version "1" \ --digest-algorithm "sha512" \ --input-file ./data.txt \ --signature-file ./data.txt.sig
Tanda tangan disimpan di data.txt.sig
pada disk. Jika membuka file data.txt.sig
, Anda akan melihat bahwa file tersebut memiliki karakter aneh yang tidak dapat dicetak. Hal ini karena data yang dihasilkan dalam format biner.
Saat menyimpan tanda tangan di database atau mengirimkannya sebagai bagian dari permintaan HTTP, Anda mungkin perlu mengenkode data. Mekanisme encoding yang umum adalah base64.
6. Memverifikasi Data
Dengan kunci asimetris, Cloud KMS tidak melakukan verifikasi secara langsung. Sebagai gantinya, kunci tersebut memberikan akses ke kunci publik dan Anda memverifikasi data menggunakan kunci publik tersebut melalui kriptografi kunci publik. Dengan kunci asimetris, verifikasi dapat dilakukan sepenuhnya secara offline dan tidak memerlukan akses ke Cloud KMS atau Google Cloud API lainnya. Verifikasi dilakukan menggunakan alat kriptografi seperti openssl
atau dengan bahasa pemrograman atau library yang mendukung kriptografi kunci publik.
Download kunci publik dari Cloud KMS:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --output-file ./key.pub
Verifikasi tanda tangan dengan kunci publik menggunakan alat command line openssl
:
$ openssl dgst -sha256 \ -verify ./key.pub \ -signature ./data.txt.sig ./data.txt
Konsol akan mencetak pesan sukses, yang menunjukkan bahwa tanda tangan digital valid.
Verified OK
7. Selamat!
Anda telah mengaktifkan Cloud KMS API, membuat kunci penandatanganan asimetris, serta menandatangani dan memverifikasi data. Cloud KMS adalah produk yang canggih dan penandatanganan/verifikasi hanyalah sebagian kecil dari kemampuannya.
Pembersihan
Jika Anda sudah selesai menjelajahi, pertimbangkan untuk menghapus project Anda.
- Buka Cloud Platform Console
- Pilih project yang ingin dinonaktifkan, lalu klik "Hapus" di bagian atas. Tindakan ini akan menjadwalkan penghapusan project.
Pelajari Lebih Lanjut
Lisensi
Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.