Dokumen ini memberikan informasi umum tentang privasi diferensial untuk BigQuery. Untuk sintaksis, lihat klausa privasi diferensial. Untuk daftar fungsi yang dapat Anda gunakan dengan sintaksis ini, lihat fungsi agregat pribadi diferensial.
Apa itu privasi diferensial?
Privasi diferensial adalah standar untuk komputasi pada data yang membatasi informasi pribadi yang diungkapkan oleh output. Privasi diferensial umumnya digunakan untuk berbagi data dan memungkinkan inferensi tentang kelompok orang sekaligus mencegah seseorang mempelajari informasi tentang individu.
Privasi diferensial berguna:
- Jika ada risiko identifikasi ulang.
- Untuk mengukur penyeimbangan antara risiko dan utilitas analitis.
Untuk lebih memahami privasi diferensial, mari kita lihat contoh sederhananya.
Diagram batang ini menunjukkan kesibukan sebuah restoran kecil pada suatu sore. Banyak tamu datang pada pukul 19.00, dan restoran benar-benar tidak ada pengunjung pada pukul 01.00 dini hari:
Diagram ini terlihat berguna, tetapi ada syaratnya. Saat tamu baru tiba, informasi ini langsung ditampilkan oleh diagram batang. Dalam diagram berikut, jelas bahwa ada tamu baru, dan tamu ini tiba sekitar pukul 01.00:
Menampilkan detail ini dari perspektif privasi bukanlah hal yang bagus, karena statistik anonim tidak boleh mengungkapkan kontribusi individual. Menempatkan dua diagram tersebut secara berdampingan akan membuatnya lebih jelas: diagram batang oranye memiliki satu tamu tambahan yang telah tiba sekitar pukul 01.00:
Sekali lagi, ini tidak bagus. Untuk menghindari masalah privasi semacam ini, Anda dapat menambahkan derau acak ke diagram batang menggunakan privasi diferensial. Pada diagram perbandingan berikut, hasilnya dianonimkan dan tidak lagi mengungkapkan kontribusi individual.
Cara kerja privasi diferensial pada kueri
Tujuan privasi diferensial adalah untuk mengurangi risiko pengungkapan: risiko bahwa seseorang dapat mempelajari informasi tentang entitas dalam set data. Privasi diferensial menyeimbangkan kebutuhan untuk menjaga privasi terhadap kebutuhan akan utilitas analisis statistik. Seiring meningkatnya privasi, utilitas analitis statistik akan menurun, dan sebaliknya.
Dengan GoogleSQL untuk BigQuery, Anda dapat mengubah hasil kueri dengan agregasi pribadi diferensial. Saat dieksekusi, kueri akan melakukan hal berikut:
- Menghitung agregasi per entity untuk setiap grup jika grup ditentukan dengan
klausa
GROUP BY
. Membatasi jumlah grup yang dapat dikontribusikan oleh setiap entity, berdasarkan parameter privasi diferensialmax_groups_contributed
. - Menjepit setiap kontribusi agregat per entity agar berada dalam batas penjepitan. Jika batas penjepitan tidak ditentukan, batas tersebut secara implisit dihitung dengan cara privasi diferensial.
- Menggabungkan kontribusi agregat per entitas yang dijepit untuk setiap grup.
- Menambahkan derau ke nilai agregat akhir untuk setiap grup. Skala derau acak adalah fungsi dari semua batas yang dijepit dan parameter privasi.
- Menghitung jumlah entity berderau untuk setiap grup dan menghilangkan grup yang memiliki beberapa entity. Jumlah entity berderau membantu menghilangkan kumpulan grup yang tidak deterministik.
Hasil akhirnya adalah set data di mana setiap kelompok memiliki hasil agregat berderau dan kelompok kecil telah dieliminasi.
Untuk konteks tambahan tentang pengertian privasi diferensial dan kasus penggunaannya, lihat artikel berikut:
- Pengantar privasi diferensial non-teknis yang mudah dipahami
- SQL pribadi diferensial dengan kontribusi pengguna terbatas
- Privasi diferensial di Wikipedia
Membuat kueri pribadi diferensial yang valid
Aturan berikut harus dipenuhi agar kueri pribadi diferensial menjadi valid:
- Kolom unit privasi ditentukan.
- Daftar
SELECT
berisi klausa pribadi diferensial. - Hanya fungsi agregat pribadi diferensial yang ada
dalam daftar
SELECT
dengan klausa pribadi diferensial.
Menentukan kolom unit privasi
Unit privasi adalah entity dalam set data yang dilindungi, menggunakan privasi diferensial. Entity dapat berupa individu, perusahaan, lokasi, atau kolom apa pun yang Anda pilih.
Kueri pribadi diferensial harus menyertakan satu dan hanya satu kolom unit privasi. Kolom unit privasi adalah ID unik untuk unit privasi dan dapat berada dalam beberapa grup. Karena mendukung beberapa grup, jenis data untuk kolom unit privasi harus dapat dikelompokkan.
Anda dapat menentukan kolom unit privasi di klausa OPTIONS
dari
klausa privasi diferensial dengan ID unik privacy_unit_column
.
Pada contoh berikut, kolom unit privasi ditambahkan ke
klausa privasi diferensial. id
mewakili kolom yang berasal dari
tabel yang disebut students
.
SELECT WITH DIFFERENTIAL_PRIVACY
OPTIONS (epsilon=10, delta=.01, privacy_unit_column=id)
item,
COUNT(*, contribution_bounds_per_group=>(0, 100))
FROM students;
SELECT WITH DIFFERENTIAL_PRIVACY
OPTIONS (epsilon=10, delta=.01, privacy_unit_column=members.id)
item,
COUNT(*, contribution_bounds_per_group=>(0, 100))
FROM (SELECT * FROM students) AS members;
Menghapus derau dari kueri pribadi diferensial
Dalam referensi "Sintaksis kueri", lihat Menghapus derau.
Menambahkan derau ke kueri pribadi diferensial
Dalam referensi "Sintaksis kueri", lihat Menambahkan derau.
Membatasi grup yang dapat memiliki ID unit privasi
Dalam referensi "Sintaksis kueri", lihat Membatasi grup tempat ID unit privasi dapat berada.
Batasan
Bagian ini menjelaskan batasan privasi diferensial.
Implikasi performa dari privasi diferensial
Kueri pribadi diferensial berjalan lebih lambat daripada kueri standar
karena agregasi per entity dilakukan dan batasan max_groups_contributed
diterapkan. Membatasi batas kontribusi dapat membantu meningkatkan performa
kueri pribadi diferensial Anda.
Profil performa kueri berikut tidak serupa:
SELECT
WITH DIFFERENTIAL_PRIVACY OPTIONS(epsilon=1, delta=1e-10, privacy_unit_column=id)
column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
SELECT column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
Alasan perbedaan performa adalah tingkat pengelompokan yang lebih terperinci dilakukan untuk kueri pribadi diferensial, karena agregasi per entity juga harus dilakukan.
Profil performa kueri berikut harus serupa, meskipun kueri pribadi diferensial sedikit lebih lambat:
SELECT
WITH DIFFERENTIAL_PRIVACY OPTIONS(epsilon=1, delta=1e-10, privacy_unit_column=id)
column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
SELECT column_a, id, COUNT(column_b)
FROM table_a
GROUP BY column_a, id;
Kueri pribadi diferensial berperforma lebih lambat karena memiliki banyak nilai yang berbeda untuk kolom unit privasi.
Batasan pembatas implisit untuk set data kecil
Pembatasan implisit berfungsi optimal jika dikomputasi menggunakan set data besar. Pembatas implisit dapat gagal dengan set data yang berisi sedikit unit privasi, sehingga tidak ada hasil. Selain itu, pembatasan implisit pada set data dengan jumlah unit privasi yang rendah dapat menjepit sebagian besar non-pencilan, yang menyebabkan agregasi yang dilaporkan kurang lengkap dan hasil yang lebih banyak diubah dengan menjepit, bukan oleh derau tambahan. Set data yang memiliki jumlah unit privasi yang rendah atau dipartisi secara tipis harus menggunakan penjepitan eksplisit, bukan penjepitan implisit.
Kerentanan privasi
Setiap algoritme privasi diferensial—termasuk yang ini—dapat berisiko kebocoran data pribadi saat analis bertindak dengan niat buruk, terutama saat menghitung statistik dasar seperti penjumlahan, karena batasan aritmetika.
Pembatasan jaminan privasi
Meskipun privasi diferensial BigQuery menerapkan algoritma privasi diferensial, privasi ini tidak menjamin properti privasi dari set data yang dihasilkan.
Error runtime
Seorang analis yang memiliki niat buruk dengan kemampuan untuk menulis kueri atau mengontrol data input dapat memicu error runtime pada data pribadi.
Derau floating point
Kerentanan yang terkait dengan serangan pembulatan, pembulatan berulang, dan pengurutan ulang harus dipertimbangkan sebelum menggunakan privasi diferensial. Kerentanan ini sangat mengkhawatirkan saat penyerang dapat mengontrol beberapa konten set data atau urutan konten dalam set data.
Penambahan derau pribadi yang berbeda pada jenis data floating point dapat mengalami kerentanan yang dijelaskan dalam Tersebarnya Estimasi yang Terlalu Rendah terkait Sensitivitas di Library Pribadi Diferensial dan Cara Memperbaikinya. Penambahan derau pada jenis data bilangan bulat tidak bergantung pada kerentanan yang dijelaskan dalam makalah ini.
Risiko serangan pengaturan waktu
Seorang analis yang memiliki niat buruk dapat mengeksekusi kueri yang cukup kompleks untuk membuat inferensi tentang data input berdasarkan durasi eksekusi kueri.
Kesalahan klasifikasi
Membuat kueri privasi diferensial mengasumsikan bahwa data Anda berada dalam struktur yang dikenal dan dipahami dengan baik. Jika Anda menerapkan privasi diferensial pada ID yang salah, seperti yang mewakili ID transaksi, bukan ID individu, Anda dapat mengekspos data sensitif.
Jika memerlukan bantuan untuk memahami data Anda, pertimbangkan untuk menggunakan layanan dan alat seperti berikut:
Harga
Penggunaan privasi diferensial tidak dikenai biaya tambahan, tetapi harga BigQuery standar untuk analisis tetap berlaku.