Topik ini menjelaskan cara mengenkripsi data secara lokal dan menguploadnya ke Cloud Storage dengan Tink dan Cloud Key Management Service (Cloud KMS). Tink adalah library kriptografi open source yang ditulis oleh kriptografer dan engineer keamanan di Google.
Ringkasan
Enkripsi sisi klien adalah enkripsi apa pun yang dilakukan sebelum mengirim data Anda ke cloud. Saat menggunakan enkripsi sisi klien, Anda bertanggung jawab untuk membuat dan mengelola kunci enkripsi serta mengenkripsi data sebelum mengirimkannya ke cloud.
Dalam topik ini, Anda akan menerapkan enkripsi amplop sisi klien dengan Tink menggunakan kunci enkripsi di Cloud KMS.
Anda dapat menemukan versi blueprint berbasis Terraform dari tutorial ini di repositori GitHub kms-solutions.
Sebelum memulai
- Buat kunci enkripsi Cloud KMS simetris untuk enkripsi. Perhatikan URI kunci. Anda akan membutuhkannya nanti.
- Instal Tink untuk digunakan dengan Cloud KMS.
- Buat bucket di Cloud Storage untuk mengupload data terenkripsi Anda.
Peran yang diperlukan
Untuk memastikan akun layanan Anda memiliki izin
yang diperlukan untuk menggunakan kunci Cloud KMS dengan Tink,
minta administrator untuk memberikan peran IAM
Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter
) ke kunci Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada akun layanan Anda melalui peran khusus atau peran bawaan lainnya.
Enkripsi amplop dengan Tink
Dalam enkripsi amplop, kunci Cloud KMS bertindak sebagai kunci enkripsi kunci (KEK). Artinya, kunci ini digunakan untuk mengenkripsi kunci enkripsi data (DEK) yang kemudian digunakan untuk mengenkripsi data sebenarnya.
Setelah membuat KEK di Cloud KMS, untuk mengenkripsi setiap pesan, Anda harus:
- Membuat kunci enkripsi data (DEK) secara lokal.
- Gunakan DEK secara lokal untuk mengenkripsi pesan.
- Gunakan Cloud KMS untuk mengenkripsi (menggabungkan) DEK dengan KEK.
- Menyimpan data terenkripsi dan DEK yang digabungkan.
Anda tidak perlu menerapkan proses enkripsi amplop ini dari awal saat menggunakan Tink.
Untuk menggunakan Tink untuk enkripsi menyeluruh, Anda perlu menyediakan URI kunci dan kredensial ke Tink. URI kunci mengarah ke KEK Anda di Cloud KMS, dan kredensial memungkinkan Tink menggunakan KEK. Tink menghasilkan DEK, mengenkripsi data, menggabungkan DEK, lalu menampilkan satu ciphertext dengan data terenkripsi dan DEK yang digabungkan.
Tink mendukung enkripsi amplop di Python, Java, C++, dan Go menggunakan primitive Authenticated Encryption with Associated Data (AEAD).
Menghubungkan Tink dan Cloud KMS
Untuk mengenkripsi DEK yang dihasilkan oleh Tink dengan KEK Anda di Cloud KMS, Anda perlu mendapatkan URI KEK. Di Cloud KMS, URI KEK memiliki format berikut:
gcp-kms://projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION
Lihat Mendapatkan ID resource Cloud KMS untuk mengetahui detail tentang cara mendapatkan jalur ke kunci Anda.
Melakukan inisialisasi Tink dan mengenkripsi data
Tink menggunakan primitif—blok penyusun kriptografis yang mengelola detail algoritma dasarnya—sehingga Anda dapat melakukan tugas dengan aman. Setiap primitif menawarkan API yang menangani tugas tertentu. Di sini, kita menggunakan AEAD, jadi kita menggunakan primitif AEAD Tink.
Python
Python
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud KMS, lihat library klien Cloud KMS.
Untuk melakukan autentikasi ke Cloud KMS, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Java
Untuk mempelajari cara menginstal dan menggunakan library klien untuk Cloud KMS, lihat library klien Cloud KMS.
Untuk melakukan autentikasi ke Cloud KMS, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Untuk informasi selengkapnya tentang primitive dan antarmuka yang didukung oleh Tink, lihat halaman Memulai untuk Tink.
Apa langkah selanjutnya?
- Pelajari Tink lebih lanjut.
- Pelajari cara menggunakan enkripsi sisi klien dengan Cloud SQL.