View a markdown version of this page

Memilih panjang suar dan partisi - AWS SDK Enkripsi Basis Data

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memilih panjang suar dan partisi

Pustaka enkripsi sisi klien kami diubah namanya menjadi SDK Enkripsi AWS Database. Panduan pengembang ini masih memberikan informasi tentang Klien Enkripsi DynamoDB.

Saat Anda menulis nilai baru ke bidang terenkripsi yang dikonfigurasi untuk enkripsi yang dapat dicari, SDK Enkripsi AWS Database menghitung HMAC atas nilai plaintext yang dikombinasikan dengan pengenal partisi. Dalam partisi tertentu, HMAC penuh secara unik mewakili nilai plaintext. SDK kemudian memotong output HMAC sehingga beberapa nilai plaintext yang berbeda dapat dipetakan ke beacon yang sama. Tabrakan ini, juga dikenal sebagai false positive, membatasi kemampuan pengguna yang tidak sah untuk menyimpulkan informasi yang membedakan tentang plaintext yang mendasarinya.

Jumlah rata-rata positif palsu yang dihasilkan untuk setiap suar ditentukan oleh panjang suar yang tersisa setelah pemotongan dan jumlah partisi yang digunakan. Anda hanya perlu menentukan panjang suar saat mengonfigurasi suar standar. Suar majemuk menggunakan panjang suar dari suar standar tempat mereka dibangun. Dengan mendistribusikan nilai di beberapa partisi, tabrakan dipertahankan dalam setiap partisi, yang membantu mengurangi konsentrasi frekuensi sambil mempertahankan perilaku kueri yang benar.

Beacon tidak mengubah status lapangan yang dienkripsi. Namun, ketika Anda menggunakan beacon, ada tradeoff yang melekat antara seberapa efisien kueri Anda dan seberapa banyak informasi yang terungkap tentang distribusi data Anda. Panjang suar yang lebih pendek dan partisi tambahan meningkatkan tabrakan dan mengurangi kebocoran frekuensi, sementara panjang suar yang lebih panjang dan partisi yang lebih sedikit meningkatkan presisi kueri.

Tujuan enkripsi yang dapat dicari adalah untuk mengurangi biaya kinerja yang terkait dengan database terenkripsi sisi klien dengan menggunakan beacon untuk melakukan kueri pada data terenkripsi. Beacon disimpan di samping bidang terenkripsi tempat mereka dihitung. Ini berarti bahwa mereka dapat mengungkapkan informasi yang membedakan tentang distribusi dataset Anda. Dalam kasus ekstrim, pengguna yang tidak sah mungkin dapat menganalisis informasi yang diungkapkan tentang distribusi Anda dan menggunakannya untuk mengidentifikasi nilai plaintext bidang. Memilih panjang suar yang tepat dan jumlah partisi membantu mengurangi risiko ini dan menjaga kerahasiaan data Anda.

Tinjau model ancaman Anda untuk menentukan tingkat keamanan yang Anda butuhkan. Misalnya, semakin banyak individu yang memiliki akses ke database Anda, tetapi tidak memiliki akses ke data teks biasa, semakin Anda mungkin ingin melindungi kerahasiaan distribusi kumpulan data Anda. Meningkatkan kerahasiaan biasanya membutuhkan menghasilkan lebih banyak kesalahan positif—melalui panjang suar yang lebih pendek, partisi tambahan, atau keduanya—yang pada gilirannya dapat mengurangi kinerja kueri.

Memilih skema partisi

Skema partisi menentukan bagaimana item didistribusikan di seluruh partisi ketika beacon diturunkan. Memilih skema yang tepat penting untuk menyeimbangkan privasi, kinerja, dan prediktabilitas operasional.

Saat memilih skema partisi, pertimbangkan tujuan berikut:

  • Mendistribusikan nilai frekuensi tinggi untuk mengurangi kelas kesetaraan suar besar.

  • Hindari memperkenalkan pola yang dapat diprediksi yang dapat membocorkan informasi sensitif.

  • Pertahankan perilaku stabil di seluruh penulisan dan kueri.

Distribusi acak default

Default yang disarankan adalah skema distribusi acak. Dalam model ini, setiap item ditugaskan ke partisi menggunakan nilai acak yang aman secara kriptografis. Distribusi acak menghasilkan ukuran partisi yang kira-kira sama dari waktu ke waktu dan memastikan bahwa nilai yang sering tersebar merata.

Gunakan distribusi acak saat:

  • Anda tidak memiliki pengetahuan domain yang kuat tentang distribusi nilai.

  • Dataset berisi kemiringan yang tidak diketahui atau berkembang.

  • Anda ingin meminimalkan kebocoran yang bergantung pada atribut.

Distribusi deterministik

Dalam beberapa kasus, penugasan partisi harus deterministik. Skema deterministik menetapkan partisi berdasarkan fungsi atribut item yang stabil. Skema ini harus dirancang dengan hati-hati, karena input yang miring atau sensitif dapat mengakibatkan partisi yang tidak merata atau kebocoran informasi yang tidak diinginkan.

Gunakan distribusi deterministik ketika:

  • Alur kerja operasional bergantung pada penempatan partisi yang konsisten.

  • Anda memiliki satu set nilai unik yang sengaja dikelompokkan ke dalam satu partisi.

Menangani nilai panas yang diketahui

Jika kumpulan data Anda berisi nilai panas yang terkenal, Anda dapat menggabungkan strategi acak dan deterministik. Misalnya, Anda mungkin secara acak mendistribusikan satu set kecil nilai frekuensi tinggi sambil menetapkan semua nilai lainnya secara deterministik.

Pendekatan ini mengurangi konsentrasi untuk nilai panas sambil mempertahankan perilaku yang dapat diprediksi untuk sisa kumpulan data. Karena memperkenalkan kompleksitas tambahan, tinjau dengan cermat untuk menghindari kebocoran informasi yang tidak diinginkan.

Contoh skema partisi

Contoh berikut menggambarkan skema partisi umum dan menunjukkan bagaimana karakteristik data yang berbeda mempengaruhi penetapan partisi. Setiap contoh menunjukkan bagaimana menyeimbangkan privasi, kinerja, dan kesederhanaan operasional.

Contoh 1: Data yang terdistribusi secara seragam

Anda membuat suar untuk nomor telepon, dan nilai dalam kumpulan data Anda kira-kira terdistribusi secara merata. Tidak ada nomor telepon tunggal yang muncul secara signifikan lebih sering daripada yang lain.

Dalam hal ini, mengkonfigurasi satu partisi sudah cukup. Partisi tambahan memberikan sedikit manfaat dan hanya akan meningkatkan penggemar kueri.

Contoh 2: Hasil biner dengan frekuensi miring

Anda memiliki database yang menyimpan hasil tes medis dengan dua nilai yang mungkin: NEGATIF dan POSITIF. Hasil NEGATIF terjadi kira-kira lima kali lebih sering daripada hasil POSITIF.

Untuk mengurangi kebocoran frekuensi, gunakan strategi campuran:

  • Tetapkan hasil NEGATIF secara acak di lima partisi.

  • Tetapkan hasil POSITIF secara deterministik ke satu partisi.

Pendekatan ini menyebarkan nilai yang terwakili secara berlebihan sambil menjaga nilai yang lebih jarang stabil, mengurangi kelas ekivalensi besar tanpa fan-out yang tidak perlu.

Contoh 3: Nilai panas yang diketahui dalam domain besar

Anda memiliki database nama depan di Amerika Serikat. Satu set nama umum yang relatif kecil (misalnya, 500 nama paling sering) muncul jauh lebih sering daripada yang lain.

  • Tetapkan 500 nama paling sering secara acak di empat partisi.

  • Tetapkan semua nama yang tersisa secara deterministik ke satu partisi.

  • Secara bertahap tingkatkan jumlah partisi sampai data yang ditetapkan untuk setiap partisi menunjukkan distribusi yang kira-kira seragam.

Pendekatan hibrida ini menargetkan nilai-nilai panas yang diketahui sambil menjaga partisi tetap sederhana dan dapat diprediksi untuk sebagian besar nama.

Contoh-contoh ini menunjukkan bagaimana skema partisi dapat disesuaikan dengan karakteristik data yang berbeda. Dalam kebanyakan kasus, distribusi acak sudah cukup, tetapi menggabungkan pengetahuan domain dapat lebih meningkatkan privasi dan kinerja bila diterapkan dengan hati-hati.

Menghitung panjang suar

Panjang suar ditentukan dalam bit dan menentukan berapa banyak bit output HMAC yang dipertahankan setelah pemotongan. Panjang yang disarankan tergantung pada bagaimana nilai didistribusikan dalam setiap partisi, apakah data berisi nilai yang berkorelasi, dan persyaratan keamanan dan kinerja Anda. Ketika kumpulan data kira-kira seragam setelah menerapkan skema partisi yang sesuai, Anda dapat menggunakan persamaan sederhana dan prosedur penyetelan untuk memperkirakan panjang suar yang efektif. Persamaan ini memberikan perkiraan jumlah rata-rata positif palsu yang dapat dihasilkan oleh suar, tetapi mereka tidak menjamin jumlah positif palsu tertentu untuk setiap nilai unik dalam kumpulan data. Langkah pertama adalah memperkirakan populasi.

catatan

Efektivitas persamaan ini tergantung pada distribusi dataset Anda dalam setiap partisi. Jika kumpulan data Anda tidak terdistribusi secara seragam, lihat. Apakah beacon tepat untuk dataset saya?

Perkirakan populasi

Populasi adalah jumlah nilai unik yang diharapkan di bidang tempat suar standar Anda dibangun, itu bukan jumlah total nilai yang diharapkan yang disimpan di lapangan. Misalnya, pertimbangkan Room bidang terenkripsi yang mengidentifikasi lokasi rapat karyawan. RoomBidang ini diharapkan menyimpan 100.000 nilai total, tetapi hanya ada 50 kamar berbeda yang dapat dipesan karyawan untuk rapat. Ini berarti bahwa populasinya adalah 50 karena hanya ada 50 kemungkinan nilai unik yang dapat disimpan di Room lapangan.

catatan

Jika suar standar Anda dibangun dari bidang virtual, populasi yang digunakan untuk menghitung panjang suar adalah jumlah kombinasi unik yang dibuat oleh bidang virtual.

Saat memperkirakan populasi Anda, pastikan untuk mempertimbangkan proyeksi pertumbuhan kumpulan data. Setelah Anda menulis catatan baru dengan suar, Anda tidak dapat memperbarui panjang suar. Tinjau model ancaman Anda dan solusi database yang ada untuk membuat perkiraan jumlah nilai unik yang Anda harapkan untuk disimpan dalam lima tahun ke depan.

Populasi Anda tidak perlu tepat. Pertama, identifikasi jumlah nilai unik dalam database Anda saat ini, atau perkirakan jumlah nilai unik yang Anda harapkan untuk disimpan di tahun pertama. Selanjutnya, gunakan pertanyaan-pertanyaan berikut untuk membantu Anda menentukan proyeksi pertumbuhan nilai-nilai unik selama lima tahun ke depan.

  • Apakah Anda mengharapkan nilai unik dikalikan dengan 10?

  • Apakah Anda mengharapkan nilai unik dikalikan dengan 100?

  • Apakah Anda mengharapkan nilai unik dikalikan dengan 1000?

Perbedaan antara 50.000 dan 60.000 nilai unik tidak signifikan dan keduanya akan menghasilkan panjang suar yang direkomendasikan yang sama. Namun, perbedaan antara 50.000 dan 500.000 nilai unik akan berdampak signifikan pada panjang suar yang direkomendasikan.

Pertimbangkan untuk meninjau data publik tentang frekuensi tipe data umum, seperti kode pos atau nama belakang. Misalnya, ada 41,707 kode pos di Amerika Serikat. Populasi yang Anda gunakan harus proporsional dengan database Anda sendiri. Jika ZIPCode bidang dalam database Anda menyertakan data dari seluruh Amerika Serikat, maka Anda dapat menentukan populasi Anda sebagai 41.707, bahkan jika bidang ZIPCode tersebut saat ini tidak memiliki 41.707 nilai unik. Jika ZIPCode bidang dalam database Anda hanya menyertakan data dari satu status, dan hanya akan menyertakan data dari satu status, maka Anda dapat mendefinisikan populasi Anda sebagai jumlah total kode pos dalam status tersebut, bukan 41.704.

Menghitung panjang suar dari ukuran populasi

Ketika data Anda kira-kira terdistribusi secara merata dalam setiap partisi dan tidak mengandung nilai yang berkorelasi, Anda dapat memperkirakan panjang suar yang sesuai menggunakan rumus berbasis populasi sederhana.

Misalkan p menjadi ukuran populasi suar — yaitu, jumlah nilai plaintext berbeda yang dibangun suar dari dalam satu partisi. Titik awal umum untuk panjang suar b (dalam bit) adalah:

b = log₂(p) − 1

Rumus ini mempertahankan probabilitas tabrakan yang tidak dapat diabaikan sambil menjaga jumlah positif palsu dapat dikelola. Mengurangi satu bit dari logaritma memastikan bahwa beberapa nilai berbeda diharapkan untuk dipetakan ke suar yang sama, yang membantu membatasi kebocoran frekuensi dan mendukung anonimitas.

Perhitungan ini memberikan perkiraan perilaku tabrakan rata-rata di seluruh kumpulan data. Ini tidak menjamin bahwa setiap nilai akan menghasilkan jumlah positif palsu yang sama, juga tidak memperhitungkan distribusi miring, nilai berkorelasi, atau pola data permusuhan.

Gunakan rumus ini sebagai pedoman awal daripada persyaratan ketat. Selalu validasi konfigurasi yang dihasilkan terhadap model ancaman Anda, ekspektasi kinerja, dan karakteristik data yang diamati, dan sesuaikan panjang suar atau jumlah partisi sesuai kebutuhan.

Topik lanjutan tentang panjang suar

Sebagai pengguna tingkat lanjut, Anda memiliki fleksibilitas yang lebih besar saat memilih panjang suar yang sesuai untuk solusi Anda. Anda harus memilih panjang yang cukup melindungi kerahasiaan data Anda sambil meminimalkan dampak yang tidak perlu pada kinerja kueri. Jumlah keamanan yang dipertahankan oleh suar tergantung pada distribusi kumpulan data Anda dan korelasi bidang tempat beacon Anda dibangun.

  • Panjang suar yang terlalu panjang menghasilkan terlalu sedikit positif palsu dan mungkin mengungkapkan informasi yang membedakan tentang distribusi kumpulan data Anda.

  • Panjang suar yang terlalu pendek menghasilkan terlalu banyak positif palsu dan meningkatkan biaya kinerja kueri karena memerlukan pemindaian database yang lebih luas.

Jika kumpulan data Anda kira-kira terdistribusi secara merata, Anda dapat menggunakan persamaan dan prosedur berikut untuk membantu memperkirakan panjang suar yang sesuai untuk implementasi Anda. Persamaan ini memberikan perkiraan jumlah rata-rata positif palsu yang dapat dihasilkan oleh suar, tetapi mereka tidak menjamin jumlah positif palsu tertentu untuk setiap nilai unik dalam kumpulan data. Topik berikut mengasumsikan bahwa beacon Anda didistribusikan secara seragam dan tidak mengandung data yang berkorelasi.

  1. Hitung rentang yang disarankan untuk jumlah tabrakan yang diharapkan

    Untuk menentukan panjang suar yang sesuai untuk bidang tertentu, Anda harus terlebih dahulu mengidentifikasi rentang yang sesuai untuk jumlah tabrakan yang diharapkan. Jumlah tabrakan yang diharapkan mewakili jumlah rata-rata yang diharapkan dari nilai plaintext unik yang dipetakan ke tag HMAC tertentu. Jumlah positif palsu yang diharapkan untuk satu nilai plaintext unik adalah satu kurang dari jumlah tabrakan yang diharapkan.

    Kami merekomendasikan bahwa jumlah tabrakan yang diharapkan lebih besar dari atau sama dengan dua, dan kurang dari akar kuadrat populasi Anda. Persamaan berikut hanya berfungsi jika populasi Anda memiliki 16 atau lebih nilai unik.

    2 ≤ number of collisions < √(Population)

    Jika jumlah tabrakan kurang dari dua, suar akan menghasilkan terlalu sedikit positif palsu. Kami merekomendasikan dua sebagai jumlah minimum tabrakan yang diharapkan karena itu berarti, rata-rata, setiap nilai unik di lapangan akan menghasilkan setidaknya satu positif palsu dengan memetakan ke satu nilai unik lainnya.

  2. Hitung rentang yang disarankan untuk panjang suar

    Setelah mengidentifikasi jumlah minimum dan maksimum tabrakan yang diharapkan, gunakan persamaan berikut untuk mengidentifikasi rentang panjang suar yang sesuai.

    number of collisions = Population * 2-(beacon length)

    Pertama, selesaikan panjang suar di mana jumlah tabrakan yang diharapkan sama dengan dua (jumlah minimum tabrakan yang diharapkan).

    2 = Population * 2-(beacon length)

    Kemudian, selesaikan panjang suar di mana jumlah tabrakan yang diharapkan sama dengan akar kuadrat populasi Anda (jumlah maksimum tabrakan yang diharapkan yang disarankan).

    √(Population) = Population * 2-(beacon length)

    Kami merekomendasikan untuk membulatkan output yang dihasilkan oleh persamaan ini ke panjang suar yang lebih pendek. Misalnya, jika persamaan menghasilkan panjang suar 15,6, kami sarankan untuk membulatkan nilai itu menjadi 15 bit alih-alih membulatkan hingga 16 bit.

  3. Pilih panjang suar

    Persamaan ini hanya mengidentifikasi rentang panjang suar yang direkomendasikan untuk bidang Anda. Sebaiknya gunakan panjang suar yang lebih pendek untuk menjaga keamanan kumpulan data Anda bila memungkinkan. Namun, panjang suar yang sebenarnya Anda gunakan ditentukan oleh model ancaman Anda. Pertimbangkan persyaratan kinerja Anda saat Anda meninjau model ancaman Anda untuk menentukan panjang suar terbaik untuk bidang Anda.

    Menggunakan panjang suar yang lebih pendek mengurangi kinerja kueri, sementara menggunakan panjang suar yang lebih panjang mengurangi keamanan. Secara umum, jika kumpulan data Anda tidak terdistribusi secara merata, atau jika Anda membuat suar yang berbeda dari bidang yang berkorelasi, Anda perlu menggunakan panjang suar yang lebih pendek untuk meminimalkan jumlah informasi yang diungkapkan tentang distribusi kumpulan data Anda.

    Jika Anda meninjau model ancaman Anda dan memutuskan bahwa informasi pembeda apa pun yang diungkapkan tentang distribusi bidang tidak menimbulkan ancaman terhadap keamanan Anda secara keseluruhan, Anda dapat memilih untuk menggunakan panjang suar yang lebih panjang dari rentang yang disarankan yang Anda hitung. Misalnya, jika Anda menghitung rentang panjang suar yang disarankan untuk bidang sebagai 9-16 bit, Anda dapat memilih untuk menggunakan panjang suar 24 bit untuk menghindari kehilangan kinerja.

    Pilih panjang suar Anda dengan hati-hati. Setelah Anda menulis catatan baru dengan suar, Anda tidak dapat memperbarui panjang suar.

Contoh panjang suar tingkat lanjut

Pertimbangkan database yang menandai unit bidang seperti ENCRYPT_AND_SIGN dalam tindakan kriptografi. Untuk mengkonfigurasi suar standar untuk unit bidang, kita perlu menentukan jumlah positif palsu dan panjang suar yang diharapkan untuk bidang tersebut. unit

  1. Perkirakan populasi

    Setelah meninjau model ancaman kami dan solusi database saat ini, kami berharap unit bidang tersebut pada akhirnya memiliki 100.000 nilai unik.

    Ini berarti bahwa Populasi = 100.000.

  2. Hitung rentang yang disarankan untuk jumlah tabrakan yang diharapkan.

    Untuk contoh ini, jumlah tabrakan yang diharapkan harus antara 2-316.

    2 ≤ number of collisions < √(Population)
    1. 2 ≤ number of collisions < √(100,000)
    2. 2 ≤ number of collisions < 316
  3. Hitung kisaran yang disarankan untuk panjang suar.

    Untuk contoh ini, panjang suar harus antara 9-16 bit.

    number of collisions = Population * 2-(beacon length)
    1. Hitung panjang suar di mana jumlah tabrakan yang diharapkan sama dengan minimum yang diidentifikasi pada Langkah 2.

      2 = 100,000 * 2-(beacon length)

      Panjang suar = 15,6, atau 15 bit

    2. Hitung panjang suar di mana jumlah tabrakan yang diharapkan sama dengan maksimum yang diidentifikasi pada Langkah 2.

      316 = 100,000 * 2-(beacon length)

      Panjang suar = 8,3, atau 8 bit

  4. Tentukan panjang suar yang sesuai dengan persyaratan keamanan dan kinerja Anda.

    Untuk setiap bit di bawah 15, biaya kinerja dan keamanan berlipat ganda.

    • 16 bit

      • Rata-rata, setiap nilai unik akan dipetakan ke 1,5 unit lainnya.

      • Keamanan: dua catatan dengan tag HMAC terpotong yang sama 66% kemungkinan memiliki nilai plaintext yang sama.

      • Kinerja: kueri akan mengambil 15 catatan untuk setiap 10 catatan yang sebenarnya Anda minta.

    • 14 bit

      • Rata-rata, setiap nilai unik akan dipetakan menjadi 6,1 unit lainnya.

      • Keamanan: dua catatan dengan tag HMAC terpotong yang sama adalah 33% kemungkinan memiliki nilai plaintext yang sama.

      • Kinerja: kueri akan mengambil 30 catatan untuk setiap 10 catatan yang sebenarnya Anda minta.