Enkripsi
Collection Field: EncryptionProfessional Edition+Pengantar
Beberapa data bisnis privat, seperti nomor telepon pelanggan, alamat email, nomor kartu, dan lainnya, dapat dienkripsi. Setelah dienkripsi, data akan disimpan ke database dalam bentuk ciphertext.

Cara Enkripsi
Plugin akan otomatis menghasilkan satu Application Key, kunci ini disimpan di direktori /storage/apps/main/encryption-field-keys.
Nama file Application Key adalah ID kunci, dengan ekstensi .key. Harap jangan mengubah nama file secara sembarangan.
Harap simpan file Application Key dengan baik. Jika file Application Key hilang, data terenkripsi tidak dapat didekripsi.
/storage/apps/${nama_sub_aplikasi}/encryption-field-keysPrinsip Kerja
Menggunakan metode envelope encryption

Alur Pembuatan Kunci
- Saat field terenkripsi pertama kali dibuat, sistem akan otomatis menghasilkan
Application Key32-bit, disimpan ke direktori penyimpanan default dengan encoding base64. - Setiap kali field terenkripsi baru dibuat, akan dihasilkan
Field Keyrandom 32-bit untuk field ini, lalu dienkripsi denganApplication KeydanField Initialization Vectorrandom 16-bit (algoritma enkripsiAES), lalu disimpan di fieldoptionsdari tabelfields.
Alur Enkripsi Field
- Setiap kali data ditulis ke field terenkripsi,
Field Keyterenkripsi danField Initialization Vectorakan diambil terlebih dahulu dari fieldoptionstabelfields. - Gunakan
Application KeydanField Initialization Vectoruntuk mendekripsiField Keyyang sudah dienkripsi, lalu gunakanField KeydanData Initialization Vectorrandom 16-bit untuk mengenkripsi data (algoritma enkripsiAES). - Gunakan
Field Keyyang sudah didekripsi untuk men-sign data (algoritma digestHMAC-SHA256), dan dikonversi ke string dengan encoding base64 (Data Signatureyang dihasilkan akan digunakan kemudian untuk pencarian data). - Gabungkan
Data Initialization Vector16-bit danData Ciphertextyang sudah dienkripsi secara biner, dikonversi ke string dengan encoding base64. - Gabungkan string encoding base64
Data Signaturedan string encoding base64Data Ciphertextyang sudah digabung, dipisahkan dengan '.'. - Simpan string final yang sudah digabung ke database.
Environment Variable
Jika Anda ingin menentukan Application Key, dapat menggunakan environment variable ENCRYPTION_FIELD_KEY_PATH. Plugin akan memuat file pada path tersebut sebagai Application Key.
Persyaratan format file Application Key:
- Ekstensi file harus
.key. - Nama file akan digunakan sebagai ID kunci, sebaiknya menggunakan uuid untuk memastikan keunikan.
- Konten file adalah data biner 32-bit dengan encoding base64.
Konfigurasi Field

Pengaruh terhadap Filter setelah Enkripsi
Field yang sudah dienkripsi hanya mendukung: equal, not equal, exist, not exist.

Cara filter data:
- Ambil
Field Keydari field terenkripsi, gunakanApplication Keyuntuk mendekripsiField Key. - Gunakan
Field Keyuntuk men-sign teks pencarian yang diinput pengguna (algoritma digestHMAC-SHA256). - Gunakan teks pencarian yang sudah di-sign dengan separator
., untuk melakukan pencarian prefix matching pada field terenkripsi di database.
Rotasi Kunci
Sebelum menggunakan perintah rotasi kunci nocobase key-rotation, pastikan aplikasi sudah memuat plugin ini.
Setelah aplikasi dimigrasi ke environment baru, jika Anda tidak ingin terus menggunakan kunci yang sama dengan environment lama, dapat menggunakan perintah nocobase key-rotation untuk mengganti Application Key.
Menjalankan perintah rotasi kunci memerlukan penentuan Application Key dari environment lama. Setelah perintah dijalankan, akan dihasilkan Application Key baru, dan menggantikan kunci lama. Application Key baru akan disimpan ke direktori penyimpanan default dengan encoding base64.
Jika mengganti Application Key sub-aplikasi, perlu menambahkan parameter --app-name, untuk menentukan name sub-aplikasi

