A pretty sensational piece was published on O’Reilly Radar this morning titled “Got an iPhone or 3G iPad? Apple is recording your moves.” From their article:
Today at Where 2.0 Pete Warden and I will announce the discovery that your iPhone, and your 3G iPad, is regularly recording the position of your device into a hidden file. Ever since iOS 4 arrived, your device has been storing a long list of locations and time stamps. We’re not sure why Apple is gathering this data, but it’s clearly intentional, as the database is being restored across backups, and even device migrations.
They also released an application, iPhoneTracker that you can use to browse the data. In the FAQ they ask:
Why is Apple collecting this information?
It’s unclear. One guess might be that they have new features in mind that require a history of your location, but that’s pure speculation. The fact that it’s transferred across devices when you restore or migrate is evidence the data-gathering isn’t accidental.
I don’t mean to denigrate the work they’ve done. Nor do I mean to imply that there aren’t security concerns with this file. But after looking at the raw data that the iPhone stores, I want to point out that it seems that they are technically incorrect. Apple is not storing the device’s location, it’s storing the location of the towers that the device is communicating with.
How do you know?
When I first read the article, I was both concerned and intrigued. Obviously storing a ton of detailed location data for a period of a year is a concern, but I was also interested in what kind of data my phone had on it. After all, I just finished a fun weekend bike tour, and it would be neat to see the detailed route we took. I was using the Maps application a lot and it was giving me very accurate information at the time, so I figured surely there would be at least portions of the route that would be very detailed.
When I used their application, I was disappointed. They throw all the data points on a grid heat map that doesn’t give you much detail. They do this intentionally; they want you to see that it stores the data while not providing a tool that can be easily exploited by others. But that wasn’t good enough for me.
So I followed their instructions to get at the raw data. I extracted the location database from my last iPhone backup, used SQLite to limit it to just the data points during my bike trip and data points that were within a certain level of accuracy, exported this data to a CSV file, used an online tool to convert this to KML, and imported my route into Google Earth.
What I found was disappointing. Almost all the points were way off. Here is a map that is generated from Google Earth; the red points are the ones pulled from my phone. The blue line is the route we actually took to get to Long Beach Island and the Orange Line is the route we used to leave.
Click for larger version
We did not do anything on the island at all. We went straight ahead to the beach, took a picture, and then turned around and went back.
Now keep in mind, I was using the iPhone’s GPS constantly, and it was giving me very good readings. It had me exactly along Main St near Tuckertown, where I actually was. I took a photo on the beach, and it geotagged me with almost the exact location. Yet none of these very accurate points were in the dataset that is stored on the phone. Instead, the datapoints were all along the highway, where I definitely wasn’t, or in nearby towns, which we biked around.
The datasets also contain accuracy information. I am limiting the results to only data points that claim to be accurate within 1500 meters. However most of them are much farther than that from my known route - for example, the ones on the Garden State Parkway are more than twice that distance away. And those individual points claim an accuracy of less than 1000 meters.
The only thing that makes sense is that the iPhone is actually storing the locations of the cell phone towers that it communicates with. My guess is that the iPhone uses this data to help it locate cell towers if it is in the same location again in the future.
Here is other evidence I’ve found to confirm this theory:
- The name of the table this data is stored in is CellLocation. Other tables in the DB include WifiLocation and CdmaCellLocation. These names strongly indicate that they are used to store locations of access points, not of the device itself.
I looked at the data from a friend’s phone who traveled recently to Germany. While there, he used his iPhone roaming on their 3G network. He took a lot of photos, many of them geotagged correctly, meaning a lot of location information was stored. But there were no points stored in the CellLocation table in Germany. So it’s probably only collecting data about the location of cell towers on the phone’s primary network (meaning AT&T). UPDATE: I was wrong - he had it in Airplane Mode with WiFi on in Germany, so it was geotagging based on WiFi positioning. I’ve talked to another friend who confirmed that it DOES collect data abroad.
- None of the points in the table have an accuracy of more than 500 meters. That’s probably the best a phone can do to place an individual cell phone tower, but triangulation with multiple cell towers can place a device on a map much more accurately.
- Note the way-off points on the above map on Long Beach Island. When crossing the bridge, I should have had incredible accuracy since I was over water. It should have placed me right on the bridge. Instead, what I had was incredible accuracy to see the far-away towers. It was alternating between recording towers behind me and towers in front of me.
Who cares? This still means there is a log of where I’ve been!
Yes, it does. Like I said originally, I’m not saying there aren’t privacy concerns here. I just think we should be honest about what they are. According to the Huffington Post, “your iPhone or iPad is keeping a record of every step you take.” The Guardian claimed the phone “saves every detail of [where you go] to a secret file on the device.”
The data that is exposed basically reveals which city you were in at a given time. Nothing more specific than that. It can’t tell what house you live in, it can’t tell what route you jog on, nothing like that. It’s misleading because people know their phone can locate them within several meters of their actual location. But if all it’s showing is cell tower location, you could be anywhere within a 2 to 3 mile radius. That’s several orders of magnitude less precise.
There is also the issue of motivation. If Apple was collecting data on the user’s location, for use in future apps that “require a history of your location” as the researchers speculate, then that is pretty creepy. Nobody would want that, and it would be a huge breach of trust to collect data with that level of specificity. But if they are just collecting data about cell tower locations, perhaps because it helps you get a better signal in the future or improve network reliability, and they do so in a way that doesn’t reveal very much about your location, that’s certainly less creepy.
UPDATE: I’ve added a new post with a bunch of details about how the tracking works in an urban environment, and still believe what it’s tracking is cell nodes and not your location. Check it out