全部产品
Search
文档中心

Key Management Service:Gunakan enkripsi amplop

更新时间:Jul 02, 2025

Jika Anda ingin mengenkripsi sejumlah besar data di aplikasi Anda atau tidak ingin mengunggah data ke Key Management Service (KMS), Anda dapat menggunakan enkripsi amplop. Topik ini menjelaskan cara menggunakan enkripsi amplop.

Jenis kunci yang berlaku

Kunci yang dilindungi perangkat lunak dan kunci yang dilindungi perangkat keras.

Penting

Anda dapat menggunakan kunci yang dilindungi perangkat lunak, kunci yang dilindungi perangkat keras, serta kunci layanan dan customer master keys (CMKs) sebagai kunci default untuk enkripsi amplop. Kunci layanan dan CMKs hanya digunakan untuk enkripsi sisi server dalam layanan Alibaba Cloud dan tidak dapat digunakan untuk enkripsi di aplikasi Anda sendiri. Namun, Anda dapat menggunakan kunci yang dilindungi perangkat lunak dan kunci yang dilindungi perangkat keras untuk enkripsi sisi server dalam layanan Alibaba Cloud maupun enkripsi di aplikasi Anda sendiri.

Topik ini menjelaskan cara menggunakan enkripsi amplop di aplikasi Anda sendiri. Untuk informasi lebih lanjut tentang enkripsi sisi server, lihat Integrasi dengan KMS.

Pengenalan enkripsi amplop

Enkripsi amplop adalah mekanisme enkripsi yang mirip dengan teknologi amplop digital. Saat menggunakan enkripsi amplop, KMS menghasilkan kunci data, mengenkripsi kunci data menggunakan kunci KMS, lalu meneruskan plaintext kunci data dan ciphertext kunci data ke aplikasi Anda secara aman. Aplikasi Anda menggunakan plaintext kunci data untuk mengenkripsi data dan menyimpan ciphertext data dan ciphertext kunci data. Saat data perlu didekripsi, aplikasi meminta KMS untuk mendekripsi ciphertext kunci data guna mendapatkan plaintext kunci data, lalu menggunakan plaintext kunci data untuk mendekripsi ciphertext data.

Proses enkripsi amplop

Aplikasi memanggil operasi GenerateDataKey menggunakan SDK untuk menghasilkan kunci data. Kemudian, aplikasi menggunakan kunci data untuk mengenkripsi data berdasarkan pustaka kriptografi pihak ketiga atau produk dengan modul kriptografi terintegrasi. Ciphertext kunci data digunakan sebagai amplop dan disimpan bersama dengan ciphertext data. Gambar berikut menunjukkan proses enkripsi amplop.image..png

  1. Aplikasi memanggil operasi GenerateDataKey untuk menghasilkan kunci data. Informasi berikut harus dilewatkan dalam operasi tersebut:

    • KeyId: ID atau alias dari kunci KMS yang dibuat.

    • NumberOfBytes: panjang kunci data. Untuk alasan keamanan, kami sarankan Anda menetapkan panjang kunci data setidaknya 24 byte.

      Catatan

      Jika Anda menggunakan Algoritma Standar Enkripsi Lanjutan (AES) untuk mengenkripsi data, diperlukan kunci data 16-, 24-, atau 32-byte. Jika Anda menggunakan algoritma Triple Data Encryption Standard (3DES) untuk mengenkripsi data, diperlukan kunci data 16- atau 24-byte.

  2. Aplikasi menerima kunci data yang dikembalikan oleh KMS. Kunci data mencakup plaintext kunci data, ciphertext kunci data, dan parameter enkripsi. Parameter enkripsi mencakup algoritma enkripsi dan vektor awal yang dienkripsi.

    Ciphertext kunci data dihasilkan setelah Anda mengenkripsi plaintext kunci data dalam mode Galois/Counter Mode (GCM) menggunakan kunci KMS yang dilewatkan dalam operasi GenerateDataKey.

    Peringatan

    Jaga ciphertext kunci data Anda tetap aman. Jika hilang, dekripsi akan menjadi tidak mungkin, mengakibatkan hilangnya data bisnis Anda yang tidak dapat dipulihkan.

  3. Aplikasi menggunakan plaintext kunci data untuk mengenkripsi data secara lokal dan mendapatkan ciphertext data.

    • Saat menggunakan plaintext kunci data untuk mengenkripsi atau mendekripsi data secara lokal, Anda dapat memilih pustaka kriptografi pihak ketiga atau produk dengan modul kriptografi terintegrasi berdasarkan persyaratan adaptasi dan kepatuhan keamanan bahasa aplikasi.

    • Kami sarankan Anda menghapus plaintext kunci data pada kesempatan pertama setelah enkripsi selesai.

  4. Aplikasi menyimpan ciphertext data, ciphertext kunci data, kunci KMS, dan parameter enkripsi. Kunci KMS digunakan untuk menghasilkan kunci data. Parameter enkripsi mencakup algoritma enkripsi dan vektor awal yang digunakan untuk menghasilkan kunci data.

Proses dekripsi amplop

Aplikasi memanggil operasi Decrypt menggunakan SDK untuk mendekripsi ciphertext kunci data guna mendapatkan plaintext kunci data. Kemudian, aplikasi menggunakan plaintext kunci data untuk mendekripsi ciphertext data guna mendapatkan plaintext data berdasarkan pustaka kriptografi pihak ketiga atau produk dengan modul kriptografi terintegrasi. Gambar berikut menunjukkan proses dekripsi amplop.

image..png

  1. Aplikasi membaca ciphertext data, ciphertext kunci data, kunci KMS, dan parameter enkripsi. Kunci KMS digunakan untuk mengenkripsi kunci data. Parameter enkripsi mencakup algoritma enkripsi dan vektor awal yang digunakan untuk menghasilkan kunci data.

  2. Aplikasi memanggil operasi Decrypt. Informasi yang dibaca dilewatkan dalam operasi untuk mendekripsi ciphertext kunci data.

  3. Aplikasi menerima plaintext kunci data yang dikembalikan oleh KMS.

  4. Aplikasi menggunakan plaintext kunci data untuk mendekripsi ciphertext data secara lokal guna mendapatkan plaintext data.

Skenario

Anda dapat menggunakan enkripsi amplop dalam skenario berikut, namun tidak terbatas pada:

  • Beberapa file data di aplikasi Anda perlu dienkripsi. Setiap file data memerlukan kunci data yang berbeda.

    Jika Anda menggunakan satu kunci atau sejumlah kecil kunci untuk mengenkripsi beberapa file data dan jumlah datanya besar, risiko pembobolan kunci meningkat. Dengan menggunakan enkripsi amplop, Anda dapat menggunakan kunci data yang berbeda untuk mengenkripsi setiap file data, dan Anda dapat menggunakan kunci KMS untuk mengenkripsi kunci data. Ini secara signifikan meningkatkan keamanan data terenkripsi.

  • Sejumlah besar data di aplikasi Anda perlu dienkripsi sekaligus, seperti data disk penuh.

    Jika Anda ingin mengenkripsi sejumlah besar data sekaligus, Anda mungkin menghadapi biaya transmisi jaringan tinggi dan latensi saat server aplikasi mengirimkan data ke KMS melalui saluran aman dan KMS mengembalikan data terenkripsi. Anda dapat menggunakan enkripsi amplop untuk menyelesaikan masalah tersebut.

Batasan

Selama enkripsi amplop, Anda harus menggunakan kunci KMS simetris dalam instance tipe manajemen kunci perangkat keras atau tipe manajemen kunci perangkat lunak. Kunci simetris harus menggunakan spesifikasi berikut:

  • Instance manajemen kunci perangkat lunak: Aliyun_AES_256.

  • Instance manajemen kunci perangkat keras: Aliyun_AES_256, Aliyun_AES_192, Aliyun_AES_128, atau Aliyun_DES3_192.

Prasyarat

Contoh

Catatan

Dalam kode sampel berikut, kunci data AES 32-byte digunakan, dan data dienkripsi dalam mode GCM.

Java

Dalam contoh ini, pustaka kriptografi Provider yang disediakan oleh SunJCE digunakan untuk mengenkripsi dan mendekripsi data.

Python

Dalam contoh ini, pustaka kriptografi cryptography.hazmat digunakan untuk mengenkripsi dan mendekripsi data.

Kode sampel untuk enkripsi amplop dan dekripsi amplop

Go

Dalam contoh ini, pustaka kriptografi golang/crypto digunakan untuk mengenkripsi dan mendekripsi data.

Kode sampel untuk enkripsi amplop dan dekripsi amplop

PHP

Dalam contoh ini, pustaka kriptografi OpenSSL digunakan untuk mengenkripsi dan mendekripsi data.

Kode sampel untuk enkripsi amplop dan dekripsi amplop

Referensi

Integrasi dengan KMS