Saya tidak yakin apakah menggunakan enkripsi MySQL build in akan menjadi solusi terbaik untuk masalah Anda.
M_CRYPT PHP paket dianggap cukup baik dan memberi Anda fleksibilitas untuk memilih algoritme yang paling sesuai dengan kebutuhan Anda.
Menyimpan kunci Anda di beberapa server lain memiliki satu keuntungan besar:kuncinya tidak berada di mesin yang sama dengan data terenkripsi. Jadi selama penyerang tidak memiliki kontrol yang cukup atas mesin yang disusupi, mereka tidak dapat memperoleh kuncinya.
Jika penyerang mendapatkan kendali penuh atas mesin tempat data disimpan, kemungkinan besar mereka akan dapat melakukan kueri layanan web untuk kuncinya.
Namun, mentransmisikan kunci dari satu mesin ke mesin lainnya membuka seluruh area baru yang perlu diamankan. Mungkin melibatkan lebih banyak kunci dan lebih banyak lapisan enkripsi, sehingga meningkatkan kemungkinan terjadinya kesalahan.
Pilihan lainnya adalah memasukkan kata sandi saat server web mulai dan hanya menyimpannya di memori.
Kemungkinan solusi
Jika melihat solusi yang digunakan yang menggunakan metode berikut untuk mengenkripsi file untuk pengguna dengan akses web (saya tidak yakin dengan lingkungan Anda, tetapi mungkin bisa membantu):
- Setelah pengguna dibuat, kunci acak panjang diberikan kepada pengguna baru.
- Kunci acak ini disimpan dalam kolom terenkripsi dalam catatan pengguna.
(hanya kolom ini yang dienkripsi agar tidak memengaruhi kinerja catatan lainnya! ) - Enkripsi kolom kunci acak dilakukan dengan 1 kata sandi utama, disimpan dalam file atau memori.
(Pilihan yang lebih baik adalah memasukkan kata sandi saat menatap server web Anda dan hanya menyimpannya dalam ingatan. )
(Pendekatan lain adalah membiarkan pengguna memasukkan kata sandi dan menggunakannya untuk mengenkripsi/mendekripsi kolom kunci acak, tapi saya tidak yakin apakah itu akan menambah atau mengurangi keamanan ) - Setiap dokumen yang perlu dienkripsi dienkripsi dengan kunci acak untuk pengguna tersebut dan kemudian disimpan di disk.
- Dokumen disimpan dengan izin minimal di sistem file.
Keuntungan dari pendekatan ini adalah:
1. Kunci acak dienkripsi dalam database. Jadi Anda masih memiliki keamanan tambahan dari database-server, dalam kombinasi dengan kolom terenkripsi.2. Dokumen disimpan dengan kunci yang berbeda, jika penyerang mendapatkan kunci, hanya sebagian dari dokumen yang disusupi.
Namun:
Jika penyerang mendapatkan kata sandi utama dan memiliki akses baca ke tabel pengguna, seluruh sistem, sekali lagi, rusak.