Dikkat çekmek için hangi basit, etkili teknikler mevcuttur?


14

Kullanıcılardan konum bilgileri (puanlar) toplayacak bir web sitesi oluşturuyoruz. Kullanıcıların konum gizliliğini korumak için teknikler araştırıyoruz (örneğin, kullanıcılar genellikle hassas olan ev adreslerini paylaşacaklar). Akla gelen bir seçenek, noktaları veritabanında saklanmadan önce gizlemek veya "hash" etmek, bu hassas verileri saklama ihtiyacını ortadan kaldırmaktır.

Temel gereksinimlerimize inanıyorum:

  1. Tek bir gizlenmiş nokta verildiğinde, noktayla ilişkili tüm meta veriler göz önüne alındığında (yani, tüm veritabanının tehlikeye atıldığını varsayın) orijinal noktayı (örneğin) bir kilometre içinde türetmek mümkün değildir.

  2. Aynı orijinal noktaya karşılık gelen keyfi olarak büyük bir dizi gizlenmiş nokta verildiğinde, orijinal noktayı türetmek hala mümkün değildir. (Örneğin, kolay bir teknik orijinal noktaya rastgele bir vektör eklemek olacaktır, ancak bunu yeterince kez yaparsanız, karışık noktalar orijinal noktanın etrafında kümelenir.)

Bu aşamada hangi özelliklerin önemli olduğunu bilmesem de, çeşitli istatistiksel özelliklerin korunması iyi olurdu. Örneğin, gizlenmiş noktaların bir ızgaraya birikmek yerine "doğal" bir şekilde dağılmasını tercih ederim. Ancak, gizlilik bundan daha önemlidir.


Gereksinimleriniz ne tür bir doğruluğu korumak istediğinizi belirtmez, sadece gizleme gereksinimine odaklanırsınız. Aşağıdaki algoritma, listelenen gereksinimleri önemsiz bir şekilde karşılamaktadır, ancak oldukça değersizdir: her noktayı 0 ° N, 0 ° doğu ile eşleyin. Muhtemelen, gizlenmiş nokta gerçek noktanın x km yakınında olduğu gibi bazı kriterleri de yerine getirmek istersiniz.
Llaves

İkinci bir soru: meta verilerden ve tüm veritabanının güvenliği ihlal edildiğinde gerçek noktayı yeniden oluşturabildiğinizden bahsediyorsunuz. Meta veriler, aynı "doğru nokta" ile ilişkili gizlenmiş noktaları tanımlamanıza izin vermiyorsa, birileri birbirleriyle ilişkilendiremezseniz, biri tekrarlanan rastgele örneklerden "doğru noktayı" nasıl yeniden oluşturabilir? Öte yandan, meta veriler noktaları ilişkilendirmenize izin veriyorsa, önceden kapatılmış bir noktanın konumunu tekrar raporlamanız istendiğinde, önceki tüm zamanların döndürdüğü aynı gizli değeri döndürmeniz yeterlidir.
Llaves

Gerçek konumu karma verilerden yeniden oluşturabilmeniz mi gerekiyor, yoksa yalnızca bir kişinin nerede olduğunu söylediğini doğrulamak için mi kullanılacak? Eğer ikinciyse, tek yönlü bir karma, bir tuz + geometrinin WKT'si yeterlidir. Eğer öncekiyse, karma fonksiyonunuzun ters dönüşümünü yapmak için bir yerde bazı fonksiyonlara sahip olmanız gerekir - iki yönlü bir karma.
MerseyViking

Puanlar, hizmetin bir parçası olarak diğer kullanıcıların verileri / diğer veri kümeleriyle karşılaştırılacak mı?
Matthew Snape

@Llaves, aslında: "bir kilometre kadar". Ama umarım gizleme seviyesi algoritmanın bir parametresidir. İkinci yorumunuzla ilgili olarak, evet, meta veriler noktaların ilişkilendirilmesine izin verir (örneğin, bir kullanıcı aynı noktayı birçok kez girebilir). Aynı orijinal nokta verildiğinde aynı gizlenmiş nokta ile sonuçlanan bir algoritma iyidir; ancak algoritma bunu yapmazsa, aynı gizlenmiş noktanın kullanılıp kullanılmayacağını test etmek için orijinal noktayı (sorunun tüm nedeni budur) geri yükleyemem.
Reid

Yanıtlar:


6

Şuna bir bak:

Milletvekili Armstrong, Rushton G, Zimmerman DL. Gizliliği korumak için sağlık verilerini coğrafi olarak maskeleme . Stat Med.1999; 18: 497-525.

( alıntı , tam metin )

Deplasman, rotasyon, rastgele pertürbasyon ve toplanma dahil nokta verileri için farklı 'coğrafi maskeleri' tartışıyorlar. Her ne kadar bunu nasıl uygulayacağına ilişkin spesifik teknik çözümleri tartışmasalar da, her yaklaşımla ne kazandığınızı / kaybettiğiniz hakkında bilgi için yararlı işaretçiler vardır.

Daha teorik düşünceler için benzer konuyla ilgili soruya cevabım var .


2
Güzel referans, aktif bir alandır bu kadar çok kullanılabilir. Başka bir soruya genel bir makale ( Mathews & Harel, 2011 ) önermiştim . Ayrıca, Uluslararası Sağlık Coğrafya Dergisi'nin zaman zaman üzerinde kağıtlara sahip olduğuna inanıyorum ( geomask etiketi içeren citeulike kütüphaneme bakın ). Yine de işi yapmak için herhangi bir araçla karşılaşmadım, muhtemelen yararlı bir çaba.
Andy W

1
@AndyW Andy için teşekkürler. Gerçekten de - halk sağlığı / mekansal epidemiyolojide kullanılan yüksek çözünürlüklü jeotata miktarının artmasıyla sorun giderek daha önemli hale gelmektedir. Pratik çözümlerin hala teorik çözümlerin çok gerisinde olduğu hissine kapıldım - kesinlikle bazı güzel gelişmelerin yapılabileceği bir yer!
radek

1

Noktalarınızı rastgele bir miktarda kaydırmak için Perlin gürültüsünü kullanmayı deneyebilirsiniz , ancak avantajı birbirine yakın noktaların birbirine yakın kalmasıyla aynıdır, ancak bu benzerlik mesafeyle düşer. Gürültü işlevi 0 civarında ortalanmışsa, Perlin gürültüsü (özellikle 2002 sürümü) kabaca Gauss dağılımı olduğu için istatistiksel analiz yine de kaynağa benzer verileri döndürmelidir.


Aynı noktanın birçok kopyasını kaydırırsam, orijinal nokta kaydırılan noktaları analiz ederek kurtarılabilir mi?
Reid

Hayal ettiğim gibi, noktanın koordinatlarını gürültü işlevine bir arama olarak kullanırsınız. Yani iki özdeş nokta rastlantı olarak kalacaktı. Üçüncü bir değer kullanabilirsiniz, örneğin noktanın bir 3D Perlin gürültü işlevine arama olarak oluşturulduğu tarihi kullanabilirsiniz. Sonra (ve ben istatistikçi değilim), rastgele tohum ve seçtiğiniz gürültünün ölçeği bilinmedikçe kaynak verileri yeniden yapılandırmak pratik olmaz. O zaman bile pratik olarak işe yarayacağından emin değilim.
MerseyViking

Ah, bu yüzden onu karma bir işleve dönüştürüyorsun. Bununla birlikte, rastgele tohum ve ölçeğin gizli kaldığını varsaymak güvensiz olabilir; Sunucunun tamamen ele geçirildiğini varsayıyorum.
Reid

Uf! Tamam o zaman, bir meydan okumayı seviyorum :) Şimdi gerçekten fiziksel güvenlikten bahsediyorsunuz. Karmaları oluşturmak, SSL gibi bir şeyle güvenli bir bağlantı üzerinden göndermek için ayrı bir site dışı makineniz var. Sunuculardan birine veya her ikisine bir gözcü kurabilirsiniz, öyle ki biri düşerse veya büyük bir kırmızı düğmeye basarsanız diğeri otomatik olarak kapanır. Bulut örneklerini kullandıysanız, Amazon'un veri merkezlerine girmekten başka bir şeyden başka bir şey elde etmenin pratik bir yolu olmaz ...
MerseyViking

Sonuç olarak, veri güvenliğine yalnızca verilerin değerinde olduğu kadar harcama yapmalısınız. Orada birçok Eğer güvenlik modeline ekleyebilir katmanlar ama bir noktada yeterince söylemek zorundayım. Belki de bu soruyu diğer GD sitelerinden birine atmaya değer.
MerseyViking

0

Bu belki de gerekenden daha kıvrımlı ve kapsayıcıdır, ancak bu bir yol olabilir:

Orijinal giriş noktalarınızı alan, belirli bir kabul edilebilir gizleme mesafesine göre arabelleğe alan basit bir python betiği oluşturun, arabellekleri bir özellik kısıtı olarak kullanarak (örneğin 100) n sayıda rastgele nokta oluşturur ve ardından yeni gizlenmiş nokta olarak kullanılacak sahte rasgele sayı üreteci. Ayrıca her gizleme için yeni bir sözde rasgele sayı oluşturmak da gerekli olacaktır.

Senaryonuza bağlı olarak, bu bir Araç Kutusunda paketlenebilir ve REST bitiş noktasına sahip bir GPS hizmeti olarak erişilebilir, böylece gizleme bellek konumlarında gerçekleşir ve yalnızca gizlenmiş nokta fiziksel veritabanınıza gönderilir.


1
Bu bir ArcGIS uygulaması olduğunu varsayar, ancak OP'de bunlardan hiç bahsedilmedi. Yine de ilginç bir çözüm!
blah238

3
Bu doğal çözümün inceleme sonrasında bazı potansiyel kusurları vardır: (1) birkaç farklı nokta aynı noktaya eşlenebilir. (2) OP'nin gösterdiği gibi puanların maskesini kaldırmak kolaydır. (3) Genellikle noktaların ilgili özelliklerle bazı coğrafi ilişkilerinde durması gerekir: örneğin , ev konumları göllerde veya demiryolu bahçelerinde değil sokaklara yakın olmalıdır. Bunlar gibi sorunlar, problemi gerçekten zor, ilginç ve CBS analizine layık kılar (aksi takdirde, ilk kez veritabanına ilk girildiklerinde ve onunla yapıldığında orijinal koordinatları rastgele bozabilir).
whuber

0

Tamam, bu yüzden düşündüğümüz algoritma aşağıdaki gibidir:

  1. Noktayı 200 metrelik bir ızgaraya yuvarlayın (coğrafi kodlamadaki değişkenleri telafi etmek için).
  2. Bazı kriptografik karma algoritmasını (örn. SHA2) kullanarak noktanın koordinatlarının metnini karıştırın.
  3. Noktanın koordinatlarının alt sıra bitlerini (1 km'lik istenen gizleme seviyesine kadar) sağlama işlevinden elde edilen sonuçlarla değiştirin.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.