Salah satu kemungkinan yang perlu dipertimbangkan adalah memisahkan kunci yang digunakan untuk mengenkripsi data dari kunci yang digunakan untuk mendapatkan akses ke data. Jika dilakukan dengan hati-hati, hal ini memungkinkan pengguna untuk mengubah kata sandinya sesering yang mereka inginkan, sementara Anda hanya mengubah satu catatan dalam database. Secara terpisah, Anda dapat menjadwalkan perubahan pada kunci yang mengenkripsi datanya kapan pun Anda mau.
Bagaimana cara kerjanya?
- Anda mengenkripsi data D untuk pengguna U dengan kunci yang dibuat secara acak, KU,D.
- Anda mengenkripsi kunci KU,D dengan kunci terpisah K1U,K yang dihasilkan dari garam acak, S1U (yang Anda simpan catatan) dan sandi pengguna P1U (yang mungkin Anda lacak atau tidak). Kunci terenkripsi adalah E1U.
- Anda menyimpan S1U dan K1U,K yang siap digunakan saat pengguna ingin mengakses datanya.
- Saat pengguna U ingin mengakses datanya, mereka memberi Anda kata sandinya, P1U, dan Anda mencari S1U dan membuat ulang K1U,K sub> dari data tersebut, dan menggunakannya untuk mendekripsi E1U, memberi Anda KU,D sekali lagi, yang dengannya Anda mendekripsi data sebenarnya.
- Anda memastikan bahwa Anda dapat mendeteksi kapan kata sandi yang diberikan sudah benar sehingga Anda tidak melontarkan omong kosong biner jika pengguna mengetikkan kata sandi yang salah.
Keuntungan dari tingkat tipuan ini muncul ketika pengguna ingin mengubah kata sandinya. Jika Anda tidak menggunakan teknik serupa dengan ini, Anda harus mendapatkan dan memvalidasi kata sandi lama dan kata sandi baru, mendekripsi semua data dengan kata sandi lama, dan mengenkripsi ulang semuanya dengan kata sandi baru.
Dengan tingkat tipuan, Anda tetap meminta kata sandi lama (P1U) dan kata sandi baru (P2U) kepada pengguna dan memvalidasinya, namun Anda hanya perlu melakukannya dekripsi E1U lalu enkripsi ulang dengan kunci baru K2U,K yang dihasilkan dari garam baru S2U dan kata sandi baru P2 kamu. Anda tidak perlu menyentuh data terenkripsi sama sekali.
Dengan tingkat tipuan, sistem S juga dapat menyimpan salinan terenkripsi kedua dari kunci data KU,D, yang dienkripsi dengan kata sandi sistem. Jika diperlukan atau diinginkan untuk mengubah kunci yang digunakan untuk mengenkripsi data, sistem dapat menggunakan salinan kunci terenkripsi untuk melakukannya. Ia dapat menyimpan catatan kunci mana yang terakhir kali dicatat oleh pengguna di kuncinya, sehingga ketika pengguna kembali untuk melihat data, ia dapat mengatur untuk mengubah kunci yang disimpan K2U,D karena pada saat itu, ia memiliki kata sandinya (selebihnya, tidak).
Ini adalah variasi ringan pada beberapa ide di "Kriptografi dalam Basis Data: Garis Pertahanan Terakhir" oleh Kevin Kenan. Kunci KnU,K adalah contoh KEK, Kunci Pengenkripsi Kunci. Anda juga dapat membaca tentang keluarga kunci di buku ini, yang akan membantu pengelolaan data terenkripsi.
person
Jonathan Leffler
schedule
24.01.2012