มีเทคนิคอะไรที่ง่ายและมีประสิทธิภาพสำหรับการทำให้งง


14

เรากำลังสร้างเว็บไซต์ที่จะรวบรวมข้อมูลตำแหน่ง (คะแนน) จากผู้ใช้ เรากำลังสำรวจเทคนิคเพื่อรักษาความเป็นส่วนตัวของตำแหน่งของผู้ใช้ (เช่นผู้ใช้มักจะแบ่งปันที่อยู่บ้านของพวกเขาซึ่งมีความละเอียดอ่อน) ทางเลือกหนึ่งที่อยู่ในใจคือการทำให้งงงวยหรือ "แฮ" จุดก่อนที่จะเก็บไว้ในฐานข้อมูลโดยไม่จำเป็นต้องจัดเก็บข้อมูลที่สำคัญเหล่านี้เลย

ข้อกำหนดพื้นฐานของเราคือฉันเชื่อว่า:

  1. เนื่องจากมีจุดที่ทำให้งงงวยเดียวมันเป็นไปไม่ได้ที่จะได้รับจุดดั้งเดิมภายใน (พูด) กิโลเมตรหรือมากกว่านั้นแม้จะได้รับข้อมูลเมตาทั้งหมดที่เกี่ยวข้องกับจุดนั้น (กล่าวคือถือว่าฐานข้อมูลทั้งหมดถูกบุกรุก)

  2. เมื่อพิจารณาชุดของจุดที่มีขนาดใหญ่ตามอำเภอใจซึ่งสอดคล้องกับจุดเริ่มต้นเดียวกันนั้นยังคงเป็นไปไม่ได้ที่จะได้รับจุดเดิม (ตัวอย่างเช่นเทคนิคง่าย ๆ คือการเพิ่มเวกเตอร์แบบสุ่มไปยังจุดเดิม แต่ถ้าคุณทำเช่นนี้มากพอเวลาจุดที่ยุ่งเหยิงจะจัดกลุ่มรอบจุดเดิม)

มันจะดีถ้าคุณสมบัติทางสถิติต่าง ๆ ถูกเก็บรักษาไว้ แต่ฉันไม่รู้ว่าคุณสมบัติใดมีความสำคัญในขั้นตอนนี้ ตัวอย่างเช่นฉันต้องการให้คะแนนที่ยุ่งเหยิงกระจัดกระจายในแบบ "เป็นธรรมชาติ" แทนที่จะสะสมลงในตาราง อย่างไรก็ตามความเป็นส่วนตัวสำคัญกว่านี้


ความต้องการของคุณไม่ได้กล่าวถึงความแม่นยำที่คุณต้องการบำรุงรักษาคุณจะมุ่งเน้นไปที่ข้อกำหนดที่ทำให้งงงวยเท่านั้น อัลกอริทึมต่อไปนี้มีคุณสมบัติตรงตามข้อกำหนดที่คุณระบุไว้เล็กน้อย แต่ไม่คุ้มค่า: ทำแผนที่แต่ละจุดเป็น 0 ° N, 0 °ตะวันออก สันนิษฐานได้ว่าคุณต้องการสนองเกณฑ์บางอย่างเช่นจุดที่ทำให้มึนเมาอยู่ในระยะ x km จากจุดที่เกิดขึ้นจริง
Llaves

คำถามที่สอง: คุณพูดถึงข้อมูลเมตาและสามารถสร้างจุดที่แท้จริงได้หากฐานข้อมูลทั้งหมดถูกบุกรุก หากข้อมูลเมตาไม่อนุญาตให้คุณระบุจุดที่สับสนที่เชื่อมโยงกับ "จุดที่แท้จริง" เดียวกันดังนั้นบางคนสามารถสร้าง "จุดที่แท้จริง" จากตัวอย่างสุ่มซ้ำได้อย่างไรถ้าคุณไม่สามารถเชื่อมโยงซึ่งกันและกันได้ ในทางกลับกันหากข้อมูลเมตาช่วยให้คุณสามารถเชื่อมโยงคะแนนได้เมื่อคุณถูกขอให้รายงานตำแหน่งของจุดที่มีปัญหาบางส่วนอีกครั้งให้ส่งคืนค่าที่ทำให้ยุ่งเหยิงเดิมที่ส่งคืนทุกครั้งก่อนหน้า
Llaves

คุณจำเป็นต้องสามารถสร้างตำแหน่งจริงจากข้อมูลที่ถูกแฮชใหม่หรือจะใช้เพื่อยืนยันว่าบุคคลนั้นอยู่ที่ไหน หากเป็นแบบหลังแฮชแบบทางเดียวการบดเกลือ + WKT ของรูปทรงเรขาคณิตจะเพียงพอ หากเป็นอดีตคุณจะต้องมีฟังก์ชันบางอย่างเพื่อทำการแปลงผกผันของฟังก์ชันแฮชของคุณซึ่งเป็นแฮชสองทาง
MerseyViking

คะแนนจะถูกนำไปเปรียบเทียบกับข้อมูลผู้ใช้อื่น / ชุดข้อมูลอื่นเป็นส่วนหนึ่งของบริการหรือไม่?
Matthew Snape

@ คลื่นฉันทำจริง ๆ : "ภายในหนึ่งกิโลเมตรหรือมากกว่านั้น" แต่ฉันหวังว่าระดับ obfuscation เป็นพารามิเตอร์ของอัลกอริทึม เกี่ยวกับความคิดเห็นที่สองของคุณใช่ข้อมูลเมตาอนุญาตการเชื่อมโยงคะแนน (เช่นผู้ใช้หนึ่งรายอาจป้อนจุดเดิมหลายครั้ง) และอัลกอริธึมที่ส่งผลให้มีจุดที่ทำให้ยุ่งเหยิงเดียวกันเนื่องจากจุดเดิมเหมือนกันก็ดี แต่หากอัลกอริทึมไม่ทำเช่นนั้นฉันจะไม่สามารถกู้คืนจุดเริ่มต้น (นั่นคือเหตุผลทั้งหมดสำหรับคำถาม) เพื่อทดสอบว่าควรใช้จุดที่ทำให้ยุ่งเหยิงแบบเดียวกันหรือไม่
Reid

คำตอบ:


6

มองไปที่:

MP Armstrong, Rushton G, Zimmerman DL ภูมิศาสตร์กำบังข้อมูลสุขภาพเพื่อรักษาความลับ สถิติ Med.1999; 18: 497-525

( อ้างอิง , ข้อความเต็ม )

พวกเขาพูดถึง 'หน้ากากทางภูมิศาสตร์' ที่แตกต่างกันสำหรับข้อมูลจุดรวมถึงการกระจัด, การหมุน, การก่อกวนแบบสุ่มและการรวมตัว แม้ว่าพวกเขาจะไม่ได้พูดคุยเกี่ยวกับการแก้ปัญหาทางเทคนิคที่เฉพาะเจาะจงเกี่ยวกับวิธีการใช้มันมีตัวชี้ที่เป็นประโยชน์ต่อข้อมูลเกี่ยวกับสิ่งที่คุณได้รับ / หลวมกับทุกวิธี

สำหรับการพิจารณาทางทฤษฎีเพิ่มเติมได้ดูคำตอบของฉันในคำถามในหัวข้อที่คล้ายกัน


2
การอ้างอิงที่ดีเป็นเขตข้อมูลที่ใช้งานอยู่จึงมีอยู่มากมาย ผมเคยแนะนำบทความภาพรวม ( แมทธิวส์และ Harel 2011 ) ในคำถามอื่น ฉันยังเชื่อว่า International Journal of Health Geographics มีเอกสารเกี่ยวกับเรื่องนี้เป็นครั้งคราว (ดูไลเซ็นไลต์ห้องสมุดที่มีแท็ก geomaskของฉัน) ฉันไม่ได้เจอเครื่องมือใด ๆ ที่จะทำงาน แต่อาจเป็นความพยายามที่มีประโยชน์
Andy W

1
@AndyW ขอบคุณสำหรับแอนดี้พอยน์เตอร์ แน่นอน - ด้วยจำนวน geodata ความละเอียดสูงที่เพิ่มขึ้นในด้านสาธารณสุข / ระบาดวิทยาปัญหามีความเกี่ยวข้องมากขึ้นเรื่อย ๆ ฉันมีความรู้สึกเดียวกันกับที่การแก้ปัญหาในทางปฏิบัติยังคงล้าหลังกว่าทฤษฎี - เป็นสถานที่ที่สามารถทำการพัฒนาที่ดีได้!
radek

1

คุณสามารถลองใช้เสียง Perlinเพื่อเลื่อนคะแนนของคุณด้วยจำนวนสุ่ม แต่ด้วยความได้เปรียบที่คะแนนที่อยู่ใกล้กันจะยังคงอยู่ใกล้กัน แต่ความคล้ายคลึงกันนี้จะลดลงตามระยะทาง หากฟังก์ชั่นเสียงรบกวนอยู่กึ่งกลางประมาณ 0 การวิเคราะห์ทางสถิติควรยังคงส่งคืนข้อมูลที่คล้ายกันในแหล่งที่มาเนื่องจากเสียง Perlin (โดยเฉพาะรุ่น 2002) เป็นการกระจายแบบเกาส์คร่าวๆ


หากฉันเลื่อนจุดเดิมจำนวนมากสำเนาจุดเดิมสามารถกู้คืนได้โดยการวิเคราะห์จุดเปลี่ยนหรือไม่
Reid

วิธีที่ฉันจินตนาการมันคุณจะใช้พิกัดของจุดเพื่อค้นหาฟังก์ชั่นเสียงรบกวน ดังนั้นจุดที่เหมือนกันสองจุดจะยังคงเหมือนกัน คุณสามารถใช้ค่าที่สามพูดวันที่จุดถูกสร้างขึ้นเป็นการค้นหาในฟังก์ชั่นสัญญาณรบกวน 3D Perlin จากนั้น (และฉันไม่ใช่นักสถิติ) มันจะเป็นไปไม่ได้เลยที่จะสร้างข้อมูลต้นฉบับขึ้นมาใหม่เว้นแต่จะมีการสุ่มเมล็ดและระดับเสียงที่คุณเลือก ถึงอย่างนั้นฉันก็ไม่แน่ใจว่ามันจะใช้งานได้จริง
MerseyViking

อาคุณกำลังทำให้มันเป็นฟังก์ชั่นแฮช มันอาจไม่ปลอดภัยที่จะสมมติว่าเมล็ดและสเกลสุ่มนั้นยังคงเป็นความลับอยู่ ฉันสมมติว่าเซิร์ฟเวอร์นั้นถูกบุกรุกทั้งหมด
Reid

วุ้ย ตกลงแล้วฉันชอบความท้าทาย :) ตอนนี้คุณกำลังพูดถึงความปลอดภัยทางกายภาพจริงๆ คุณมีเครื่องนอกสถานที่แยกต่างหากเพื่อสร้างแฮชส่งพวกเขาผ่านการเชื่อมต่อที่ปลอดภัยด้วยบางอย่างเช่น SSL คุณสามารถตั้งค่าจ้องจับผิดบนเซิร์ฟเวอร์หนึ่งหรือทั้งสองอย่างซึ่งหากเซิร์ฟเวอร์หนึ่งหยุดทำงานหรือคุณกดปุ่มสีแดงขนาดใหญ่เซิร์ฟเวอร์อื่นจะปิดเครื่องโดยอัตโนมัติ หากคุณใช้อินสแตนซ์ของคลาวด์ดังนั้นจะไม่มีวิธีใดที่จะนำสิ่งใดจากอินสแตนซ์อื่นได้เลยโดยไม่เจาะเข้าไปในศูนย์ข้อมูลของ Amazon ...
MerseyViking

คุณควรใช้ความปลอดภัยของข้อมูลให้มากที่สุดเท่าที่ข้อมูลมีค่า มีเลเยอร์มากมายที่คุณสามารถเพิ่มลงในโมเดลความปลอดภัยของคุณได้ แต่ในบางจุดคุณต้องพูดให้พอ มันอาจคุ้มค่าที่จะถามคำถามนี้กับหนึ่งในไซต์ SE อื่น ๆ
MerseyViking

0

นี่อาจเป็นเรื่องที่ซับซ้อนและมีส่วนร่วมเกินความจำเป็นอย่างไรก็ตามอาจเป็นเส้นทางที่จะ:

สร้างสคริปต์งูหลามแบบง่าย ๆ ที่ใช้จุดป้อนข้อมูลดั้งเดิมของคุณบัฟเฟอร์ด้วยระยะทางที่น่ารำคาญที่ยอมรับได้สร้างจุดสุ่มจำนวน n จุดโดยใช้บัฟเฟอร์เป็นข้อ จำกัด คุณลักษณะ (ตัวอย่างเช่น 100) จากนั้นเลือกจุดใดจุดหนึ่งโดยใช้ ตัวสร้างตัวเลขแบบหลอกเทียมเพื่อใช้เป็นจุดที่สับสนใหม่ นอกจากนี้ยังจำเป็นต้องสร้างหมายเลขหลอกเทียมใหม่สำหรับการทำให้งงแต่ละครั้ง

ขึ้นอยู่กับสถานการณ์ของคุณสิ่งนี้สามารถบรรจุในกล่องเครื่องมือและเข้าถึงเป็น GPService ที่มีปลายทาง REST เพื่อให้การทำให้งงงวยเกิดขึ้นในตำแหน่งหน่วยความจำและจะมีการโพสต์เฉพาะจุดที่สับสนไปยังฐานข้อมูลทางกายภาพของคุณ


1
นี่ถือว่าเป็นการใช้งาน ArcGIS แต่ไม่มีการพูดถึงใน OP ยังเป็นทางออกที่น่าสนใจ!
blah238

3
วิธีแก้ปัญหาตามธรรมชาตินี้มีข้อบกพร่องที่อาจเกิดขึ้นจากการตรวจสอบ: (1) จุดที่แตกต่างกันหลายจุดอาจถูกแมปไปยังจุดเดียวกัน (2) ง่ายต่อการเปิดโปงจุดตามที่ OP แสดง (3) บ่อยครั้งที่คะแนนจำเป็นต้องอยู่ในความสัมพันธ์ทางภูมิศาสตร์กับสถานที่ที่เกี่ยวข้องเช่นที่ตั้งของบ้านควรอยู่ใกล้ถนนไม่ใช่ในทะเลสาบหรือในทางรถไฟ ปัญหาเช่นนี้ทำให้เกิดปัญหาอย่างแท้จริงน่าสนใจและมีค่าในการวิเคราะห์ระบบสารสนเทศภูมิศาสตร์ (เพราะมิเช่นนั้นอาจทำให้เกิดการสุ่มพิกัดเดิมโดยการสุ่มเมื่อพวกเขาเข้าสู่ฐานข้อมูลครั้งแรกและดำเนินการด้วย)
whuber

0

ตกลงดังนั้นอัลกอริทึมที่เรากำลังพิจารณามีดังนี้:

  1. ปัดเศษจุดเป็นตาราง 200 เมตร (เพื่อชดเชยความหลากหลายในการหาพิกัดภูมิศาสตร์)
  2. แฮชข้อความของพิกัดของจุดโดยใช้อัลกอริทึมการแฮชการเข้ารหัสลับบางอย่าง (เช่น SHA2)
  3. แทนที่บิตลำดับที่ต่ำกว่าของพิกัดของจุด (สูงสุดถึงระดับ obfuscation ที่ต้องการ 1 กม.) ด้วยผลลัพธ์จากฟังก์ชันแฮช
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.