View a markdown version of this page

Beacon - 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.

Beacon

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

Beacon adalah tag Kode Otentikasi Hash-Based Pesan (HMAC) terpotong yang memetakan nilai bidang teks biasa ke pengenal terenkripsi dan dapat dicari yang disimpan bersama data terenkripsi dalam database Anda. Beacon tidak mengubah status lapangan yang dienkripsi. Saat Anda menulis nilai ke bidang yang dikonfigurasi untuk enkripsi yang dapat dicari, AWS Database Encryption SDK menghitung HMAC melalui nilai plaintext dan memperoleh beacon dalam konteks partisi. HMAC lengkap secara unik sesuai dengan nilai plaintext, tetapi SDK sengaja memotong output sehingga beberapa nilai plaintext yang berbeda dapat dipetakan ke suar yang sama. Tabrakan ini (positif palsu) membatasi kemampuan pengguna yang tidak sah untuk menyimpulkan informasi yang membedakan tentang plaintext yang mendasarinya.

catatan

Kode Otentikasi Hash-based Pesan (HMAC) adalah fungsi hash kriptografi kunci yang biasa digunakan untuk memberikan integritas dan keaslian. Dalam sistem enkripsi yang dapat dicari, HMAC sering digunakan untuk secara deterministik menurunkan beacon dari nilai plaintext sehingga dapat diindeks dan ditanyakan.

HMAC full-length bersifat deterministik: untuk kunci tertentu, nilai plaintext yang sama selalu menghasilkan suar yang sama. Determinisme ini menghasilkan pemetaan satu-ke-satu antara nilai teks biasa dan suar, menjaga distribusi frekuensi asli data. Semua catatan yang berbagi nilai plaintext yang sama memetakan ke beacon yang sama dan oleh karena itu membentuk kelas ekivalensi. Ukuran setiap kelas ekivalensi secara langsung mencerminkan seberapa sering nilai plaintext yang sesuai muncul dalam kumpulan data.

Pelestarian frekuensi ini memungkinkan serangan analisis frekuensi, di mana pengamat menyimpulkan kemungkinan nilai teks biasa dengan menghubungkan frekuensi suar yang diamati dengan distribusi data yang diketahui atau diharapkan.

Untuk mengurangi serangan analisis frekuensi, SDK memperoleh beacon menggunakan pemotongan dan partisi. Memotong HMAC memperkenalkan tabrakan terkontrol, sehingga tidak semua catatan dalam kelas ekivalensi harus berbagi nilai suar yang sama. Selain itu, menggabungkan pengidentifikasi partisi ke dalam derivasi beacon memungkinkan nilai plaintext identik untuk dipetakan ke beacon yang berbeda di seluruh partisi. Bersama-sama, teknik ini mempromosikan keacakan yang lebih besar untuk kumpulan data yang tidak terdistribusi secara merata sambil mempertahankan perilaku kueri yang benar dan efisien.

Beacon hanya dapat dibangun dari bidang yang ditandaiENCRYPT_AND_SIGN,SIGN_ONLY, atau SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT dalam tindakan kriptografi Anda. Suar itu sendiri tidak ditandatangani atau dienkripsi. Anda tidak dapat membangun suar dengan bidang yang ditandai. DO_NOTHING

Setelah Anda mengkonfigurasi beacon Anda, Anda harus mengkonfigurasi indeks sekunder untuk setiap suar sebelum Anda dapat mencari di bidang terenkripsi. Untuk informasi selengkapnya, lihat Mengkonfigurasi indeks sekunder dengan beacon.

Memahami derivasi suar di seluruh partisi

Partisi adalah bagian inti dari konfigurasi beacon dan berlaku untuk semua beacon, termasuk yang menggunakan partisi tunggal. Model ini memastikan derivasi suar yang konsisten dan kompatibel ke depan di semua data, dan memungkinkan Anda untuk meningkatkan jumlah partisi dari waktu ke waktu seiring dengan perubahan volume atau distribusi data. Dengan demikian, Anda dapat mengurangi kebocoran frekuensi dan memperkuat perlindungan untuk kumpulan data yang didistribusikan secara tidak merata tanpa menulis ulang item yang ada.

Partisi memperkenalkan keacakan terkontrol dengan mendistribusikan item di beberapa grup logis. Ini mengurangi kebocoran frekuensi, membatasi ukuran kelas kesetaraan suar, dan meningkatkan keamanan dan privasi untuk atribut dengan distribusi miring.

Ketika item ditugaskan ke partisi, nomor partisi dimasukkan ke dalam derivasi suar. Dalam partisi yang sama, nilai plaintext identik menghasilkan suar yang sama, mempertahankan semantik pencarian kesetaraan. Di seluruh partisi yang berbeda, nilai plaintext yang sama menghasilkan nilai beacon yang berbeda. Ini memecah kelas ekivalensi besar menjadi kelompok per partisi yang lebih kecil dan membantu meratakan distribusi frekuensi keseluruhan suar.

Anda memiliki kontrol penuh atas bagaimana setiap item database ditugaskan ke partisi. Item dapat ditempatkan ke dalam partisi tertentu secara deterministik, atau dapat didistribusikan secara acak untuk membantu memperlancar distribusi data yang tidak merata. Penugasan acak sangat berguna untuk nilai frekuensi tinggi, karena menyebarkan nilai-nilai tersebut di beberapa partisi dan mengurangi konsentrasi yang terlihat di partisi tunggal mana pun. Penugasan deterministik dapat digunakan ketika pengetahuan domain menunjukkan bahwa nilai-nilai tertentu harus dibatasi untuk partisi yang lebih sedikit.

Pengidentifikasi partisi tidak terekspos dalam catatan terenkripsi. Sebaliknya, nomor partisi dimasukkan ke dalam proses derivasi suar — di-hash bersama dengan nilai teks biasa — sehingga tidak dapat disimpulkan dengan memeriksa data terenkripsi atau suar itu sendiri. Desain ini memastikan bahwa penugasan partisi tetap rahasia sambil tetap memberikan manfaat distribusi dan privasi dari beacon yang dipartisi.

Mempartisi dampak pada kueri

Partisi mempengaruhi bagaimana Query operasi dilakukan. Karena kueri DynamoDB memerlukan kecocokan persis pada nilai beacon yang diindeks, dan nilai beacon berbeda antar partisi, pemanggil harus menanyakan setiap partisi secara independen. Jika tabel memiliki N partisi:

  • Mengambil semua item yang cocok membutuhkan kueri N terpisah.

  • Hanya Query yang terpengaruh.

  • Scandan Get operasi berperilaku seperti sebelumnya.

Alasannya struktural: Scan membaca semua item, dan Get beroperasi pada kunci tertentu; hanya Query tergantung pada kesetaraan yang tepat dalam indeks, yang menjadi partisi-spesifik.

catatan

Fan-out mengacu pada jumlah query DynamoDB yang harus dikeluarkan untuk memenuhi permintaan logis tunggal saat menggunakan beacon yang dipartisi. Sistem ini menyediakan fan-out terbatas, yang berarti jumlah maksimum kueri tingkat partisi tetap dan dapat diprediksi berdasarkan jumlah partisi yang dikonfigurasi.

Pertimbangan kinerja

Menggunakan partisi mempengaruhi jumlah query DynamoDB yang diperlukan per permintaan logis. Dampak kinerja tergantung pada ukuran hasil yang diharapkan:

  • Set hasil besar: Ketika kueri mengembalikan banyak halaman, kueri tingkat partisi tambahan menambahkan sedikit overhead.

  • Single-item pencarian: Jika permintaan biasanya mengembalikan satu item dan lima partisi dikonfigurasi, lima kueri dikeluarkan—empat tidak mengembalikan hasil—menghasilkan perlambatan hampir linier.

  • Mengurangi lokalitas: Item dapat tersebar di seluruh partisi, meningkatkan waktu pengambilan.

Karena setiap partisi memicu kueri tambahan, fan-out merupakan faktor penting dalam perencanaan kinerja dan kapasitas.

Keunggulan kinerja

Meskipun overhead kueri tambahan, partisi dapat meningkatkan kinerja dalam skenario tertentu:

  • Mengurangi kelas ekivalensi besar: Ketika nilai langka berbagi suar terpotong dengan nilai yang sering terjadi, kueri untuk nilai langka harus memproses banyak kecocokan yang tidak relevan. Partisi membatasi ukuran setiap kelas ekivalensi dan mengurangi overhead ini.

  • Mendukung panjang suar yang lebih panjang: Mengkonfigurasi lebih banyak partisi dapat memungkinkan penggunaan panjang suar yang lebih panjang, yang menurunkan tingkat positif palsu dan mengurangi jumlah penyaringan pasca-dekripsi yang diperlukan.

Jenis suar

Jenis suar yang Anda konfigurasikan menentukan jenis kueri yang dapat Anda lakukan. Ada dua jenis beacon yang mendukung enkripsi yang dapat dicari. Beacon standar melakukan pencarian kesetaraan. Compound beacon menggabungkan string plaintext literal dan beacon standar untuk melakukan operasi database yang kompleks.

Beacon standar

Beacon standar adalah cara paling sederhana untuk mengimplementasikan enkripsi yang dapat dicari di database Anda. Mereka hanya dapat melakukan pencarian kesetaraan untuk satu bidang terenkripsi atau virtual. Untuk mempelajari cara mengkonfigurasi beacon standar, lihat Mengonfigurasi suar standar. Anda juga dapat menggunakan partisi dengan beacon untuk mempromosikan keacakan ketika data yang mendasarinya memiliki distribusi yang tidak merata.

Berikut ini adalah konsep penting untuk beacon standar.

Sumber suar

Bidang tempat suar standar dibangun dari disebut sumber suar. Ini mengidentifikasi lokasi data yang perlu dipetakan oleh suar. Sumber suar dapat berupa bidang terenkripsi atau bidang virtual. Sumber suar di setiap suar standar harus unik. Anda tidak dapat mengonfigurasi dua beacon dengan sumber suar yang sama.

Beacon standar dapat digunakan untuk melakukan pencarian kesetaraan untuk bidang terenkripsi atau virtual. Atau, mereka dapat digunakan untuk membangun suar majemuk untuk melakukan operasi database yang lebih kompleks. Untuk membantu Anda mengatur dan mengelola beacon standar, AWS Database Encryption SDK menyediakan gaya beacon opsional berikut yang menentukan tujuan penggunaan suar standar. Untuk informasi selengkapnya lihat, Mendefinisikan gaya suar.

Anda dapat membuat suar standar yang melakukan pencarian kesetaraan untuk satu bidang terenkripsi, atau Anda dapat membuat suar standar yang melakukan pencarian kesetaraan pada rangkaian beberapa,, dan bidang dengan membuat bidang virtual. ENCRYPT_AND_SIGN SIGN_ONLY SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT

Bidang virtual

Bidang virtual adalah bidang konseptual yang dibangun dari satu atau lebih bidang sumber. Membuat bidang virtual tidak menulis bidang baru ke catatan Anda. Bidang virtual tidak secara eksplisit disimpan dalam database Anda. Ini digunakan dalam konfigurasi suar standar untuk memberikan instruksi suar tentang cara mengidentifikasi segmen tertentu dari bidang atau menggabungkan beberapa bidang dalam catatan untuk melakukan kueri tertentu. Bidang virtual membutuhkan setidaknya satu bidang terenkripsi.

catatan

Contoh berikut menunjukkan jenis transformasi dan kueri yang dapat Anda lakukan dengan bidang virtual. Dalam aplikasi, bidang contoh yang digunakan dalam contoh ini mungkin tidak memenuhi rekomendasi keunikan distribusi dan korelasi untuk beacon.

Misalnya, jika Anda ingin melakukan pencarian kesetaraan pada rangkaian FirstName dan LastName bidang, Anda dapat membuat salah satu bidang virtual berikut.

  • NameTagBidang virtual, dibangun dari huruf pertama FirstName lapangan, diikuti oleh LastName bidang, semuanya dalam huruf kecil. Bidang virtual ini memungkinkan Anda untuk melakukan queryNameTag=mjones.

  • LastFirstBidang virtual, yang dibangun dari LastName lapangan, diikuti oleh FirstName lapangan. Bidang virtual ini memungkinkan Anda untuk melakukan queryLastFirst=JonesMary.

Atau, jika Anda ingin melakukan pencarian kesetaraan pada segmen tertentu dari bidang terenkripsi, buat bidang virtual yang mengidentifikasi segmen yang ingin Anda kueri.

Misalnya, jika Anda ingin menanyakan IPAddress bidang terenkripsi menggunakan tiga segmen pertama dari alamat IP, buat bidang virtual berikut.

  • IPSegmentBidang virtual, dibangun dariSegments(‘.’, 0, 3). Bidang virtual ini memungkinkan Anda untuk melakukan queryIPSegment=192.0.2. Kueri mengembalikan semua catatan dengan IPAddress nilai yang dimulai dengan “192.0.2".

Bidang virtual harus unik. Dua bidang virtual tidak dapat dibangun dari bidang sumber yang sama persis.

Untuk bantuan mengonfigurasi bidang virtual dan beacon yang menggunakannya, lihat Membuat bidang virtual.

Suar majemuk

Compound beacon membuat indeks yang meningkatkan kinerja kueri dan memungkinkan Anda melakukan operasi database yang lebih kompleks. Anda dapat menggunakan suar majemuk untuk menggabungkan string teks biasa literal dan suar standar untuk melakukan kueri kompleks pada catatan terenkripsi, seperti menanyakan dua jenis rekaman yang berbeda dari satu indeks atau menanyakan kombinasi bidang dengan kunci pengurutan. Untuk contoh solusi suar majemuk lainnya, lihat Memilih jenis suar.

Suar majemuk dapat dibangun dari suar standar atau kombinasi beacon standar dan bidang yang ditandatangani. Mereka dibangun dari daftar bagian. Semua suar majemuk harus menyertakan daftar bagian terenkripsi yang mengidentifikasi ENCRYPT_AND_SIGN bidang yang termasuk dalam suar. Setiap ENCRYPT_AND_SIGN bidang harus diidentifikasi dengan suar standar. Suar majemuk yang lebih kompleks mungkin juga mencakup daftar bagian yang ditandatangani yang mengidentifikasi teks biasa SIGN_ONLY atau SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT bidang yang termasuk dalam suar, dan daftar bagian konstruktor yang mengidentifikasi semua kemungkinan cara suar majemuk dapat merakit bidang.

catatan

AWS Database Encryption SDK juga mendukung beacon bertanda tangan yang dapat dikonfigurasi seluruhnya dari SIGN_ONLY plaintext dan field. SIGN_AND_INCLUDE_IN_ENCRYPTION_CONTEXT Signed beacon adalah jenis suar majemuk yang mengindeks dan melakukan kueri kompleks pada bidang yang ditandatangani, tetapi tidak dienkripsi. Untuk informasi selengkapnya, lihat Membuat beacon yang ditandatangani.

Untuk bantuan mengonfigurasi suar majemuk, lihat Mengonfigurasi suar majemuk.

Cara Anda mengonfigurasi suar majemuk menentukan jenis kueri yang dapat dilakukannya. Misalnya, Anda dapat membuat beberapa bagian terenkripsi dan ditandatangani opsional untuk memungkinkan lebih banyak fleksibilitas dalam kueri Anda. Untuk informasi lebih lanjut tentang jenis kueri yang dapat dilakukan oleh suar majemuk, lihat. Meminta suar