프라이버시, 추적방지를 위해서는 VPN이 아닌 토르를 써야 하는 이유

우리가 인터넷으로 하는 모든 세세한 행동 하나하나는 전부 기록으로 남는다. 언제 어떤 검색어를 검색했는지, 커뮤니티에서 어떤 글을 클릭해서 읽었는지, 그 글에 얼마나 오래 머물렀는지, 그 글의 스크롤을 어디까지 내렸는지, 글의 어느 부분에 스크롤이 오래 머물렀고 어느 부분에 마우스 포인터를 집중적으로 가져다 댔고 클릭을 했는지,* 페이스북 상태메시지에 어떤 내용을 적었다가 다시 지웠는지 등, 말 그대로 모든 게 광고회사의 트래커에 의해 수집돼 영구적으로 데이터베이스에 기록으로 남을 수 있다.

디씨인사이드에 달려 있는 수많은 트래커들. 이들이 여러분들의 행동패턴을 기록으로 남기고 있다.
다른 사이트는 더 심하다. 미국의 유명 테크 뉴스 사이트인 Wired.com.

이러한 데이터는 트래커 운영회사 혼자서만 가지고 있는 것이 아니라, 데이터 브로커를 통해 변호사, 수사관, 자동차산업, 다른 데이터 브로커, 교육기관, 에너지, 정부, 관광여가, 개인고객, 보험,* 대출기관·금융, 마케팅·광고, 미디어, 비영리·정치켐페인, 제약, 부동산, 소매, 기술기업, 통신기업 등에게로 판매된다.*

사실 내가 언제 어떤 유머사이트에서 어떤 유머글을 클릭했다는 사실은 너무 평범한 거라, 그게 어딘가에 기록으로 남거나 남에게 알려진다 해도 딱히 부끄럽지 않을 수 있다. 그러나 그런 하나하나의 평범한 데이터들이 쌓여서 이른바 ‘빅데이터’가 되면, 기업들은 그 빅데이터를 통계적으로 분석해 그 사람에 대한 아주 깊이 있는 정보를 알아낼 수 있다는 것이 문제다. 예를 들어, 영국 캠브릿지 대학교와 마이크로소프트 소속의 3명의 연구진은 연구대상자들이 페이스북에서 ‘좋아요’를 어디에 눌렀는지만 보고(연구대상자 평균 170개의 ‘좋아요’) 그 사람의 성적 지향, 인종, 종교, 정치적 견해, 성격, 지능, 행복도, 마약 사용 여부, 부모 이혼 여부, 나이, 성별 등을 정확하게 예측해 냈다(Kosinski et al., 2013). 또 다른 연구자들은 인스타그램에 올라온 사진을 머신러닝으로 분석해 그 사람이 미래에 우울증으로 진단받게 될지를 예측해 내기도 했다(Reece & Danforth, 2017).

이렇게 극도로 제한적인 데이터에만 접근 가능한 소수의 연구자들이 이만큼을 알아낼 수 있다면, 이보다 훨씬 다양하고 풍부한 데이터를 수집해 장기간에 걸쳐 분석할 수 있는 구글, 페이스북 등의 기업들이 얼마나 많은 걸 알아낼 수 있을지는 감히 상상하기도 어렵다.

물론, ‘나는 남에게 보여주기 부끄럽거나 숨겨야 할 것을 하나도 갖고 있지 않기 때문에, 이런 식으로 나에 대한 빅데이터가 수집·분석돼도 상관없다.’라고 생각하는 사람들도 있을 것이다. 그러나 이는 근시안적인 생각이다. 본인 신상에 대한 자세하고 구체적인 데이터가 유출되면, 공격자들은 그 정보를 토대로 본인에게 딱 맞게 최적화된 공격전략을 구상할 수 있게 된다.

예를 들어 보이스피싱 범죄자들은 데이터 브로커로부터 여러분에 대한 자세한 신상정보를 구입해서 연구한 다음, 대상자가 강의, 회의에 참석해 있어서 당장 통화가 어려울 확률이 높은 시간대를 골라, 대상자의 부모님에게 전화해서 상식적으로 본인 또는 본인과 아주 가까운 친구가 아니면 알 수 없을 거라고 생각될 만한 사적인 내용들을 아주 구체적으로 언급하면서 지금 빨리 돈을 부치지 않으면 여러분이 위험에 처할 거라며 급박한 분위기를 조성해 보이스피싱을 성공시킬 수 있다. 조선족 알바들이 무차별적으로 하는 수준 낮은 피싱은 정신만 똑바로 차리면 걸러낼 수 있지만, 이처럼 대상자에 대한 구체적이고 자세한 정보를 가지고 하는 스피어 피싱spear phishing은 잘 훈련받은 사람들도 꼼짝없이 당할 수밖에 없다는 게 보안업계의 중론이다.

또 다른 예로, 캠브릿지 애널리티카Cambridge Analytica 같은 데이터 분석 회사들은 페이스북, 데이터 브로커 등으로부터 국민들에 대한 데이터를 입수해, 이를 토대로 국민 개개인별로 근본적인 심리구조나 세상을 바라보는 관점·방식이 어떤지를 통계적으로 추론한 다음, 각 개개인에게 딱 맞게 최적화된 뉴스를 최적 시점에 전달함으로써 그들이 원래 같았으면 전혀 뽑을 생각이 없었을 후보에게 투표하게 만들 수 있다. 이게 사실인지가 정확히 확인되지는 않았지만 캠브릿지 애널리티카는 위와 같은 워딩으로 고객들에게 마케팅을 했고, 미국 트럼프 대통령은 캠브릿지 애널리티카에 돈을 지불했으며, 실제로 대통령에 당선됐다.

보안과 프라이버시는 서로 떼 놓을 수 없는 관계이며, 본인에게 전혀 숨길 것이 없다 해도 보안수준을 높이기 위해서는 어쩔 수 없이 프라이버시 수준도 높여야만 한다는 것을 알 수 있다. 군대에서 군 시설의 정확한 위치, 규모, 구조, 병력 등을 기밀로 유지하는 것과도 같은 맥락이다. 군대가 자국 영토 내에서 적법하게 주둔하며 각종 시설물을 설치하고 병력을 편제하는 것은 전혀 남 보여주기 부끄럽거나 숨겨야 할 일이 아니지만, 그런 자세한 정보가 적에게 노출되면 적이 공격하기가 쉬워지기 때문에 그걸 기밀로 유지하는 것이다. 개인이 프라이버시를 유지해야 하는 이유도 이와 같다.

또한, 본인이 아닌 ‘다른 사람’의 개인정보 보안과 프라이버시를 지키기 위해서라도 본인의 보안과 프라이버시를 유지할 필요가 있다. 자기 휴대폰 카톡을 아무나 볼 수 있게 공개해 놓으면 자기가 보낸 카톡뿐만 아니라 남들이 자기한테 보낸 카톡도 공개된다. 자기가 페이스북 메신저를 사용하면 자기가 보낸 메시지만 페이스북에 의해 수집·분석되는 것이 아니라 남들이 자기한테 보낸 메시지도 페이스북에 의해 수집·분석된다. 친구와 약속을 잡고 그 일정을 구글 캘린더에 등록해 놓으면, 구글은 그 약속시점에 그 약속장소에 친구가 올 거라는 사실을 알게 된다. 자기가 구글 지메일을 사용하면, 설령 자기한테 이메일을 보내는 사람이 프로톤메일 등 보안 이메일 서비스를 사용한다 하더라도 그 이메일 내용이 구글에 의해 수집·분석될 수밖에 없다. 실제로 구글은 지메일이 아닌 다른 메일 사용자가 지메일 사용자에게 보낸 메일 내용도 분석해서 개인 프로파일링에 활용하는 것으로 알려져 있다.* 본인의 프라이버시 수준은 본인의 가족, 친구, 고객에게도 필연적으로 영향을 미친다.

물론 평상시라면 이렇게 서로 간에 주고받는 메시지들이 노출되거나 수집·분석돼도 별 상관 없을 수 있겠지만, 미래에 예외적인 일이 생길 수 있을지 그건 또 모르는 것 아닌가. 가령 가까운 친구가 다른 사람 다 제쳐 두고 나를 가장 믿을 만하다고 생각해서, 오프라인으로 만나서 힘들게 고민거리를 털어놓았다고 하자. 그러면 구글, 페이스북, 스마트폰에 설치돼 있는 각종 앱 회사들을 비롯한 데이터 수집 전문기업들은 본인과 친구 사이의 메시지 내용, 본인 및 친구의 GPS 위치정보(서로 떨어진 곳에서 출발해서 같은 위치로 이동한 뒤, 그 때부터는 2개의 신호가 장시간 동안 동일한 이동경로를 따라 움직인 사실), 본인 및 친구가 동일한 와이파이에 접속한 사실 등을 통해 둘이 만났다는 사실을 알 수 있다. 만약 여러분이 그 직후부터 친구가 꺼낸 그 주제와 관련된 정보를 인터넷에 검색하기 시작한다면, 트래커들은 그 자리에서 어떤 내용의 대화가 오갔는지를 간접적으로 다 알 수 있게 되는 셈이다. 친구가 좋아할까?

꼭 친구 간에만 이런 일이 생기는 것도 아니다. 예를 들어 여러분이 국정원 간첩 조작 사건에 휘말려 대한민국 또는 검사를 상대로 소송하기 위해 변호사를 찾았는데, 변호사가 여러분과 대화할 때 카카오톡, 이메일 등 국정원이 손쉽게 감시할 수 있는 방법을 이용하면 기분이 좋을까? (실제로 미국 NSA는 미국을 상대로 소송하는 외국 정부와 그를 대리하는 미국로펌 사이의 대화내용을 감청한다.*) 변호사가 소송을 준비하면서 인터넷으로 관련 법령, 자료를 찾아보면 소송상대방인 국정원은 변호사가 어떤 전략을 구사할지 사전에 다 알 수 있게 되는데 피고인 본인 입장에서 그게 과연 달가울까. 본인 1명에게는 전혀 숨길 것도 부끄러울 것도 없고 보이스피싱 등 보안에도 전혀 관심 없다 하더라도, 본인과 업무적으로 관계맺고 있는 다른 사람들을 배려하기 위해서는 어쩔 수 없이 보안 유지를 해야 한다.

그럼, 구체적으로 어떻게 해야 정보보안을 유지하고 데이터 브로커들의 무차별적인 빅데이터 수집을 막을 수 있을지 생각해 보자.

HTTPS로 방어가 가능할까?

불가능하다. 이는 정부가 2018년 말 HTTPS 차단을 시행한 이후뿐만 아니라, 그 이전에도 원래부터 불가능했다. 그림을 보면 쉽게 알 수 있을 것이다.

요약하면, HTTPS는 사용자와 사이트 사이에 있는 네트워크 감시자는 어느 정도 막아줄 수 있지만 목적지 사이트에 붙어 있는 트래커는 막을 수 없기 때문에 방어효과가 매우 제한적이다.

DNS 및 SNI 암호화를 하면 방어가 가능할까?

불가능하다. 많은 사람들이 정부의 차단·검열과 감시를 혼동하는 경향이 있는데, 사실 차단하지 않아도 감시는 얼마든지 가능하다. 그냥 가만히 지켜보기만 하면 되는 거니까. DNS/SNI 암호화는 차단 회피용으로는 아주 좋지만 감시에 대해서는 유의미한 수준의 방어력을 제공해 주지 않는다. DNS와 SNI가 암호화되더라도 사용자가 어떤 IP주소와 통신하는지는 숨겨지지 않기 때문이다. 네트워크 감시자는 그 IP주소를 보고 사용자가 어떤 사이트에 들어가는지를 알아낼 수 있다. 이를 reverse DNS라고 한다. 물론 요즘은 특정 IP와 연결된 웹사이트가 1개만 있는 것은 아니므로 reverse DNS를 하면 여러 개의 주소가 나오겠지만, 가령 그 중 443포트로 통신하는 도메인이 5개 있는데 그 중 한국인이 자주 들어가는 사이트는 1개밖에 없다면, 그 IP와 443포트로 통신하는 한국인이 어떤 사이트를 이용하고 있었을지는 뻔하다.

그리고 DNS 및 SNI 암호화는 ISP 등 네트워크 감시자가 아닌, 사이트 자체에 달려 있는 구글, 페이스북, 트위터, 네이버 등 서드파티 트래커에 대해서는 아무 효과도 없다. 그들은 HTTP를 쓰든, HTTPS를 쓰든, DNS/SNI 암호화를 하든 말든 똑같이 계속 추적을 한다. 왜냐하면 그들은 HTTPS, DoH, ESNI로 암호화된 트래픽의 정당한 수신자로서, 암호화가 해제된 평문cleartext 데이터를 그냥 받아 보는 위치에 있기 때문이다.

VPN을 쓰면 방어가 가능할까?

불가능하다.우선 VPN이 뭔지 기초개념을 간단히 잡고 가자. VPN은 원래 회사 밖에서 회사 인트라넷에 접속하기 위해 쓰는 프로그램이다. VPN 클라이언트 프로그램을 이용해 회사 내에 있는 VPN 서버에 접속하면 컴퓨터가 회사 공유기에 직접 연결된 것과 같은 상태가 된다. 따라서 회사 인트라넷에 접속할 수 있을 뿐만 아니라, VPN에 연결된 상태로 인터넷을 하면 회사 공유기 IP주소로 인터넷을 하는 것처럼 된다. 단순히 VPN의 역사적인 유래가 그렇다는 이야기가 아니라, 2019년 현재 기준으로도 VPN 수요의 대부분을 차지하는 것은 ProtonVPN 같은 소비자용 VPN이 아닌 이런 회사용 VPN이다. 애초에 정부가 VPN 전면 차단을 껄끄러워하는 것도 이 때문이다. VPN을 마구잡이로 차단해 버리면 회사업무에 막대한 지장이 초래될 가능성이 있어서다. 일반인들이 흔히 생각하는 것처럼 VPN이 야동 보는 데만 쓰는 물건이었다면 다른 나라도 아니고 그 대한민국 정부가 이미 VPN을 차단하지 않았을 리 없다. 야동을 규제하지 않는 미국에서 개발된 운영체제인 Windows, macOS, 그리고 각종 리눅스 배포판들이 운영체제 자체에 VPN 기능을 탑재하고 있는 것도 그걸 필요로 하는 기업 사용자들이 워낙 많아서다.

애초에 VPN이라는 이름부터가 그 뜻이다. VPN은 가상 사설망virtual private network의 약자로, 여기서 사설망private network이라는 것은 프라이버시 추구자들이 흔히 생각하는 것처럼 ‘내가 인터넷에서 하는 활동은 오직 나만이 볼 수 있는 프라이빗한 공간…’이라는 뜻이 절대로 아니고, 그냥 ‘인트라넷’ 내지 ‘랜LAN’을 뜻하는 기술용어일 뿐이다. 우리가 가정용 공유기 하나에 컴퓨터 여러 대, 스마트폰, 프린터, NAS 같은 걸 물려 놓았을 때 그 공유기 안에서 서로서로 통신하는 네트워크를 이르는 말이 바로 사설망이다. 공유기에 물리적으로 연결돼 있는 장비들로 구성된 네트워크는 물리적 사설망이라고 부르고, 공유기에 물리적으로 연결돼 있지는 않지만 암호화 기술을 통해 마치 원격지의 공유기에 물리적으로 연결되어 있는 것과도 같은 효과를 내는 것은 가상 사설망VPN이라고 부른다.

ProtonVPN, ExpressVPN, NordVPN을 비롯해 시중에 나와 있는 소비자용 VPN들도 회사 인트라넷 접속용 VPN과 동일한 프로토콜, 동일한 알고리즘을 이용한다. 다만 VPN으로 접속하는 목적지가 소속 회사 서버가 아니라 VPN 공급자의 서버, 정확히 말하면 VPN 공급자가 세계 각지의 데이터센터 회사로부터 임차한 서버라는 것만 다를 뿐이다. 그래서 VPN에 접속하면 그 VPN 서버의 인트라넷에 접속할 수 있으며(소비자용 VPN의 경우 그 인트라넷에 VPN의 DNS 서버가 존재하며 이는 DNS leak을 막는 역할을 한다), 그 상태로 인터넷을 하면 마치 그 VPN 서버의 IP주소에서 인터넷을 하는 것처럼 된다.

그러면 VPN이 보안, 프라이버시에 별 도움이 안 되는 이유는 무엇일까. 근본적인 문제는 VPN이, 설령 보안과 개인정보를 중시하는 신뢰성 있는 VPN이라 할지라도, IP주소를 가려 주는 것 외에는 정말 아무것도 해 주지 않는다는 것이다. 일반인들은 인터넷상에서 자신을 특정할 수 있는 정보가 IP주소 하나만 있을 거라고 생각하는 경우가 많지만 현실에서 구글, 페이스북 등 트래커들은 사용자를 특정하기 위해 IP주소에 의존하지 않는 경우가 대부분이다. 왜냐하면 ① 회사, 원룸, 카페에서와 같이 하나의 와이파이 공유기에 여러 사람들의 컴퓨터, 노트북, 스마트폰이 물려 있는 경우 그들은 전부 1개의 IP주소를 공유하기 때문에 IP주소는 개개인에 대한 식별력이 없고, ② 노트북으로 이 카페 저 카페를 번갈아 이용하거나, 스마트폰으로 지하철역 와이파이를 잡았다가 지하철 탑승 후에는 객실 내 와이파이를 잡거나, 스마트폰 LTE, 5G 데이터를 쓰면서 이동하는 도중 다른 기지국으로 접속이 넘어가는 경우 1명의 개인이 쓰는 IP주소도 수시로 바뀌기 때문에 지속적인 추적이 불가능하기 때문이다.

이 때문에 스마트폰과 와이파이가 본격적으로 보급되기 이전 시대에도 트래커들은 IP주소를 중히 여기지 않고, 대신 개별 사용자마다 고유하게 부여된 식별자를 넣은 쿠키를 이용해서 사용자를 추적했다. 그러나 쿠키를 이용한 추적은, 그게 가능하다는 게 잘 알려져 있지 않던 시절에는 효과적이었지만 요즘은 쿠키로 추적을 한다는 게 너무나 잘 알려져 있고, 그게 잘 알려져 있는 상황에서는 사용자 입장에서 지나치게 방어가 쉽다는 문제가 있다. 애초에 태생 자체가 사용자 추적을 위해 만들어진 구글 크롬은 논외로 한다면, 파이어폭스, 마이크로소프트 엣지는 모두 제3자 쿠키 차단 기능과 브라우저 종료 시 자동으로 쿠키를 전부 삭제해 주는 기능을 쉽게 활성화할 수 있다. 파이어폭스의 경우에는 원래 토르 브라우저에 처음 도입됐던 기능인 first-party isolation을 활성화함으로써 동시에 여러 사이트를 이용하는 경우 각 사이트마다 쿠키를 공유하지 못하게 하는 것도 가능하다.

그래서 요즘 트래커들은 쿠키와 함께 브라우저 핑거프린팅browser fingerprinting이라는 추적 기술을 이용한다. 개개의 사용자들이 쓰는 개개의 브라우저들은 지문처럼 각기 고유한 특성을 갖고 있기 때문에 이를 통해 동일 브라우저 사용자를 지속적으로 추적할 수 있다. 몇 년 전부터는 같은 기기 내에서 브라우저를 다른 회사 것으로 바꾸더라도 여전히 동일하게 유지되는 특성들이 많다는 사실이 알려지면서, 브라우저 핑거프린팅이라는 용어는 브라우저를 바꾸면 핑거프린팅을 피할 수 있을 것이라는 잘못된 인상을 줄 우려가 있어서인지 이제는 디바이스 핑거프린팅device fingerprinting이라는 용어도 점차 사용되는 추세다. 핑거프린팅에 대한 초심자를 위한 리뷰로는 Laperdrix et al. (2019)을 참조하기 바란다.

이 때문에 요즘은 핑거프린팅 방지도 하나의 마케팅 포인트가 되어, 브레이브, 애플 사파리 등 핑거프린팅 방지 기능을 내세우는 브라우저가 시중에 많이 나와 있다. 그러나 이런 브라우저들의 핑거프린팅 방지 기능은 생각만큼 효과적이지 못하다. 웹브라우저에 있어서 핑거프린팅 방지란, 지문이 남는 것 자체를 막아주는 것이 아니라, 아주 많은 사람들이 똑같은 지문을 갖게 함으로써 트래커 입장에서 그 지문만 가지고는 누가 누군지 구별하지 못하게 하는 것을 말한다. 그러나 브레이브, 사파리는 모든 브레이브 사용자, 모든 사파리 사용자의 핑거프린트를 똑같게 만들어 주지 못한다. 실제로 브레이브, 사파리를 가지고 테스트해 보면, 유저의 창 크기viewport, 아이폰 사용자의 iOS 버전이 12.1인지 12.2인지, 언어가 한국어로 설정돼 있는지 일본어로 설정돼 있는지, 타임존이 서울로 설정돼 있는지 도쿄로 설정돼 있는지(서울과 도쿄는 GMT+9시간으로 시간 자체는 동일하지만 타임존 이름은 KST, JST로 다르며 이는 트래커 입장에서 구분 가능하다), 현재 배터리 충전 퍼센트, WebGL 핑거프린트 등이 노출되는 것을 확인할 수 있다.

이들 브라우저가 핑거프린팅을 완벽하게 못 막는 이유는 여러 가지인데, 일단은 브라우저 핑거프린팅에 활용될 수 있는 기법이 워낙 다양하기 때문에* 그걸 일일이 다 막는 게 현실적으로 불가능하다는 점을 들 수 있다. 또한 브라우저 핑거프린팅은 오로지 핑거프린팅만을 위해 존재하는 기능을 이용해 작동하는 것이 아니라, 웹이 정상적으로 작동하기 위해 꼭 필요한 기능을 이용해 거기에 ‘얹혀서’ 작동하는 경우가 많기 때문에, 브라우저 핑거프린팅을 철저하게 막으면 웹사이트가 깨질 수 있다. 브레이브가 페이스북, 트위터의 트래킹 스크립트를 일부러 안 막은 것도 이와 관련이 있다.*

브레이브, 사파리는 사용자가 각종 세세한 설정을 쉽게 건드릴 수 있다는 것도 문제다. 설정을 바꾸는 것 자체가 일종의 핑거프린트로 작용하기 때문이다. 가령 브레이브의 기본 쉴드 설정은 이렇게 되어 있다.

  • 제3자 쿠키 차단 (first-party 쿠키는 허용)
  • 모든 자바스크립트 허용
  • 제3자 브라우저 핑거프린팅 차단 (first-party의 브라우저 핑거프린팅은 허용)

이러한 디폴트 세팅 하에서는 first-party의 핑거프린팅이 무차별적으로 허용된다는 단점이 있다. (First-party란, 예를 들어 디씨인사이드에 들어갔는데 거기 네이버 트래커가 달려 있다고 할 때, 디씨인사이드 사이트 자체가 first-party이고 네이버가 제3자 즉 third-party다. 반대로 네이버 사이트에 들어갔을 땐 네이버가 first-party가 된다.) 그래서 프라이버시에 좀 신경쓴다 싶은 사람들은 이걸 디폴트 상태로 놔 두지 않고 first-party 핑거프린팅까지 차단하도록 설정을 바꾸고 싶을 것이다. 하지만 그런 식으로 디폴트 설정을 굳이 바꾸는 사람은 극소수에 불과하기 때문에, 그걸 그렇게 바꿨다는 사실 자체가 일종의 핑거프린트로 작용할 위험이 있다. 그렇다고 그걸 안 바꿀 수도 없는 것이, 디폴트 설정을 그냥 놔 두면 first-party에 의해 핑거프린팅을 당하기 때문이다. 이래도 문제, 저래도 문제인 것이다.

브라우저 단에서 핑거프린팅 방지기능을 아무리 강력하게 구현한다 하더라도 근본적으로 방어가 불가능한, 네트워크 레벨에서의 핑거프린트도 존재한다. 대표적인 예시가 IP주소다. 앞서 IP주소는 여러 사람이 하나의 IP를 공유하는 경우도 많고, 한 사람의 IP도 수시로 바뀌기 때문에 이를 이용한 추적이 어렵다고 했지만 그렇다고 IP가 완전히 무가치한 정보인 것은 아니다. 특히 VPN을 쓰는 경우에는 스마트폰 LTE로 기지국 사이를 이동하더라도 IP가 동일하게 유지되기 때문에 추적이 더 쉬워지는 측면도 있다. IP주소가 갖고 있는 트래킹 정보로서의 가치는, 서로 다른 IP를 사용하는 사람은 서로 다른 사용자일 가능성이 높다는 것이다. IP가 같다고 같은 사람이라는 보장은 없지만 IP가 다르면 다른 사람일 가능성이 아무래도 높으므로, 역으로 IP가 같으면 같은 사람일 가능성이 ‘꽤’ 있다고 볼 수 있다.

이 때문에 안 그래도 취약한 브라우저 핑거프린팅 방어 기능이 더 취약해진다. 아이폰 사파리의 경우 트래커들은 브라우저 핑거프린팅을 통해 사용자가 아이폰XR, iOS 13.1, 언어 설정은 한국어, 시간대 설정은 한국 시간이라는 사실을 쉽게 알 수 있으나, 이 조건에 해당하는 사람이 한두 명은 아니므로 이것만으로는 추적이 어려울 수 있다. 그러나 이 조건에 모두 해당하는 동시에 지금 현재 ProtonVPN US-FREE-2 IP주소를 쓰고 있는 사람의 수는 한두 명에 불과할 가능성이 높다. 이로 인해 사이트 간cross-site 추적이 가능해진다. 어떤 VPN 사용자가 크롬 시크릿모드 창을 열어 비밀사이트에 들어갔다가, 창을 닫은 뒤, VPN을 그대로 켜 둔 상태로 다시 크롬을 열어 유튜브로 들어가면 방금 그 비밀사이트에 들어갔던 행위가 본인의 구글 계정과 연동될 수 있다는 것이다. 물론 직접적으로 구글에 로그인한 상태로 한 행위는 아니므로 구글의 내 활동My Activity 페이지에 그게 뜨지는 않지만, 거기 안 뜬다고 구글이 관련 기록을 안 갖고 있는 것은 아니다. 이렇게 기업들이 유저 몰래 갖고 있는 개인 활동내역들을 그림자 프로필shadow profile이라고 부른다. VPN으로는 이런 그림자 프로필이 생기는 것을 막을 수 없다. 반면 토르 브라우저는 사이트 간 트래킹이 불가능하다.

게다가 위 문단에서는 편의상 같은 VPN 서버에 접속한 서로 다른 사용자를 IP주소만 갖고는 구분할 수 없는 것처럼 서술했지만, 실제로는 그것도 구분이 가능하다. VPN에 접속해 있는 사용자 1명은 통상 다음과 같은 4개의 IP 주소를 가진다.

① 집 외부 IP주소 81.4.175.181: 우리가 흔히 IP주소라고 부르는 게 바로 이것이다. 본인 신상과 연계된다.

② 집 내부 IP주소 192.168.1.106: 본인 집에 있는 공유기가 컴퓨터, 스마트폰 등 기기마다 할당하는 주소로, 이것만 가지고 특정인의 신상을 추적할 수는 없다. 다만 각 기기들은 서로 다른 내부 IP를 부여받으며, 이 내부 IP는 해당 기기가 공유기에 연결돼 있는 동안에는 일정하게 유지되기 때문에 한 공유기에 연결된 개별 기기들을 구분하는 용도로는 쓰일 수 있다. VPN을 사용하더라도 WebRTC를 통해 누출되는 경우가 있으며 이는 WebRTC leak이 없다고 광고하는 VPN을 쓰더라도 마찬가지다. VPN 업계에서 WebRTC leak이란 VPN을 사용함에도 불구하고 WebRTC를 통해 사용자의 집 외부 IP주소가 누출되는 것을 뜻하고, WebRTC leak free란 WebRTC를 통해 사용자의 집 외부 IP주소가 누출되지는 않는 것을 뜻할 뿐이다. 실제로 WebRTC leak이 없다고 광고하는 VPN 회사들도 내부 IP주소는 여전히 WebRTC를 통해 노출된다는 사실을 공식적으로 인정하면서, 내부 IP주소로는 신상을 특정할 수 없으니 안심해도 좋다고 말하고 있다.

사실 VPN 회사가 공식적으로 인정하는지 여부는 중요하지 않다. 내가 직접 테스트했으니까.

③ VPN 외부 IP주소 185.213.155.133: VPN에 접속된 상태에서 웹사이트 및 트래커들이 직접적으로 보게 되는 IP주소가 이것이다. 한 VPN 서버에 접속해 있는 수많은 사용자들은 동일한 VPN 외부 IP주소를 갖기 때문에 딱 이거 하나만 가지고 특정 사용자를 구분해 내는 것은 불가능하지만, 앞서 살펴본 것처럼 브라우저 핑거프린트 등 다른 정보와 조합해서 구분해 내는 것은 가능할 수 있다.

④ VPN 내부 IP주소 10.8.1.12: VPN 서버가 개개의 VPN 사용자에게 할당하는 주소로, 이것만 가지고 특정인의 신상을 추적할 수는 없다. 다만 각 사용자들은 서로 다른 내부 IP를 부여받으며, 이 내부 IP는 해당 사용자가 해당 VPN 서버에 연결돼 있는 동안에는 일정하게 유지되기 때문에 한 VPN 서버에 연결된 개별 사용자들을 구분하는 용도로는 쓰일 수 있다. 이 주소는 WebRTC leak이 없다고 광고하는 VPN을 쓰더라도 WebRTC를 통해 거의 무조건 노출된다. WebRTC를 통해 VPN 내부 IP주소가 누출되는 것은 애초에 WebRTC leak이라고 부르지도 않으며, VPN 클라이언트 프로그램에 사용자 웹 브라우저의 WebRTC를 강제로 끄는 등의 침해적인 기능을 넣지 않는 한 이걸 VPN 레벨에서 막는 것은 기술적으로 거의 불가능하다.

이러한 VPN 내부 IP주소의 노출로 인해, 여러 명의 유저들이 동시에 브라우저 핑거프린트, TCP/IP 핑거프린트, VPN 서버까지 똑같이 맞춘다 하더라도, 이들이 전부 브라우저 단에서 WebRTC 기능을 꺼 놓지 않은 한, 트래커는 개별 유저를 구분해 내는 것이 가능하다. 본인 혼자서만 WebRTC를 끄는 것은 대책이 될 수 없다. 그걸 껐다는 사실 자체가 본인에게 고유한 핑거프린트로 작용하기 때문이다. 게다가 설령 모두가 그걸 끔으로써 VPN 내부 IP주소가 노출되지 않게 한다 해도 앞서 살펴본 것처럼 VPN 외부 IP주소와 디바이스 핑거프린트의 조합으로 개별 사용자를 식별해 내는 것은 여전히 가능하다.

나아가 서로 다른 사이트에 들어갈 때마다 VPN 서버를 바꾼다고 해도 사이트 간 추적 문제는 해결되지 않는다. 우리 컴퓨터에서 인터넷에 접속하는 프로그램은 웹브라우저 하나만 있는 게 아니기 때문이다. 예를 들어 어떤 유저가 컴퓨터에 구글 드라이브를 설치해 놓았다고 하자. 그러면 구글은 다음과 같은 사실을 알 수 있다.

  • 2019-05-03 13:01-13:12. 유저가 VPN1 외부 IP로 구글 드라이브에 접속.
  • 2019-05-03 13:01-13:12. 특정 디바이스 핑거프린트를 가진 익명의 유저가 VPN1 외부 IP로 사이트1에 접속.
  • 2019-05-03 13:12. 유저의 구글 드라이브 접속이 끊김 (VPN 서버를 바꾸는 도중 ‘킬스위치’ 기능이 작동해서 접속이 끊긴 것)
  • 2019-05-03 13:12. 특정 디바이스 핑거프린트를 가진 익명의 유저가 사이트1에서 나감.
  • 2019-05-03 13:13-13:49. 유저가 VPN2 외부 IP로 구글 드라이브에 접속
  • 2019-05-03 13:13-13:49. 특정 디바이스 핑거프린트를 가진 익명의 유저가 VPN2 외부 IP로 사이트2에 접속.
  • 2019-05-03 13:49. 유저의 구글 드라이브 접속이 끊김
  • 2019-05-03 13:49. 특정 디바이스 핑거프린트를 가진 익명의 유저가 사이트2에서 나감

패턴이 뻔하다. 물론 이런 패턴 분석을 막기 위해 여러 개의 VPN 회사를 이용하고, 디바이스 핑거프린팅을 막기 위해 컴퓨터도 여러 개를 바꿔 가면서 이용하는 식으로 대응을 시도해 볼 수 있겠지만 한두 번도 아니고 24시간 365일 그 짓을 하려면 시간과 노력 소모가 너무 심하다.

참고로 꼭 구글 드라이브가 아니라도 컴퓨터 부팅시 자동 실행되어 계속해서 백그라운드에서 돌아가면서 자기네 회사 서버에 접속하는 프로그램들은 많다. Windows Defender, PC카톡, 스팀, 스카이프, 디스코드, 드랍박스, AhnLab Safe Transaction, AnySign4PC, 엔비디아 그래픽카드 드라이버, 로지텍 마우스 설정 프로그램…

VPN의 또 다른 문제는, 로그를 남기지 않는 VPN을 쓰더라도 VPN의 ISP는 로그를 남긴다는 것이다. 요즘 대부분의 VPN 회사들은 자기네는 사용자의 활동기록을 전혀 남기지 않는 no-logs VPN이라고 광고한다. 어떤 회사는 자기네 서버에는 하드디스크가 없고 램만 있기 때문에 실수로 기록이 남을 가능성조차 없는 구조라고 광고하기도 한다.

그러나 No-logs VPN은 마치 우리가 인터넷을 할 때 시크릿모드를 켜는 것과 똑같다. 시크릿모드를 켜면 브라우저는 하드디스크를 건드리지 않고 순수하게 램 위에서만 작동하기 때문에, 램 공간이 모자라는 경우 운영체제가 하드디스크에 램 데이터를 기록하는 ‘페이징 파일’에 남는 경우를 제외하고는(Said et al., 2011; Satvat et al., 2014), 시크릿모드를 켜고 브라우징을 한 뒤 시크릿모드를 끄면 관련 데이터가 본인 컴퓨터의 하드디스크에 전혀 남지 않는다. 그러나 시크릿모드를 켜서 본인 컴퓨터의 하드디스크에 기록을 남기지 않더라도 통신사에는 당연히 방문기록이 다 남을 것이다. 애초에 우리가 VPN을 쓰는 이유가 바로 이것 때문 아니겠는가?

기록을 남기지 않는 VPN 서버도 이와 같다. VPN 서버가 램에서만 돌아가도록 세팅돼 있어서 기록을 아예 남기지 않더라도, 그 VPN 서버에 인터넷 연결을 제공하는 데이터센터 관리자 및 그 데이터센터의 ISP는 기록을 남긴다. 실제로 2014년 네덜란드 경찰은 “absolutely no logs”라고 광고하는 VPN 회사인 EarthVPN 유저를 검거하기 위해, EarthVPN 회사는 아예 건너뛰고, 해당 VPN의 서버가 위치해 있는 ‘데이터센터’ 로그기록을 입수하여 EarthVPN 유저를 검거하기도 했다.* 참고로 EarthVPN은 2019년 현재까지도 이전과 동일하게 “absolutely no logs”라고 광고하고 있고,* 아마 그 광고는 사실일 것이다. 애초에 VPN 회사가 로그를 남기는지 여부는 그리 중요하지 않으며 로그를 남기지 않는다는 광고가 사실인지 여부도 중요하지 않다.

이 문제는 멀티홉multihop VPN을 쓰면 약간 완화되긴 하지만 근본적으로 해결되지는 않는다. ① 멀티홉 VPN도 VPN이기 때문에 사용자의 컴퓨터에서 생성된 TCP/IP 헤더가 그대로 암호화됐다가 멀티홉의 끝단에 있는 최종 VPN 서버에서 그대로 복호화된다. 이 때문에 웹사이트 측은 VPN 서버가 아닌, 사용자의 컴퓨터에서 생성된 TCP/IP 헤더를 그대로 볼 수 있고 이를 디바이스 핑거프린팅에 활용할 수 있다. ② 동일한 멀티홉 경로를 사용 중인 사람이 1명밖에 없을 가능성이 높아 익명성의 근본 원리에 위배된다. 예를 들어 사용자가 ProtonVPN JP1 서버와 Mullvad US2 서버를 거치는 더블홉double-hop VPN을 세팅했다고 하자. 이 경우 사용자가 어떤 사이트에 들어갔는지 알아내고 싶은 공격자는 ProtonVPN JP1 서버가 있는 데이터센터 협조를 얻어 사용자가 Mullvad US2 서버에 접속했음을 알 수 있고, Mullvad US2 서버가 있는 데이터센터의 협조를 얻어 ProtonVPN JP1 서버에서 들어온 사용자가 어떤 사이트로 들어갔는지를 알 수 있다. 만약 동일한 멀티홉 경로를 공유하는 사용자 수가 아주 많았으면 이런 식으로 VPN 경로를 단계별로 따라가면서 추적해 나가는 것은 불가능했겠지만, 멀티홉을 쓰는 사람 자체가 극소수에 불과하고 그 중에서도 정확히 동일한 멀티홉 경로를 쓰는 사람은 하나의 시점에 한 명밖에 없을 가능성이 높기 때문에 이런 식의 공격이 가능하다.

그래서 멀티홉 VPN을 쓰더라도, 일반적인 싱글홉 VPN보다 상대적으로 낫긴 하지만, VPN의 데이터센터 또는 ISP 로그를 통해 사용자를 추적할 수 있다는 문제점이 완전히 해결되지는 않는다.

토르 브라우저를 쓰면 방어가 가능할까?

출처: EFF

토르 브라우저는 미국 정부 및 시민단체의 자금지원을 받는 미국의 토르 프로젝트Tor Project, Inc.라는 비영리단체에서 개발한 오픈소스 프로그램이다. 토르 프로젝트의 투명성 보고서에 의하면 전체 펀딩 중 대략 50% 정도가 미국 정부에서 오고 나머지 50%가 민간에서 오고 있다고 한다. 토르 프로젝트는 장기적으로 미국 정부에 대한 펀딩 의존도를 줄이고 민간의 비중을 늘리려는 목표를 가지고 있다.

토르 브라우저는 기본적으로 브라우저 상에서 발생하는 모든 트래픽을 토르 프로토콜로 암호화해 중간 서버들을 거쳐 최종 목적지 웹사이트로 전달하며, 이 점에서 VPN과 비슷한 측면이 있다. 토르는 지금도 활발히 개발, 유지보수되고 있는 프로그램이기 때문에 토르에 적용되는 암호화 알고리즘도 시간이 지남에 따라 최신의 것으로 업데이트되는데, 지금 현재는 키 교환은 Curve25519, 데이터 암호화는 3중으로 반복된 AES128-CTR mode가 사용되고 있다.* 토르의 3중 암호화는 릴레이를 하나 거칠 때마다 하나씩 벗겨지며 이 때문에 토르의 상징이 양파가 됐다.

VPN과의 차이점은, VPN이 방어해 주지 못하는 부분에 대해서도 토르는 방어를 해 준다는 것이다.

우선 토르 브라우저는 쿠키, 캐시 등 오프라인 데이터 통한 추적을 기본적으로 차단한다. 토르 브라우저를 종료하면 자동으로 모든 쿠키 등 데이터가 삭제될 뿐만 아니라, first-party isolation 기능 덕에 토르 브라우저가 켜져 있는 상태에서 여러 개의 탭을 이용해 동시에 사이트A와 사이트B에 들어가는 경우 각 사이트마다 별개의 오프라인 데이터 저장소가 사용되므로, 사이트A와 사이트B에 모두 구글 트래커가 달려 있다 하더라도 구글은 현재 사이트A에 들어온 토르 사용자와 사이트B에 들어온 토르 사용자가 동일인이라는 사실을 알 수 없다. 각 사이트마다 IP주소도 자동으로 다르게 사용되므로 IP주소를 통해 알 수도 없다.

토르 브라우저에는 브라우저 핑거프린팅에 대한 방어 기능이 기본으로 들어가 있으며, 애초에 그것이 토르에서 굳이 별도의 브라우저를 개발한 목적이기도 하다. 구체적으로 토르 브라우저는 2018. 6. 15. 기준으로 플러그인을 통한 핑거프린팅, HTML5 캔버스 노출, WebSockets/XHR을 통한 TCP 포트 노출, NTLM/SPNEGO 인증 과정에서 호스트네임과 유저네임 노출, GamePad API를 통한 USB 장비 노출, 폰트 목록 노출, 창 크기 노출, 기기가 현재 가로 모드인지 세로 모드인지 등 CSS Media Queries 정보 노출, WebGL 렌더링 결과 노출, WebRTC, MediaDevices API를 통한 카메라, 마이크 장비 목록 노출, MIME Types 노출, Web Speech API를 통한 음성인식 기능성 노출, Touch API를 통한 간접적인 창 크기 노출, Battery Status API를 통한 배터리 충전 퍼센트 노출, Event.timestamp를 통한 시스템 업타임 노출, KeyboardEvent.code/keyCode를 통한 키보드 레이아웃 노출, User Agent 및 HTTP 헤더를 통한 시스템 정보 노출, 각종 타이밍 기반의 공격, resource://chrome:// 주소를 통한 언어 설정과 플러그인 설치 목록 노출, 사용자의 지역locale 설정 노출, 타임존 노출, 자바스크립트 구동 성능 측정을 통한 일종의 CPU 핑거프린팅, 키스트로크 패턴 분석을 통한 사용자 식별, navigator.hardwareConcurrency를 통한 CPU 코어 개수 노출, AudioContext API 등 오디오 관련 핑거프린팅, MediaError.message를 통한 핑거프린팅 가능성, navigator.onLine을 통한 연결 상태 노출, 파이어폭스의 Reader View 기능 관련한 프리페치 여부 노출, 파이어폭스 개발사인 Mozilla로의 텔레메트리에 대한 방어성능을 제공한다.* 이는 브레이브, 사파리 등 핑거프린팅 방지 기능을 내세우는 타 브라우저들보다 훨씬 높은 수준의 방어다.

VPN 사용시에는 사용자가 귀찮게 수동으로 서버를 바꿔 주지 않는 한 IP주소가 계속해서 그대로 유지되지만, 토르는 각 사이트마다 자동으로 다른 IP주소가 사용될 뿐만 아니라 하나의 사이트에 대해서도 주기적으로 IP주소가 바뀌며, 토르 브라우저를 종료 후 재시작하거나 New Identity 버튼을 누르는 경우 쿠키 등 데이터가 삭제됨은 물론 IP주소도 바뀌기 때문에 시점 간 추적에 대해서도 방어가 가능하다.

멀티홉 VPN을 쓸 땐 본인 컴퓨터에서 생성된 TCP/IP 헤더가 그대로 사이트에 전달되므로 이를 이용한 디바이스 핑거프린팅이 가능할 수 있지만, 토르를 쓸 땐 본인 컴퓨터가 아닌 토르 출구 릴레이 컴퓨터에서 생성된 TCP/IP 헤더가 사이트에 전달되므로 TCP/IP 핑거프린팅이 불가능하며, 토르 출구 릴레이 입장에서도 볼 수 있는 것은 토르 2번째 릴레이에서 생성된 TCP/IP 헤더이기 때문에 특정한 패킷이 정확히 누구에게서 유래된 것인지 구분하기 어렵다.

멀티홉 VPN을 쓸 땐 공격자가 멀티홉 경로 상의 하나의 VPN 서버만 감시하면 멀티홉 사용자의 모든 트래픽을 전부 가로챌 수 있다. 그러나 토르 브라우저는 개별 사이트마다 서로 다른 경로를 사용하고, Tails, Whonix처럼 브라우저뿐 아니라 OS상의 모든 프로그램이 토르 네트워크를 사용하게 세팅된 OS를 쓰는 경우 개별 프로그램들도 서로 다른 경로를 사용하며, 하나의 사이트, 하나의 프로그램이 사용하는 경로도 10분 정도의 간격으로 수시로 바뀌기까지 하기 때문에, 토르 입구 릴레이, 2번째 릴레이, 또는 출구 릴레이 하나를 완전히 장악하는 것만으로는 특정 사용자에게서 나오는 모든 패킷을 가로챌 수가 없다. 심지어 입구, 2번째, 출구 릴레이로 구성된 특정 경로circuit 하나를 완전히 장악하더라도 특정 사용자에게서 나오는 모든 패킷을 가로챌 수 없다.

위와 같은 성질 때문에, 우리가 흔히 상상하듯이 웹사이트에 찍힌 IP주소를 따라가서 출구 릴레이를 알아 내고, 출구 릴레이의 협조를 얻어 2번째 릴레이를 알아 내고, 2번째 릴레이의 협조를 얻어 1번째 릴레이를 알아 내고, 1번째 릴레이의 협조를 얻어 사용자의 IP를 알아 내 검거하는 식으로 트래픽을 역추적해 나가는 것도, 멀티홉 VPN에서는 가능하지만 토르 네트워크에서는 매우 어렵다. 실제로 공격자가 목적지 웹사이트를 직접 운영함으로써 사용자의 트래픽 패턴에 직접 조작을 가할 수 있고 또한 사용자의 입구 트래픽에 관한 NetFlow 로그를 입수할 수 있는 상황에서도, 사용자가 수십 메가바이트 용량의 파일을 다운받는 등 트래픽이 장시간 지속돼야만 상관분석을 통한 사용자 식별이 가능했음을 암시하는 연구가 있다(Chakravarty et al., 2014). 이 연구가 나온 이후 토르는 1.5~9.5초 사이에서 랜덤하게 선택된 간격으로 CELL_PADDING 셀을 보냄으로써 NetFlow 로그의 세밀함을 떨어뜨려 이런 상관분석을 불가능하게 만드는 쪽으로 패치가 이루어졌는데,* 중요한 것은 그런 패치가 적용되기 전에도 현실적으로 공격자가 직접 통제하고 있지 않은 인터넷 사이트에 텍스트 글을 올린 사람을 공격자가 사후적인 로그 분석을 통해 추적하는 것은 매우 어려웠다는 것이다.

그래서 토르 브라우저를 쓰면, VPN으로는 제아무리 최고의 VPN 회사를 선택하고 여러 가지 기술적, 행위적 방어수단을 동원하더라도 도저히 달성할 수 없는 높은 수준의 익명성과 프라이버시를 손쉽게 확보할 수 있다.

그럼에도 불구하고 인터넷을 보면 다수의 테크 블로거들과 VPN 회사들이 ‘토르는 위험하고, VPN은 안전하다’고 말하는 것을 볼 수 있다. ‘다수의’ 테크 블로거들이 실제로는 1명이며 그 1명은 ExpressVPN과 제휴 마케팅 관계에 있는 사람이고 VPN 회사들의 글들은 ‘거짓말은 하지 않았다’의 방법으로 의도적으로 독자들을 오도하고 있다는 점에 대해서는 이미 별도의 포스팅을 통해 살펴본 바 있다. VPN 관계자들은 근본적인 인센티브 구조상 토르를 깎아내려야만 돈이 벌리는 구조이기 때문에 먹고 살려면 그렇게 할 수밖에 없다.

VPN 업체들의 마케팅 때문인지 평범한 일반인들도 토르에 대한 근거 없는 낭설을 퍼뜨리기도 한다. 예를 들면 토르의 최초 개발자 에릭이 미국 정부에 잡혔다고 주장하는 사람이 있다.

출처: 디씨인사이드.

그러나 토르의 최초 개발자인 Roger Dingledine, Nick Mathewson, Paul Syverson 중 에릭이라는 이름을 가진 사람은 없다.

토르 최초 개발자들이 토르에 대해 소개하는 논문.

게다가 토르는 무슨 시민단체, 범죄조직, 세계 평화를 꿈꾸는 히피 개발자 같은 사람이 개발한 프로그램이 아니라, 토르 프로젝트 홈페이지에 공개적으로 써 있다시피 처음부터 미국 정부에 의해 개발됐고* 토르 프로젝트의 투명성 보고서에 의하면 지금도 펀딩의 51%가 공개적으로 미국 정부에서 오고 있는 프로그램이다.* 상식적으로 미국 정부의 지원으로 개발되는 미국 정부의 프로그램 개발자를 미국 정부에서 잡아갈 리가 없다.

토르 프로젝트 공식사이트에 이미 투명하게 다 공개돼 있다.

다만 여기서 잘못 생각하면 안 되는 것이, 토르가 미국 정부에서 개발한 프로그램이라고 해서 토르에 미국 정부의 백도어가 숨겨져 있다거나, 우리가 토르로 하는 모든 행동이 미국 정부에 의해 감시된다고 생각해서는 안 된다. 왜냐하면 그것은 사실이 아니기 때문이다.

지식이 없으면 이렇게 된다.

토르는 암호화를 기반으로 한다. 단두대를 개발한 사람이라 해도 자기가 개발한 단두대에 목이 놓이면 살아남을 수 없고, 총을 개발한 사람이라 해도 자기가 개발한 총에 맞으면 살아남을 수 없는 것과 마찬가지로, 암호화 알고리즘을 개발한 사람이라 해도 자기가 개발한 알고리즘으로 암호화된 데이터를 해독할 수는 없다. 또한 토르는 오픈소스 소프트웨어, 즉 설계도가 처음부터 끝까지 완전히 공개돼 있는 프로그램이고,*

토르 브라우저의 Git. 모든 커밋 내용을 누구나 인터넷으로 다 볼 수 있다.

토르 브라우저는 reproducible build라는 조건을 만족하는 프로그램으로서 개인이 위 소스코드를 보고 직접 컴파일해서 만든 프로그램과 토르 프로젝트 측에서 다운로드로 제공하는 프로그램이 비트 단위로 동일하게 나오기 때문에, 공개된 소스코드에 포함돼 있지 않은 백도어를 개발자가 몰래 끼워넣는 것도 아예 불가능하다. 즉, 토르에는 미국 정부의 백도어가 숨겨져 있지 않다. 실제로 에드워드 스노든이 유출한, 미국 NSA의 2012년 TOP SECRET 문서를 봐도, 적어도 그 당시까지는 NSA가 토르를 뚫지 못했다는 사실을 알 수 있다.

미국 NSA의 Tor Sticks 문서.
적어도 이 당시까지는, NSA는 토르를 깨지 못했다.

그리고 에드워드 스노든 본인도 2017년, VPN보다 토르가 안전하며 자기도 토르를 쓴다고 말하기도 했다.* 스노든은 2013년 미국 NSA의 기밀자료를 유출했다는 이유로 미국 정부의 적으로 찍혀 2013. 6.부터 러시아에 거주하고 있는 사람이다. 전직 NSA, CIA 수장과 현직 미국 하원정보위원회의 장이 스노든을 “kill list”에 올리겠다는 농담(?)을 했을 정도로,* 미국 정부의 스노든에 대한 적개심은 상당하다. 그리고 스노든은 ‘마이크로소프트 윈도우는 백도어가 숨겨져 있을까봐 쓰지 않는다’는 발언을 했을 정도로 백도어 위협에 대한 경각심도 충분히 가지고 있는 사람이다.* 이런 사람이 토르가 안전하다고 했으면 믿어도 되지 않을까.

오히려 미국 정부 입장에서는 토르를 쓰는 타겟보다 VPN을 쓰는 타겟을 감시하기가 더 쉽다. 네트워크 감시에 필요한 비용만 생각해 보더라도, VPN을 장악하려면 VPN 서버가 위치해 있는 데이터센터 또는 그 데이터센터에 인터넷망을 제공하는 ISP 또는 그 근방의 Internet Exchange (IXP)를 장악하는* 등의 방법으로 하나의 VPN 서버만 감시하면 그 VPN 서버를 이용하는 모든 사용자들의 모든 트래픽을 볼 수 있는 반면, 토르는 동일한 방법으로 3개나 되는 릴레이를 감시해야 하는데다가 앞서 설명한 바와 같이 3개의 릴레이를 모두 감시한다 해도 사이트마다, 사용자마다 각기 다른 경로가 사용되고 그 경로가 5~10분의 짧은 간격으로 계속 바뀌기까지 하기 때문에 유의미한 감시가 어렵다.

참고로 NSA는 2011년 당시 전 세계에 있는 대부분의 소비자용 VPN 서비스들을 다 파악해 놓고 있었다.

만약 본인이 알고 있는 VPN회사가 여기 등장하지 않는다면, 그건 2011년 이 PPT가 작성될 당시 그 VPN 회사가 아직 생기기 전이거나, PPT 작성자가 귀찮아서 그냥 끼워넣지 않았기 때문일 뿐, 그게 NSA도 모르는 비밀스러운 VPN이라서가 아니다. NordVPN은 2012년, ProtonVPN은 2018년에 처음 생겼다.

이와 관련해서 Micah Lee가 잘 정리된 글을 올린 바 있으니 관심 있으면 한번 읽어 보기 바란다.

토르는 특별히 민감한 작업을 할 때만 한정적으로 쓰지 말고, 맛집 검색, 웹툰 감상, 유튜브 시청, 본인 페이스북 사진 업로드 등 평범한 작업을 할 때도 항상 쓰는 것이 좋다. 왜냐하면, 우선 앞서 간단히 언급한 바와 같이 빅데이터와 통계 기법을 이용하면 그 데이터에 직접 드러나 있지 않은 정보들까지 통계적으로 추론할 수 있다. 토르를 쓰지 않는 동안 수집된 빅데이터로 인해, 토르로 숨기고 싶어하는 정보들까지 추론당할 수 있다는 이야기다. 토르를 항상 쓰면 본인에 대한 쓸데없는 빅데이터가 수집되는 걸 막을 수 있다.

또한, 토르를 한정적으로만 쓰는 경우 본인이 토르를 정확히 언제부터 언제까지 어디서 썼는지에 관한 메타데이터 자체가 꽤 흥미로운 정보를 담고 있을 수 있다. 예를 들어 대학 기숙사에 거주하는 어떤 대학생이, 야동 사이트에 들어갈 때만 토르를 쓰고 그 외의 경우에는 토르를 전혀 쓰지 않는다고 하자. 그러면 대학 본부는 실질적으로 그 학생이 정확히 언제언제 야동사이트에 들어갔고 한 번 들어갔을 때마다 몇 분씩 있었는지에 대한 상세한 로그기록을 보유하고 있는 셈이 된다. 이와 관련해 예전에 그린피스도, 평소에는 이메일 암호화를 하지 않고 시위를 획책 중일 때만 이메일을 PGP로 암호화해서 주고받았기 때문에, 그린피스를 감시하는 사람들은 그린피스가 언제, 어떤 지역에 있는 활동가와 주고받는 이메일을 PGP로 암호화했는지만 보고서도 그린피스가 언제 어디에서 시위를 할 예정인지를 다 알 수 있었다고 한다.* 토르를 항상 쓰면 이런 흥미로운 메타데이터가 생성, 유출되는 것을 막을 수 있다.

더 알아보기