Apa teknik sederhana, efektif untuk titik-titik yang membingungkan yang tersedia?

14

Kami membuat situs web yang akan mengumpulkan informasi lokasi (poin) dari pengguna. Kami sedang mengeksplorasi teknik untuk menjaga privasi lokasi pengguna (mis., Seringkali pengguna akan membagikan alamat rumah mereka, yang sensitif). Salah satu opsi yang muncul dalam pikiran adalah untuk mengaburkan atau "hash" poin sebelum menyimpannya dalam database, menghilangkan kebutuhan untuk menyimpan data sensitif ini sama sekali.

Persyaratan dasar kami adalah, saya percaya:

  1. Diberikan satu titik yang dikaburkan, tidak mungkin untuk menurunkan titik asli dalam (katakanlah) satu kilometer atau lebih, bahkan mengingat semua metadata yang terkait dengan titik tersebut (yaitu, asumsikan seluruh basis data dikompromikan).

  2. Dengan sejumlah besar titik-titik yang dikaburkan yang sesuai dengan titik asal yang sama, masih tidak mungkin untuk mendapatkan titik semula. (Misalnya, teknik mudah adalah menambahkan vektor acak ke titik asli, tetapi jika Anda melakukan ini cukup kali, titik-titik yang dikaburkan akan mengelompok di sekitar titik asli.)

Akan lebih baik jika berbagai properti statistik dipertahankan, meskipun saya tidak tahu properti mana yang penting pada tahap ini. Sebagai contoh, saya lebih suka bahwa titik-titik yang dikaburkan itu tersebar dengan cara "alami" daripada terakumulasi ke dalam kisi-kisi. Namun, privasi lebih penting daripada ini.

Reid
sumber
Persyaratan Anda tidak menyebutkan keakuratan apa yang ingin Anda pertahankan, Anda hanya fokus pada persyaratan kebingungan. Algoritme berikut sepele memenuhi persyaratan yang Anda daftarkan, tetapi agak tidak berharga: memetakan setiap titik ke 0 ° LU, 0 ° BT. Agaknya Anda juga ingin memenuhi beberapa kriteria, seperti titik yang dikaburkan dalam jarak x km dari titik sebenarnya.
Llaves
Pertanyaan kedua: Anda menyebutkan metadata dan dapat merekonstruksi titik sebenarnya jika seluruh database dikompromikan. Jika metadata tidak memungkinkan Anda untuk mengidentifikasi titik-titik yang dikaburkan yang terkait dengan "titik sejati" yang sama, maka bagaimana seseorang dapat merekonstruksi "titik sejati" dari sampel acak berulang jika Anda tidak dapat mengaitkannya satu sama lain? Di sisi lain, jika metadata memungkinkan Anda untuk mengaitkan poin, maka ketika Anda diminta untuk melaporkan lagi lokasi beberapa titik yang sudah dikaburkan, cukup kembalikan nilai yang dikaburkan yang sama dengan yang dikembalikan semua waktu sebelumnya.
Llaves
Apakah Anda harus dapat membuat ulang lokasi sebenarnya dari data yang di-hash, atau akankah itu hanya digunakan untuk mengonfirmasi bahwa seseorang berada di tempat yang mereka katakan? Jika yang terakhir, hash satu arah, hashing garam + WKT dari geometri sudah cukup. Jika yang pertama, maka Anda harus memiliki beberapa fungsi di suatu tempat untuk melakukan transformasi terbalik dari fungsi hash Anda - hash dua arah.
MerseyViking
Apakah poin akan dibandingkan dengan data pengguna lain / kumpulan data lain sebagai bagian dari layanan?
Matthew Snape
@ Daun, saya benar-benar: "dalam satu kilometer atau lebih". Tetapi saya berharap tingkat kebingungan adalah parameter untuk algoritma. Mengenai komentar kedua Anda, ya, metadata memungkinkan pengaitan poin (misalnya, satu pengguna mungkin memasukkan poin yang sama berkali-kali). Dan sebuah algoritma yang menghasilkan titik dikaburkan yang sama diberikan titik asli yang sama baik-baik saja; tetapi jika algoritme tidak melakukan itu, saya tidak dapat memulihkan titik awal (itulah alasan utama pertanyaan itu) untuk menguji apakah titik kabur yang sama harus digunakan.
Reid

Jawaban:

6

Lihatlah:

MP Armstrong, Rushton G, Zimmerman DL. Menyembunyikan data kesehatan secara geografis untuk menjaga kerahasiaan . Stat Med.1999; 18: 497–525.

( kutipan , teks lengkap )

Mereka membahas berbagai 'geo-masker' untuk data titik termasuk perpindahan, rotasi, gangguan acak dan agregasi. Meskipun mereka tidak membahas solusi teknis spesifik tentang cara mengimplementasikannya, ada petunjuk bermanfaat untuk informasi tentang apa yang Anda dapatkan / lepas dengan setiap pendekatan.

Untuk pertimbangan yang lebih teoretis, lihat jawaban saya untuk pertanyaan tentang topik serupa.

Radek
sumber
2
Referensi yang bagus, ini adalah bidang aktif sehingga banyak tersedia. Saya telah merekomendasikan artikel ikhtisar ( Mathews & Harel, 2011 ) dalam pertanyaan lain . Saya juga percaya International Journal of Health Geographics memiliki makalah tentang itu dari waktu ke waktu (lihat perpustakaan citeulike saya dengan tag geomask ). Saya belum menemukan alat apa pun untuk melakukan pekerjaan itu, mungkin upaya yang bermanfaat.
Andy W
1
@AndyW Terima kasih untuk petunjuk Andy. Memang - dengan semakin banyaknya geodata resolusi tinggi yang digunakan dalam kesehatan masyarakat / epidemiologi spasial, masalahnya menjadi semakin relevan. Saya memiliki perasaan yang sama bahwa solusi praktis masih jauh di belakang yang teoritis - pasti tempat di mana beberapa perkembangan bagus dapat dibuat!
radek
1

Anda bisa mencoba menggunakan Perlin noise untuk menggeser poin Anda dengan jumlah acak, tetapi dengan keunggulan bahwa poin yang dekat satu sama lain akan tetap dekat satu sama lain, tetapi kesamaan ini jatuh karena jarak. Jika fungsi noise terpusat sekitar 0, analisis statistik masih harus mengembalikan data yang sama seperti pada sumbernya, karena noise Perlin (terutama versi 2002) adalah distribusi Gaussian kasar.

MerseyViking
sumber
Jika saya menggeser banyak salinan dari titik yang sama, bisakah titik asli kemudian dipulihkan dengan menganalisis titik bergeser?
Reid
Seperti yang saya bayangkan, Anda akan menggunakan koordinat titik sebagai pencarian ke fungsi noise. Jadi dua titik identik akan tetap bertepatan. Anda bisa menggunakan nilai ketiga, misalnya tanggal titik itu dibuat sebagai pencarian ke fungsi noise 3D Perlin. Kemudian (dan saya bukan ahli statistik), akan tidak praktis untuk merekonstruksi data sumber kecuali benih acak dan skala kebisingan yang Anda pilih diketahui. Bahkan kemudian saya tidak yakin itu bisa diterapkan secara praktis.
MerseyViking
Ah, jadi Anda membuatnya menjadi fungsi hash. Akan tetapi, mungkin tidak aman untuk menganggap bahwa benih dan skala acak tetap rahasia; Saya berasumsi bahwa server telah sepenuhnya dikompromikan.
Reid
Fiuh! Baiklah kalau begitu, saya suka tantangan :) Sekarang Anda benar-benar berbicara tentang keamanan fisik. Anda memiliki mesin di luar situs yang terpisah untuk menghasilkan hash, mengirimkannya melalui koneksi aman dengan sesuatu seperti SSL. Anda dapat mengatur anjing penjaga di salah satu atau kedua server sehingga jika salah satu turun, atau Anda menekan tombol merah besar, yang lain mati secara otomatis. Jika Anda menggunakan mesin virtual cloud, maka tidak akan ada cara praktis untuk mendapatkan apa pun dari mesin
virtual lain
Sebagai akibat wajar, Anda hanya perlu membelanjakan sebanyak mungkin untuk keamanan data sebagaimana data berharga. Ada banyak lapisan yang bisa Anda tambahkan ke model keamanan Anda, tetapi pada titik tertentu Anda harus mengatakan cukup. Mungkin layak menerjunkan pertanyaan ini ke salah satu situs SE lainnya.
MerseyViking
0

Ini mungkin lebih berbelit-belit dan terlibat daripada yang dibutuhkan, namun ini mungkin rute yang harus diambil:

Buat skrip python sederhana yang mengambil titik input asli Anda, buffer mereka dengan jarak mengaburkan tertentu yang dapat diterima, membuat n jumlah titik acak menggunakan buffer sebagai kendala fitur (100, misalnya), dan kemudian memilih salah satu poin menggunakan pseudo-random number generator untuk digunakan sebagai titik baru yang dikaburkan. Penting juga untuk membuat nomor pseudo-acak baru untuk setiap kebingungan.

Bergantung pada skenario Anda, ini dapat dikemas dalam Toolbox dan diakses sebagai layanan GPS dengan titik akhir REST sehingga kebingungan muncul di lokasi memori dan hanya titik yang dikaburkan diposting ke database fisik Anda.

Tinggi
sumber
1
Ini mengasumsikan implementasi ArcGIS, tetapi tidak ada yang disebutkan dalam OP. Tetap saja, solusi yang menarik!
blah238
3
Solusi alami ini memiliki beberapa kelemahan potensial pada pemeriksaan: (1) beberapa titik berbeda dapat dipetakan ke titik yang sama. (2) Sangat mudah untuk membuka kedok poin, seperti yang ditunjukkan OP. (3) Seringkali titik perlu berdiri dalam beberapa hubungan geografis dengan fitur terkait: misalnya , lokasi rumah harus dekat jalan dan tidak di danau atau di halaman rel. Masalah-masalah seperti ini membuat masalah benar-benar sulit, menarik, dan layak untuk analisis GIS (karena kalau tidak, orang bisa saja jitter koordinat asli secara acak ketika mereka pertama kali dimasukkan ke dalam database dan dilakukan dengan itu).
whuber
0

OK, jadi algoritma yang kami pertimbangkan adalah sebagai berikut:

  1. Bulatkan titik ke grid 200 meter (untuk mengimbangi keanehan dalam geocoding).
  2. Hash teks koordinat titik menggunakan beberapa algoritma hashing kriptografi (misalnya, SHA2).
  3. Ganti bit orde rendah dari koordinat titik (hingga tingkat kebingungan yang diinginkan 1 km) dengan hasil dari fungsi hash.
Reid
sumber