2 คะแนน โดย GN⁺ 2024-07-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • BeaconDB เป็นบริการระบุตำแหน่งออนไลน์ที่มุ่งมาแทนที่ Mozilla Location Services โดยค่อย ๆ สร้างความครอบคลุมจากข้อมูล Wi-Fi และเสาสัญญาณที่ผู้ใช้ส่งเข้ามาโดยตรง
  • การเก็บข้อมูลใช้รูปแบบ opt-in และข้อมูลที่ส่งเข้ามาจะถูกรวบรวมก่อนนำไปให้ไคลเอนต์ของ beaconDB API ใช้งาน พร้อมมีแผนเผยแพร่ data dump ที่ทำให้อ่านย้อนกลับได้ยากในอนาคต
  • เนื่องจากยังเป็น บริการเชิงทดลอง ความครอบคลุมของ Wi-Fi ในแต่ละพื้นที่อาจยังไม่เพียงพอ และเมื่อค้นหาไม่สำเร็จจะ fallback ไปใช้ตำแหน่งเสาสัญญาณจาก data dump สุดท้ายของ MLS หรือการประมาณจาก IP
  • บน Android สามารถส่งข้อมูลได้ผ่าน NeoStumbler, Tower Collector และ Network Survey และตั้งค่าให้ใช้งานเป็นบริการระบุตำแหน่งผ่าน microG, geoclue และการตั้งค่า Firefox
  • นักพัฒนาสามารถใช้ endpoint ที่เข้ากันได้กับ MLS/Ichnaea API คือ https://api.beacondb.net/v1/geolocate และจำเป็นต้องตั้งค่า User-Agent สำหรับระบุไคลเอนต์

หลักการเก็บข้อมูลตำแหน่ง

  • BeaconDB ดำเนินฐานข้อมูลตำแหน่งบนพื้นฐานการเก็บข้อมูลแบบ opt-in
  • ข้อมูลที่เปิดเผยต่อสาธารณะจะถูก ทำให้อ่านย้อนกลับได้ยาก เพื่อปกป้องผู้ส่งสัญญาณและผู้มีส่วนร่วม
  • การอัปเดตข้อมูลเดิมต้องใช้ข้อมูลที่รับได้เฉพาะเมื่ออยู่ในระยะทางกายภาพของบีคอนเท่านั้น จึงเป็นโครงสร้างที่ช่วยเพิ่มความทนทานต่อการนำไปใช้ในทางที่ผิด
  • ข้อมูลที่ส่งเข้ามาจะถูกรวบรวมก่อน แล้วจึงเปิดให้ไคลเอนต์ beaconDB API ใช้งานได้
  • ในอนาคตมีแผนเผยแพร่ data dump ที่ถูกทำให้อ่านย้อนกลับได้ยากภายใต้ สัญญาอนุญาตสาธารณสมบัติ
  • รายละเอียดวิธีประมวลผลข้อมูลที่ส่งเข้ามาดูได้ใน privacy notice

แอปสำหรับช่วยเพิ่มความครอบคลุม

  • NeoStumbler

    • NeoStumbler เป็นแอป Android สำหรับส่งข้อมูลความครอบคลุมใหม่ได้อย่างง่ายดาย
    • ดาวน์โหลดได้จาก Accrescent, F-Droid, Google Play, GitHub
    • ตั้งแต่ v1.5.1 เป็นต้นไป หากกด “yes” ในพรอมป์ต์ ระบบจะตั้ง endpoint เป็น beaconDB
    • ในเวอร์ชันก่อนหน้า ให้ไปที่ Settings → Endpoint → Suggested services แล้วเลือก beaconDB เพื่อให้ใช้ค่าที่ถูกต้องโดยอัตโนมัติ
  • Tower Collector

    • Tower Collector เป็นแอปที่ใช้งานมายาวนานสำหรับเก็บข้อมูลเสาสัญญาณ
    • ดาวน์โหลดได้จาก F-Droid หรือ Google Play
    • เวอร์ชันล่าสุดจะอัปโหลดไปยัง beaconDB โดยค่าเริ่มต้น
  • Network Survey

    • Network Survey เป็นเครื่องมือสำหรับการเก็บข้อมูลภายในเครื่องอย่างครอบคลุม
    • ดาวน์โหลดได้จาก F-Droid หรือ Google Play
    • เปิดการส่งข้อมูลไปยัง beaconDB ได้จาก Upload Settings ใต้หัวข้อ Upload to Database บนหน้าหลัก

ข้อจำกัดปัจจุบันและการทำงานแบบ fallback

  • BeaconDB ยังอยู่ในสถานะ เชิงทดลอง จึงอาจระบุตำแหน่งได้ไม่แม่นยำหรือบริการยังไม่เสถียร
  • ฐานข้อมูลนี้ถูกสร้างขึ้นใหม่ตั้งแต่ต้น จึงมีความเป็นไปได้สูงว่าพื้นที่ใช้งานของคุณจะยังไม่มีความครอบคลุมของ Wi-Fi
    • หากไม่สามารถประมาณตำแหน่งจาก Wi-Fi ได้ จะ fallback ไปใช้ตำแหน่งเสาสัญญาณแบบคร่าว ๆ จาก data dump สุดท้ายของ MLS
    • ทางเลือกสุดท้ายคือใช้การประมาณจาก IP
    • ข้อมูลที่ส่งเข้ามาต้องใช้เวลาอย่างน้อย 5 นาทีจึงจะพร้อมใช้งานผ่าน beaconDB API
  • ขณะนี้ยังไม่มีการให้บริการ data dump และกำลังดำเนินการทำข้อมูลให้อ่านย้อนกลับได้ยากเพื่อปกป้องความเป็นส่วนตัวของผู้มีส่วนร่วมและเจ้าของ AP

วิธีตั้งค่าไคลเอนต์

  • microG

    • หาก Android ROM รองรับ microG ก็สามารถตั้งค่า beaconDB เป็นบริการระบุตำแหน่งออนไลน์ผ่านเอนจินระบุตำแหน่งตัวใหม่ของ microG ได้
    • เอนจินระบุตำแหน่งนี้เป็นสถานะ stable ตั้งแต่ v0.3.6
    • เลือก beaconDB ได้ที่ microG Settings → Location → More options → Select online location service
    • ต้องเปิดใช้งาน ‘Request from online service’ ทั้งใน ‘Wi-Fi location’ และ ‘Mobile network location’
  • geoclue

    • Linux distributions ส่วนใหญ่มี geoclue เป็น backend สำหรับระบุตำแหน่ง
    • สามารถใช้ beaconDB ได้โดย override URL สำหรับร้องขอข้อมูลตำแหน่งจาก Wi-Fi เป็น https://api.beacondb.net/v1/geolocate
    • จะส่งข้อมูลได้เฉพาะเมื่อมีเสาอากาศ GPS เท่านั้น และตั้งค่า URL สำหรับส่งข้อมูลเป็น https://api.beacondb.net/v2/geosubmit
[wifi]
enable=true
url=https://api.beacondb.net/v1/geolocate

submit-data=true
submission-url=https://api.beacondb.net/v2/geosubmit
submission-nick=geoclue
  • Firefox

    • สามารถตั้งค่า Firefox ให้ร้องขอไปยัง beaconDB โดยตรง หรือให้ดึงตำแหน่งผ่าน geoclue บน Linux ก็ได้
    • หากต้องการใช้งานโดยตรง ให้ตั้งค่า geo.provider.network.url ใน about:config เป็น https://api.beacondb.net/v1/geolocate
    • หากต้องการใช้ geoclue ให้เปิดใช้งาน geo.provider.use_geoclue

API และทรัพยากรสำหรับนักพัฒนา

1 ความคิดเห็น

 
GN⁺ 2024-07-08
ความคิดเห็นใน Hacker News
  • แม้จะบอกว่าเป็น ข้อมูลที่เก็บรวบรวมอย่างมีจริยธรรม ด้วยวิธี opt-in แต่ก็สงสัยว่าในทางปฏิบัติมันทำงานอย่างไร
    ถ้าเพื่อนบ้านสแกนเครือข่าย WiFi ของฉันแล้วอัปโหลดไปยัง BeaconDB แบบนี้ก็ไม่น่าถือว่าฉันยินยอมแล้วหรือเปล่า ในนโยบายความเป็นส่วนตัวระบุว่าให้เติม _optout ต่อท้ายชื่อ WiFi ได้ ดูแล้วจึงใกล้เคียงกับ opt-out มากกว่า opt-in

    • opt-in ที่พูดถึงตรงนี้หมายถึงการยินยอมให้ ใช้อุปกรณ์ของตัวเองในการเก็บข้อมูล Apple และ Google ใช้ฐานผู้ใช้ทั่วโลกเพื่อเก็บข้อมูลแบบนี้ผ่านอุปกรณ์ของผู้ใช้โดยไม่ได้รับความยินยอม
      เครือข่าย WiFi จะประกาศการมีอยู่ของตัวเองออกไปรอบทิศทาง 10 ครั้งต่อวินาที ใครก็ตามที่อยู่ใกล้ก็รับสัญญาณได้ จึงเป็นที่รู้กันดีว่าไม่ควรใส่ข้อมูลอ่อนไหวไว้ใน SSID ของเครือข่าย ดังนั้นกรณีนี้น่าจะใกล้เคียงกับการที่สามารถ opt-out ได้มากกว่า
    • คนที่เก็บข้อมูลคือคนที่ opt-in เข้าร่วมการเก็บข้อมูล จากมุมมองของผู้เก็บข้อมูล สัญญาณ WiFi ของคุณก็เหมือนอยู่ในพื้นที่สาธารณะ
    • เพื่อให้ชัดเจน โทรศัพท์ทุกเครื่องที่ทำการระบุตำแหน่งก็อัปโหลด ที่อยู่ MAC ของ AP ของคุณไปยังบริการระบุตำแหน่งระยะไกลอยู่แล้ว แต่ BeaconDB ไม่เปิดเผยข้อมูลนี้เป็นข้อความธรรมดา
      dump ข้อมูลใด ๆ จะมีเฉพาะข้อมูลที่เป็นแฮชเชิงเข้ารหัสซึ่งย้อนกลับไม่ได้ หรือข้อมูลแบบรวมยอดเท่านั้น
    • ซ่อน SSID แล้วใช้ 5GHz WiFi ก็ได้ ระยะส่งสั้นและสัญญาณอ่อนลงมากเมื่อผ่านกำแพง ทำให้แทบไม่มีประโยชน์ในฐานะ beacon สำหรับประมาณตำแหน่ง
  • ตอนที่เคยลองหาสิ่งคล้าย ๆ กันสำหรับ GrapheneOS พบว่าไม่สามารถให้บริการ บริการระบุตำแหน่งแบบกำหนดเอง ได้
    ถ้าใช้สิ่งนี้บน GrapheneOS ได้ก็คงดีมาก ถ้ามีใครรู้วิธีทำโดยไม่ใช้ microG ก็น่ายินดี ตอนนี้ฉันใช้ GMS แบบ sandboxed อยู่

  • ดูเหมือนผู้เขียนยังไม่มี แอปมือถือโอเพนซอร์ส ที่ให้เก็บข้อมูลโดยตรงจากอุปกรณ์ได้ โดยเฉพาะถ้าเป็น opt-in ตามฝั่งอุปกรณ์ที่เก็บข้อมูล ก็สงสัยว่าข้อมูลถูกรวบรวมมาจากที่ไหน

    • ยังไม่ได้ทำแอปสำหรับร่วมส่งข้อมูลให้ beaconDB เว็บไซต์มีลิงก์ไปยังแอป Android ที่ใช้เก็บข้อมูลนี้ได้คือ NeoStumbler และ TowerCollector
  • ปัญหาหลักของ MLS ไม่ใช่การถูก Skyhook คุกคาม/ฟ้องร้องเรื่องสิทธิบัตร หรอกหรือ อยากรู้ว่ามีสิทธิบัตรใดเกี่ยวข้อง และ beaconDB หลีกเลี่ยงปัญหานั้นอย่างไร

  • ถ้าอ่านประเด็นเรื่องการปิดตัวของ MLS[1] จะเห็นว่าองค์กรเดิมหลายแห่งอย่าง /e/ foundation และ Graphene ก็ดูสนใจให้บริการ ทางเลือกทดแทน อยู่เหมือนกัน สงสัยว่าตอนนี้มีผู้ให้บริการตำแหน่งแบบโอเพนซอร์สหลายรายแข่งขันกันอยู่ หรือโครงการนี้เป็นโครงการเดียวที่เข้าถึงได้แบบสาธารณะในตอนนี้
    ตัวโครงการเองดูดี แต่บน GitHub[2] ดูเหมือนเป็นโปรเจกต์คนเดียวที่มีคนเข้าร่วมไม่มาก สงสัยว่ามีการพูดคุยเรื่องขยายโครงการและร่วมมือกับคนอื่นที่มีเป้าหมายคล้ายกันอยู่หรือไม่ ถ้าได้รับการสนับสนุนจากชุมชนนักพัฒนาเดิม น่าจะยกระดับขึ้นไปได้อีกขั้น

    1. https://github.com/mozilla/ichnaea/issues/2065

    2. https://github.com/beacondb/beacondb

    แก้ไข: ดูเหมือนโครงการจริงจะอยู่ที่ Codeberg[3] และที่นั่นมีการมีส่วนร่วมจากคนอื่นนอกจากนักพัฒนาหลักมากกว่า GitHub เล็กน้อย

    1. https://codeberg.org/beacondb
    • ตอนนี้ beaconDB เป็นโครงการเดียวที่เข้าถึงได้แบบสาธารณะ แต่กำลังคุยเรื่องความร่วมมือกับโครงการและองค์กรอื่น ๆ หลายแห่ง
      เดิมทีโครงการอยู่บน GitHub แต่ตอนนี้ย้ายไป Codeberg แล้ว
    • อ้างอิงเพิ่มเติม ตอนนี้ /e/ OS ใช้บริการระบุตำแหน่งของตัวเองแล้ว แต่ไม่รู้ว่ามีการจำกัดการเข้าถึงหรือไม่
  • สงสัยว่ามีเหตุผลอะไรที่ API ไม่คืนตำแหน่งของ access point เพื่อให้ไคลเอนต์คำนวณตำแหน่งเอง

    • มีแผนจะให้ไคลเอนต์แคชข้อมูลไว้ในเครื่องได้ ซึ่งจะช่วยให้ ความเป็นส่วนตัวของไคลเอนต์ ดีขึ้นและลดภาระเซิร์ฟเวอร์ด้วย อยากทำให้ได้ภายในไม่กี่วันนี้
      ยังไม่พบไคลเอนต์ที่ถูกพัฒนาให้ใช้ประโยชน์จากข้อมูลแบบนั้น ถ้าเจอหรือกำลังพัฒนาอยู่ก็อยากให้บอกกัน
  • หวังว่า GrapheneOS จะรองรับสิ่งนี้เร็ว ๆ นี้ ตอนนี้ ผู้ให้บริการ GPS ที่ไม่ใช่ Google แทบไม่มีหวังเลยถ้าไม่ใช่กลางแจ้ง

  • เป็นโครงการที่ยอดเยี่ยมจริง ๆ เห็นคนสายแก้ปัญหาเข้ามาเติมช่องว่างที่ MLS ทิ้งไว้ทีไรก็ดีใจเสมอ แยกต่างหากคือดีไซน์ก็ยอดเยี่ยมด้วย

  • สงสัยว่ายังดาวน์โหลด dump ข้อมูลชุดสุดท้ายของ MLS ได้จากที่ไหนบ้าง หาออนไลน์ไม่เจอ
    กำลังทำโปรเจกต์ค้นหาเสาสัญญาณที่เชื่อมต่ออยู่โดยอิงจาก mcc, mnc, cid ฯลฯ ตอนนี้ดึงข้อมูลจาก opencellid และ combain เท่านั้น ถ้าได้ข้อมูลนี้เพิ่มคงดีมาก

  • ถ้าร่วมมือกับ geoclue2 ได้คงดี เมื่อ MLS ปิดตัว geoclue2 ก็ปิดใช้ การประมาณตำแหน่งจาก WiFi ไปแล้ว

    https://gitlab.freedesktop.org/geoclue/geoclue