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 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 mengimplementasikan enkripsi envelope sisi klien dengan Tink menggunakan kunci enkripsi di Cloud KMS.
Sebelum memulai
- Buat kunci enkripsi Cloud KMS simetris untuk enkripsi. Catat URI kunci. Anda akan memerlukannya nanti.
- Instal Tink untuk digunakan dengan Cloud KMS.
- Buat bucket di Cloud Storage untuk mengupload data terenkripsi Anda.
Peran yang diperlukan
Guna 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 akun layanan Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Administrator Anda mungkin juga dapat memberi akun layanan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Enkripsi amplop dengan Tink
Dalam enkripsi envelope, 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 menyeluruh ini dari awal saat menggunakan Tink.
Agar dapat menggunakan Tink untuk enkripsi amplop, Anda harus memberikan URI kunci dan kredensial kepada Tink. URI utama mengarah ke KEK Anda di Cloud KMS, dan kredensial tersebut 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 envelope di Python, Java, C++, dan Go menggunakan primitif Enkripsi yang Diautentikasi dengan Data Terkait (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:
gcp-kms://projects/<PROJECT>/locations/<LOCATION>/keyRings/
<KEY RING>/cryptoKeys/<KEY NAME>/cryptoKeyVersions/<VERSION>
Baca bagian Mendapatkan ID resource Cloud KMS untuk mengetahui detail tentang cara mendapatkan jalur ke kunci Anda.
Melakukan inisialisasi Tink dan mengenkripsi data
Tink menggunakan primitif—elemen penyusun kriptografi yang mengelola detail algoritma yang mendasarinya—sehingga Anda dapat menjalankan tugas dengan aman. Setiap primitif menawarkan API yang menangani tugas tertentu. Di sini, kami menggunakan AEAD, jadi kita menggunakan primitif Tink AEAD.
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, baca 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, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Untuk mengetahui informasi selengkapnya tentang primitif 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.