These services use a collected database of WiFi access points or cell towers (we don't use this one yet) and their geographical locations to help return your location faster. It works by sending nearby BSSIDs (access point MAC addresses) to Apple, then Apple returning the geographical locations of other nearby SSIDs to you. The location is then calculated based on signal strength of the nearby access points.

That info is generated by Apple from iPhone users. You can technically opt out of this mapping by putting '_nomap' on your access point name.

Page 6 and 7 of this letter by Apple to a representative explains it more: https://web.archive.org/web/20101208141602/https://markey.house.gov/docs/applemarkeybarton7-12-10.pdf

You can assume Google's network location or other companies operate in a similar fashion. Mozilla had one called Mozilla Location Service but is now closed.

Reply to this note

Please Login to reply.

Discussion

Sounds scary...

Why not remember the last known location, and assume the current location is in a similar area? That would speed up discovery substantially in many cases, without relying on that database.

Currently GrapheneOS uses GNSS for location by default instead of a network-based location service. GNSS doesn't have the device send anything out. There are plans to make this not depend on any provider by using scraped data stored locally. Most if not all of it is scraped already if I remember correctly, it just needs implementation.

The SSID should have never been static. A hierarchical deterministic process would complicate this form of surveillance/geolocating.