Jika Anda mengenkripsi data maka Anda harus bertanya pada diri sendiri siapa yang akan mendekripsinya. Jika Anda menggunakan sistem enkripsi asimetris (misalnya RSA) maka enkripsi menggunakan kunci publik dan dekripsi menggunakan kunci pribadi yang sesuai; "asimetri" berasal dari fakta bahwa kunci privat tidak dapat dihitung ulang dari kunci publik (meskipun kedua kunci secara matematis terhubung bersama).
Enkripsi asimetris cenderung memiliki overhead. Komentar pertama adalah bahwa enkripsi semacam itu harus memiliki bagian acak di dalamnya, karena semua orang dapat mengenkripsi (kunci publik adalah, ya, publik):jika proses enkripsi bersifat deterministik, maka siapa pun dapat mengenkripsi semua kemungkinan SSN (ada kurang dari satu miliar di antaranya, yang merupakan angka yang sangat kecil untuk komputer modern) dan cocok dengan nilai terenkripsi. Oleh karena itu, harus ada beberapa penambahan acak selama enkripsi, dan SSN terenkripsi lebih besar dari SSN plaintext.
Sistem enkripsi asimetris yang dikenal menggunakan struktur matematika yang memiliki biaya sendiri. Pada dasarnya, untuk sistem enkripsi RSA, dengan kunci "cukup kuat", pesan terenkripsi akan memiliki panjang setidaknya 128 byte. Beberapa sistem enkripsi lebih baik; sambil tetap berpegang pada jalur penelitian akademis yang dilalui dengan baik, saya bisa melakukannya dalam 41 byte atau lebih (dengan El-Gamal di atas kurva elips NIST K-163). Lebih kecil tampaknya lebih sulit.
Jadi, tidak mengherankan jika sistem database tertentu tidak menyertakan fitur seperti itu secara default.
Untuk masalah Anda, pertama-tama Anda harus mendefinisikan (dan menulis), sejelas mungkin:
- data apa yang ingin Anda lindungi
- siapa yang memasukkan data
- siapa yang seharusnya membaca data kembali
dan kemudian Anda hanya harus bertanya pada diri sendiri apakah enkripsi adalah alat yang tepat untuk itu. Enkripsi bagus ketika penyerang yang dibayangkan bisa mendapatkan data mentah yang disimpan. Ini berarti bahwa penyerang telah melewati perlindungan sistem operasi. Pada saat itu, apa pun yang diketahui sistem operasi, penyerang juga tahu. Jika database dihosting di mesin dan ada antarmuka yang melaluinya SSN yang didekripsi dapat diperoleh, maka mesin itu "tahu" cara mendapatkan data, dan begitu pula penyerang... Di sisi lain, jika host sistem operasi mesin dianggap cukup tangguh, maka enkripsi tampaknya tidak diperlukan sama sekali.
Enkripsi simetris pada database dapat mengatasi masalah yang lebih lemah, di mana penyerang mendapatkan salinan harddisk sesudahnya . Sistem host mengetahui kunci enkripsi simetris, tetapi hanya mengetahuinya dalam RAM. Penyerang yang mencuri harddisk tidak akan memiliki kunci itu.