애플이 개인의 위치 정보를 추적했다고 난리가 났습니다. 당장 고소한다는 이야기도 들려오고 아이폰 사면 신상 털리는 건지 궁금해하는 사람도 있나 봅니다. 그래서 도대체 이게 무슨 일인지 나름대로 조사를 해 보았습니다.
일단, 애플의 증언에 따르면 애플은 개인의 위치 정보를 가져간 것이 아니라 아이폰/아이패드가 접속하는 WiFi 핫스팟(이후 WiFi라 표기)과 Cell Tower(핸드폰이 접속하는 기지국)의 위치 정보를 수집하고 이를 아이폰에서 다시 활용합니다. 이를 통해 아이폰은 GPS 리시버가 위치를 알아내기 전에 빠른 시간에 현재의 위치를 계산해 냅니다
http://www.apple.com/pr/library/2011/04/27location_qa.html
These calculations are performed live on the iPhone using a crowd-sourced database of Wi-Fi hotspot and cell tower data that is generated by tens of millions of iPhones sending the geo-tagged locations of nearby Wi-Fi hotspots and cell towers in an anonymous and encrypted form to Apple.
이게 무슨 소리인지 하나씩 설명해 드리겠습니다.
원래 핸드폰에 들어 있는 GPS 리시버(안테나)는 켜자마자 위치를 잡는 것이 아닙니다. 위성의 신호가 약할 때도 있고, 실내에 있을 때에는 신호 수신이 잘 안되기도 합니다. 그리고 위성 신호 한개만 가지고 위치를 잡는게 아니라 3개 이상의 위성 신호를 이용해 삼각 측량을 해서 위치를 알아냅니다. 그러다보니 정확한 위치를 잡기까지 다소 시간이 걸립니다. 카 네비게이션을 켰는데 위치를 못잡아 버벅거리는 모습을 보신 분이라면 쉽게 이해가 될 것입니다.
그런데 아이폰과 같은 스마트폰(안드로이드 폰도 마찬가지입니다)은 GPS와 관계없이 늘 WiFi나 Cell Tower에 늘 접속해 있게 마련입니다. 이것 역시 하나만 접속하는 것이 아니라 동시에 여러 개의 신호를 받아서 그 중에서 상태가 좋은 걸 이용합니다. 만약 자기 주변의 WiFi와 셀타워의 위치를 미리 알고 있다면, 이 정보를 이용한 삼각 측량으로 GPS 신호 감도가 안 좋더라도 자신의 위치를 바로 계산해 낼 수 있게 됩니다.
그런데, 이를 위한 전제 조건이 있습니다. 그것은 WiFi와 셀타워의 위치 정보를 스마트폰이 미리 알고 있어야 한다는 겁니다. 아니면 적어도 애플이나 구글이 가지고 있다가 이를 스마트폰에 알려줘야 합니다. 실제로 두 회사는 이런 정보를 가지고 있고, 스마트폰이 요청해 오면 이 정보를 다운로드 해 줍니다. 그러면 스마트폰은 그 정보를 이용해 자신의 현재 위치를 “대략적으로” 계산하고 이를 GPS 신호가 확실하게 수신될 때 까지 임시로 이용합니다.
여러분이 스마트폰에서 지도 앱을 켜면 조금 틀린 위치를 표시했다가 곧바로 위치가 정확하게 바뀌는 것을 자주 보셨을 겁니다. 바로 이 과정이 AP/셀타워 측량 -> GPS 측량으로 전환되는 과정입니다. 또한, WiFi 아이패드나 아이팟 터치와 같이 GPS 리시버가 내장되지 않은 기기의 경우 아예 이런 방법만을 이용해 위치를 측정하게 됩니다.
그렇다면 애플이나 구글은 이런 위치 정보를 어떻게 얻을까요? 구글의 경우 이와 관련에 이미 한 번 난리가 난 적이 있습니다. 구글맵을 찍는 자동차가 주변의 WiFi의 위치 정보와 맥 어드레스까지 가져간다는 이야기 였습니다. (여기서 맥 어드레스란 네트웍 장치마다 갖고 있는 고유의 식별값입니다. 여러분의 노트북에도, 데스크탑의 랜카드에도, 스마트폰에도, 심지어 인터넷을 이용한다는 스마트 TV나 냉장고 등에도 모두 맥 어드레스가 부여되어 있습니다.) 그 과정에서 암호까지 뚫네 어쩌네 여러 이야기가 있었지만, 결국 구글이 한 것은 각 WiFi의 실제 위치 정보를 얻어내어 데이터베이스화 한 것입니다. 여러분이 지금 노트북에서 웹브라우저를 켜고 구글 맵에 들어가 보면 자신의 위치가 대략적으로 포함된 위치가 나오는 경우가 있는데 이것이 바로 이런 정보를 이용한 케이스입니다. (적어도 미국은 이렇게 표시됩니다.)
구글과 달리 애플은 맵 서비스도 없고 이를 수집할 다른 방법이 없습니다. 그래서 애플이 택한 방법이 바로 스마트폰의 현재 위치와 주변의 WiFi/셀타워 정보를 애플의 서버에 올려주는 방식을 택한 것입니다. 애플의 발표에 따르면 이 과정에서 기기의 정보(단말기 번호나 맥어드레스)는 포함되지 않으며, WiFi/셀타워의 맥어드레스 등 정보와 위치 정보만을 암호화해서 서버에 업로드 합니다.
과연 이것이 사실인지 확인해 보기 위해 저의 아이폰 백업 파일에서 이번에 문제가 된 파일을 열어 보았습니다. 이 파일은 SQLLite 라는 리눅스 기반 무료 데이터베이스엔진 파일로, consolidate.db 라는 파일명을 가지고 있습니다. 이야기 된 대로 암호화 되어있지 않으며, SQLLite Manager를 이용해 손쉽게 열어볼 수 있었습니다.
위의 그림 (누르면 커집니다)은 해당 파일에 있는 WiFiLocationHarvest 라는 테이블을 열어본 결과입니다. 테이블은 데이터베이스에서 실제 자료를 담고 있는 공간을 말합니다. 이미지에서 볼 수 있는 것과 같이 해당 파일에는 다양한 테이블이 있는데, 그 중에서 실제로 사용되는 것은 WiFiLocation, WiFiLocationHarvest, CellLocation, CellLocationHarvest 정도였습니다.
WiFiLocationHarvest 테이블에는 아마도 저의 아이폰에서 수집된 정보가 기록된 것으로 보입니다. 이 정보는 아마도 주기적으로 애플 서버로 보내지고 있었을 것입니다. 내부를 살펴보시면 WiFi의 맥 어드레스/위도/경도/신호의 세기 등의 내용만 들어 있다는 것을 아실 수 있습니다. (참고로 Age는 사용자의 나이가 아니라 접속된 기간 같은 것으로 보입니다)
위의 그림은 WiFiLocation 테이블의 내용입니다. 이 내용은 자신의 기기에서 얻어진 정보가 아니라, 자신의 주변에 있는 WiFi의 맥어드레스를 이용해 애플의 서버에서 받아온 정보로 보입니다. 앞서 WiFiLocationHarvest 테이블의 데이터 건수가 234건이었던 것과 달리, 이 테이블에는 9926건이 들어 있습니다.
위의 두 이미지는 WiFi가 아니라 핸드폰 망인 셀타워에 대한 정보를 담고 있습니다. 따라서, 맥어드레스 말고도 셀 타워 고유의 다양한 정보가 포함되어 있습니다. 물론, 마찬가지로 여기에도 개인의 신상이나 기기의 세부 정보 같은 내용은 없습니다. 맥어드레스도 셀타워의 맥어드레스이지 기기의 맥어드레스가 아닙니다.
다시 말해 애플은 내 주변의 WiFi/셀타워 정보를 애플에 보내 해당 기기의 위치값을 받아오거나 혹은 내 기기의 GPS 값을 WiFi/셀타워 정보와 함께 보내 이를 데이터베이스로 구축했다는 소리입니다. 이 과정에서 그 위치가 누구의 어느 스마트폰인지 명시하지 않았기 때문에 개인의 정보는 전혀 누출된 것이 없습니다.
그렇다면 애플은 왜 이 데이터를 굳이 핸드폰에 보관했을까요? 사실 기능적으로야 필요할 때 마다 애플의 서버에 WiFi/셀타워 맥어드레스를 이용해 위치 정보를 얻어온다고 하지만, 전 세계적으로 1 억대가 넘게 팔렸다는 아이폰 유저와 아이팟 터치 유저가 30초마다 이런 요청을 해 온다면 서버에 걸리는 부하가 어마어마 할 것입니다. 이런 부하를 절반으로 줄이게 되면 그게 다 비용의 절감이 되는 것이죠. 어짜피 이런거 해준다고 사용자가 돈 더 내주는 거 아니니까 웬만하면 비용을 절감하게 하는 쪽으로 갑니다.
보통 사람이 움직이는 경로는 매일 비슷비슷합니다. 집에서 회사에 갔다가 다시 집으로 오고, 주말엔 자주 가는 쇼핑센터나 교회 같은 곳에 가게 마련입니다. 따라서 이렇게 자주 가는 지역의 WiFi/셀타워 정보를 기기 내에 미리 가지고 있다면 이를 애플 서버에 요청할 필요가 없어집니다. 이것은 이전에 애플에서 내려받은 것이든, 혹은 자기 기기에서 취합된(Harvest) 것이든 마찬가지입니다.
이것이 바로 스마트폰 내에 이런 정보가 저장되는 이유입니다. 100번 요청할 것을 10번으로 줄인다면 비용이 10분의 1이 되는데 안할 이유가 없습니다. 그런데 얼핏 본 자료에서는 안드로이드의 경우 7일간만 이 자료를 유지하는데 아이폰에서는 구입한 이후의 자료가 모두 저장되어 있어 문제가 된다는 이야기가 있었습니다. 사실 사람이 움직이는 패턴은 7일 단위로 반복됩니다. 월화수목금이 비슷하고 토와 일이 반복됩니다. 그래서 사실 7일 이상의 데이터를 보관해도 효율상 큰 차이가 없을 것으로 보입니다. 그것이 구글이 7일만 위치정보를 보관하는 이유일 것입니다. 하지만 애플은 이 최적화를 하지 않았고, 이것이 이번에 문제가 된 것입니다. 또한, 이 정보가 아이폰 뿐만 아니라 아이폰을 관리하는 PC에 백업된다는 것이 결정적 문제입니다.
(참고로, GPS 스위치를 껐는데도 이 자료가 저장되더라는 소리는, 수집(Harvest)은 GPS를 끄면 중단되더라도, 주변의 WiFi/셀타워 정보를 이용해 애플 본사에서 받아오는 위치 정보는 계속 받아와서 기록한다는 소리입니다. 따라서 GPS를 끄면 수집이 중지되는 것이 맞으며, 이는 WiFi 아이패드에 GPS가 없어도 위치를 알 수 있는 것과 같습니다.)
이 내용을 꼼꼼하게 읽으신 분이라면 “그럼 애플이 내 신상 정보를 안 가져갔다는 소리니까 별 문제가 없는 건가?” 라는 생각을 하실 수 있을 겁니다. 하지만 이번에 문제가 된 것은 애플이 개인의 신상정보를 가져갔느냐 아니냐가 아닙니다. 따라서 애플이 내 개인의 위치정보를 털어간게 문제라는 식의 발언은 사실 관계를 모르고 잘못 말하는 것입니다.
이번에 진짜 문제가 되는 것은, 이 자료가 지속적으로 자신의 스마트폰과 PC에 저장된다는 점입니다. 만약 부당하게 지명수배된 방송국 PD라던가 학생 회장이 아이폰을 사용하고 있다면, 정부 당국이 그 사람의 PC를 압수해서 이 백업 파일을 찾아내면 그 사람의 과거 행적을 명백하게 알 수 있다는 소리입니다. 특히 그 WiFi/셀타워의 위치 정보를 기록한(혹은 서버로부터 다운로드 받은) 시간이 TimeStamp 로 저장되는데, 이것을 이용하면 언제 그 곳에 갔는지도 드러나게 됩니다.
또한, 이 아이폰/백업된 PC를 분실할 경우 도둑이 이 파일을 분석해서 소유주가 주기적으로 집을 비우는 시간을 알아내거나 어디에 사는지 대략적인 위치를 찾아내는 것도 가능해 집니다.
따라서, 이런 파일은 원래 암호화를 하고, 그렇게 암호화를 하더라도 며칠간의 자료만 보관하는 것이 맞습니다. 가능하면 아예 보관을 하지 않거나, 하더라도 1시간 이내의 자료만 보관하는 등으로 처리하는 것이 적절합니다. 그러나 애플은 이를 암호화하지도 않았고, 이전 데이터를 정리하지도 않았으며, 심지어 이를 PC에 백업까지 하는 등 매우 부주의한 모습을 보였습니다.
인터넷 커뮤니티 등에는 애플이 이 정보를 악용하기 위해 보관한 거라는 주장을 하시는 분도 계시던데, 객관적으로 볼 때 애플이 개인의 위치 정보를 이용하고 싶었다면 스마트폰이나 PC에 저장하는 것이 아니라 애플 서버로 보내고 지워버렸어야 합니다. 그런데 이 데이터를 이렇게 둔 것은 아무리 봐도 개발자나 설계자의 실수로 보입니다. 말하자면 잡스가 말한 “버그”가 맞다는 소리입니다. 잡스가 “교육이 안되서..” 식의 개드립을 친 것은 욕먹어 마땅한 일이지만 아무튼 그건 잡스의 태도 문제이고, 이 사안 자체는 아무리 봐도 애플의 대형 실수일 가능성이 높아 보입니다. 아마도 이 파일을 그대로 둔 개발 담당자는 욕 좀 먹거나 Layoff 됐을 가능성도 있을 정도의 실수입니다. 하지만 개발자의 입장에서 볼 때 부주의하게 내버려두기 딱 좋은 형태의 실수인 것도 사실입니다.
이번 사안에 대해 충분히 이해하셨기 바라며, 애플이 어서 이 문제를 고치고, 앞으로는 좀 책임있고 겸손한 자세와 답변을 하기를 바랍니다.