토어
토어(, [tɔɹ])는 온라인 상에서의 익명을 보장하고 검열을 피할 수 있게 해주는 자유 소프트웨어로 미국 해군 연구소에서 최초로 시작하여 현재는 EFF 프로젝트에서 관리되고 있다. EFF는 2005년 11월까지 Tor를 재정적으로 지원하였고, 현재도 웹 호스팅을 지원하고 있다.
Tor의 발음은 [tɔɹ]로 문을 의미하는 도어(door, [dɔɹ])에서 초성만 d에서 t로 바꾸어서 토어라고 발음하면 된다.
토어는 트래픽 분석 공격으로부터 보호해 주며, 양파 라우터를 거쳐서 네트워크를 사용한다. 나가는 연결이 익명으로 처리되며, 숨겨진 서비스를 사용할 수 있다.
토어 네트워크에 접속할 때는 Tor Project의 Tor Browser를 이용한다. 또한, 구글 안드로이드 이용자들은 가디언 프로젝트(The Guardian Project)의 Orbot과 Orfox로 접속한다.
토어의 핵심 원칙인 어니언 라우팅(onion routing)은 1990년대 중순 미국 해양 조사 실험연구소(NRL) 직원들, 수학자 Paul Syverson, 컴퓨터 과학자 Michael G. Reed, David Goldschlag가 개발하였으며, 개발 목적은 온라인 상의 미국 정보 통신을 보호하기 위해서이다. 어니언 라우팅은 1997년 방위고등연구계획국(DARPA)에 의해 추가 개발되었다.
토르의 알파 버전은 Syverson 및 컴퓨터 과학자 Roger Dingledine, Nick Mathewson이 개발하여 이를 당시에 어니언 라우팅 프로젝트(Onion Routing project), 곧 TOR 프로젝트로 불렀으며 2002년 9월 20일에 시작하였다. 최초의 공개 릴리스는 1년 뒤에 출시되었다. 2004년 8월 13일, Syverson, Dingledine, Mathewson은 제13회 USENIX 보안 심포시엄에서 "Tor: The Second-Generation Onion Router"를 발표하였다. 2004년, NRL은 자유 라이선스로 코드용 코드를 공개했으며, 전자 프런티어 재단(EFF)는 Dingledine와 Mathewson가 개발을 계속할 수 있도록 자금 조달을 시작하였다.
토르 네트워크의 사용자들은 양파 프록시를 사용한다. 이 소프트웨어는 토르 네트워크에서 주기적으로 가상의 회로를 만든다. 토르는 암호화 기법을 사용해서 데이터를 전송하며, SOCKS 인터페이스를 제공한다. SOCKS를 지원하는 프로그램은 토르 가상 회로를 통해서 데이터를 보낼 수 있다. 토르 네트워크를 따라서 라우터들을 통과한 패킷은 종료 노드에서 실제로 진행한다. 상대방 컴퓨터에서 보기에는 토르 종료 노드에서 트래픽이 온 것처럼 보인다.
토르의 프로그램은 TCP 스트림 단계에서 작동한다. 그래서 인터넷 릴레이 채팅, 인스턴트 메시징, 웹 서핑등을 모두 처리할 수 있다. Privoxy와 같이 사용하면 애플리케이션 계층에서의 암호화도 추가해 준다.
다음은 Tor 클라이언트 A (원본)에서 Tor 서버 B, C를 차례로 거쳐 목적지 D (일반 Web 서버 등)에 이르는 경우의 설명이다.이상으로 구축된 ABC 간의 가상 회선을 통해 A는 D와 모든 통신을 할 수 있으며 통신 패킷은 마치 C가 원본과 같이 D에서 보인다.
AB 사이, BC 사이의 세션 키는 각각 A와 B, B와 C 밖에 모르기 때문에, 중계는 익명성을 얻을 수 있다고 되어있다. 중계 서버가 3 개 이상의 경우도 위의 단계를 반복하여 유사 회선 구축이 진행된다.
세션 키 교환을 위해서는 Diffie - Hellman 키 교환 방식을 채택, 통신의 암호화로 AES가 사용된다. 또한, 가상 회선 구축을 포함한 Tor 노드 사이의 모든 통신은 도중의 도청 및 변조를 방지하기 위해 TLS 통신의에서 열린다.
토르가 TCP 트래픽을 암호화시킬 수 있기 때문에 잘못 사용하려는 유혹을 느낄 수 있다. 라우터들은 종료 정책을 가지고 있기 때문에 특정한 종료 노드에서만 패킷이 나갈 수 있다. 주소와 포트의 조합을 사용하면 어떤 사용자가 토르 네트워크를 잘못 사용하는지 알 수 있다.토르의 인기있는 기능 중 하나는 클라이언트에게 익명성을 제공하는 것이지만 서버에도 비슷하게 이용할 수 있다. 토르 네트워크에 서버를 물리면 네트워크 경로를 알 수 없도록 만드는 게 그것인데 서버에서도 클라이언트와 마찬가지로 숨겨진 서비스를 이용하려면 토르 클라이언트도 필요하다.
숨겨진 서비스들은 토르에서 사용하는 codice_1 의사 최상위 도메인을 사용한다. 토르 네트워크는 이것을 받아들이고 익명 서비스로 넘겨준다. 숨겨진 서비스는 이 요청에 대해서만 응답한다. 이 서비스들의 이점은 공인 IP 주소가 필요 없기 때문에 방화벽이나 네트워크 주소 변환 뒤에 있는 호스트에서도 사용할 수 있다는 것이다.
2007년 8월 30일 스웨덴의 보안 연구원, Dan Egerstad 는 전 세계의 대사관과 인권 옹호 단체의 전자 우편을 감청하는 데 성공했다고 발표했다. Tor 노드 간의 통신이 암호화되어 있지만, 끝(출구)이 되는 Tor 노드와 일반적인 TCP 통신 업체와의 사이에서는 통신이 해독된다는 점을 이용한 것으로, LAN 분석기를 탑재한 Tor 노드를 설치하여 그곳에서 Tor 네트워크를 빠져나가려는 통신을 모니터링하면 쉽게 가로챌 수 있다는 것이다. 하지만, 이 문제는 Tor 네트워크에 전송되는 데이터 자체를, 예를 들어 HTTPS 및 SMTP over SSL 등을 이용하여 별도로 암호화함으로써 방지할 수 있다.
대부분의 소프트웨어는 UDP를 사용하여 DNS를 참조하기 때문에 TCP 전용 Tor 네트워크를 통하지 않고 직접 참조해서 익명성이 불완전 할 수있다. DNS 규격 자체는 UDP와 TCP를 모두 지원()하고 있으며, 많은 DNS 서버는 모두 지원이되고 있지만, DNS를 참조하는 많은 소프트웨어는 UDP를 사용하는 것이 일반적이다는 것이 문제다. 하지만, TCP를 이용한 DNS 조회를 지원하는 소프트웨어라면 이 문제의 영향을 받지 않는다. 그래서, 이전 버전의 Tor는 HTTP 통신을하는 경우 TCP를 이용한 DNS 조회를 지원하는 Privoxy을 Web 브라우저와 Tor사이에 설치하고 병용하는 것이 추천되고 있었다. 버전 0.2.0.1 - alpha 이후 Tor는 DNS 조회를 Tor 네트워크를 통해 수행하는 DNS 확인자가 탑재되었다. 이렇게하면 DNS 유출 문제가 해결되고, SOCKS 비 대응 소프트웨어에서 아래의 히든 서비스에 접근이 가능해졌다.
2005년 5월 8일 ~ 11 일 미국 캘리포니아주 오클랜드에서 개최된 2005 IEEE Symposium on Security and Privacy에서 캔브릿지 대학의 Steven J. Murdoch과 George Danezis 의 논문 "Low-Cost Traffic Analysis of Tor"(토르의 저렴한 트래픽 분석)을 발표 했다. 이 논문에 따르면, Tor의 익명성을 크게 저하시키는 방법이 존재한다. 해당 논문은 Danezis 자신의 내지 IEEE Computer Society digital library 등에서 열람이 가능하다.
중화인민공화국은 2009년 9월 30일 건국 60주년 기념식을 맞이하여 인터넷 검열을 강화하고, Tor를 비롯한 기술을 이용하여 황금 방패를 우회하는 사람을 적발하고, Tor 공식 사이트의 접속 차단, Tor 중계 노드에 대한 접근 차단 기능을 강화하였다. 이에 대항하기 위하여 Tor 프로젝트는 Tor 중계 노드가 되어주는 자원 봉사가 더 늘기를 호소하고 있다.
Tor의 특징 중 하나는 신원을 밝히지 않고 각종 서버 (Web 서버, 메일 서버, IRC 서버 등)를 운용하는 것이 가능하다는 것이다. 이것은 onion 식별자를 가진 특수한 의사 주소를 갖게하여 특정 IP 주소와 연결할 수 없고, Tor를 실행하고 있는 노드끼리 연결할 수 있다.
이것은 미리 지정된 노드 (대개는 임의로 지정)를 집결 지점으로 지정하여 지점에서 지점에 암호화된 연결을 실시한다.
Tor 프로젝트에서는 검열에 대항하기 위한 수단을 마련하고 있는데, 대표적으로 bridge, obfsproxy, flashproxy 가 있다. Obfsproxy는 Tor의 트래픽을 일반적인 HTTP 트래픽으로 보이게 하는 프로그램이고 flashproxy는 사용자의 웹 브라우저가 중계 서버가 되는 검열을 우회하는 새로운 시스템이다