자주 묻는 질문

물론이죠! Tor 중계서버 운영 기관 목록에서 중계서버를 운영하는 기관을 확인하세요. 귀하의 후원이 Tor 네트워크의 더 나은 속도와 익명성을 위한 대상 기관의 노력에 보탬이 될 거에요.

중계서버 운영 기관은 The Tor Project, Inc와 다른 기관입니다. 그러나 Tor 프로젝트는 중계서버 운영 기관이 매우 좋은 일을 한다고 봐요. Tor 커뮤니티에 속한 친절한 사람들이 운영합니다.

'익명성'과 '성능' 두 마리 토끼를 모두 잡는 건 어려움을 명심하세요. Tor 네트워크의 익명성은 부분적으로는 '다양성'에서 옵니다. 따라서 Tor의 익명성을 더 증진하는데에는 중계서버를 직접 운영하는 게 후원보다 더 도움이 됩니다. 그러나 '대역폭의 규모의 경제'도 동시에 유효합니다. '대역폭의 규모의 경제'란 몇몇 거대한 중계서버에 투자가 많이 이루어지는 게 네트워크 성능을 향상시키는 데 더 효율적임을 뜻합니다. 익명성을 증진하고 성능을 향상시키는 건 둘 다 가치있는 목표입니다. 따라서 직접 중계서버를 돌리든, 거대 중계서버에 후원하든 간에 상관없이 귀하의 행동은 매우 도움이 된다는 거죠!

Tor 브라우저는 귀하가 방문한 웹사이트를 알아내려는 사람들로부터 귀하를 지킵니다. 인터넷 서비스 제공자(Internet Service Provider, ISP)와 같은 단체에선 귀하가 Tor를 사용한다는 거 까진 파악할 수 있습니다. 그러나 Tor를 사용해 어딜 방문하려 하는지는 알지 못할 겁니다.

Tor 브라우저는 당신의 사이트가 차단된 곳에 거주하는 사용자들이 당신의 사이트에 접근하는 것을 도울 수 있습니다. 대체로 다만 Tor 브라우저 를 다운로드하고 차단했는 사이트를 이동하면 접속이 가능하게 할 것입니다. 검열 수준이 심한 환경에도 유효하도록. Tor 프로젝트는 많은 검열 우회 옵션을 마련해두었습니다. 장착형 전송수단이 대표적입니다.

더 자세한 정보를 Tor 브라우저 사용자 매뉴얼의 검열 섹션을 참고하세요.

Tor 브라우저에 새로운 부가 기능을 설치하는 것은 절대 권장되지 않습니다. 사생활과 보안을 손상시킬 수도 있습니다.

부가기능을 새로 설치하는 건 Tor 브라우저에 예측 불가능한 수준의 영향을 미칠 수 있습니다. 또한 귀하가 사용하는 Tor 브라우저의 지문이 다른 Tor 브라우저와 구별될 가능성이 있습니다. 귀하가 받은 Tor 브라우저 복사본에 구별되는 지문이 남아 있을 경우, 귀하가 브라우징 활동 중 익명성을 보장받지 못할 수 있습니다. 또한 설사 Tor 브라우저를 사용 중이라고 하더라도 추적당할 수 있습니다.

기본적으로, 소위 '브라우저 지문'이란 건 각 브라우저의 설정과 기능에서 도출됩니다. 각 사용자마다 갖는 고유한 지문이 시중의 브라우저 대부분을 사용하면서 자신도 모르는 사이에 남게 됩니다. 이로 인해 인터넷을 거쳐 귀하를 추적할 수 있게 되는 겁니다. Tor 브라우저엔 사용자 간 사실상 동일한 (완벽하지 않아요!) 지문을 갖도록 특수 설계가 이루어졌습니다. 즉 각 Tor 브라우저 사용자는 다른 Tor 브라우저 사용자와 똑같아 보인다는 겁니다. 각 사용자를 추적하기 매우 어려워지죠.

새로 설치한 부가 기능으로 인해 Tor 브라우저에의 공격 접점이 늘어날 가능성이 높습니다. 민감한 데이터가 유출되거나, 공격자에 의해 Tor 브라우저가 감염되는 원인이 될 수 있습니다. 부가 기능 그 자체에 감시를 위한 악의적 기능이 탑재돼있을 수 있습니다.

Tor Browser already comes installed with one add-on — NoScript — and adding anything else could deanonymize you.

브라우저 핑거프린팅을 더 자세히 알아보고 싶으신가요? Tor 블로그에 이에 관련된 모든 내용을 정리한 게시글 이 있으니 확인해보세요.

Tor 브라우저는 현재 Windows, Linux, macOS에서 사용할 수 있습니다.

Android 용 Tor 브라우저도 현재 사용 가능하며, The Guardian Project에서 개발한 Orbot 앱을 통해 Android 내 설치된 앱들의 연결이 Tor 네트워크를 거치도록 설정할 수 있습니다.

There is no official version of Tor Browser for iOS yet, though we recommend Onion Browser.

완전한 익명성은 일반적으로 불가능합니다. 설사 귀하가 Tor를 통해 연결하더라도요. Tor를 사용하고 오프라인인 상태에서 익명성을 증진하는 방법이 몇몇 있기는 하지만요.

Tor 브라우저와 Tor를 위해 따로 조정된 소프트웨어를 사용하기

Tor로 귀하의 컴퓨터에서 실행중인 모든 인터넷 트래픽을 보호할 수는 없습니다. Tor는 Tor를 통해 인터넷 트래픽을 전송하도록 적절히 설정된 애플리케이션만 보호할 수 있습니다.

웹 브라우징:

파일 공유:

웹 폼에 제공할 정보를 조정하세요

Tor 브라우저로 웹사이트에 방문할 때, 해당 웹사이트는 귀하의 신원과, 귀하의 실제 위치를 알 수 없습니다. 그러나 안타깝게도 웹 폼으로 굳이 필요하지 않은 개인정보를 요구하는 사이트가 많습니다. Tor 브라우저를 통해 그러한 웹사이트에 로그인 해도 여전히 귀하의 실제 위치가 알려지진 않습니다. 다만 귀하의 신원은 밝혀지게 됩니다. 게다가, 귀하가 웹사이트에 다음 정보를 제공할 경우 더이상 익명성을 보장받지 못합니다: 이름, 이메일, 주소, 전화 번호, 기타 개인 정보. 따라서 웹사이트에 접속 시 경계를 풀지 말고 웹 폼을 적을 때에도 매우 신중해야 합니다.

Tor로 Torrent 쓰지 말아주세요

Torrent 파일 공유 앱은 프록시 설정을 무시하는 것으로 보고돼 왔습니다. 또한 Tor를 사용한다고 설정했음에도 불구하고 다이렉트로 연결되는 것으로 확인됩니다. Torrent 애플리케이션이 설사 Tor를 경유해 연결된다 하더라도, Torrent의 작동 방식 특성 상 귀하의 실제 IP 주소가 GET 요청 트래커에 의해 송출됩니다. 따라서 Torrent 사용 시 귀하의 torrent 트래픽과 Tor 웹 트래픽의 익명성 모두를 보장할 수 없게 될 뿐 아니라, 모두가 사용해야 할 Tor 네트워크의 전반적인 속도 자체도 느려집니다.

브라우저 플러그인을 설치하거나 사용하지 마세요

Tor 브라우저는 Flash, RealPlayer, QuickTime 등의 브라우저 플러그인을 차단합니다. 이러한 플러그인은 사용자의 IP 주소를 표시하도록 할 수 있습니다. 같은 맥락에서, Tor 브라우저에 다른 부가기능이나 플러그인을 설치하는 것 또한 추천하지 않습니다. 해당 플러그인과 부가기능이 Tor를 통과할 수도 있고, 그럴 경우 귀하의 익명성과 개인정보에 악영향을 끼치기 때문입니다.

HTTPS 버전 웹사이트를 사용하기

Tor는 Tor 네트워크 내 귀하의 트래픽을 암호화하나, 최종 수신 웹사이트의 암호화 여부는 해당 웹사이트에 따라 다릅니다. To help ensure private encryption to websites, Tor Browser includes HTTPS-Only Mode to force the use of HTTPS encryption with websites that support it. 그럼에도 불구하고 자물쇠 아이콘 이나 onion 아이콘이 URL 바에 표시돼있는지 항상 주시해야 합니다. 또한 URL에 https:// 가 포함돼있고, 들어가고자 했던 웹사이트 명이 제대로 떠있는지도 꼭 확인해야 합니다. EFF에서 대화 형식으로 제작한 how Tor and HTTPS relate문서도 살펴보세요.

온라인 상태에서 Tor로 다운로드한 문서를 열지 마세요

Tor 브라우저에선 외부 애플리케이션이 관장하는 문서가 자동으로 열리기 전에 경고 창을 띄웁니다. 절대 이 경고를 그냥 무시하지 마세요. Tor로 문서를 다운로드 받을 때 매우 조심해야 합니다(특히 DOC나 PDF 파일을 Tor 브라우저 내장 PDF 뷰어 외의 PDF 뷰어를 사용할 경우 더 조심해야 합니다). 위의 문서에 Tor 외의 환경에서 다운로드된 인터넷 리소스가 포함돼있을 수 있기 때문입니다. 이러한 리소스를 Tor 브라우저 내장 PDF 뷰어 외의 애플리케이션에서 열 가능성이 있습니다. 해당 방법을 사용할 경우 Tor를 경유하지 않는 IP 주소가 드러나게 됩니다. Tor를 통해 받은 파일로 작업해야 한다면, 반드시 네트워크 연결을 끊은 채 사용하시길 권합니다. 아니면 '위험지대'을 사용해서 안전한 PDF 파일로 바꾼 후 여세요. 그러나 BitTorrent와 Tor를 같이 쓸 땐 어떤 방법을 쓰더라도 절대 안전하지 않습니다.

브리지를 단독으로 쓰거나, 브리지에 다른 걸 붙여서 사용하기

Tor는 귀하가 연결하려는 수신 웹사이트가 어디인지 공격자가 알 수 없게 하기 위해 노력합니다. 하지만 Tor의 초기 설정 상태에서 사용할 경우, 다른 사람이 귀하의 인터넷 트래픽을 보고 Tor를 사용하고 있는지 파악할 수도 있습니다. Tor 사용 사실을 숨기는 게 필요하신가요? Tor에서 브리지 를 사용하도록 설정하면 Tor 네트워크에 바로 연결하는 방식 대비 리스크을 줄일 수 있습니다. 궁극적으로 최선의 보호는 곧 '사회적 밀집'에 있습니다: 서로 다른 관심사를 가진 Tor 사용자가 귀하 근방에 많이 위치할수록, Tor 사용자로서 귀하의 신원이 특정될 위험이 줄어듭니다. 다른 분들에게도 Tor 사용을 권해보세요!

총명함을 유지하세요. 더 자세히 알아보세요. Tor가 가능한 영역과, Tor에서 불가능한 영역을 파악하세요. 이 '위험 리스트' 는 불완전합니다. 따라서 모든 문제를 파악하고 문서화하는 데 귀하의 도움이 필요합니다.

Tor 프로젝트에서는 VPN을 Tor와 같이 사용하는 걸 대체로 추천하지 않습니다. 보안을 저해하지 않는 선에서 VPN과 Tor를 구성할 줄 아는 전문적인 사용자가 아닌 이상 말이죠.

Tor + VPN에 관한 더 구체적인 정보를 Tor 프로젝트의 위키에서 확인하세요.

Tor 개요

상기한 바와 같이, 감시자가 귀하의 감시가 가능하고 귀하의 목적지 웹사이트 · Tor 출구 노드를 조회할 권한이 있다면, 이를 Tor 네트워크 진입할 때와 나갈 때 발생하는 귀하의 트래픽 시점과 연관지을 수 있습니다. 이와 같은 위협 상황을 Tor는 막지 못합니다.

좀 더 확실하게 말씀드리자면, 감시당국이나 사법당국이 네트워크의 일부분을 볼 수 있는 구체적인 권한이 있을 경우, 시작과 끝 트래픽을 조회하고 해당 트래픽의 시점을 연관지음으로써 귀하의 활동에 대한 혐의를 당국이 입증해낼 수 있습니다. 다시 말씀드리지만, 어떤 지점에 접속했다는 혐의를 받는 당시자가 실제로 그랬을 경우에만 유요한 방식입니다. 대부분의 국가에서 영장 발급에 필요한 '혐의' 자체의 영향력이 '타이밍 상관관계 분석'이 제공하는 영향력보다 이미 훨씬 큰 상황입니다.

게다가, Tor는 여러 TCP 연결에 필요한 우회로를 재사용합니다. 이로인해 당국에서 주어진 출구 노드에서 포착된 익명이 아닌 트래픽과 익명인 트래픽을 놓고 분석한 후 신원을 특정할 수 있습니다. 따라서 Tor와 다른 애플리케이션을 동시에 사용할 때 조심하셔야 합니다. 각 애플리케이션 마다 분리된 Tor 클라이언트를 구동하기까지 하셔야 할 필요가 있다고 봅니다.

인터넷 통신은 '축적 전송 모델'을 기반으로 합니다. '축적 전송 모델'을 우편물의 비유를 통해 이해해봅시다: IP 데이터그램이나 패킷이라 부르는 장소에서 데이터를 전송합니다. 현실세계의 우편에 보내는 사람과 받는 사람의 도로명주소가 적혀있는 것처럼, 각 패킷에는 출발지 IP 주소(발송자의 주소)와 목적지 IP 주소(수신자의 주소)가 담겨있습니다. 발송자에서 수신자에 이르는 경로는 라우터로의 홉 여러 번으로 구성되며, 각 라우터는 주어진 목적지 IP 주소를 점검한 후 패킷을 근방의 목적지에 전송합니다. 따라서 발송자와 수신자 사이의 각 라우터에서는 발송자가 수신자와 통신 중임을 알게 됩니다. 특히, 현지 ISP는 귀하의 인터넷 사용 추이를 전부 일람할 수 있는 위치에 있습니다. 게다가, 모든 패킷을 볼 수 있는 인터넷 내 각 서버 역시 귀하의 행적을 모두 일람할 수 있습니다.

Tor는 귀하의 트래픽을 여러 프록시를 경유하게 해 귀하의 개인정보를 증진시키는 것을 목표로 합니다. 귀하의 통신은 다중 계층으로 암호화되며, Tor 네트워크에서 여러 홉을 통해 최종 수신자까지 전송됩니다. 이러한 프로세스를 다음 시각화 자료를 통해 더 알아보세요. 현지 ISP가 현재 조회할 수 있는 건 귀하가 Tor 노드와 통신 중이라는 사실 뿐입니다. 마찬가지로, 인터넷 내 서버는 Tor 노드와의 통신이 이루어졌다는 사실 외에는 모릅니다.

대국적으로 Tor는 세 개의 개인정보 보호 문제를 해결하려 합니다.

첫 번째, Tor는 웹사이트나 다른 서비스가 귀하의 위치를 파악해 귀하의 성향과 관심사를 기록한 데이터베이스를 구축하는걸 막는 것을 목표로 합니다. Tor를 사용하면, 인터넷 연결에서 귀하의 정보가 누설되는 걸 막는 기능이 기본으로 설정됩니다. 연결될 때마다 얼마나 많은 정보를 제공할지 귀하가 선택할 수 있게 되는 거죠.

둘째, Tor는 (ISP나 귀하의 집 와이파이 혹은 라우터에 접속한 사람들과 같은) 현지의 특정인이 귀하의 트래픽을 조회해 무슨 정보를 얻으려 했고, 어디서 해당 정보를 얻으려 했는지 파악하는 걸 막고자 합니다. 또한 귀하의 학습권과 출판권을 제한하려는 이들을 막고자 합니다. 귀하가 Tor 네트워크 일부에라도 접속할 수 있다면, 인터넷 상 어떤 사이트든 닿을 수 있답니다.

셋째, Tor를 통해 귀하의 연결을 최소 두 개 이상의 Tor 중계서버를 거쳐 전송합니다. 그렇기에 중계서버 하나를 본다 해서 귀하의 목적지를 파악하는 게 불가능 합니다. Tor 중계서버는 개인 및 단체에서 운영되므로, 신뢰를 분산시키는 게 기존의 단일 홉 프록시 접근방식보다 더 보안성이 있습니다.

그러나 Tor를 통해 전부 해결되지 못한 개인정보 보호 관련 위험이 존재함을 염두에 두세요: 여전히 잔존한 공격 항목을 참고하세요.

"Tor"라는 이름은 여러가지 의미가 있습니다.

Tor는 컴퓨터에서 작동하는 프로그램으로, 귀하가 인터넷 상에서 안전할 수 있도록 돕습니다. Tor는 귀하의 연결이 전세계 자원봉사자가 운영하는 중계서버로 구성된 분산형 네트워크 상에서 이루어지도록 설정해 귀하를 보호합니다: 이를 통해 누군가가 당신의 인터넷 연결을 조회해 어디에 방문했는지 파악하는 걸 방지합니다. 또한 귀하가 방문한 사이트에서 귀하의 물리적 위치를 파악하는 것도 방지합니다. 자원봉사자가 운영하는 중계서버의 모음을 Tor 네트워크로 정의합니다.

Tor를 이용하는 가장 대중적인 방법은 Tor 브라우저를 사용하는 겁니다. Tor 브라우저는 Firefox에서 많은 개인정보 보호 관련 문제를 수정한 브라우저입니다. Tor에 대해 페이지에서 Tor에 대해 더 알아보세요.

Tor 프로젝트는 Tor 소프트웨어를 개발 및 유지보수하는 비영리 단체(자선 단체)입니다.

'Tor'는 'The onion routing' network의 두문자어입니다. 2001년에서 2002년 사이 우리는 onion 라우팅의 차세대 버전을 설계하고 구현하기 시작했습니다. 이 당시 사람들에게 onion 라우팅 개발 중이라고 말하면, 그들은 "그게 뭔데 니트야"라고 답하기 일쑤였습니다. 설사 내부에서 표준 용어로 정한 건 'onion 라우팅'이라지만, 미 해군 연구소에서 주도했던 실제 onion 라우팅 프로젝트 에서 도출된 용어는 Tor였습니다.

(독일어와 터키어에서 Tor의 의미가 좋기도 했고요)

참고: Tor가 태생적으론 두문자어이긴 합니다만, 'TOR'로 쓰지 마세요, 첫 철자만 대문자로 쓰세요. 사실, (Tor에 대한 모든 정보를 뉴스 기사로만 접한 채) Tor 프로젝트의 웹사이트를 보지 않으신 많은 분들이 TOR란 철자가 틀렸다는 사실을 나중에야 깨달으십니다.

아뇨, 삭제해주지 않습니다. 귀하의 애플리케이션과 프로토콜을 파악하고 거기서 보낸 데이터를 지우거나 '정화하는' 기능이 탑재된 별개의 프로그램을 사용해야 합니다. Tor 브라우저는 사용자 에이전트 문자열과 같은 애플리케이션 단에서의 데이터를 모든 사용자가 동일하게 갖도록 조정합니다. 그럼에도 불구하고 Tor 브라우저는 사용자가 폼에 입력한 텍스트와 관련된 어떤 동작도 취할 수 없습니다.

일반적인 프록시 제공는 인터넷 상 공간에서 서버를 개설합니다. 귀하의 트래픽을 개설한 서버가 중계할 수 있도록 해주는 거죠. 이와같은 방식을 통해 간단하고 유지보수하기 쉬운 아키텍처가 만들어집니다. 사용자는 같은 서버에 들어가고 나갑니다. 서버 제공자는 프록시 사용 대가를 요구하거나 모금해달라는 광고를 서버에 내놓을 수 있습니다. 가장 간단한 설정에선 아무것도 설치할 필요가 없습니다. 그냥 브라우저를 주어진 프록시 서버에 지정해두면 됩니다. '단순 프록시 서비스 제공자'는 온라인에서의 개인정보나 익명성 보호가 필요하지 않고 프록시 제공자가 나쁜 짓을 안 할 거라 신뢰하는 경우 괜찮은 솔루션입니다. 몇몇 '단순 프록시 서비스 제공자'는 SSL 통해 카페 내 무료인터넷과 같이 특정 지역에서의 감시자로부터 사용자의 연결을 보호합니다 .

'단순 프록시 서비스 제공자'는 또한 '단일 장애점'을 생성합니다. '단순 프록시 서비스 제공자'는 귀하의 신원과 인터넷에서 뭐를 보고 있는지 압니다. 서버를 거쳐가는 귀하의 트래픽을 볼 수 있기 때문입니다. 몇몇 경우, 서비스 제공자가 은행 사이트나 전자상거래 사이트를 중계하는 과정에서 그들이 암호화된 트래픽 내부를 볼 수도 있습니다. 서비스 제공자가 귀하의 트래픽을 보지 않을 거라는 점, 귀하의 트래픽 스트림에 광고를 삽입하지 않을 거라는 점, 그리고 귀하의 인적 사항을 보존하지 않을 거라는 점을 신뢰해야 합니다.

Tor는 귀하의 트래픽이 목적지에 보내지기 전까지 적어도 각기 다른 세 개의 서버를 거치게 합니다. 세 중계서버마다 암호화 계층이 다르기 때문에, 귀하의 인터넷 연결을 감시하는 대상은 귀하가 Tor 네트워크에 보낸 내용물을 수정하거나, 읽을 수 없습니다. 귀하의 트래픽은 (귀하 컴퓨터 내에 있는)Tor 클라이언트와 트래픽이 보내진 전세계 내 장소 사이에서 암호화됩니다.

첫 서버에서 절 볼 수 있지 않나요?

볼 수 있을지도 모릅니다. 세 서버 중 첫 서버가 악의를 귀하의 컴퓨터에서 온 암호화된 트래픽을 조화할지도 모릅니다. 그럼에도 불구하고 귀하의 신원과 귀하가 Tor로 뭘 하고 있는지는 알지 못합니다. 그저 "이 IP 주소에서 Tor를 사용하고 있습니다."만 파악할 수 있을 뿐입니다. 즉 귀하가 누군지와 귀하가 인터넷에서 하는 일을 알아내려는 악의적인 첫 노드에서 여전히 보호받을 수 있는 것입니다.

세 번째 서버가 제 트래픽을 볼 수 없나요?

볼 수 있을지도 모릅니다. 세 서버 중 마지막 서버가 악의를 품을 경우 귀하가 Tor로 보낸 트래픽을 볼 수 있습니다. 그러나 누가 이 트래픽을 보냈는지 알지 못합니다. 귀하가 (HTTPS 같은) 암호화 프로토콜을 사용한다면, 마지막 노드에서 파악할 수 있는 정보는 도착지 뿐입니다. Tor와 HTTPS가 서로 작동하는 방식을 Tor and HTTPS 에서 제공하는 시각화 자료를 통해 더 자세히 알아보세요.

네, 가능합니다.

Tor 소프트웨어는 무료 소프트웨어이기 때문입니다. 즉 Tor 프로젝트에선 다른 분들이 Tor 소프트웨어를 재배포할 권리를 부여했다는 것입니다. 수정을 가하든, 가하지 않든 상관 없으며, 돈을 받고 팔아도, 무료로 배포해도 상관이 없습니다. Tor 프로젝트에 별도의 권한을 요청할 필요도 없습니다.

그러나 Tor 소프트웨어를 재배포할 때, 귀하는 반드시 Tor 프로젝트의 라이선스를 준수해야 합니다. 라이선스의 준수는 기본적으로 귀하가 Tor 프로젝트의 LICENSE 파일을 배포하려는 Tor 소프트웨어 한 켠에 반드시 집어넣어야 함을 말합니다.

다만, 보통 Tor의 재배포 문의를 남기는 분들 대다수는 단순히 'Tor 소프트웨어'를 배포하려는 게 아니더라고요. 그분들이 배포하길 원하시는 건 'Tor 브라우저'입니다. This includes Firefox Extended Support Release and the NoScript extension. 따라서 각 프로그램의 라이선스 또한 전부 준수해야 합니다. 두 Firefox 확장기능은 'GNU General Public License' 하에서 배포됩니다. 한편 Firefox ESR은 'Mozilla Public License' 하에서 릴리스됩니다. 라이선스를 준수하는 가장 간단한 방법은 각 프로그램의 소스 코드를 귀하가 재배포하려는 번들 내부에 전부 삽입하는 것입니다.

또한 귀하가 재배포하려는 프로그램을 받는 분들이 Tor가 무엇인지, 누가 만들었는지, 제공하는 기능(그리고 제공하지 않는 기능)을 알 수 있도록 명확하게 표기해야 합니다. 더 자세한 정보를 상표 관련 자주 묻는 질문 에서 확인하세요.

Tor와 같이 사용할 수 있는 프로그램은 매우 많습니다. 다만 애플리케이션 레벨에서의 익명성 문제를 Tor 프로젝트에서 모두 조사하지 못했습니다. 따라서 대상 애플리케이션에 안전한 설정이 적용돼있어 추천한다고 말씀드리기가 어렵습니다. Tor 프로젝트의 위키에 커뮤니티 차원에서 관리하는 특정 애플리케이션에 Tor를 적용하는 방법 문서가 있으니 설명을 보고 따라해보세요. 이 문서에 기여해주시면 정확한 리스트를 유지하는 데 도움이 됩니다!

대다수 분들이 Tor 같은 안전한 웹 브라우징을 위한 모든 기능이 담긴 Tor 브라우저를 사용하고 있습니다. 다른 브라우저에서 Tor를 사용하는 방식은 위험할 뿐더러 권장되지도 않습니다.

분명히 말씀드리건대 Tor에 백도어는 없습니다

Tor 프로젝트에서 누군가의 귀띔에 넘어가 백도어를 삽입할 가능성이 적음을 관련 재판(미국)에서 말씀하신 현명한 법조인을 Tor 프로젝트에선 알고 있습니다. 백도어를 삽입할 거라고 계속 묻는 그들과 싸우겠습니다. (법조인들이 말하는 것처럼) 이길 것입니다.

Tor 프로젝트에선 Tor에 절대 백도어를 넣지 않습니다. Tor 프로젝트에선 Tor에 백도어를 넣는 건 Tor의 사용자에게 심각하게 무책임한 행위라 생각합니다. 그리고 보안 소프트웨어 전반에 나쁜 선례를 남기는 거라고 봅니다. Tor 프로젝트에서 의도적으로 백도어를 당사 보안 소프트웨어에 한번이라도 삽입하는 순간, 그동안 쌓아 온 전문적 평판을 망가뜨리게 됩니다. 아무도 다신 우리 소프트웨어를 신뢰하지 못하겠죠. 신뢰하지 못할 엄청난 명분도 생겼으니까요!

그렇긴 하지만, 여전히 많은 사람들이 Tor 프로젝트를 대상으로 교묘하게 공격하고 있습니다. Tor 프로젝트를 사칭하거나, Tor 프로젝트 컴퓨터에 침입할 수도 있습니다. 그러나 Tor는 오픈소스이므로, 언제나 소스를 열람해 의심스런 요소 유무를 검사해볼 수 있습니다. (아무리 못해도 직전 릴리스와의 차이 정도는 확인할 수 있습니다). Tor 프로젝트(혹은 귀하에게 tor를 배포한 기관)에서 소스코드에의 접근권을 주지 않는다면, '재밌는 일'이 일어나고 있다는 지표입니다. 배포 사이트에 누군가가 손을 댔을지 모르므로, 릴리스의 PGP 서명도 확인해보셔야 합니다.

또한 귀하의 익명성에 영향을 미치는 우발적인 버그가 발생할 수도 있습니다. Tor 프로젝트에선 주기적으로 익명성과 관련된 버그를 찾아 수정합니다. 그러니 Tor 버전을 최신으로 유지해주세요.

(현재 실제로 사용되는 저지연 익명화 설계 방식 모두가 그렇듯이) Tor 역시 공격자가 통신로 처음과 끝을 조회하게 되면 속수무책입니다. 예를 들어, 귀하가 네트워크에 들어갈 때 선택한 Tor 중계서버를 공격자가 보고 조정할 수 있으며, 귀하가 방문한 웹사이트도 보고 조정할 수 있다고 가정합시다. 관련 연구 단체에서 파악한 바에 따르면, 이런 상황에서 공격자가 통신로 양 끝에서 오는 볼륨 정보와 타이밍 정보를 상관관계 분석하는 걸 확실히 막을 수 있는 실현가능한 저지연 설계방식은 현존하지 않습니다.

그럼 대체 어찌해야 할까요? 공격자가 C 중계서버를 조회하고 조정할 수 있다고 가정해 봅시다. 총 N 중계서버가 있다고도 가정해 봅시다. 귀하가 시작 중계서버와 출구 중계서버를 네트워크를 사용할 때마다 새로 선택한다고 할 때, 공격자는 귀하가 수신하는 모든 트래픽의 상관관계를 분석할 수 있습니다. 이 때의 확률은 대략 (c/n)2 입니다. 그러나 대다수 사용자들에게 프로파일링이란 항시 추적당하는 것처럼 나쁜 겁니다: 공격자의 감시 없이 이것 저것 하고 싶은데 말이죠. 또한 감시하는 공격자는 감시 횟수가 한 번이든, 여러 번이든 나쁜 건 매한가지입니다. 따라서 시작 중계서버와 출구 중계서버를 아무리 무작위로 많이 골라봐야 사용자가 공격자의 프로파일링에서 벗어날 가능성은 없다는 거죠.

해결방법은 '엔트리 가드'를 쓰는 겁니다: 각 Tor 클라이언트가 몇몇 중계서버을 무작위로 선택해 시작지로 사용합니다. 그리고 해당 중계서버는 각 Tor 클라이언트의 첫 홉으로만 사용됩니다. 해당 중계서버가 조정되거나 관측되지 않는다면, 공격자가 완전히 패배한 것이죠. 그리고 사용자는 안전한 거고요. 해당 중계서버를 공격자가 조정하거나 관측한다면, 공격자는 사용자 트래픽의 수많은 편린을 접하게 됩니다. 그러나 사용자는 기존처럼 프로파일링되지는 않을 겁니다. 따라서 사용자가 프로파일링을 피할 수 있는 가능성이 0이었던 전에 비해 어느정도 존재하게 됩니다(대략 (n-c)/n 정도)

An Analysis of the Degradation of Anonymous Protocols, Defending Anonymous Communication Against Passive Logging Attacks, 그리고 특히 Locating Hidden Servers 를 읽고 더 알아보세요

입구노드의 종류가 적을수록 운영되는 Tor 노드가 적고, Tor 사용자 IP 주소를 목록화하길 원하는 공격자에 대항하는데 도움이 됩니다. (설사 사용자가 지칭하는 도착지를 알 수 없다 해도, 공격자는 여전히 Tor 사용자 IP 주소 목록을 통해 이것저것 나쁜 짓을 할 수 있습니다.) '디렉터리 가드' 설계 방식으로 바꾸지 않는 한, 위 기능이 계속 유효하진 않습니다.

Tor는 다양한 종류의 키를 사용하며, 이는 세 가지 목표 때문입니다: 1) Tor 네트워크 내 데이터를 보호받을 권리를 확고히 하는 암호화를 위함, 2) 클라이언트가 의도된 대로 중계서버와 통신 중임을 알 수 있도록 하는 인증방식을 위함, 3) 모든 클라이언트가 같은 중계서버 구성임을 알 수 있도록 하는 서명방식을 위함.

암호화: 먼저 Tor 내 모든 연결은 TLS 링크 암호화를 사용합니다. 따라서 감시자가 어떤 셀이 우회로를 구성하는지 확인하기 위해 내부를 들여다보지 못합니다. 또한 Tor 클라이언트는 매 우회로에서의 중계서버마다 임시 암호화 키를 생성합니다. 이러한 몇 겹의 암호화 계층 때문에 출구 중계서버만 셀을 읽을 수 있습니다. 우회로의 목적지에 다다랐을 때, 양쪽에서 우회로 키를 제거합니다. 따라서 트래픽의 로그를 딴 후 중계서버에 침입해 키를 확보하는 공격자의 방식이 성립되지 않습니다.

인증: 각 Tor 중계서버는 공개 복호화 키를 갖고 있습니다. 이를 'onion 키'라고 합니다. 각 중계서버가 소유한 'onion 키'는 4주마다 서로 교대합니다. Tor 클라이언트가 우회로를 생성할 때, 매 단계마다 Tor 중계서버가 onion 키를 알고 있는지 입증하도록 요구됩니다. 이러한 방식으로 인해, 우회로 상의 입구노드는 나머지 전체 경로를 스푸핑할 수 없습니다. Tor 클라이언트가 우회로를 선택하기 때문에, Tor의 '분산 신뢰' 특성을 확고히 할 수 있습니다: 즉 우회로 내 어떤 단일 중계서버도 클라이언트와 클라이언트가 하려는 일 둘 다 알 수가 없습니다.

조정: 클라이언트가 중계서버가 무엇인지 어떻게 알 수 있을까요? 또 자신이 주어진 중계서버에 맞는 키를 갖고 있음을 클라이언트는 어떻게 알 수 있을까요? 각 중계서버는 '신원 키'라고 부르는 장기 공개 키를 갖고 있습니다. 각 디렉터리 기관은 여기에 더해 '디렉터리 서명 키'라는 걸 추가로 갖고 있습니다. 디렉터리 기관은 알려진 모든 중계서버의 서명 목록을 제공합니다. 해당 리스트에는 각 중계서버가 가진 키, 위치, 출구 정책 등이 적시된 각 중계서버에서의 인증서(각 중계서버의 신원 키에 의한 자체 서명 인증서)가 기재돼있습니다. So unless the adversary can control a majority of the directory authorities (as of 2022 there are 8 directory authorities), they can't trick the Tor client into using other Tor relays.

디렉터리 기관이 어디인지 클라이언트가 아는 방법이 있나요?

Tor 소프트웨어에 내장된 각 디렉터리 기관의 위치와 공개 키 목록을 확인할 수 있습니다. 따라서 사용자를 속여 가짜 Tor 네트워크를 이용케 하는 유일한 방법은 변조된 버전의 Tor 소프트웨어를 받게 하는 것 뿐입니다.

제대로 된 소프트웨어를 받았는지 사용자가 어떻게 확인하나요?

Tor 프로젝트가 배포한 소스 코드나 패키지엔 GNU Privacy Guard로 디지털 서명이 돼있습니다. Tor 브라우저의 서명을 확인하는 방법를 확인하세요.

Tor 프로젝트에서 서명한 것인지 확실히 하고자 한다면, Tor 프로젝트 구성원과 대면해 GPG 키 지문의 복사본을 받으시거나 이를 가진 다른 분을 찾으셔야 합니다. 이정도 수준의 공격을 걱정해야 하는 상황이라면, 보안 커뮤니티에 참여해 구성원과 만나서 얘기해보는 걸 추천드립니다.

Tor는 우회로가 정상 작동 하는 이상, 10분마다 새 TCP 스트림에서 같은 우회로를 재사용합니다. (우회로가 작동하지 않는다면, Tor는 즉시 새로운 우회로로 전환합니다.)

그러나 단일 TCP 스트림(예시: 장시간 IRC 연결)은 계속 동일한 우회로에 남게 됨을 명심하세요. Tor는 개별 스트림을 주어진 우회로에서 다른 우회로로 전송하지 않습니다. 만약 Tor에서 개별 스트림을 다른 우회로로 전송한다면, 네트워크 조각을 보는 상대방이 귀하의 목적지를 볼 가능성이 높아지게 됩니다.

Tor 브라우저

디지털 서명은 주어진 패키지가 원 개발자가 생성한 것이고 이후 손대지 않은 것임을 보장하는 절차입니다. 다운로드 받은 Tor 브라우저가 Tor 프로젝트에서 만들었고, 공격자에 의해 개조되지 않았음을 검증하는 게 왜 중요하고, 어떻게 해야하는지 아래에 설명해뒀습니다.

다운로드 페이지에서 파일을 받으시면 labelled 패티지 이름은 같으면서, "signature" 라는 레이블이 더 붙은 파일을 같이 받게 됩니다. 해당 파일의 확장자는 .asc로, OpenPGP 서명입니다. 위 서명을 통해 다운로드한 파일이 Tor 측에서 당신께 제공하려 했던 파일과 정확히 같은지 검증할 수 있습니다. 웹 브라우저마다 다르지만, 일반적으로 'signature' 링크를 오른쪽 마우스 버튼으로 클릭 후 'save file as' 옵션을 선택해서 이 파일을 다운로드할 수 있습니다.

예를 들어, torbrowser-install-win64-9.0_en-US.exe 파일은 torbrowser-install-win64-9.0_en-US.exe.asc와 함께 제공됩니다. 위의 파일 이름은 예시일 뿐, 귀하가 다운로드 받은 파일 이름과는 정확하게 일치하지 않습니다.

지금부터는 다운로드 받은 파일의 디지털 서명을 검증하는 방법을 운영 체제에 따라 설명해드리겠습니다. 서명에 기재된 날짜는 패키지가 서명된 순간을 의미함을 유의하세요. 따라서 새로운 파일이 업로드될 때마다, 새로운 서명이 생성되며, 기재된 날짜도 달라지게 됩니다. 서명을 검증한 이상 더이상 확인된 날짜가 상이하다고 해서 걱정할 필요가 없습니다.

GnuPG 설치하기

서명을 검증하기 전에 우선 GnuPG가 설치돼있어야 합니다.

윈도우 사용자라면:

Windows를 사용 중이라면, Gpg4win를 다운로드 받으세요. 그 후 다운로드 받은 '설치 도우미'를 실행하세요.

서명을 검증하려면 윈도우 명령 행인 cmd.exe에 명령 몇 개를 입력해야 합니다,

macOS 사용자라면:

macOS를 사용 중이라면, GPGTools를 설치하세요.

서명을 검증하려면 터미널('애플리케이션' 메뉴 내에 있습니다)에 명령 몇 개를 입력해야 합니다.

GNU/LINUX 사용자라면:

GNU/Linux를 사용한다면 GnuPG가 이미 시스템 내에 있을 겁니다. GNU/Linux 배포판 대다수엔 사전 설치 돼있거든요.

서명을 검증하려면 터미널 창에 명령 몇 개를 입력해야 합니다. 배포판에 따라 앞으로의 진행 방식에 차이가 있습니다.

Tor 개발자 키 인출하기

매 Tor 브라우저 릴리스엔 Tor 브라우저 팀의 서명이 들어있습니다. Tor 브라우저 개발자 서명 키 가져오기 (0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290):

gpg --auto-key-locate nodefault,wkd --locate-keys torbrowser@torproject.org

위 명령을 입력하면 다음과 같이 떠야 합니다:

gpg: key 4E2C6E8793298290: public key "Tor Browser Developers (signing key) <torbrowser@torproject.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
pub   rsa4096 2014-12-15 [C] [expires: 2025-07-21]
      EF6E286DDA85EA2A4BA7DE684E2C6E8793298290
uid           [ unknown] Tor Browser Developers (signing key) <torbrowser@torproject.org>
sub   rsa4096 2018-05-26 [S] [expires: 2020-12-19]

에러 메시지가 뜨나요? 뭔가 잘못된 것입니다. 원인을 규명하기 전까지는 더이상의 진행이 불가능합니다. Workaround (using a public key) 섹션을 대신 사용해 키를 가져올 수 있을지도 모릅니다.

키를 가져온 후, 파일(파일에 있는 지문을 통해 키를 식별할 수 있습니다)에 저장할 수 있습니다:

gpg --output ./tor.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290

이 명령을 사용하면, 키가 ./tor.keyring 경로, 즉 현 디렉터리에 파일 형태로 저장됩니다. 이 명령을 사용했음에도 ./tor.keyring경로가 없다면, 뭔가 잘못된 겁니다. 문제의 원인을 찾을 때까지 더이상 진행할 수 없습니다.

서명의 검증

다운로드한 패키지의 서명을 검증하려면, 상응하는 '.asc' 서명 파일과 Tor 브라우저 설치 파일(installer)을 다운로드해야 합니다. 그 후 GnuPG가 다운로드한 파일을 검증하도록 하는 명령을 입력해 검증합니다.

하단의 예시는 귀하가 두 파일을 'Downloads' 폴더에 받았을 것을 상정하고 작성됐습니다. 이러한 명령에 적혀있는 파일명은 예시이지, 귀하가 받은 실제 파일명과는 상이한 점에 유의하세요: 예시엔 9.0이라 적혀있지만, 귀하가 다운로드 받은 버전은 이보다 높을 것입니다. 예시로 기재된 English (en-US) 버전이 아닌 다른 언어로 받으셨을 수도 있고요.

윈도우 사용자라면:

gpgv --keyring .\tor.keyring Downloads\torbrowser-install-win64-9.0_en-US.exe.asc Downloads\torbrowser-install-win64-9.0_en-US.exe

macOS 사용자라면:

gpgv --keyring ./tor.keyring ~/Downloads/TorBrowser-9.0-osx64_en-US.dmg.asc ~/Downloads/TorBrowser-9.0-osx64_en-US.dmg

GNU/Linux 사용자 (32비트 패키지를 받았다면, 하단의 64를 32로 바꾸세요):

gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-linux64-9.0_en-US.tar.xz.asc ~/Downloads/tor-browser-linux64-9.0_en-US.tar.xz

명령의 결과가 다음과 같이 산출돼야 합니다:

gpgv: Signature made 07/08/19 04:03:49 Pacific Daylight Time
gpgv:                using RSA key EB774491D9FF06E2
gpgv: Good signature from "Tor Browser Developers (signing key) <torbrowser@torproject.org>"

'해당 파일이나 디렉터리가 없습니다(No such file or directory)'라는 에러 메시지가 송출될 경우, 이전까지의 단계를 진행하면서 뭔가 잘못 했을 수 있습니다. 혹은 명령을 입력할 때 예시에 적힌 파일 이름을 그대로 적어서 문제가 발생한 것일 수도 있어요. 귀하가 받은 파일 이름과 예시 파일 이름은 살짝 다르거든요.

차선책 (공개 키를 사용한 해결방법)

발생한 에러를 해결할 수 없다면, 부담을 갖지 마시고 이 공개 키를 대신 다운로드 받아 사용하세요. 다른 방법으로, 다음 명령을 사용해도 됩니다:

curl -s https://openpgpkey.torproject.org/.well-known/openpgpkey/torproject.org/hu/kounek7zrdx745qydx6p59t9mqjpuhdf |gpg --import -

Tor 브라우저 개발자 키는 keys.openpgp.org and can be downloaded from https://keys.openpgp.org/vks/v1/by-fingerprint/EF6E286DDA85EA2A4BA7DE684E2C6E8793298290에서도 받으실 수 있습니다. macOS나 GNU/Linux를 사용 중이라면, 다음 명령을 실행해 키를 가져올(fetch) 수 있습니다:
$ gpg --keyserver keys.openpgp.org --search-keys torbrowser@torproject.org

GnuPG에 대해 더 알아보셔도 좋습니다.

프롬프트에서 다운로드받은 파일을 저장할 위치(destination)를 설정하라 안내합니다. 받은 위치가 기억이 안 나시나요? 대부분의 경우 다운로드(Downloads)나 바탕화면(Desktop) 폴더일 가능성이 매우 큽니다.

Windows 인스톨러로 설치 시 기본 설정 상 바탕화면에 바로가기(shortcut)이 추가로 생성됩니다. 다만 설치 과정에서 해당 옵션을 본인도 모르게 클릭해서 바로가기가 생성되지 않았을 수도 있어요.

두 폴더 모두를 찾을 수 없다면, 다시 다운로드 받은 후 어느 디렉터리에 저장할 지 선택하라는 프롬프트를 찾으세요. 쉽게 기억할 수 있는 디렉터리 위치를 정하세요. 다운로드가 완료되면 정해둔 디렉터리에 Tor 브라우저 폴더가 생성돼있을 겁니다.

새로운 안정적인 버전의 Tor 브라우저를 출시할 때마다 새로운 기능과 알려진 문제를 자세히 설명하는 블로그 게시물을 작성합니다. 업데이트를 진행한 후 Tor 브라우저에 문제가 발생했다면, blog.torproject.org에서 최신 안정 Tor 브라우저에 관련 게시글을 살펴보세요. 겪으신 문제가 해당 게시글에 기재돼있을 수 있습니다. 겪으신 문제가 기재돼있지 않은 경우, Tor Browser's issue tracker을 확인해보신 후, GitLab issue에 겪은 문제를 게시글로 등록해주세요.

We want everyone to be able to enjoy Tor Browser in their own language. Tor Browser is now available in 37 different languages, and we are working to add more.

Our current list of supported languages is:

Language
ﻉﺮﺒﻳﺓ (ar)
Català (ca)
česky (cs)
Dansk (da)
Deutsch (de)
Ελληνικά (el)
English (en)
Español (es)
ﻑﺍﺮﺴﯾ (fa)
Français (fr)
Gaeilge (ga-IE)
עברית (he)
Magyar nyelv (hu)
Indonesia (id)
Islenska (is)
Italiano (it)
日本語 (ja)
ქართული (ka)
한국어 (ko)
lietuvių kalba (lt)
македонски (mk)
ﺐﻫﺎﺳ ﻡﻼﻳﻭ (ms)
မြမစ (my)
Norsk Bokmål (nb-NO)
Nederlands (nl)
Polszczyzna (pl)
Português Brasil(pt-BR)
Română (ro)
Русский (ru)
Shqip (sq)
Svenska (sv-SE)
ภาษาไทย (th)
Türkçe (tr)
Український (uk)
Tiếng Việt (vi)
简体中文 (zh-CN)
正體字 (zh-TW)

Want to help us translate? Become a Tor translator!

Tor Browser Alpha releases를 설치해서 차기 지원 대상 언어를 테스트 해주시는 것도 Tor 브라우저 최신 릴리스 개발에 도움이 됩니다.

아니요. Tor 브라우저는 오픈 소스이자 무료인 소프트웨어입니다. Tor 브라우저를 받으려면 돈을 내라고 요구하는 경우, 이는 Tor 브라우저를 사칭한 가짜입니다. 귀하가 다운로드 받은 게 제대로 된 Tor 브라우저임을 확실히 하려면, Tor 프로젝트의 다운로드 페이지에서 받으세요. 다운로드 받은 후 서명 검증을 통해 Tor 브라우저 공식 버전 유무를 검증할 수 있습니다. Tor 프로젝트 웹사이트에 접속할 수 없는 경우검열 섹션에서 Tor 브라우저를 다운로드 받는 대체 방식에 대한 정보를 알아보세요.

frontdesk@torproject.org로 가짜 Tor 브라우저를 보고할 수 있습니다.

Tor 브라우저는 현재 Windows, Linux, macOS에서 사용할 수 있습니다.

Android 용 Tor 브라우저도 현재 사용 가능하며, The Guardian Project에서 개발한 Orbot 앱을 통해 Android 내 설치된 앱들의 연결이 Tor 네트워크를 거치도록 설정할 수 있습니다.

There is no official version of Tor Browser for iOS yet, though we recommend Onion Browser.

안타깝지만 Chrome OS 용 Tor 브라우저 버전은 아직 제공되지 않습니다. ChromeOS의 경우 Android용 Tor 브라우저를 사용할 수 있습니다. ChromeOS애서 Android용 Tor 브라우저 실행 시, 웹사이트가 (데스크톱 창이 아닌) 모바일 창으로 표시되는 점 참고하세요. 그러나 저희가 Android용 Tor 브라우저를 ChromeOS 상에서 따로 검사(audit)해보지 못한 관계로, 브라우저의 개인 정보 기능이 제대로 작동될지 알 수가 없습니다.

죄송하지만 현재 Tor 브라우저는 *BSD에서 공식적으로 지원하지 않습니다. TorBSD project에서 별도로 OpenBSD용 Tor 브라우저를 배포하고 있습니다만, 이는 Tor 프로젝트의 공식 지원 대상이 아닙니다.

Tor 브라우저를 사용하면 다른 브라우저보다 속도가 느릴 수 있습니다. 수백만의 사용자가 매일 Tor 네트워크를 경유하고 있고, 이들의 트래픽을 6000개의 중계서버(relay)가 전송하고 있습니다. 이런 역할을 하는 각 중계서버에서 지연 시간이 종종 발생할 수 있습니다. 그리고 설계 상, 귀하의 트래픽은 전 세계 여러 지역에 있는 자원봉사자(volunteer)의 중계를 통해 전송됩니다. 이런 여건 상 병목과 네트워크 지연 시간의 발생은 필연적입니다. running your own relay을 운영하면 Tor 네트워크의 속도 향상에 도움이 됩니다. 다른 분들께도 운영을 권해보세요. 네트워크 성능(Network Performance)에 관해 더 전문적으로 풀어 쓴 글인 Roger's blog post on the topicTor's Open Research Topics: 2018 edition을 살펴보세요. 그렇긴 합니다만, Tor는 과거에 비해 훨씬 빨라졌습니다. 타 브라우저 대비 속도 면에서 그리 큰 차이를 느끼지 못하실 거에요.

'사생활 보호 모드'와 '시크릿 창'은 기능명만 들으면 익명으로 브라우징할 수 있는 기능인가 싶을 겁니다. 사실 그렇지 않습니다. 해당 기능을 사용하면, 귀하가 창이나 탭을 닫았을 때 브라우징 세션과 관련된 모든 정보가 기기에서 삭제됩니다. 하지만 해당 기능엔 귀하의 활동을 숨겨주는 기능도, 온라인 상 디지털 핑거프린트를 가리는 조치가 전혀 들어있지 않습니다. 이는 곧 공격자가 여타 브라우저와 다름 없이 쉽게 귀하의 트래픽을 수집할 수 있게 됨을 뜻합니다.

Tor 브라우저는 '개인 정보 보호 탭'에서 으레 제공하는 '기록 삭제 기능(amnesic feature)'은 물론, 소스 IP를 가리는 기능도 탑재돼있습니다. 또한 웹 상의 활동을 핑거프린팅 할 때 사용되는 브라우징 습관, 기기의 상세 정보도 가려집니다. 종단간 신원 파악이 매우 어려운 '은밀한 브라우징 세션'이 이루어지는 것이죠.

'개인 정보 보호 탭(private tab)'과 '시크릿 모드(incognito mode)'의 한계에 관해 더 자세히 알고자 하신다면, Mozilla에서 작성한 글인 개인 정보 보호 탭에 관한 통념을 확인해보세요.

다음 방식을 통해 Tor 브라우저를 기본 브라우저로 설정할 수 있습니다. 하지만 모든 운영 체제에서 유효하진 않을 수 있습니다. Tor 브라우저는 운영 체제에 종속되지 않고 독립적으로 작동할 수 있도록 공을 들인 결과물인지라, 기본 브라우저로 설정하는 방법이 적용될 수도 있고 적용되지 않을 수도 있습니다. 즉 언제는 Tor 브라우저로 웹사이트가 로드됐는데, 다른 때는 다른 브라우저로 로드될 수도 있다는 겁니다. 이러한 동작 방식은 귀하의 익명성에 악영향을 끼칠 수도 있는 만큼 위험할 수 있습니다.

타 브라우저로 Tor를 사용하는 걸 Tor 프로젝트에선 강력히 반대합니다. Tor 브라우저의 개인 정보 보호 기능이 없기 때문에 귀하가 취약한 환경에 노출될 수 있기 때문입니다.

Tor 브라우저를 사용하는동안 다른 브라우저를 같이 사용하는 게 물론 안 되는 건 아닙니다. 그러나, Tor 브라우저에서 제공되는 개인 정보 보호 기능(privacy properties)이 다른 브라우저에는 부재함을 아셔야 합니다. Tor 브라우저와 덜 안전한 타 브라우저를 왔다 갔다 할 때 유의하셔야 합니다. Tor에서 했어야 할 작업을 실수로 다른 브라우저에서 하실 수도 있으니까요.

Tor 브라우저와 다른 브라우저를 동시에 실행해도 Tor의 성능이나 개인 정보 보호에는 영향을 미치지 않습니다.

However, be aware that when using Tor and another browser at the same time, your Tor activity could be linked to your non-Tor (real) IP from the other browser, simply by moving your mouse from one browser into the other.

Or you may simply forget and accidentally use that non-private browser to do something that you intended to do in Tor Browser instead.

Tor 브라우저의 트래픽만 Tor 네트워크를 통해 전송(route)됩니다. (타 브라우저를 포함한) 시스템 내 다른 에플리케이션에서 발생하는 연결은 Tor 네트워크를 거쳐 전송되지 않습니다. 따라서 연결이 보호되지 않습니다. 그들은 Tor을 사용하려면 별도로 구성하야 됩니다. 모든 트래픽이 Tor 네트워크를 경유하도록 확실히 해야 한다면, Tails live operating system을 한번 알아보세요. 거의 대다수 컴퓨터에서 USB 스틱이나 DVD만으로 실행할 수 있는 운영 체제입니다.

권장하지 않습니다. 그렇게 한다 하더라도, 많은 플랫폼에서 설계한 대로 작동하지 않을 가능성이 많습니다.

Tor 브라우저가 Firefox ESR을 기반으로 제작된 브라우저이기 때문입니다. 따라서 Firefox와 관련된 에러가 송출될 수 있어요. Tor 브라우저의 다른 인스턴스가 이미 실행 중이며 사용자가 올바른 권한을 가진 위치에 Tor 브라우저를 추출했는지 확인하십시오. 안티 바이러스 프로그램이 실행 중이라면, 안티바이러스/맬웨어 보호 때문에 Tor 브라우저 접속이 차단됩니다 문서를 확인하세요. 안티 바이러스나 맬웨어 방지 소프트웨어로 인해 이러한 문제가 자주 발생합니다.

Tor 브라우저는 Tor를 사용할 수 있도록 특별히 설계된 Firefox의 개조 버전입니다. 개인정보 보호 및 보안성 강화를 위한 추가적인 패치를 적용하는 등 Tor 브라우저 빌드 과정에서 들어간 작업이 굉장히 많습니다. 다른 브라우저에서도 Tor 사용이 문자 그대로 불가능한 건 아닙니다만, 공격을 받거나 정보가 유출될 가능성에 노출될 수 있습니다. 따라서 Tor를 타 브라우저에서 사용하는 것에 대해 Tor 프로젝트는 강경히 반대하는 입장입니다. Tor 브라우저가 어떻게 설계됐는지 더 자세히 알아보세요.

Tor 브라우저 내 북마크를 내보내고 가져오는 거 모두 가능합니다. 백업과 복원도 가능하고요. 타 브라우저의 북마크를 가져오는 것 또한 가능합니다. Tor 브라우저의 북마크를 관리하려면 여기로 가세요:

  • Hamburger menu >> Bookmarks >> Manage bookmarks (below the menu)
  • From the toolbar on the Library window, click on 'Import and Backup'

북마크를 내보내고자 할 때

  • '북마크를 HTML로 내보내기'를 선택하세요.
  • '북마크 파일 내보내기' 창이 열렸을 때, 파일을 저장할 위치를 선택하세요. 파일의 기본명은 named bookmarks.html 입니다. 파일 저장 위치로 바탕화면이 제격이지만, 기억이 잘 나는 데면 어디든 좋습니다.
  • '저장' 버튼을 클릭하세요. '북마크 파일 내보내기' 창이 닫힙니다.
  • 라이브러리 창을 닫으세요

Tor 브라우저에 있던 북마크를 성공적으로 내보냈습니다. 다른 웹 브라우저에서 저장된 'HTML 형식의 북마크 파일'을 가져올 수 있습니다.

북마크를 가져오고자 할 때

  • 'HTML로 북마크 가져오기' 를 선택하세요.
  • '북마크 파일 가져오기' 창이 열렸을 때, 가져오고자 하는 HTML 형식의 북마크 파일을 찾아 선택하세요.
  • '열기' 버튼을 클릭하세요. '북마크 파일 가져오기' 창이 닫힙니다.
  • 라이브러리 창을 닫으세요

선택한 HTML 파일에 기재된 북마크가 Tor 브라우저에 추가됐습니다. 북마크 메뉴 디렉터리에서 확인하실 수 있습니다.

백업하고자 할 때

  • 백업을 선택하세요
  • 새 창이 열립니다. 거기서 파일을 저장할 위치를 선택하세요. 파일의 확장자는 .json 입니다.

복원하고자 할 때

  • '복원'을 선택한 후 복원하고자 하는 북마크 파일을 선택하세요.
  • 화면에 생긴 팝업 박스에 있는 확인 버튼을 클릭하세요. 그러면 짜잔, 백업한 북마크가 막 복원됐답니다.

타 브러우저의 데이터를 가져오기

Firefox에 있는 북마크를 Tor 브라우저로 가져올 수 있습니다. Firefox 내 북마크를 내보내서 Tor로 가져오는 방법으로 두 가지가 있습니다: HTML 파일이나 JSON 파일으로의 방식입니다. 브라우저의 데이터를 내보낸 후, 위 단계를 따라 내보낸 북마크 파일을 Tor 브라우저에 가져오세요.

주의: Andoroid용 Tor 브라우저에선 현재 북마크를 내보내고 가져올 방법이 없습니다.Bug #31617

When you have Tor Browser open, you can navigate to the hamburger menu ("≡"), then click on "Settings", and finally on "Connection" in the side bar. 페이지 최하단에서 "Tor 로그 조회" 옆에 있는 "로그 조회..." 버튼을 클릭합니다. 로그를 클립보드(clipboard)에 복사하는 옵션이 보일 겁니다. 이를 통해 로그를 텍스트 편집기나 이메일 클라이언트에 붙여넣기 할 수 있어요.

GNU/Linux 환경의 경우 다른 방법이 있습니다. 명령 창에서 바로 로그를 조회하려면, 디렉토리에서 Tor 브라우저를 찾아 명령 창에 다음을 입력해 실행합니다:

./start-tor-browser.desktop --verbose

아니면 파일 형식으로 로그를 저장할 수도 있습니다 (기본: tor-browser.log)

./start-tor-browser.desktop --log [file]

Tor 브라우저는 창 크기(screen dimensions)에 의한 핑거프린팅을 방지하기 위해, 창에 200px x 100px의 원형 테두리를 덧대는 게 기본으로 설정 돼있습니다. 이 방식엔 모든 Tor 브라우저 사용자를 물통 여러 개에 쏟아 넣어, 사용자 하나를 식별해내는 걸 어렵게 만들기 위한 전략이 깔려 있습니다. 사용자가 따로 창 크기를 조절하기 전까지 이 전략이 유효합니다(예시: 창 최대화, 전체 화면 모드) Tor 브라우저엔 위와 같은 시나리오에도 대비할 수 있는 핑거프린팅 저지 수단이 기본 내장돼있습니다. 이를 Letterboxing이라 부릅니다. 'Letterboxing'은 Mozilla가 개발한 기술로, 2019년에 제공되기 시작했습니다. Letterboxing은 브라우저 창에 하얀 테두리를 추가하는 방식으로 작동됩니다. 그렇게 함으로써 사용자가 원하는 창 크기 조절치를 최대한 유사하게 제공하는 동시에, 사용자가 다른 사용자와 구별하기 어려운 상태를 유지할 수 있습니다. 즉 브라우저 창 크기를 통한 핑거프린팅으로 사용자를 집어내는 걸 저지할 수 있는 것입니다.

간단히 말해, 이러한 기법을 통해 많은 Tor 사용자를 특정 창 크기를 사용하는 사용자들로 묶음으로써, 창 크기를 기반으로 사용자 가운데 한 명을 식별하는 게 어려워지는 겁니다. 창 크기가 같은 사용자가 엄청 많아지니까요.

letterboxing

Tor 브라우저는 당신의 사이트가 차단된 곳에 거주하는 사용자들이 당신의 사이트에 접근하는 것을 도울 수 있습니다. 대체로 다만 Tor 브라우저 를 다운로드하고 차단했는 사이트를 이동하면 접속이 가능하게 할 것입니다. 검열 수준이 심한 환경에도 유효하도록. Tor 프로젝트는 많은 검열 우회 옵션을 마련해두었습니다. 장착형 전송수단이 대표적입니다.

더 자세한 정보를 Tor 브라우저 사용자 매뉴얼의 검열 섹션을 참고하세요.

몇몇 웹사이트는 Tor 사용자와 봇을 구분할 수 없다는 이유로 Tor 사용자를 차단하려 합니다. 사이트 관리자에 직접 연락하는 게 경험적으로 볼 때 Tor 사용자 대상 접속 차단을 푸는 가장 최선의 방법입니다. 이런 것은 문제를 해결할 수도 있습니다:

"안녕하세요? Tor 브라우저로 xyz.com에 접속하려고 했는데, Tor 사용자가 사이트에 접속할 수 없도록 설정해 두셨더라고요. 그 결정 부디 재고해주셨으면 합니다. 전 세계 사람들이 프라이버시를 보호하고 검열에 맞서기 위해 Tor를 사용하고 있기 때문입니다. Tor 사용자를 차단할 경우 귀하는 어쩌면 자유 인터넷에 접속하길 원하는 피압박민, 증거나 연구물을 지키고자 하는 저널러스트와 연구자, 내부고발자, 운동가, 제3자 트래킹의 침입을 떨쳐내려는 일반 대중도 차단했을 지 모릅니다. 디지털 프라이버시와 인터넷 자유를 향한 확고한 자세를 취해주세요.Tor 사용자가 xyz.com에 접속할 수 있도록 허용해주세요. 감사합니다."

은행 및 기타 민감한 웹 사이트의 경우 지역에 기반을 차단을 하는 것이 일반적입니다 (은행이 보통 특정 국가에서 서비스에 접근하는 것을 알고 있고 갑자기 다른 지역의 '출구 중계서버'에서 연결하는 경우). 계정이 잠기거나 일시 중지 될 수 있습니다.

은행과 같은 민감한 정보를 다루는 웹사이트의 경우, '지리적 위치 정보 기반 차단'(geography-based blocking) 방식이 도입되는 경우가 일반적입니다 (가령 은행이 귀하가 평소엔 주어진 한 국가에서만 접속하는 걸 알고 있는 상황에서 갑자기 지구 정 반대편의 위치에 있는 '출구 중계서버'에서 접속한다면, 귀하의 계정을 정지시키거나 잠그는 조치를 취합니다.)

onion 서비스에 연결할 수 없나요? X.onion에 접속할 수 없어요! 문서를 참고하세요.

몇몇 웹사이트는 Tor 사용자와 봇을 구분할 수 없다는 이유로 Tor 사용자를 차단하려 합니다. 사이트 관리자에 직접 연락하는 게 경험적으로 볼 때 Tor 사용자 대상 접속 차단을 푸는 가장 최선의 방법입니다. 이런 것은 문제를 해결할 수도 있습니다:

"안녕하세요? Tor 브라우저로 xyz.com에 접속하려고 했는데, Tor 사용자가 사이트에 접속할 수 없도록 설정해 두셨더라고요. 그 결정 부디 재고해주셨으면 합니다. 전 세계 사람들이 프라이버시를 보호하고 검열에 맞서기 위해 Tor를 사용하고 있기 때문입니다. Tor 사용자를 차단할 경우 귀하는 어쩌면 자유 인터넷에 접속하길 원하는 피압박민, 증거나 연구물을 지키고자 하는 저널러스트와 연구자, 내부고발자, 운동가, 제3자 트래킹의 침입을 떨쳐내려는 일반 대중도 차단했을 지 모릅니다. 디지털 프라이버시와 인터넷 자유를 향한 확고한 자세를 취해주세요.Tor 사용자가 xyz.com에 접속할 수 있도록 허용해주세요. 감사합니다."

은행 및 기타 민감한 웹 사이트의 경우 지역에 기반을 차단을 하는 것이 일반적입니다 (은행이 보통 특정 국가에서 서비스에 접근하는 것을 알고 있고 갑자기 다른 지역의 '출구 중계서버'에서 연결하는 경우). 계정이 잠기거나 일시 중지 될 수 있습니다.

은행과 같은 민감한 정보를 다루는 웹사이트의 경우, '지리적 위치 정보 기반 차단'(geography-based blocking) 방식이 도입되는 경우가 일반적입니다 (가령 은행이 귀하가 평소엔 주어진 한 국가에서만 접속하는 걸 알고 있는 상황에서 갑자기 지구 정 반대편의 위치에 있는 '출구 중계서버'에서 접속한다면, 귀하의 계정을 정지시키거나 잠그는 조치를 취합니다.)

onion 서비스에 연결할 수 없나요? X.onion에 접속할 수 없어요! 문서를 참고하세요.

Tor 브라우저를 사용할 경우, 웹사이트 운영자 시선에선 귀하의 연결이 지구 저편에서 오는 것처럼 보일 때가 많습니다. 은행이나 이메일 서비스 제공자와 같은 웹사이트는 귀하가 그런 위치에서 접속할 경우 계정 보안이 뚫린 것으로 간주해, 계정을 잠그는 것입니다.

이 문제의 해결방법은 계정 복원에 관해 사이트에서 제시한 지침을 따르는 것 뿐입니다. 혹은 운영자에게 연락해 상황을 설명하는 방법밖에 없습니다.

제공자에서 IP 기반 평가 방식보다 훨씬 좋은 보안성을 지닌 이중인증(2-factor authentication) 방식을 제공할 경우 위 문제를 피할 수 있습니다. 2FA 제공이 가능할지 제공자에 문의해보세요.

Tor 브라우저로 자바스크립트로 떡칠된 웹사이트에 들어가면 기능 부분에서 이슈가 있을 수 있습니다. The simplest fix is to click on the Security icon (the small gray shield at the top-right of the screen), then click "Change..." 보안 설정이 "표준"을 설정하십시오.

대다수 안티바이러스 및 맬웨어 보호 애플리케이션에서는 사용자가 '허용 목록(allowlist)'에 특정 프로세스를 등록해 차단을 방지하도록 설정할 수 있게 해두었습니다. 안티바이러스나 맬웨어 보호 소프트웨어를 연 후, 설정에 들어가서 '허용 리스트(allowlist)' 비스무리한 항목이 있는지 찾아보세요. 그 다음, 다음 프로세스를 배제하세요:

  • Windows
    • firefox.exe
    • tor.exe
    • obfs4proxy.exe (만약 브리지를 사용할때)
    • snowflake-client.exe
  • macOS
    • TorBrowser
    • tor.real
    • obfs4proxy (중계 서버를 사용하는 경우)
    • snowflake-client

마지막으로, Tor 브라우저를 다시 시작하십시오. 이걸 사용하면 문제가 해결될 가능성이 큽니다. Kaspersky 같은 몇몇 안티바이러스 클라이언트도 방화벽 단에서 Tor를 차단할 수 있음을 참고하세요.

몇몇 안티바이러스 소프트웨어는 Tor 브라우저 구동 시 맬웨어 경고와 취약점 발견 경고를 각각 띄우거나, 둘 다 띄우기도 합니다. Tor 프로젝트 메인 웹사이트에서 Tor 브라우저를 다운로드 받거나, GetTor를 이용했고 검증까지 했다면, 거짓양성이 떠도 걱정 할 거 하나 없습니다. 몇몇 안티바이러스 프로그램은 많은 사용자가 조회하지 않은 파일을 의심스러운 파일로 간주합니다. 다운로드 받은 Tor 프로그램이 Tor 프로젝트에서 만들었고, 공격자가 수정하지 않았음을 확실히 하기 위해, Tor 브라우저 서명을 검증할 수 있습니다. 안티 바이러스 프로그램에 의해 Tor 브라우저로의 접속이 차단되는 일을 방지하기 위해 특정 조치를 취해두는 것도 좋습니다..

Tor 네트워크를 차단하는 네트워크 환경에 있을 수 있습니다. 따라서 브리지를 사용해야 합니다. 몇몇 브리지는 Tor 브라우저에 내장돼있어, 몇 단계만 밟으면 작동시킬 수 있습니다. To use a pluggable transport, click "Configure Connection" when starting Tor Browser for the first time. Under the "Bridges" section, locate the option "Choose from Tor Browser's one of built-in bridges" and click on "Select a Built-In Bridge" option. From the menu, select whichever pluggable transport you'd like to use.

장착형 전송수단을 선택했다면, 위로 스크롤한 후 '연결하기'를 클릭해 설정을 저장하세요.

Or, if you have Tor Browser running, click on "Settings" in the hamburger menu (≡) and then on "Connection" in the sidebar. In the "Bridges" section, locate the option "Choose from Tor Browser's one of built-in bridges" and click on "Select a Built-In Bridge" option. Choose whichever pluggable transport you'd like to use from the menu. Your settings will automatically be saved once you close the tab.

다른 브리지를 필요가 있다면, 저희의 브리지 웹사이트 에서 얻을 수 있습니다. 브리지에 대한 더 자세한 정보를 Tor 브라우저 매뉴얼에서 알아보세요.

Tor 브라우저에서의 연결 문제를 초래하는 원인 중 가장 흔한 게 시스템 시계가 올바르게 설정되지 않은 것입니다. 시스템 시계와 시간대가 정확하게 설정돼있는지 확인하세요. 시계와 시간대가 올바른데도 문제가 해결되지 않는다면, Tor 브라우저 설명서에 있는 문제해결 페이지를 참고하세요.

Tor를 통해 Gmail을 사용한 후 Google은 종종 계정이 위험에 노출됐다는 팝업 알림을 송출하곤 합니다. 해당 알림 창에 표시된 목록을 보시면 계정에 최근 접속한 일련의 IP 주소와 전세계 상의 위치가 표시돼 있을 겁니다.

일반적으로, 이는 잘못된 알림입니다: Google은 Tor 서비스 특성 상 발생한 수 많은 위치에서의 로그인 기록을 보고, 이게 원 계정 소유자가 적법하게 계정에 접속하려 한 것인지 검증해야 겠다고 판단한 것입니다.

물론 이 현상이 여러 국가를 거치는 Tor 네트워크를 사용하면서 으레 일어나는 것이긴 합니다만, 그렇다고 해당 경고성 알림을 완전히 무시하진 마세요. 해당 알림이 거짓 양성(false positive)일 수도 있지만, 귀하의 Google 쿠키를 탈취(hijack)하려는 시도를 Google이 탐지해 보내는 알림일 수도 있습니다.

쿠키 탈취(Cookie hijacking)은 누군가 귀하의 컴퓨터에 물리적으로 접근했거나, 귀하의 네트워크 트래픽을 염탐할 때 가능한 행위입니다. 이론적으론 물리적 접근만이 귀하의 시스템에 위해를 끼칠 수 있습니다. Gmail 등의 서비스는 쿠키를 전송할 때 SSL 링크만 사용하기 때문입니다. 슬프게도 실제론 그렇게 단언하기엔 훨씬 복잡합니다.

누군가 귀하의 Google 쿠키를 탈취하려 한다면, 평소와는 다른 장소에서 로그인을 시도하게 될 겁니다(물론 아닐 수도 있습니다만).요지는 귀하가 Tor 브라우저를 사용하기 때문에 Google이 도입한 이러한 보안 조치(security measure)는 귀하께 그리 유용하지 않는단 점입니다. 결국 매 알림이 거짓 양성(false positive)으로 점철될 테니까요. 로그인 위치 말고 계정에 평소와 다른 점이 있는지 알아보거나, 최근 로그인 기록(timestamp)을 보고 해당 시간대에 정말 로그인을 했었나 자문해보는 것과 같이 다른 접근 방법이 필요합니다.

보다 최근에는, Gmail에서 2-Step Verification기능을 도입해 계정의 보안 계층을 덧대었습니다.

위와 같은 경우는 종종 일어나는 잘 알려진 문제입니다. Google이 Tor가 스파이웨어라 판단한 것이 아닙니다.

Tor를 사용하는 동안 쿼리를 수많은 사용자가 공유하는 '출구 중계서버'를 경유해서 전송합니다. 위 문제의 경우 단시간에 귀하 외 다른 Tor 사용자들도 Google에 쿼리를 보낼 때 발생합니다. 즉 Google이 단일 IP 주소(귀하에 할당된 '출구 중계서버')에서 대량의 트래픽이 발생했는데, 그 원인이 누군가가 Google을 크롤링하고 있는 데 있다고 판단한 것입니다. 그래서 해당 IP 주소에서 오는 트래픽을 잠시동안 지연시키는 거고요.

You can try 'New Circuit for this Site' to access the website from a different IP address.

위의 원리를 다르게 설명해 보겠습니다. Google은 Google 검색 과정에서 기이한 쿼리를 전송하는 스파이웨어나 바이러스류를 탐지하기 위해 노력하고 있습니다. Google은 그러한 쿼리를 수신한 IP 주소를 알아내고(아직 Tor 출구 중계서버라는 건 파악하지 못했습니다), 그 후 해당 IP 주소에서 오는 모든 연결에 최근 쿼리에 감염의 징조가 있다는 경고를 보냅니다.

Tor 프로젝트가 아는 한, Google은 의도적으로 Tor 사용을 따로 딱 짚어 차단하려는 조처를 취하진 않습니다. '감염된 기기'라는 에러 메시지는 잠시 후 다시 시도하면 없어질 가능성이 큽니다.

안타깝게도 몇몇 웹사이트에선 Tor 사용자를 대상으로 Captcha를 풀 것을 요구합니다. Tor 프로젝트는 해당 웹사이트의 Captcha를 없앨 수 없습니다. 이런 경우엔 웹사이트 운영자에 연락하는 게 가장 좋습니다. 운영자에게 Capcha 때문에 서비스 이용이 불편하다고 전하세요.

Google이 사용자 맞춤형 서비스를 제공할 수 있는 이유는 '지오로케이션'을 사용해 귀하의 위치를 알아냈기 때문입니다. 맞춤형 서비스에는 귀하가 선호할 법한 언어로의 서비스 제공과 귀하의 쿼리에 기반한 차별화된 검색 결과 제공 등이 있습니다.

Google 검색 결과를 영어로 보려면 전환할 언어 선택 옵션을 통해 조정하시면 됩니다. 그러나 사용자들은 해당 기능을 Tor의 기능이라 보지, 버그라고 보질 않습니다. 사실 인터넷 세계는 평평하지 않습니다. 지역에 따라 다른 언어로 콘텐츠가 표시되기 때문입니다. 이 기능은 이러한 사실을 상기시켜 줍니다.

Google 검색 URL은 이름/값 쌍을 인수로 취급하며, 이름 중에 'hl'이란 게 있음을 참고하세요. 'hl'을 'en으로 설정하면, Google은 Tor를 통해 전송된 Google 서버가 어딘지에 상관 없이 검색 결과가 영어로 표시됩니다. 링크는 다음과 같이 변경돼 표시됩니다:

https://encrypted.google.com/search?q=online%20anonymity&hl=en

Google에 접속할 때 국가 코드를 사용해도 간단하게 표시 언어를 설정할 수 있습니다. google.be, google.de, google.us 등으로 적으시면 됩니다.

Tor 브라우저를 사용하는 동안, 아무도 당신이 방문한 웹사이트를 확인할 수 없습니다. 그러나 서비스 제공 업체 또는 네트워크 관리자는 귀하가 Tor 네트워크에 연결하고 있음은 볼 수 있지만 귀하가 접속 했을 때 무엇을 하고 있는지 알 수는 없습니다.

Tor 브라우저는 귀하가 방문한 웹사이트를 알아내려는 사람들로부터 귀하를 지킵니다. 인터넷 서비스 제공자(Internet Service Provider, ISP)와 같은 단체에선 귀하가 Tor를 사용한다는 거 까진 파악할 수 있습니다. 그러나 Tor를 사용해 어딜 방문하려 하는지는 알지 못할 겁니다.

DuckDuckGo는 Tor 브라우저의 기본 검색 엔진(search engine)입니다. DuckDuckGo에선 사용자를 추적하지 않습니다. 사용자의 검색 결과를 저장하지도 않고요. DuckDuckGo privacy policy에서 더 자세히 알아보세요.

Tor 브라우저 6.0.6부터 Tor 프로젝트는 Tor 브라우저의 주 검색 엔진을 DuckDuckGo로 교체했습니다. 이전까지 Tor 브라우저에서 사용되던 Disconnect가 한동안 Google 검색 결과를 따올 수 없었습니다. Disconnect는 유저가 여러 검색 공급자 중 하나를 선택하는 방식의 메타 검색 엔진에 가깝습니다. 즉 Bing 검색 결과만을 전달하는 정도로 퇴화해버린 상황에서, 결국 Disconnect는 질적 측면에서 기본 검색 엔진으로 사용되기엔 부적합해진 것입니다. DuckDuckGo는 로그를 기록하지 않고, 사용자의 개인 정보나 검색 기록을 수집 및 공유하지 않습니다. 그렇기에 프라이버시를 지키는 데 최적인 것입니다. DuckDuckGo를 제외한 대다수 검색 엔진은 검색 기록 외에도 타임스탬프, IP 주소, 로그인한 계정 정보와 같은 정보를 저장합니다.

DuckDuckGo 지원 포털을 참고해주세요. Tor 브라우저에서 일어난 문제 같아 보인다면, Tor 프로젝트의 이슈 추적기를 통해 보고해 주세요.

Tor 브라우저에서 귀하의 중계서버 우회로를 변경하는 방법은 두 가지입니다. 하나는 '신원 재설정'이고, 다른 하나는 'Tor 우회로 재구성'입니다. 두 옵션 모두 햄버거 메뉴 ("≡")에 있습니다. URL 바 내에 있는 사이트 정보 메뉴에서 '우회로 재설정' 옵션에 접근할 수 있습니다. 또한 반짝거리는 빗자루 모양의 아이콘을 클릭해 '신원 재설정' 옵션에 들어갈 수 있습니다.

신원 재설정

해당 옵션은 차후에 이뤄질 브라우저 활동 기록과 기존까지의 활동 기록 간 관련성을 없애는 데 유용합니다.

해당 옵션을 선택하면 모든 창과 탭이 닫히고, 쿠키와 브라우징 기록과 같은 개인 정보도 모두 지워집니다. 그 후 기존 모든 연결이 재구성된 Tor 우회로로 연결되도록 새로고침 됩니다.

Tor 브라우저에서 모든 동작(activity)와 다운로드가 중단될 거라고 경고가 뜰 겁니다. 그러니, '신원 재설정'을 클릭하기 전에 이런 게 중단되도 괜찮은지 생각해보세요.

Tor 브라우저 메뉴

Tor 우회로 재구성

'Tor 우회로 재구성' 옵션은 사용 중인 출구 중계서버(exit relay)로 들어가려는 사이트에 연결할 수 없거나, 사이트를 제대로 불러올 수 없는 경우 유용합니다. 'Tor 우회로 재구성' 옵션을 선택하면 현재 활성화된 탭이나 창이 새로 재구성된 Tor 우회로를 통해 새로고침됩니다.

다른 창이나 탭에 열려있는 동일 웹사이트도 재구성된 우회로를 통해 새로고침됩니다.

위 옵션을 사용한다고 해서 웹사이트를 브라우징하며 모였던 개인정보와 활동이 지워지는 것은 아닙니다. 다른 웹사이트에 연결된 상태 자체에 영향을 미치는 것도 아닙니다.

Tor 우회로 재구성

Tor 브라우저를 쓴다고 해서 귀하가 네트워크 상 중계서버가 되는 건 아닙니다. 즉 Tor 브라우저를 쓴다고 귀하의 컴퓨터가 다른 분들의 트래픽을 전송하는 라우터가 되지 않는다는 거죠. 중계서버를 운영하고자 하신다면, Tor 중계서버 가이드의 내용을 참고하세요.

Tor 브라우저에서의 정상적인 작동(behavior)에 해당합니다. 우회로 상 첫 중계서버를 '진입 가드(entry guard)' 혹은 '가드(guard)'라고 부릅니다. '가드' 중계서버는 빠르고 안정적인 중계서버입니다. 2~3달 가량 귀하의 우회로 진입 지점에 자리잡아 여러 '익명성 파괴 공격(anonymity-breaking attack)'을 보호하는 역할을 담당합니다. 우회로 상 나머지 중계서버는 웹사이트에 방문할 때마다 변경됩니다. 이 모두가 있어야 Tor의 개인 정보 보호 기능을 온전하게 향유할 수 있게 됩니다. '가드 중계서버'의 작동방식을 더 자세히 알아보려면, 다음 블로그 포스트 와 '진입 가드'에 관한 논문을 참고하세요.

Tor 브라우저에선 각 신규 도메인마다 개별적인 우회로가 할당됩니다. Tor 브라우저의 설계 및 구현 문서에서 이러한 설계 방식의 기저에 깔린 원리를 더 자세히 설명했으니 확인해보세요.

Tor 회로 생성 방식을 변경하는 것은 절대 권장되지 않습니다. Tor가 경로(루트, route)를 선택하도록 둬야, Tor에서 최상의 보안 성능을 낼 수 있습니다. 자동으로 배정된 진입 노드(entry node)와 출구 노드(exit node)을 다른 걸로 변경하면 익명성에 위해가 될 수 있습니다. 그저 특정한 국가에서만 사용 가능한 자원(resource)에 접근하는 게 목적이라면, Tor 보다는 VPN을 사용하는 게 좋을 겁니다. VPN이 제공하는 개인 정보 보호 기능은 Tor에서 제공하는 기능과 상이함에 유의하세요. 물론 지역 제한(geolocation restriction) 문제를 해결하는 데는 VPN이 도움이 될 겁니다.

경고: 절대 아무거나 보고 torrc를 편집하지 마세요! 자칫 잘못했다간 공격자가 torrc를 악의적으로 구성하게 해 귀하의 보안성과 익명성에 위해를 가할 수 있습니다.

Tor엔 torrc라 부르는 텍스트 파일이 있습니다. 해당 텍스트 파일에 포함된 구성과 명령을 통해 Tor의 작동 방식을 조정할 수 있습니다. 대다수 Tor 사용자들에겐 기본 설정 만으로도 잘 작동됩니다 (이런 이유로 위에 경고를 달아둔 겁니다).

Tor 브라우저의 torrc 파일을 찾으려면, 하단에 기재된 안내사항을 사용하는 운영체제(OS)에 맞춰 따르세요.

Windows 혹은 Linux:

  • torrcBrowser/TorBrowser/Data/Tor 경로의 Tor 브라우저 데이터 디렉터리 내에서 찾을 수 있습니다.

macOS에서:

  • torrc~/Library/Application Support/TorBrowser-Data/Tor 경로의 Tor 브라우저 데이터 디렉터리 내에 있습니다.ㅂ
  • 라이브러리 폴더는 최신 버전의 macOS에 숨겨져 있습니다. 파인더에서 이 폴더로 이동하려면, "이동" 메뉴에서 "폴더로 이동"을 선택하십시오.
  • 그런 다음 창에 ~/Library/Application Support/ 을 입력하고 이동을 클릭합니다.

torrc 편집 전에 Tor 브라우저를 닫으세요. Tor 브라우저를 닫지 않고 편집할 경우 수정 사항이 적용되지 않을 수 있습니다. 몇몇 torrc 옵션은 Tor 브라우저에 전혀 효과가 없을 수 있습니다. Tor가 시작될 때 Tor 브라우저에서 이를 명령 행 옵션으로 덮어쓰기 때문입니다.

샘플 torrc파일을 보고 일반적으로 어떻게 구성하는 게 좋은지 힌트를 얻으세요. 사용 가능한 다른 환경 설정 옵션을 더 알아보려면, Tor 설명서 페이지를 참고하세요. 기억하세요. torrc에 # 으로 시작하는 행은 주석으로 취급되기에 Tor의 환경 설정에 아무런 영향을 미치지 않습니다.

Tor 브라우저에 새로운 부가 기능을 설치하는 것은 절대 권장되지 않습니다. 사생활과 보안을 손상시킬 수도 있습니다.

부가기능을 새로 설치하는 건 Tor 브라우저에 예측 불가능한 수준의 영향을 미칠 수 있습니다. 또한 귀하가 사용하는 Tor 브라우저의 지문이 다른 Tor 브라우저와 구별될 가능성이 있습니다. 귀하가 받은 Tor 브라우저 복사본에 구별되는 지문이 남아 있을 경우, 귀하가 브라우징 활동 중 익명성을 보장받지 못할 수 있습니다. 또한 설사 Tor 브라우저를 사용 중이라고 하더라도 추적당할 수 있습니다.

기본적으로, 소위 '브라우저 지문'이란 건 각 브라우저의 설정과 기능에서 도출됩니다. 각 사용자마다 갖는 고유한 지문이 시중의 브라우저 대부분을 사용하면서 자신도 모르는 사이에 남게 됩니다. 이로 인해 인터넷을 거쳐 귀하를 추적할 수 있게 되는 겁니다. Tor 브라우저엔 사용자 간 사실상 동일한 (완벽하지 않아요!) 지문을 갖도록 특수 설계가 이루어졌습니다. 즉 각 Tor 브라우저 사용자는 다른 Tor 브라우저 사용자와 똑같아 보인다는 겁니다. 각 사용자를 추적하기 매우 어려워지죠.

새로 설치한 부가 기능으로 인해 Tor 브라우저에의 공격 접점이 늘어날 가능성이 높습니다. 민감한 데이터가 유출되거나, 공격자에 의해 Tor 브라우저가 감염되는 원인이 될 수 있습니다. 부가 기능 그 자체에 감시를 위한 악의적 기능이 탑재돼있을 수 있습니다.

Tor Browser already comes installed with one add-on — NoScript — and adding anything else could deanonymize you.

브라우저 핑거프린팅을 더 자세히 알아보고 싶으신가요? Tor 블로그에 이에 관련된 모든 내용을 정리한 게시글 이 있으니 확인해보세요.

Flash는 Tor 브라우저에서 비활성화돼있습니다. 이를 직접 활성화하지 마시는 걸 권합니다. Flash는 생각건대 어떤 브라우저에서든 안전한 부가 기능이 아닙니다. 보안 상 매우 불안하므로, 공격자가 개인 정보에 위해를 가하거나 맬웨어를 귀하의 컴퓨터에 쉬이 심을 수 있게 됩니다. 다행이기도, 현재 대다수 웹사이트, 기기, 웹 브라우저에선 Flash를 가까이 하지 않으려 하는 상황입니다.

If you're using Tor Browser, you can set your proxy's address, port, and authentication information in the Connection Settings.

Tor 브라우저 외 다른 방식으로 Tor를 이용 중이라면, torrc 파일에서 프록시 정보를 설정할 수 있습니다. 매뉴얼 페이지HTTPSProxy 구성 옵션 관련 정보를 읽어보세요. 귀하의 프록시에 인증이 요구된다면, 위 매뉴얼 페이지의 HTTPSProxyAuthenticator옵션 부분을 읽어보세요. '인증'의 예시를 들어보겠습니다:

  HTTPSProxy 10.0.0.1:8080
  HTTPSProxyAuthenticator myusername:mypass

Tor 프로젝트에선 Basic auth만 현재 지원하고 있습니다. 다만 NTLM 인증이 필요할 경우, 아카이브에 있는 이 게시글이 유용하실 겁니다.

SOCKS 프록시를 사용하려면, Socks4Proxy, Socks5Proxy, 그리고 관련 torrc 옵션을 매뉴얼 페이지에서 확인하세요. 인증 기능이 추가된 SOCKS 5 프록시는 이거 같습니다:

  Socks5Proxy 10.0.0.1:1080
  Socks5ProxyUsername myuser
  Socks5ProxyPassword mypass

프록시가 특정 포트로의 연결만을 허용한다면, Firewalled클라이언트 항목을 확인해 보세요. Tor가 접속하려는 포트를 한정하는 방법이 적혀있습니다.

방화벽이 포트를 차단하는 식으로 작동 중이라면, Tor 브라우저 시작 시 포트만 사용하도록 설정하세요. 혹은 방화벽에서 허용하는 포트를 추가해도 됩니다. torrc 구성 파일에 "FascistFirewall 1"를 추가하세요. 초기 설정 상, torrc 구성 파일에 "FascistFirewall 1"를 추가할 경우, Tor는 방화벽이 포트 80과 포트 443 (각각 HTTP와 HTTPS 입니다) 만을 허용하는 상태라 판단합니다. 다른 포트를 선택하고자 한다면 torrc 옵션 중 FireWallPorts를 조정하면 됩니다. 더 세밀하게 설정을 조정하고 싶으시다면, ReachableAddresses  구성 옵션을 사용하세요, 예시:

ReachableDirAddresses *:80
ReachableORAddresses *:443

HTTPS Everywhere 관련 자주 묻는 질문을 참고하세요. If you believe this is a Tor Browser for Android issue, please report it on our issue tracker.

Since Tor Browser 11.5, HTTPS-Only Mode is enabled by default for desktop, and HTTPS Everywhere is no longer bundled with Tor Browser.

Tor 브라우저 기본 확장 기능인 NoScript에서 자바스크립트를 기본으로 허용하도록 설정돼있습니다. 자바스크립트를 비활성화 할 경우 제대로 작동되지 않는 웹사이트가 많기 때문입니다. 웹사이트 작동과 같은 많은 문제가 산재하므로, 자바스크립트를 기본으로 비활성화 해두면 대다수 사용자 분들은 Tor 사용을 포기할 겁니다. Tor 프로젝트는 Tor 브라우저를 궁극적으로는 보안 상 최대한 안전하면서도, 대다수 사람들이 편하게 이용할 수 있도록 만들고 싶습니다. 따라서 현 수준에선 자바스크립트를 기본으로 활성화 해두는 게 이러한 목표에 부합하는 결정이라 하겠습니다.

모든 HTTP 사이트에 있는 자바스크립트를 기본적으로 비활성화하고자 하는 사용자에게, Tor 프로젝트는 Tor 브라우저의 '보안 등급' 옵션을 변경하는 걸 추천합니다. This can be done by navigating the Security icon (the small gray shield at the top-right of the screen), then clicking on "Change...". The "Standard" level allows JavaScript, the "Safer" level blocks JavaScript on HTTP sites and the "Safest" level blocks JavaScript altogether.

네, 가능합니다. Tor를 클라이언트로 구성하거나, 다른 기기에서의 중계서버로 구성할 수 있습니다. 익명성 확보를 위해 다른 기기에서 여기로 연결하도록 허용할 수도 있습니다. 인터넷에 익명으로 접속이 가능한 게이트웨이의 수요가 큰 환경에서 가장 유용합니다. 하지만 이런 설정을 적용 시, 귀하의 익명 네트워크에 접속한 모두가 귀하가 전송하는 트래픽을 암호화 안 된 텍스트로 볼 수 있음을 염두에 두세요. Tor 중계서버에 진입하기 전까지는 익명성 기능이 활성화 되지 않습니다. 이런 이유로, 귀하가 도메인을 관리하면서 모든 게 잘 통제되고 있는지 파악할 수 있다면 해당 설정을 적용해도 괜찮습니다.. 하지만, 이러한 설정은 보안이 절대적으로 중요한 대규모 비공개 네트워크에 적합히지 않을 수 있습니다.

구성방법은 간단합니다. torrc 파일에 있는 SocksListenAddress 를 수정하면 됩니다. 다음 예제를 따라 설정해보세요:

SocksListenAddress 127.0.0.1
SocksListenAddress 192.168.x.x:9100
SocksListenAddress 0.0.0.0:9100

귀하의 네트워크가 여러 네트워크의 일부이거나 서브넷(subnet)에 속한 경우, 여러 주소를 수신 대기 상태(listen)로 올려 두어도 됩니다.

SocksListenAddress 192.168.x.x:9100 #eth0
SocksListenAddress 10.x.x.x:9100 #eth1

이후 각 네트워크/부분망 내 클라이언트가 귀하가 SocksListenAddress 설정에서 지정한 바에 따라 주소와 포트를 설정해 socks 프록시를 규정할 것입니다. SocksPort 구성 옵션엔 localhost (127.0.0.1) 포트'만' 있음을 유의하세요. SocksListenAddress(es) 설정을 마치면, 상기한 바와 같이 포트에 주소를 부여해야 합니다. 선택적 프록시(optional proxy)로 구성된 서버 대신 중앙의 Tor 클라이언트/중계서버를 거쳐 데이터가 송출(outgoing)되도록 강제하려면, iptables(*nix용) 프로그램이 유용할 겁니다.

초기 설정 상, 귀하의 Tor 클라이언트는 로컬 호스트(localhost)의 애플리케이션에서 전송된 신호만 수신(listen)할 수 있습니다. 다른 컴퓨터에서 오는 연결은 거부됩니다. Tor 클라이언트 외 다른 컴퓨터에 있는 어플리케이션에 Tor를 구성하고자 한다면, 귀하의 torrc를 SocksListenAddress 0.0.0.0 로 정의해 편집한 후, Tor를 재시작하세요. 좀 더 고등적인 방식으로서, 귀하의 Tor 클라이언트가 귀하의 외부 IP가 아니라 내부 IP로 바인딩하도록 구성할 수도 있습니다.

NoScript 관련 자주 묻는 질문을 참고하세요. If you believe this is a Tor Browser issue, please report it on our bug tracker.

모바일용 Tor

구형 Windows Phone에서 Tor의 구동을 지원하는 방식이 현재로서는 없습니다. 그러나 마이크로소프트가 새로 발표하거나 홍보하는 폰의 경우, Android용 Tor 브라우저에 기재된 절차를 그대로 따르시면 됩니다.

Android에 맞게 개발된 Tor 브라우저 가 있습니다. Android용 Tor 브라우저만 받으면 Android 기기에서 tor를 사용할 수 있습니다.

The Guardian Project에서 제작한 애플리케이션인 Orbot을 통해 Android 기기 내 앱의 데이터가 Tor 네트워크를 거쳐 전송되도록 설정할 수 있습니다.하지만 Tor를 통한 웹 브라우징에는 Android용 Tor 브라우저만 있으면 됩니다.

오픈소스인 Onion 브라우저라는 iOS 앱을 추천합니다. 이 앱은 Tor 라우팅을 사용하고 Tor 프로젝트와 긴밀히 협력하는 사람이 개발한 앱입니다. 그렇지만 Apple은 iOS에서 실행하는 브라우저를 Webkit이라는 것을 사용함을 요구합니다. 이처럼 Onion 브라우저가 Tor 브라우저와 동일한 사생활 보호를 있기 가로막습니다.

Onion 브라우저에 대해 자세히 알아보기. App Store에서 Onion 브라우저를 다운로드합니다.

'The Guardian 프로젝트'에서 Android용 Orbot (and other privacy applications)을 유지보수하고 있습니다. Guardian 프로젝트 website에서 더 자세한 정보를 알아보세요.

가능할 거에요. 그 전까지는 Guardian 프로젝트 저장소를 활성화 시켜서 Android용 Tor 브라우저를 F-Droid에서 받으실 수 있습니다.

F-Droid에 저장소를 추가하는 방법을 통해 더 자세히 알아보세요.

Android용 Tor 브라우저와 Orbot 모두 훌륭한 애플리케이션입니다. 그러나 두 앱의 용도는 서로 다릅니다. Android용 Tor 브라우저는 데스크톱용 Tor 브라우저와 유사하면서, 모바일 기기에 제공되는 애플리케이션입니다. 또한 Tor 네트워크를 사용하고 귀하의 익명성을 유지하는 것을 목표로 하는 원스톱 브라우저, 즉 단일 브라우저입니다. 한편 Orbot은 귀하가 Tor 네트워크를 통해 데이터를 (이메일 클라이언트, 인스턴트 메시징 앱 등의) 다른 애플리케이션에 보낼 때 사용하는 프록시입니다. Android용 Tor 브라우저에도 Orbot의 일종이 포함돼있으며, Android용 Tor 브라우저로 Tor 네트워크에 접속할 수 있게 하는 역할을 담당합니다. 하지만 해당 버전에선 Android용 Tor 브라우저 외 다른 앱에 전송하는 기능이 빠져있습니다. Tor 네트워크를 어떻게 쓰길 원하는 지에 따라, 하나만 설정하든 두 개를 설정하든 훌륭한 선택일 수 있습니다.

Tor에 연결하기

프록시 서버 에러가 발생하는 원인은 매우 다양합니다. 이 에러를 해결하기 위해 아래에 기재된 방법을 여러개 시도해야 할 수 있습니다.

  • 안티바이러스를 사용 중이신가요? Tor 서비스와 충돌했을 수 있습니다. 안티바이러스의 사용을 중단하고 브라우저를 재시작하세요.
  • Tor 브라우저 폴더를 원래 위치에서 다른 위치로 이동시키면 안 됩니다. 만약 Tor 브라우저 폴더를 다른 위치로 옮겼다면, 다시 돌려놓으세요.
  • 연결 중인 포트를 점검해보세요. 사용중인 포트 말고 9050 포트나 9150 포트 같은 다른 포트를 써보세요 위에 기재된 방법 모두 유효하지 않다면, 브라우저를 재설치하세요. 이때 Tor 브라우저를 새로운 디렉토리에 설치해야 함에 유의하세요. 즉 기존에 설치된 브라우저와 같은 디렉토리여선 안 됩니다.

이래도 에러가 지속된다면, 문의하기를 통해 연락 주세요.

원하는 onion 서비스에 접속할 수 없나요? onion 주소 56자를 제대로 입력했는지 확인하세요. 한 글자만 틀려도 Tor 브라우저를 통한 사이트 접속이 불가능합니다. 그런데도 onion 서비스에 연결할 수 없으면 나중에 다시 시도해 주십시오. 일시적인 연결 문제일 수도 있고 사이트 관리자는 경고없이 사이트가 오프라인 이동을 허용할 수도 였습니다.

DuckDuckGo onion 서비스에 접속해 타 onion 서비스에 접속 가능한지 시험해볼 수 있습니다.

Tor 브라우저에서의 연결 문제를 초래하는 원인 중 가장 흔한 게 시스템 시계가 올바르게 설정되지 않은 것입니다. 시스템 시계와 시간대가 정확하게 설정돼있는지 확인하세요. 시계와 시간대가 올바른데도 문제가 해결되지 않는다면, Tor 브라우저 설명서에 있는 문제해결 페이지를 참고하세요.

연결하는 데 문제가 있을 경우, 에러 메시지가 나타날 수 있습니다. 이때 "Tor 로그를 클립보드에 복사" 옵션을 선택하세요. 그런 다음 Tor 로그를 텍스트 파일이나 다른 문서에 붙여넣기 하세요.

If you don't see this option and you have Tor Browser open, you can navigate to the hamburger menu ("≡"), then click on "Settings", and finally on "Connection" in the side bar. 페이지 최하단에서 "Tor 로그 조회" 옆에 있는 "로그 조회..." 버튼을 클릭합니다.

GNU/Linux 환경의 경우 다른 방법이 있습니다. 명령 창에서 바로 로그를 조회하려면, 디렉토리에서 Tor 브라우저를 찾아 명령 창에 다음을 입력해 실행합니다:

./start-tor-browser.desktop --verbose

아니면 파일 형식으로 로그를 저장할 수도 있습니다 (기본: tor-browser.log)

./start-tor-browser.desktop --log [file]

그 흔한 로그 오류중에 하나를 봐야 합니다 (Tor 로그에서 하기와 같은 행을 찾아보십시오):

자주 발생하는 로그 에러 #1: 프록시 연결 실패

2017-10-29 09:23:40.800 [NOTICE] Opening Socks listener on 127.0.0.1:9150
2017-10-29 09:23:47.900 [NOTICE] Bootstrapped 5%: Connecting to directory server
2017-10-29 09:23:47.900 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server
2017-10-29 09:24:08.900 [WARN] Proxy Client: unable to connect to xx..xxx..xxx.xx:xxxxx ("general SOCKS server failure")

Tor 로그에서 위와 같은 행을 발견하셨다면, SOCKS 프록시와의 연결에 실패했음을 뜻합니다. 네트워크 설정에 SOCKS 프록시가 필요한 경우 프록시 세부 정보를 올바르게 입력했는지 확인하십시오. SOCKS 프록시가 꼭 필요한 게 아니거나, 꼭 필요한지 확실하지 않을 경우, Tor 네트워크를 SOCKS 프록시 없이 연결해보세요.

자주 발생하는 로그 에러 #2: 가드 중계서버에 도착하지 못함

11/1/2017 21:11:43 PM.500 [NOTICE] Opening Socks listener on 127.0.0.1:9150
11/1/2017 21:11:44 PM.300 [NOTICE] Bootstrapped 80%: Connecting to the Tor network
11/1/2017 21:11:44 PM.300 [WARN] Failed to find node for hop 0 of our path. Discarding this circuit.
11/1/2017 21:11:44 PM.500 [NOTICE] Bootstrapped 85%: Finishing handshake with first hop
11/1/2017 21:11:45 PM.300 [WARN] Failed to find node for hop 0 of our path. Discarding this circuit.

Tor 로그에서 위와 같은 행을 발견하셨다면, Tor가 Tor 우회로 상 첫 노드에의 연결에 실패했음을 뜻합니다. 당신이 검열된 네트워크에 접속함을 의미할 수 있습니다.

브리지를 설정 후 다시 연결해보세요. 문제가 해결될 겁니다.

자주 발생하는 로그 에러 #3: TLS 초기 처리가 완료되지 않음

13-11-17 19:52:24.300 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server 
13-11-17 19:53:49.300 [WARN] Problem bootstrapping. Stuck at 10%: Finishing handshake with directory server. (DONE; DONE; count 10; recommendation warn; host [host] at xxx.xxx.xxx.xx:xxx) 
13-11-17 19:53:49.300 [WARN] 10 connections have failed: 
13-11-17 19:53:49.300 [WARN]  9 connections died in state handshaking (TLS) with SSL state SSLv2/v3 read server hello A in HANDSHAKE 
13-11-17 19:53:49.300 [WARN]  1 connections died in state connect()ing with SSL state (No SSL object)

Tor 로그에서 위와 같은 행을 발견하셨다면, Tor가 저장소 기관과의 TLS 초기 처리를 완료하지 못했음을 뜻합니다. 브리지를 사용할 경우 위 문제가 해결될 수도 있습니다.

자주 발생하는 로그 에러 #4: 시계 왜곡

19.11.2017 00:04:47.400 [NOTICE] Opening Socks listener on 127.0.0.1:9150 
19.11.2017 00:04:48.000 [NOTICE] Bootstrapped 5%: Connecting to directory server 
19.11.2017 00:04:48.200 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server 
19.11.2017 00:04:48.800 [WARN] Received NETINFO cell with skewed time (OR:xxx.xx.x.xx:xxxx): It seems that our clock is behind by 1 days, 0 hours, 1 minutes, or that theirs is ahead. Tor requires an accurate clock to work: please check your time, timezone, and date settings.

Tor 로그에서 위와 같은 행을 발견하셨다면, 시스템 시계가 올바르지 않음을 뜻합니다. 시간대와 같은 시계의 설정이 올바른지 다시 확인하세요. 그런 후 Tor를 재시작하세요.

검열

Tor 프로젝트 웹사이트를 통해 Tor 브라우저 다운로드가 불가능하다면, GetTor에서 Tor 브라우저 복사본을 보내드립니다. GetTor는 최신 버전의 Tor 브라우저 링크를 보내드리는 자동응답 서비스입니다. Dropbox, Google Drive나 GitHub와 같이 검열될 가능성이 적은 호스팅 환경에서 운영되고 있습니다. You can request via email or Telegram bot https://t.me/gettor_bot. Tor 브라우저를 https://tor.eff.orghttps://tor.calyxinstitute.org/ 에서도 다운로드 받을 수 있습니다.

gettor@torproject.org에 이매일을 보냅니다. 메일 본문에 사용하는 운영체제를 적어주세요(Windows, macOS, Linux 등) GetTor에서 Tor 브라우저를 받을 수 있는 링크를 이메일에 첨부해 보내드립니다. (다운로드된 파일 검증에 필요한) 암호 기법이 적용된 서명, 서명을 만들 때 사용하는 키 지문, 패키지 검사합도 포함돼있습니다. "32-bit" or "64-bit" 소프트웨어 중 하나를 선택할 수 있습니다: 사용하는 컴퓨터 모델에 따라 무엇을 선택해야 할지가 갈리므로, 문서 등을 통해 컴퓨터 사양을 확인하고 결정하세요.

Twitter를 통한 GetTor는 검수 중이라 이용할 수 없습니다. 이메일을 통해 이용해주세요.

Tor 브라우저는 당신의 사이트가 차단된 곳에 거주하는 사용자들이 당신의 사이트에 접근하는 것을 도울 수 있습니다. 대체로 다만 Tor 브라우저 를 다운로드하고 차단했는 사이트를 이동하면 접속이 가능하게 할 것입니다. 검열 수준이 심한 환경에도 유효하도록. Tor 프로젝트는 많은 검열 우회 옵션을 마련해두었습니다. 장착형 전송수단이 대표적입니다.

더 자세한 정보를 Tor 브라우저 사용자 매뉴얼의 검열 섹션을 참고하세요.

연결하는 데 문제가 있을 경우, 에러 메시지가 나타날 수 있습니다. 이때 "Tor 로그를 클립보드에 복사" 옵션을 선택하세요. 그런 다음 Tor 로그를 텍스트 파일이나 다른 문서에 붙여넣기 하세요.

If you don't see this option and you have Tor Browser open, you can navigate to the hamburger menu ("≡"), then click on "Settings", and finally on "Connection" in the side bar. 페이지 최하단에서 "Tor 로그 조회" 옆에 있는 "로그 조회..." 버튼을 클릭합니다.

GNU/Linux 환경의 경우 다른 방법이 있습니다. 명령 창에서 바로 로그를 조회하려면, 디렉토리에서 Tor 브라우저를 찾아 명령 창에 다음을 입력해 실행합니다:

./start-tor-browser.desktop --verbose

아니면 파일 형식으로 로그를 저장할 수도 있습니다 (기본: tor-browser.log)

./start-tor-browser.desktop --log [file]

그 흔한 로그 오류중에 하나를 봐야 합니다 (Tor 로그에서 하기와 같은 행을 찾아보십시오):

자주 발생하는 로그 에러 #1: 프록시 연결 실패

2017-10-29 09:23:40.800 [NOTICE] Opening Socks listener on 127.0.0.1:9150
2017-10-29 09:23:47.900 [NOTICE] Bootstrapped 5%: Connecting to directory server
2017-10-29 09:23:47.900 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server
2017-10-29 09:24:08.900 [WARN] Proxy Client: unable to connect to xx..xxx..xxx.xx:xxxxx ("general SOCKS server failure")

Tor 로그에서 위와 같은 행을 발견하셨다면, SOCKS 프록시와의 연결에 실패했음을 뜻합니다. 네트워크 설정에 SOCKS 프록시가 필요한 경우 프록시 세부 정보를 올바르게 입력했는지 확인하십시오. SOCKS 프록시가 꼭 필요한 게 아니거나, 꼭 필요한지 확실하지 않을 경우, Tor 네트워크를 SOCKS 프록시 없이 연결해보세요.

자주 발생하는 로그 에러 #2: 가드 중계서버에 도착하지 못함

11/1/2017 21:11:43 PM.500 [NOTICE] Opening Socks listener on 127.0.0.1:9150
11/1/2017 21:11:44 PM.300 [NOTICE] Bootstrapped 80%: Connecting to the Tor network
11/1/2017 21:11:44 PM.300 [WARN] Failed to find node for hop 0 of our path. Discarding this circuit.
11/1/2017 21:11:44 PM.500 [NOTICE] Bootstrapped 85%: Finishing handshake with first hop
11/1/2017 21:11:45 PM.300 [WARN] Failed to find node for hop 0 of our path. Discarding this circuit.

Tor 로그에서 위와 같은 행을 발견하셨다면, Tor가 Tor 우회로 상 첫 노드에의 연결에 실패했음을 뜻합니다. 당신이 검열된 네트워크에 접속함을 의미할 수 있습니다.

브리지를 설정 후 다시 연결해보세요. 문제가 해결될 겁니다.

자주 발생하는 로그 에러 #3: TLS 초기 처리가 완료되지 않음

13-11-17 19:52:24.300 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server 
13-11-17 19:53:49.300 [WARN] Problem bootstrapping. Stuck at 10%: Finishing handshake with directory server. (DONE; DONE; count 10; recommendation warn; host [host] at xxx.xxx.xxx.xx:xxx) 
13-11-17 19:53:49.300 [WARN] 10 connections have failed: 
13-11-17 19:53:49.300 [WARN]  9 connections died in state handshaking (TLS) with SSL state SSLv2/v3 read server hello A in HANDSHAKE 
13-11-17 19:53:49.300 [WARN]  1 connections died in state connect()ing with SSL state (No SSL object)

Tor 로그에서 위와 같은 행을 발견하셨다면, Tor가 저장소 기관과의 TLS 초기 처리를 완료하지 못했음을 뜻합니다. 브리지를 사용할 경우 위 문제가 해결될 수도 있습니다.

자주 발생하는 로그 에러 #4: 시계 왜곡

19.11.2017 00:04:47.400 [NOTICE] Opening Socks listener on 127.0.0.1:9150 
19.11.2017 00:04:48.000 [NOTICE] Bootstrapped 5%: Connecting to directory server 
19.11.2017 00:04:48.200 [NOTICE] Bootstrapped 10%: Finishing handshake with directory server 
19.11.2017 00:04:48.800 [WARN] Received NETINFO cell with skewed time (OR:xxx.xx.x.xx:xxxx): It seems that our clock is behind by 1 days, 0 hours, 1 minutes, or that theirs is ahead. Tor requires an accurate clock to work: please check your time, timezone, and date settings.

Tor 로그에서 위와 같은 행을 발견하셨다면, 시스템 시계가 올바르지 않음을 뜻합니다. 시간대와 같은 시계의 설정이 올바른지 다시 확인하세요. 그런 후 Tor를 재시작하세요.

'브리지 중계서버'는 공개 Tor 디렉토리 리스트에 없는 Tor 중계서버입니다.

즉 Tor 네트워크에의 접속을 차단하려 하는 인터넷 서비스 제공업체(ISP)나 정부기관에서도 모든 브리지를 쉬이 차단할 수 없는 것입니다. 브리지는 억압적인 체제 하에서 Tor 사용자들에게 유용하며, 그들이 공개 Tor 중계서버 IP 주소에 접속하고 있다는 것을 누군가 알게 될까봐 추가적인 보안을 원하는 사람들에게 유용합니다.

브리지는 다만 정상적인 중계서버 와 약간 다른 구성입니다. 사용방법을 브리지를 사용하는 방법에서 확인하세요.

중국과 이란을 비롯한 여러 국가에서 Tor 중계서버와의 연결을 감지하고 차단하는 방법을 갖고있습니다. Obfsproxy 브리지를 쓰면 난독화 계층이 추가돼 이 문제를 해결할 수 있습니다. obfsproxy bridge를 설정하려면 추가적인 소프트웨어 패키지를 받아야 하고, 따로 설정도 만져야 합니다. 더 자세한 정보를 장착형 전송수단에서 확인하세요.

Snowflake는 인터넷 검열을 물리칠 때 사용하는 Tor 브라우저 내 장착형 전송수단입니다. Tor 브리지처럼, Snowflake를 통해 일반적인 Tor 연결이 검열된 환경에서도 개방 인터넷에 접속할 수 있습니다. Snowflake를 사용하는 건 Tor 브라우저에서 브리지 구성을 새로 변경하는 것만큼 쉽습니다.

Snowflake는 세 요소로 구성됩니다: Snowflake 프록시를 운영중인 자원봉사자, 인터넷에 접속하려는 Tor 사용자, snowflake 프록시를 사용자에게 전달하는 브로커.

Snowflake는 '자원봉사자'들의 브라우저에서 운영되는 단기 프록시로, 검열 네트워크 내 사용자의 연결을 보조합니다. Snowflake를 사용하려면 어떻게 해야하죠?에서 더 알아보세요./

Snowflake는 수많은 자원봉사자에 의해 운영되는 snowflake 프록시를 잇기 위해 고도로 효율적인 도메인 프론팅 기술을 사용합니다. 덕분에 해당 프록시는 경량 · 단기 · 쉬운 사용의 특성을 띕니다. 기존 기술보다 훨씬 쉽게 Snowflake 규모를 늘릴 수 있게 됐죠.

검열 환경의 사용자는 주어진 Snowflake 프록시가 차단됐을 때, 브로커를 통해 새로운 프록시를 자동으로 제공받습니다.

기술적 부분을 좀 더 자세히 알고 싶으시다면, Snowflake 기술적 개요snowflake프로젝트 페이지를 참고하세요. For other discussions about Snowflake, please visit the Tor Forum and follow up the Snowflake tag.

Tor 브라우저 안정 버전에 기본 포함돼있으며, 모든 플랫폼에서 사용 가능합니다: Windows, macOS, GNU/Linux, Android. iOS의 경우 Onion 브라우저에서 Snowflake 사용이 가능합니다.

If you're running Tor Browser for desktop for the first time, you can click on 'Configure Connection' on the start-up screen. Under the "Bridges" section, locate the option "Choose from Tor Browser's one of built-in bridges" and click on "Select a Built-In Bridge" option. From the menu, select 'Snowflake'. Snowflake를 선택했다면, 위로 스크롤한 후 '연결하기'를 클릭해 설정을 저장하세요.

From within the browser, you can click on the hamburger menu ("≡"), then go to 'Settings' and go to 'Connection'. Alternatively, you can also type about:preferences#connection in the URL bar. In the "Bridges" section, locate the option "Choose from Tor Browser's one of built-in bridges" and click on "Select a Built-In Bridge" option. From the menu, select 'Snowflake'.

검열되지 않는 인터넷 환경에 계시다면, Snowflake 확장기능을 설치하셔서 검열된 네트워크의 사용자를 도와주시는 건 어떨까요? Snowflake 확장기능을 설치하면 브라우저를 사용하는 동안 프록시로써의 연결 지점을 Tor 네트워크 내 시작 노드에 제공할 수 있습니다. 굉장히 간단하죠.

부가기능

먼저 WebRTC가 켜져있는지 확인하세요 이 Firefox용 부가 기능이나 Chrome 확장 프로그램을 설치하세요. 위 부가 기능이나 확장 프로그램을 통해 Snowflake 프록시를 제공할 수 있습니다. 직전 24시간동안 얼마나 많은 사람이 도움을 받았는지도 확인할 수 있습니다.

웹페이지

WebRTC가 활성화된 브라우저에서: 브라우저에 Snowflake를 추가하는 걸 원하지 않는다면, https://snowflake.torproject.org/embed 에 가셔서 토클 바의 버튼을 누르세요. 프록시를 제공할 수 있습니다. Snowflake 프록시를 유지하려면 위 페이지를 열어두세요.

Tor 네트워크를 차단하는 네트워크 환경에 있을 수 있습니다. 따라서 브리지를 사용해야 합니다. 몇몇 브리지는 Tor 브라우저에 내장돼있어, 몇 단계만 밟으면 작동시킬 수 있습니다. To use a pluggable transport, click "Configure Connection" when starting Tor Browser for the first time. Under the "Bridges" section, locate the option "Choose from Tor Browser's one of built-in bridges" and click on "Select a Built-In Bridge" option. From the menu, select whichever pluggable transport you'd like to use.

장착형 전송수단을 선택했다면, 위로 스크롤한 후 '연결하기'를 클릭해 설정을 저장하세요.

Or, if you have Tor Browser running, click on "Settings" in the hamburger menu (≡) and then on "Connection" in the sidebar. In the "Bridges" section, locate the option "Choose from Tor Browser's one of built-in bridges" and click on "Select a Built-In Bridge" option. Choose whichever pluggable transport you'd like to use from the menu. Your settings will automatically be saved once you close the tab.

다른 브리지를 필요가 있다면, 저희의 브리지 웹사이트 에서 얻을 수 있습니다. 브리지에 대한 더 자세한 정보를 Tor 브라우저 매뉴얼에서 알아보세요.

중국의 사용자도 몇 단계만 밟으면 황금방패를 우회하고 Tor 네트워크에 연결할 수 있습니다.

To get an updated version of Tor Browser, try the Telegram bot first: https://t.me/gettor_bot. If that doesn't work, you can send an email to gettor@torproject.org with the subject "windows", "macos", or "linux" for the respective operating system.

After the installation, Tor Browser will try to connect to the Tor network. If Tor is blocked in your location, Connection Assist will try to automatically connect using a bridge or Snowflake. But if that doesn't work, the second step will be to obtain a bridge that works in China.

중국에서 Tor의 차단을 푸는 방법은 세 개입니다:

  1. Snowflake:: Tor 네트워크에 연결할 때 임시 프록시를 사용합니다 It's available in Tor Browser and other Tor powered apps like Orbot. You can select Snowflake from Tor Browser's built-in bridge menu.
  2. 목록에 등재되지 않은 비공개 obfs4 브리지: Tor 프로젝트의 텔레그램 봇@GetBridgesBot에 접속 후 /bridges를 입력하세요 Or send an email to frontdesk@torproject.org with the phrase "private bridge cn" in the subject of the email. 기술 분야에 능통하신 분이라면, obfs4 브리지를 중국 외 지역에서 따로 운영해보세요. Remember that bridges distributed by BridgeDB, and built-in obfs4 bridges bundled in Tor Browser most likely won't work.
  3. meek-azure: makes it look like you are browsing a Microsoft website instead of using Tor. 그러나 대역폭 한계로 인해 해당 옵션을 사용하면 브라우징 속도가 꽤 느려집니다. meek-azure 옵션을 Tor 브라우저 내장 브리지 드롭다운 메뉴에서 선택할 수 있습니다.

상기한 옵션 모두 작동하지 않는다면, Tor 로그를 점검해보고 다른 옵션을 사용해보세요.

If you need help, you can also get support on Telegram https://t.me/TorProjectSupportBot and Signal.

몇몇 웹사이트는 Tor 사용자와 봇을 구분할 수 없다는 이유로 Tor 사용자를 차단하려 합니다. 사이트 관리자에 직접 연락하는 게 경험적으로 볼 때 Tor 사용자 대상 접속 차단을 푸는 가장 최선의 방법입니다. 이런 것은 문제를 해결할 수도 있습니다:

"안녕하세요? Tor 브라우저로 xyz.com에 접속하려고 했는데, Tor 사용자가 사이트에 접속할 수 없도록 설정해 두셨더라고요. 그 결정 부디 재고해주셨으면 합니다. 전 세계 사람들이 프라이버시를 보호하고 검열에 맞서기 위해 Tor를 사용하고 있기 때문입니다. Tor 사용자를 차단할 경우 귀하는 어쩌면 자유 인터넷에 접속하길 원하는 피압박민, 증거나 연구물을 지키고자 하는 저널러스트와 연구자, 내부고발자, 운동가, 제3자 트래킹의 침입을 떨쳐내려는 일반 대중도 차단했을 지 모릅니다. 디지털 프라이버시와 인터넷 자유를 향한 확고한 자세를 취해주세요.Tor 사용자가 xyz.com에 접속할 수 있도록 허용해주세요. 감사합니다."

은행 및 기타 민감한 웹 사이트의 경우 지역에 기반을 차단을 하는 것이 일반적입니다 (은행이 보통 특정 국가에서 서비스에 접근하는 것을 알고 있고 갑자기 다른 지역의 '출구 중계서버'에서 연결하는 경우). 계정이 잠기거나 일시 중지 될 수 있습니다.

은행과 같은 민감한 정보를 다루는 웹사이트의 경우, '지리적 위치 정보 기반 차단'(geography-based blocking) 방식이 도입되는 경우가 일반적입니다 (가령 은행이 귀하가 평소엔 주어진 한 국가에서만 접속하는 걸 알고 있는 상황에서 갑자기 지구 정 반대편의 위치에 있는 '출구 중계서버'에서 접속한다면, 귀하의 계정을 정지시키거나 잠그는 조치를 취합니다.)

onion 서비스에 연결할 수 없나요? X.onion에 접속할 수 없어요! 문서를 참고하세요.

HTTPS

간단한 답: 네, Tor를 사용해 일반적인 HTTPS 사이트를 브라우징 할 수 있어요.

HTTPS 연결은 컴퓨터 네트워크 상 통신을 안전하게 하기 위해 사용됩니다. HTTPS에 대한 자세한 정보를 여기서 더 알아보세요. Tor Browser's HTTPS-Only mode automatically switches thousands of sites from unencrypted "HTTP" to more private "HTTPS".

Tor는 도청하는 사람이 귀하가 방문하는 사이트를 학습하는 것을 방지합니다. 하지만, HTTP가 사용된 인터넷으로 전송된 정보는 암호화되지 않았기 때문에 여전히 탈취될 가능성이 존재합니다. 출구 중계서버 운영자나, 출구 중계서버와 목적지 웹사이트 사이의 트래픽을 감시하는 자가 정보를 빼낼 수 있는 것입니다. 방문하는 사이트에서 HTTPS를 사용한다면, 출구 중계서버에 남는 트래픽이 암호화됩니다. 따라서 감시자가 정보를 확인할 수 없게 됩니다.

다음 시각화 장면에서는 Tor 브라우저 및 HTTPS 암호화 사용 여부와 관계없이 스니핑 해킹으로 볼 수 있는 정보를 보여 줍니다:

  • Tor를 사용할 때 관찰자가 볼 수 있는 데이터를 보려면 "Tor" 버튼을 클릭합니다. 버튼이 녹색으로 바뀌어 Tor가 켜져 있음을 나타냅니다.
  • HTTPS를 사용할 때 관찰자가 볼 수 있는 데이터를 보려면 "HTTPS" 버튼을 클릭합니다. 버튼이 녹색으로 바뀌어 HTTPS가 켜져 있음을 나타냅니다.
  • 두 단추가 모두 녹색이면 두 도구를 모두 사용할 때 관찰자가 볼 수 있는 데이터가 표시됩니다.
  • 두 단추가 모두 회색이면 두 도구 중 하나도 사용하지 않을 때 관찰자가 볼 수 있는 데이터가 표시됩니다.



잠재적으로 보이는 데이터
Site.com
방문 중인 사이트입니다.
사용자 / 비밀번호
사용자 이름과 비밀번호가 인증을 위해서 사용됩니다.
데이터
데이터가 전송되고 있습니다.
위치
웹사이트를 방문하는 데 사용되는 컴퓨터의 네트워크 위치(공용 IP 주소)입니다.
Tor
Tor 사용 여부입니다.

중계서버 운영자

아주 좋아요. 여러 개의 중계서버를 운영해 Tor 네트워크에 기여하고자 하신다면, 저희 입장에선 아주 감사하죠. 하지만 수십개의 중계서버를 동일한 네트워크 상에서 운영하진 마세요. Tor 네트워크의 목표는 분산과 확산에 있습니다.

여러 개의 중계서버를 운영하고자 하신다면, torrc에 있는 'MyFamily' 구성 옵션을 각 중계서버마다 설정해주세요. 통제 가능한 모든 중계서버 리스트(CSV, 각 항목을 콤마로 구분해 기재됐습니다)는 다음과 같습니다:

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

각 지문는 (띄어쓰기 없는) 40글자의 신원 지문(identity fingerprint)입니다.

이런 방식으로, Tor 클라이언트는 단일 우회로 상에서 여러 개의 중계서버를 사용하면 안 됨을 경험적으로 알게 됩니다. 컴퓨터나 네트워크 상에서 관리자 권한을 갖고 있다면, 설사 지리적 위지가 동일하지 않다 하더라도 MyFamily를 설정해야 합니다.

귀하의 중계서버가 가드 노드로 설정됐습니다. 따라서 클라이언트가 다른 위치에 있을 때보다 적게 쓰는 것입니다. 그러나 기존 가드 노드 기능으로 중계서버가 재배치(rotate)되는 경우는 그리 많지 않습니다. 이 블로그 포스트Changing of the Guards: A Framework for Understanding and Improving Entry Guard Selection in Tor을 읽어보세요

아주 좋아요. Tor 프로젝트에서 '출구 정책'을 시행하는 이유가 여기에 있습니다.

Tor 중계서버 각각에는 출구 정책이 적용됩니다. 출구 정책이란 주어진 중계서버에서 어떤 아웃바운드 트래픽(outbound connections)을 허용하고 거부할지 규정하는 정책을 말합니다. '출구 정책'은 저장소를 통해 Tor 클라이언트에게 전달됩니다. 따라서 클라이언트는 원 목적지로의 전송을 거부하는 출구 중계서버를 고르는 걸 자동으로 피할 수 있습니다. 이런 방식으로 각 중계서버는 연결하고자 하는 서비스, 호스트, 네트워크를 선택할 수 있습니다. 이때 남용 가능성과 각 중계서버의 상황이 고려됩니다. '출구 정책'을 초기 설정대로 사용하고 있을 경우 진입 노드에서 발생한 문제 해결 지원 를 참고하세요. 그리고 Mike Perry가 작성한 성가신 문제에 최대한 얽히지 않으면서 출구 노드를 운영하는 방법 문서도 읽어보세요.

초기 설정 상 '출구 정책'은 (웹 브라우징과 같은) 대중적인 서비스로의 연결을 허용하는 한편, (메일과 같이) 남용 가능성이 있는 몇몇 서비스를 제한합니다. 또한 (Tor 기본 파일 공유 포트와 같이) Tor가 감당할 수 없는 부하량이 오가는 서비스 또한 제한됩니다. torrc 파일을 수정해서 출구 정책을 변경할 수 있습니다. 남용될 가능성이 있는 서비스 대다수를 피하고자 한다면, torrc 파일 내 설정을 "reject *:*"로 변경하세요. 해당 설정으로 변경 시 귀하의 중계서버는 Tor 네트워크 내 트래픽을 중계하는 데 사용되지만, 외부 웹사이트나 다른 서비스를 연결하는 데에는 사용되지 않게 됩니다.

출구 연결을 허용할 때에는 '이름 분석'이 유효한지 확인하세요(즉 귀하의 컴퓨터에서 인터넷 주소를 올바르게 분해했는지를 확인하세요). (모든 트래픽을 차단하는 방화벽이나 콘텐츠 필터 등에 의해) 주어진 자원이 컴퓨터에 전송될 수 없는 경우, '출구 정책'에서 해당 자원을 단호히 거부하세요. 그러지 않으면 Tor 사용자에게도 영향이 갑니다.

torrc 파일에 추가할 수 있는 옵션으로 두 개가 있습니다:

BandwidthRate 로 장기 대역폭 최대 허용치(bytes per second)를 설정할 수 있습니다. 가령 "BandwidthRate 10 MBytes"를 10 megabytes per second (a fast connection)로 조정하거나 "BandwidthRate 500 KBytes"를 500 kilobytes per second (a decent cable connection)로 조정할 수 있습니다. BandwidthRate 최소치는 75 kilobytes per second 입니다.

BandwidthBurst 짧은 시간 동안 BandwidthRate 보다 많은 트래픽이 요청된 경우 이를 충당하기 위해 사전에 모아둔 바이트 비축분을 말합니다. 그러면서도 장기적으로 볼 때 설정된 BandwidthRate의 평균치를 충족할 수 있도록 관리됩니다. 즉 Rate를 낮게 설정하고 Burst를 높게 설정한 정책을 적용할 경우, 피크 시간대에 더 많은 트래픽을 받아들일 수 있으면서도 장기적으로는 평균치를 유지할 수 있는 것입니다. 예를 들어 "BandwidthBurst 500 KBytes" 로 설정하고, 동일 수치를 BandwidthRate에도 적용할 경우, 500 kilobytes per second 을 초과하지 상황이 절대 발생하지 않습니다; 하지만 BandwidthBurst 를 (5 MBytes 와 같이) BandwidthRate보다 높은 값으로 설정할 경우, 비축분이 동날 때까지 더 많은 데이터가 사용될 수 있습니다.

귀하가 케이블 모뎀과 같이 (업로드가 다운로드보다 낮은) 비대칭 연결 환경 인 경우, 상대적으로 대역폭이 작습니다. 따라서 반드시 BandwidthRate를 대역폭(일반적으론 업로드 대역폭입니다) 대비 낮게 설정해야 합니다. 그렇게 설정하지 않을 경우, 최대 대역폭 사용량에 도달한 기간 동안 많은 패킷 손실이 발생하게 됩니다. 따라서 어떤 값으로 설정했을 때 연결이 가장 쾌적하게 이루어지는지 여러 값을 집어넣어서 찾아보세요. 그런 후 BandwidthBurst와 BandwidthRate 값을 동일하게 설정하세요.

Linux 기반 Tor 노드는 별개의 독자적인 옵션이 존재합니다: 해당 노드는 주어진 기기에서 Tor 트래픽의 우선순위를 다른 트래픽보다 우선시할 수 있습니다. 이를 통해 해당 노드 사용자의 트래픽은 Tor 부하에 영향을 받지 않게 되는 거죠. 위와 같이 하는 방법을 설명한 문서를 Tor의 source distribution내 contrib 디렉터리에서 살펴볼 수 있습니다.

Additionally, there are hibernation options where you can tell Tor to only serve a certain amount of bandwidth per time period (such as 100 GB per month). These are covered in the hibernation entry.

BandwidthRate와 BandwidthBurst의 설정 단위는 Bytes지, Bits가 아님에 유의하세요.

귀하가 출구 연결을 허용할 경우, 귀하의 중계서버를 통해 사람들이 접속하는 몇몇 서비스에서 귀하의 정보를 수집하기 위해 연결을 역추적합니다. 예를 들어, IRC 서버에서 귀하의 identd 포트로 역으로 연결해 어떤 사용자가 연결했는지를 기록합니다(Tor에서 사용자 정보를 알 수 없으므로, IRC 서버에서 시도한 해당 방식은 유효하지 않습니다만, 아무튼 시도는 합니다). 또한 귀하의 중계서버를 거쳐 나가는 사용자는 IRC 서버, 웹사이트와 같은 곳에 있는 사용자의 관심을 끌게 됩니다. 그들을 중계해온 호스트가 누군자 알고 싶어 하기 때문입니다.

다른 이유는 인터넷에서 개방 프록시를 스캔하는 집단이 Tor 중계서버가 가끔 socks 포트를 대외적으로 노출시킨다는 걸 파악했기 때문입니다. Tor 프로젝트에선 귀하의 socks 포트를 근거리 통신망에서만 바인딩 해두길 권장합니다.

어떤 경우든, 보안과 관계된 모든 요소를 최신으로 유지하셔야 합니다. Tor 중계서버의 보안에서 보안 관련 더 자세한 지침을 살펴보세요.

Tor 프로젝트는 Tor 중계서버의 쉽고 간편한 설정에 주안점을 두고 개발하고 있습니다:

  • 중계서버가 종종 오프라인 상태로 들어가더라도 괜찮습니다. 저장소에서 이를 빨리 감지해 해당 중계서버로 다른 사용자를 전송하는 걸 중단할 겁니다. 너무 자주 오프라인 상태에 들어가지만 않게 관리해 주세요. 해당 중계서버를 사용한 연결이 꺠질 수 있기 때문입니다.
  • 각 Tor 중계서버엔 '출구 정책'이 있어, 어떤 종류의 아웃바운드 트래픽(outbound connections)을 허용하고 거부할지 규정하니다. 귀하의 중계서버에 아무나 거쳐가는 게 부담스러우시다면, 다른 Tor 중계서버에서 온 연결만 한정적으로 허용하도록 설정할 수 있습니다.
  • 귀하의 중계서버가 가진 대역폭 가용량은 tor에서 보수적으로 집계된 후 다른 네트워크에 공시됩니다. 따라서 대역폭이 낮은 중계서버 대비 대역폭이 큰 중계서버에 더 많은 사용자가 유입됩니다. 대역폭이 낮은 서버 역시 부차적으로 사용자가 할당되므로 유용한 건 마찬가지입니다.

Tor 중계서버에서 예상한 것보다 더 많은 메모리를 사용할 경우, 그 점유하는 양을 줄이기 위해 다음과 같은 방법을 써볼 수 있습니다:

  • Linux 사용자라면, glibc에서 malloc의 실행(implementation) 중 메모리 파편화(memory fragmentation)버그가 발생할 수 있습니다. 이때 메모리 파편화란, Tor가 시스템에 메모리를 보낼 때, 메모리 조각이 파편화돼 재사용이 어렵게 되는 현상을 말합니다. Tor의 tar 파일(tarball)엔 OpenBSD의 malloc implementation이 기본적으로 포함돼있습니다. 파편화 버그가 glibc 대비 많지 않습니다(그 반대급부로 CPU 부하량이 높습니다). OpenBSD 에서의 'malloc implementation'을 glibc 대신 사용하도록 Tor를 설정할 수 있습니다:./configure --enable-openbsd-malloc.
  • 귀하가 운영하는 중계서버의 속도가 빠를 경우, 즉 TLS 연결을 많이 개방(open)해둘 수 있다면, OpenSSL's internal buffer로 인해 많은 메모리를 잃을 수 있습니다(소켓 당 38KB 이상). Tor 프로젝트에선 OpenSSL 방식에서 미사용 버퍼의 메모리를 더 적극적으로 방출하도록 패치를 진행했습니다. OpenSSL의 버전을 1.0.0 이상으로 업데이트하면, Tor의 빌드 프로세스에서 자동적으로 이를 감지해 패치된 기능을 활성화합니다.
  • 위와 같은 조처에도 불구하고 메모리 부하 관련 문제를 해결할 수 없다면, 중계서버의 공시 대역폭량을 줄이세요. 대역폭의 공시량이 적을 수록, 다른 사용자들의 유입량이 적어집니다. 따라서 중계서버의 성장세가 꺽이게 됩니다. 매뉴얼 페이지에 기재된 MaxAdvertisedBandwidth 옵션 항목을 참고하세요.

앞서 말씀드린 바와 같이, Tor 중계서버는 많은 램을 사용합니다. 그러나 아무리 빠른 출구 중계서버라 하더라도 메모리 사용량이 500-1000 MB인 것은 흔하지 않습니다.

BridgeDB implements six mechanisms to distribute bridges: HTTPS, Moat, Email, Telegram, Settings and Reserved. 브리지 운영자는 중계서버 검색에서 현재 배포 방식(mechanism)을 확인할 수 있습니다. 주어진 빈칸 폼에 브리지의 <hashed fingerprint="핑거프린트"> 를 입력하고, "검색"을 클릭하세요.

브리지 운영자는 또한 사용할 배포 방식(distribution method)을 직접 선택할 수 있습니다. To change the method, modify the BridgeDistribution setting in the torrc file to one of these: https, moat, email, telegram, settings, none, any.

브리지 설치 후 진행 가이드에서 더 알아보세요.

AccountingMaxBandwidthRate에 할당된 매개변수는 클라이언트와 Tor 프로세스의 중계서버 기능 둘 다 적용됩니다. 따라서 Tor가 하이버네이션 상태일 때는 브라우징이 불가능하다고 뜨게 됩니다. Tor 로그에 이러한 항목이 있으면 Tor가 절전 상태입니다:

대역폭이 약한 정도의 한계에 봉착하면, Tor에의 하이버네이션을 개시합니다.
하이버네이션 상태에선 Tor에 새로운 연결이 허용되지 않습니다.

이 상태를 해결하려면 두 개의 Tor 프로세스를 실행하면 됩니다. 중계서버와 클라이언트를 각각 하나씩을, 서로 다르게 설정해서 실행하세요. 위와 같이 실행하려면 (작동중인 중계서버 설정에서 시작할 경우) 다음 절차를 따르세요:

  • Tor 중계서버의 torrc 파일에서 SocksPort를 0으로 설정하세요.
  • torrc.sample로 새 클라이언트 torrc 파일을 생성하세요. 그 후 주어진 중계서버에서 서로 다른 로그 파일을 생성하는지 확인하세요. 새로 만든 torrc 파일명을 torrc.client와 torrc.relay로 설정하는 게 그동안의 관례입니다.
  • Tor 클라이언트와 Tor 중계서버의 스크립트에 -f /path/to/correct/torrc 를 추가해 수정하세요.
  • Linux/BSD/macOS의 경우, 시작 스크립트를 Tor.client and Tor.relay 로 바꾸는 게 설정을 분리하는 데 있어 더 쉬울 수 있습니다.

기본 공개 포트 목록이 하단에 있습니다만, 중계서버 운영자가 torrc 구성이나 소스 코드 수정을 통해 모든 포트를 열어볼 수 있음을 명심하세요. 기본 출구 포트 목록을 소스 코드 릴리스 release-0.4.6의 src/or/policies.c (line 85line 1901)에서 확인 가능합니다.

reject 0.0.0.0/8
reject 169.254.0.0/16
reject 127.0.0.0/8
reject 192.168.0.0/16
reject 10.0.0.0/8
reject 172.16.0.0/12

reject *:25
reject *:119
reject *:135-139
reject *:445
reject *:563
reject *:1214
reject *:4661-4666
reject *:6346-6429
reject *:6699
reject *:6881-6999
accept *:*

중계서버를 비교적 새로 만드셨다면 좀 더 기다려보세요. Tor는 '대역폭 검증'에서 보낸 자료를 기반으로 한 휴리스틱 방식으로 사용할 중계서버를 선택합니다. '대역폭 검증'은 귀하측 중계서버의 처리능력을 측정하며, 중계서버의 트래픽 부하수준을 최적으로 조정하는 역할을 담당합니다. 중계서버가 새로 설정되고 안정화되기까지의 전개과정(lifecycle)을 다음 블로그 포스트에서 상세하게 다루었으니, 관심있으시면 확인해보세요. 중계서버의 운영 기간이 꽤 됐는데도 문제를 겪고 있다면, tor-relays 목록에 문의해주세요.

Windows에서 중계서버를 운영하려면 다음 지침을 따르세요:

하루종일(24/7) 켜둘 수 있는 경우에만 Windows 중계서버를 운영할 수 있습니다 상시 켜둘 수 있을지 확신이 안 든다면, Snowflake가 Tor 네트워크에 귀하의 자원을 기여하는 더 좋은 방법입니다.

Tor는 동적 IP 주소로 중계서버를 무난하게 다룰 수 있습니다. 귀하의 torrc 주소 행을 공란으로 두세요. 그러면 Tor가 알아맞힐 겁니다.

네, 그렇습니다. 몇몇 공격을 대상으로 익명성을 기존보다 더 확고히 할 수 있게 됩니다.

가장 간단한 예시로 일부 Tor 중계서버를 점거한 공격자를 들어보겠습니다. 공격자는 Tor 중계서버를 점거했으므로, 귀하가 보낸 연결을 보게 될 겁니다. 하지만 해당 연결이 귀하의 컴퓨터에서 처음 보낸 것인지, 아니면 타인의 중계서버를 거쳐 온 것인지 알 길이 없습니다.

중계서버의 양이 항상 익명성 증진에 도움이 되는 것은 아님을 보여주는 사례도 있습니다: 공격자가 귀하의 수발신 트래픽을 모두 볼 수 있다면, 어떤 게 중계서버에서 온 트래픽이고, 어떤 트래픽이 귀하의 컴퓨터에서 처음 발신됐는지 파악하는 건 공격자에게 쉬운 일이 됩니다. (해당 사례에서 그들은 목적지까지의 트래픽을 볼 수 있는 게 아닌 이상, 여전히 귀하의 목적지를 알지 못합니다. 단지 귀하가 평범한 클라이언트와 하등 다를 게 없다는 것만 파악할 뿐입니다.)

Tor 중계서버를 운영할 때의 한계가 이것 외에도 몇 개 더 있습니다. 첫째, Tor 프로젝트에서 보유한 중계서버가 수백개에 불과하지만, 귀하가 그 중 하나를 운영한다는 사실 자체가 공격자로 하여금 귀하가 익명성에 높은 가치를 두는 인물임을 파악할 수 있는 기제로 작용합니다. 두 번째, 중계서버를 운영할때의 지식을 활용한 난해한 공격 방식도 종종 확인됩니다. 예를 들어, 설사 공격자가 귀하의 네트워크를 보지 않는다 하더라도, 그들이 귀하가 트래픽을 전송하는지 여부를 '관측(observe)'할 수 있습니다. 이는 귀하의 Tor 중계서버에 트래픽을 중계하는 과정에서 트래픽 타이밍의 변화를 파악함으로써 가능합니다.

리스크를 감당할만큼 이점이 클지는 연구를 좀 더 해와야 결론을 내릴 수 있을 거 같습니다. 귀하가 가장 걱정하는 공격에 대부분 큰 영향을 받습니다. 대다수 사용자에게 있어, 이러한 조치는 훌륭하다고 봅니다.

  • 우분투 저장소의 패키지를 사용하지 마세요. 패키지로는 안정적인 업데이트가 불가능합니다. 즉 우분투 저장소를 사용하면 중요한 안정성과 보안 패치를 놓칠 수 있다는 것입니다.
  • 다음 명령을 실행하여 우분투 버전을 확인하십시오:
     ‪$ lsb_release -c
    
  • 루트 계정 상태에서 to /etc/apt/sources.list. Replace 'version' 에 다음 행을 추가하세요. 이때 버전은 이전 단계에서 확인한 버전을 적으세요:
     deb https://deb.torproject.org/torproject.org version main
     deb-src https://deb.torproject.org/torproject.org version main
    
  • 다음 명령을 실행하여 패키지 서명에 사용 된 gpg키를 추가하십시오:
     ‪$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • Tor를 설치하고 서명을 확인하려면 다음 명령을 실행하십시오:
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

Tor는 IPv6를 부분적으로만 지원하며, IPv6 연결이 가능할 경우 각 중계서버 운영자가 중계서버 내 torrc 설정 파일에 IPv6 기능을 활성화할 것을 권장합니다. 당분간 Tor는 중계서버에 IPv4 주소를 요구할 것입니다. 해당 기간 동안 IPv6 주소만 취급하는 호스트로 Tor 중계서버를 운영할 수 없습니다.

간결히 표현하자면, 다음과 같이 작동됩니다:

"ed25519_master_id_secret_key"로 명명된 ed25519 주 신원 비밀 키(primary ed25519 identity secret key) 파일이 있습니다. 해당 키는 가장 중요한 키입니다. 따라서 보안이 철저한 위치에 백업해 보관하셔야 합니다. 파일에 그만큼 민감한 정보가 많기에 잘 보호해야 합니다. 해당 키를 귀하가 따로 생성한 후 비밀번호 입력 창이 떴을 때 비밀번호를 입력하면 Tor가 자체적으로 이를 암호화할 수 있습니다. 'ed25519_signing_secret_key'라 명명된 중단기 서명키(medium term signing key)는 Tor에서 사용되는 목적으로 생성됩니다. 또한 'ed25519_signing_cert'로 명명된 인증서(certificate)도 생성됩니다. '주 신원 비밀키'(primary identity secret key)로 서명돼있고, '중단기 서명키'가 주어진 시기 동안 유효하다는 것이 주 신원 비밀키에 의해 확인돼있습니다. 중단기 서명키의 기본 유효기간(validity)은 30일입니다. 다만 이는 torrc 내 "SigningKeyLifetime N days|weeks|months" 옵션을 조정해 변경할 수 있습니다.

  • "ed25519_master_id_public_key"로 명명된 '주 공개 키'(primary public key)도 있습니다. 네트워크에 공시된 중계서버의 실제 신원에 해당합니다. "ed5519_master_id_secret_key"은 강제로 풀기도 어렵고, 그렇다고 그 안에 민감한 정보가 많은 것도 아닙니다.

Tor는 중단기 서명 키와 인증서에 유효성 여부 정보만 확인하기 위해 접근합니다. 따라서 '주 신원 비밀 키'를 DataDirectory/keys에서 꺼내 외부 저장소나 다른 컴퓨터에 보관해도 됩니다. 이를 외부에 옮긴다면, 중단기 서명 키와 인증서를 만료 전에 수동으로 갱신해야 합니다. 그러지 않으면 중계 서버에서 작동 중인 Tor 프로세스가 만료로 인해 중단됩니다.

해당 기능은 선택 사항입니다. 원하지 않으면 사용할 필요가 없습니다. 주기적으로 중단기 서명키를 수동으로 재갱신하지 않은 채 별도의 조작 없이(unattended) 중개 서버가 장기적으로 운영되기를 원한다면, '주 신원 비밀키'를 원 위치인 DataDirectory/keys에 두세요. Tor 재설치를 대비한 백업 정도만 따로 해두세요. 이 기능을 사용하려면, 해당 주제를 자세하게 다룬 가이드를 참고하세요.

출구가 구성되지 않았거나 악의적일 경우, BadExit 플래그가 부여됩니다. BadExit 플래그를 Tor가 확인함으로써 해당 중게서버를 통해 나가는 걸 피할 수 있습니다. 그 결과 BadExit 플래그가 붙은 해당 중계서버가 출구로서 기능을 못 하게 되는거죠. 만일 귀하의 중계서버에 이 플래그가 붙었다면, 이는 Tor가 트래픽 경로를 정하는 과정에서 출구로 설정한 귀하의 중계서버에서 문제를 발견했거나, 의심스러운 활동을 탐지했는데 귀하와의 연락이 되지 않았기 때문입니다. 불량 중계서버 팀에 연락하시면 Tor 프로젝트에서 문제를 해결할 수 있습니다.

  • 중계서버 종류 중 가장 필요한 건 출구 중게서버입니다. 하지만 해당 서버는 가장 큰 법적 노출과 위험을 안고 있기도 합니다. (따라서 절대 귀하의 집에서 출구 중계서버를 돌리면 안 됩니다)
  • 최소한의 노력으로 중계서버를 운영할 방법을 찾고 계시다면, '빠른 가드 중계서버' 또한 유용합니다.
  • 브리지 다음으로

On relay search we show an amber dot next to the relay nickname when it is overloaded. 중계서버가 과부하됐다는 건 한 개 이상의 부하 메트릭스에 트리거가 걸렸다는 걸 뜻합니다.

중계서버의 과부하가 발생하고 복구된 후, 약 72시간 동안 Tor측에서 중계서버가 과부하에 걸렸음을 안내합니다.

귀하의 중계서버가 과부하됐다는 알림을 받으셨다면, 다음과 같이 해주세요:

  1. https://status.torproject.org/ 에 들어간 후, "Tor network" 카테고리 내에 보고된 이슈가 있었는지 점검하세요.

  2. 네트워크, 메모리, CPU 부하 측면에서 시스템의 sysctl을 조정해보는 걸고려해보세요.

  3. 상황을 잘 파악할 수 있도록 MetricsPort를 활성화하는 걸 고려해보세요.

네트워크, 메모리, CPU 부하 측면에서 sysctl 의 조정

TCP 포트 고갈

TCP 포트 고갈 문제를 겪고 있다면, 로컬 포트 범위를 확장하는 걸 고려하세요. 다음을 통해 로컬 포트 범위를 확장할 수 있습니다:

# sysctl -w net.ipv4.ip_local_port_range="15000 64000"

또는

# echo 15000 64000 > /proc/sys/net/ipv4/ip_local_port_range

Keep in mind that tuning sysctl as described is not permanent and will be lost upon restart. You need to add the configuration to /etc/sysctl.conf or to a file in /etc/sysctl.d/ to make it permanent.

MetricsPort

To understand the well-being of Tor relays and the Tor network it is vital to provide and have access to relay metrics. Relay overload information has been added to relay descriptors since 0.4.6+ but it was not until Tor >= 0.4.7.1-alpha that an interface to the underlying relay metrics was available: the metrics port.

MetricsPort를 활성화하기

Tor provides access to the metrics port via a torrc configuration option called MetricsPort.

It's important to understand that exposing the tor MetricsPort publicly is dangerous for the Tor network users, which is why that port is not enabled by default and its access has to be governed by an access policy. 이 포트를 열기 전 사전 준비를 철저하게 하세요. 디버깅이 끝나는 대로 바로 포트를 닫으셔야 합니다.

Let's assume you are the only user on a server that runs a Tor relay. You can enable the metrics port adding this to your torrc file:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

And then you will be able to easily retrieve the metrics with:

# curl http://127.0.0.1:9035/metrics

초기 설정 상 Prometheus 포맷이 기본으로 설정돼있습니다.

Note: every user on that server will be able to access those relay metrics in the example above. In general, set a very strict access policy with MetricsPortPolicy and consider using your operating systems firewall features for defense in depth.

For a more detailed explanation about MetricsPort and MetricsPortPolicy see tor's man page.

MetricsPort output

Here is an example of what output enabling MetricsPort will produce (we omitted any congestion control related metrics as we still need to stabilize that interface):

# HELP tor_relay_connections Total number of opened connections
# TYPE tor_relay_connections gauge
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv6"} 0
# HELP tor_relay_connections_total Total number of created/rejected connections
# TYPE tor_relay_connections_total counter
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv6"} 0
# HELP tor_relay_flag Relay flags from consensus
# TYPE tor_relay_flag gauge
tor_relay_flag{type="Fast"} 0
tor_relay_flag{type="Exit"} 0
tor_relay_flag{type="Authority"} 0
tor_relay_flag{type="Stable"} 0
tor_relay_flag{type="HSDir"} 0
tor_relay_flag{type="Running"} 0
tor_relay_flag{type="V2Dir"} 0
tor_relay_flag{type="Sybil"} 0
tor_relay_flag{type="Guard"} 0
# HELP tor_relay_circuits_total Total number of circuits
# TYPE tor_relay_circuits_total gauge
tor_relay_circuits_total{state="opened"} 0
# HELP tor_relay_streams_total Total number of streams
# TYPE tor_relay_streams_total counter
tor_relay_streams_total{type="BEGIN"} 0
tor_relay_streams_total{type="BEGIN_DIR"} 0
tor_relay_streams_total{type="RESOLVE"} 0
# HELP tor_relay_traffic_bytes Traffic related counters
# TYPE tor_relay_traffic_bytes counter
tor_relay_traffic_bytes{direction="read"} 0
tor_relay_traffic_bytes{direction="written"} 0
# HELP tor_relay_dos_total Denial of Service defenses related counters
# TYPE tor_relay_dos_total counter
tor_relay_dos_total{type="circuit_rejected"} 0
tor_relay_dos_total{type="circuit_killed_max_cell"} 0
tor_relay_dos_total{type="circuit_killed_max_cell_outq"} 0
tor_relay_dos_total{type="marked_address"} 0
tor_relay_dos_total{type="marked_address_maxq"} 0
tor_relay_dos_total{type="conn_rejected"} 0
tor_relay_dos_total{type="concurrent_conn_rejected"} 0
tor_relay_dos_total{type="single_hop_refused"} 0
tor_relay_dos_total{type="introduce2_rejected"} 0
# HELP tor_relay_load_onionskins_total Total number of onionskins handled
# TYPE tor_relay_load_onionskins_total counter
tor_relay_load_onionskins_total{type="tap",action="processed"} 0
tor_relay_load_onionskins_total{type="tap",action="dropped"} 0
tor_relay_load_onionskins_total{type="fast",action="processed"} 0
tor_relay_load_onionskins_total{type="fast",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="dropped"} 0
# HELP tor_relay_exit_dns_query_total Total number of DNS queries done by this relay
# TYPE tor_relay_exit_dns_query_total counter
tor_relay_exit_dns_query_total 0
# HELP tor_relay_exit_dns_error_total Total number of DNS errors encountered by this relay
# TYPE tor_relay_exit_dns_error_total counter
tor_relay_exit_dns_error_total{reason="success"} 0
tor_relay_exit_dns_error_total{reason="format"} 0
tor_relay_exit_dns_error_total{reason="serverfailed"} 0
tor_relay_exit_dns_error_total{reason="notexist"} 0
tor_relay_exit_dns_error_total{reason="notimpl"} 0
tor_relay_exit_dns_error_total{reason="refused"} 0
tor_relay_exit_dns_error_total{reason="truncated"} 0
tor_relay_exit_dns_error_total{reason="unknown"} 0
tor_relay_exit_dns_error_total{reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{reason="shutdown"} 0
tor_relay_exit_dns_error_total{reason="cancel"} 0
tor_relay_exit_dns_error_total{reason="nodata"} 0
# HELP tor_relay_load_oom_bytes_total Total number of bytes the OOM has freed by subsystem
# TYPE tor_relay_load_oom_bytes_total counter
tor_relay_load_oom_bytes_total{subsys="cell"} 0
tor_relay_load_oom_bytes_total{subsys="dns"} 0
tor_relay_load_oom_bytes_total{subsys="geoip"} 0
tor_relay_load_oom_bytes_total{subsys="hsdir"} 0
# HELP tor_relay_load_socket_total Total number of sockets
# TYPE tor_relay_load_socket_total gauge
tor_relay_load_socket_total{state="opened"} 0
tor_relay_load_socket_total 0
# HELP tor_relay_load_tcp_exhaustion_total Total number of times we ran out of TCP ports
# TYPE tor_relay_load_tcp_exhaustion_total counter
tor_relay_load_tcp_exhaustion_total 0
# HELP tor_relay_load_global_rate_limit_reached_total Total number of global connection bucket limit reached
# TYPE tor_relay_load_global_rate_limit_reached_total counter
tor_relay_load_global_rate_limit_reached_total{side="read"} 0
tor_relay_load_global_rate_limit_reached_total{side="write"} 0

위 행이 실제로 뜻하는 바를 살펴보겠습니다:

tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0

중계서버에 'dropped'(중단됨)이라는 글귀를 발견하셨다면, CPU나 RAM 쪽 문제인 경우가 일반적입빈다.

Tor는 슬프게도 싱글 스레드로 구동됩니다. 다만 'onion skin'으로 처리될 때는 예외입니다. 'onion skin'은 암호화기법이 적용된 작업으로, 잘 알려진 'onion 계층'을 대상으로 매 우회로마다 적용돼야 작동합니다.

Tor는 계층을 처리할 때 '스레드 풀'을 사용합니다. 그리고 처리한 결과물을 스레드 풀에 위탁합니다. 해당 스레드 풀에서 메모리나 CPU에서의 압박(pressure)으로 인해 작업이 중단될 수 있습니다. 그럴 경우 과부하 상태가 작동(trigger)됩니다.

서버의 모든 자원이 가동 중일 경우(at capacity), 과부하 상태가 작동될 가능성이 큽니다.

The ntor and ntor_v3 values will be the same at the moment which is a bug we need to fix.

tor_relay_exit_dns_error_total{...}

Any counter in the "*_dns_error_total" realm (apart from the one for successful queries) indicates a potential DNS related problem. However, we realized during the 0.4.7 release cycle that DNS errors are way too noisy and contain too many false positives to be useful for overload reporting purposes. We therefore don't use them anymore for that purpose starting with 0.4.6.9 and 0.4.7.4-alpha. However, we still keep DNS metrics around to give the relay operator insight into what is going on with their relay.

DNS timeout issues and errors only apply to Exit nodes.

tor_relay_load_oom_bytes_total{...}

메모리 부족 발동(Out Of Memory invocation, OOM invocation)은 Ram 문제를 가리킵니다. 중계서버의 Ram 용량 증설이 필요한 경우거나, 메모리 누수 문제일 수 있습니다. tor 프로세스에서 메모리 누수를 발견하셨다면, 해당 문제를 Tor gitLab로 제보해주시거나, Tor 중계서버 메일링 리스트에 기재된 주소로 이메일을 보내주세요.

Tor엔 자체적인 OOM 핸들러가 있습니다. Tor 추정 상의 가용 메모리 중 75%가 점유되는 순간 핸들러가 발동됩니다. 그러므로, tor 추산한 총 가용 메모리인 2GB 중에서1.5기가의 메모리가 사용됐다고 할 때, OOM 핸들러로 메모리를 비우기 시작할 겁니다. 이러한 상태를 과부하 상태로 간주합니다.

가용 메모리 용량을 추산하기 위해, tor가 실행할 때 MaxMemInQueues 명령도 같이 실행됩니다. 해당 명령이 설정되지 않았을 경우, 시스템에서 가용 램 용량을 확인한 후 다음의 알고리즘을 적용합니다:

    if RAM >= 8GB {
      memory = RAM * 40%
    } else {
      memory = RAM * 75%
    }
    /* Capped. */
    memory = min(memory, 8GB) -> [8GB on 64bit and 2GB on 32bit)
    /* Minimum value. */
    memory = max(250MB, memory)

과부하 상태를 방지하려면, 2GB 이상의 램이 장착된 64비트 시스템에서 중계서버를 운영하는 걸 권장합니다. 4GB의 램 용량이 바람직합니다. 물론 더 증설한다고 시스템적으로 해가 되는 건 결코 아닙니다만.

Tor가 OS OOM 핸들러 자체에 의해 호출될 수도 있음을 신경쓰시는 분들도 계실 수 있습니다. 이는 tor가 실행될 때 시스템의 총 메모리 메모리 용량을 가져오기 때문입니다. 시스템 전반에서 많은 애플리케이션이 램을 사용하면서 실행 중이라면, 종국에는 너무 많은 메모리가 점유되게 됩니다. 이런 경우 OS는 OOM 트리거를 tor에 발동할 수 있습니다. 이때 tor는 메모리 프레셔(memory pressure)를 인식하지 못한 상황입니다.

tor_relay_load_socket_total

If the number of opened sockets is close to or the same as total sockets available then this indicates the relay is running out of sockets. tor 프로세스를 대상으로 ulimit -n 값을 늘리면 해결됩니다.

tor_relay_load_tcp_exhaustion_total

다음 행은 중계서버가 TCP 포트에서 실행 중임을 나타냅니다.

sysctl상기된 바와 같이 조정(tune)해 보세요.

tor_relay_load_global_rate_limit_reached_total

해당 카운터가 짧은 시간 동안 상당한 수치량으로 증가한다면, 중계서버가 혼잡한 겁니다. 해당 중계서버가 대형 onion 서비스에서 '가드' 노드로 사용되고 있을 가능성이 큽니다. 혹은 DDoS 공격이 해당 네트워크에서 진행 중일 가능성도 있습니다.

귀하의 중계서버가 여전히 과부하 상태이면서, 원인 규명이 안 됐다면 network-report@torproject.org에 메일을 보내 문의 주세요. network-report OpenPGP key을 통해 메일을 암호화해 보낼 수 있습니다.

Tor 중계서버를 업그레이드 하거나 다른 컴퓨터로 옮길 때, ( "keys/ed25519_master_id_secret_key" 에 저장돼있고, DataDirectory 내 "keys/secret_id_key" 에 저장된) 신원 키를 동일하게 유지해야 하는 것이 중요합니다. 향후 중계서버를 복구할 수 있도록 신원 키를 계속 백업해두는 걸 추천합니다. 이래야 중계서버의 평판이 훼손되는 일을 미연에 방지할 수 있습니다.

즉 Tor 중계서버를 업그레이드 하면서 동일한 torrc 및 DataDirectory를 유지해야 업그레이드가 제대로 진행되며, 중계서버에서 동일한 키를 계속 사용할 수 있습니다. DataDirectory를 새로 선정하는 경우, 기존의 keys/ed25519_master_id_secret_key 와 keys/secret_id_key 를 복사해뒀는지 사전에 꼭 확인하세요.

If you are a bridge operator, also make sure to copy pt_state/. It contains data required for your bridge to keep working with the same bridge line.

참고: Tor 0.2.7의 경우, 중계서버에 ed25519 타원 곡선 암호화 기법을 기반으로 한 새로운 차세대 식별 방식을 사용하고 있습니다. 따라서 기존 RSA 식별 방식 키가 새로운 방식으로 대체됩니다. 하지만 구버전과의 호환성을 보장하는 차원에서 지금 당장 적용되진 않습니다. 그 때까지, 각 중계서버는 모두 ed25519 신원 (신원 키 파일: keys/ed25519_master_id_secret_key) 와 RSA 신원(신원 키 파일: keys/secret_id_key)을 보유하게 됩니다. 중계서버를 복원하는 경우, DataDirectory를 변경하는 경우, 중계서버를 새로운 컴퓨터로 옮기는 경우를 모두 대비해, 둘 다 복사해서 백업해두세요.

반드시 모든 발신 연결을 허용하도록 설정해야 합니다. 그래야 각 중계회선이 다른 중계회선과 통신할 수 있습니다.

Tor 중계서버 운영자는 공통 통신 규약에 의해 적법하게 보호받습니다. 즉 ISP의 네트워크를 거쳐간 제3자 컨텐츠에 대한 책임을 현지 ISP에서 부담하지 않는 게 공통 통신 규약에 규정돼있는데, 이것이 Tor 중계서버 운영자에게도 적용되는 것입니다.. 트래픽을 필터링하는 출구 중계서버에는 위와 같은 규약에 의한 보호가 박탈됩니다,

Tor는 간섭 및 개입이 없는 자유로운 네트워크 접속을 장려합니다. 출구 중계서버를 거쳐 인터넷에 접속하려는 트래픽을 필터링하지 말아야 합니다.. 트래픽을 필터링하는 걸로 밝혀진 출구 중계서버엔 BadExit 플래그가 부여됩니다.

Debian, 혹은 특히 Ubuntu를 사용하시는 경우, Tor 프로젝트 저장소에서 Tor를 설치하는 게 훨씬 좋습니다.

  • ulimit -n 수치는 32768 정도가 필요한 모든 연결을 개방한 상태로 유지할만큼 충분히 높습니다.
  • Tor에만 사용할 용도로 생성한 사용자 프로필이므로, Tor를 실행할 때 루트 권한을 부여하지 않아도 됩니다.
  • init 스크립트가 포함돼있으므로, Tor가 시작 프로그램으로서 부팅 시 실행됩니다.
  • Tor 구성 파일(config file)에 문제가 없는지 파악하기 위해, --verify-config가 Tor와 같이 실행됩니다.
  • Tor를 저수준 포트(low-level port)에 바인딩한 후, 권한을 없앨 수 있습니다.

Tor 프로젝트는 꽤 안정적인 인터넷 연결을 가진 분들을 찾고 있습니다. 즉 적어도 10 Mbit/s (Mbps) 가량의 대역폭을 문제 없이 낼 수 있는 환경이어야 합니다. 귀하의 환경이 이에 부합한다면, Tor 중계서버를 운영해보시는 건 어떨까요?

설사 최소 10 Mbit/s의 대역폭을 이용할 수 있는 환경이 아니더라도, 대역폭에서 최소 1 MBit/s 을 낼 수 있다면 obfs4 Tor 브리지를 운영해 Tor에 도움을 주실 수 있습니다.

Tor는 주어진 컴퓨터에 호스트네임을 요청한 후 받은 호스트네임을 분해하는 방식으로 IP 주소를 추정합니다. 일반적인 사용자의 컴퓨터 내 their /etc/hosts 파일엔 옛 IP 주소가 입력돼있습니다.

따라서 입력된 옛 IP 주소가 수정되지 않는다면, '주소' 구성 옵션을 통해 원하는 IP를 특정할 수 없는 것입니다. 컴퓨터에 NAT가 적용돼있고 내부 IP 주소밖에 없다면, 동적 IP 주소에 대한 다음의 지원 항목을 참고하세요.

한편 IP 주소가 많을 경우, 'OutboundBindAddress'을 설정해 외부에 표시하고자 하는 IP 주소로 외부 연결을 받고자 할 수 있습니다.

제대로 보신 게 맞습니다. 대개 Tor 중계서버에 투입되는 바이트는 나가는 양과 들어가는 양이 같습니다. 그러나 예외가 있습니다:

DirPort를 열었다면, Tor 클라이언트는 디렉터리의 복사본을 요청합니다. Tor 클라이언트의 요청(HTTP GET)에 쓰이는 정보량은 꽤 적습니다. 그러나 응답에 쓰이는 정보량은 꽤 많습니다. 쓰기 'byte 바이트 수와' '읽기' 바이트 수가 차이 나는 원인 대부분은 이러한 현상에서 기인합니다.

중계서버가 출구 노드로 작동될 때도 예외에 해당합니다. 나가는 연결(exit connection)에서 정보를 읽고(예시: 인스턴트 메시지나 ssh 연결), 이를 Tor 네트워크로 보내기 위해 전체 512 바이트로 압축하기 때문입니다.

중계서버마다 부하에 차이가 있는 이유

Tor는 네트워크 전반의 대역폭을 관리합니다. 대다수 중계서버가 적절히 운영되도록 조처합니다. Tor의 목표는 BitTorrent와 같은 프로토콜과 차이가 있습니다. 저지연 웹페이지 환경은 Tor의 희망사항입니다. 그러려면 빠른 연결을 여유있게 제공하는 환경이 요구됩니다. BitTorrent는 대량 다운로드를 희망하는 사용자들이 많이 이용하므로, 대역폭 전체 사용이 요구됩니다.

현재 Tor 프로젝트에선 신규 대역폭 스캐너을 한창 개발하고 있습니다. 기존대비 훨씬 쓰기 쉽고 유지보수하기도 쉽습니다. 새로운 대역폭 스캐너로 측정되지 못했거나, 낮은 측정치를 보인 중계서버에 대해 진단(diagnostics)할 겁니다.

Tor에 대역폭 스캐너가 필요한 이유가 있나요?

대다수 제공자에서 로컬 네트워크의 최대 속도를 안내하고 있습니다. 하지만, Tor를 사용하는 사용자는 전 세계에 두루 있고, 이들은 한 개 혹은 두 개의 중계서버에 임의로 배정돼 연결됩니다. 따라서 Tor는 해당 중계서버가 전 세계의 네트워크에 잘 연결할 수 있는지 확인해야만 합니다

그래서 설사 모든 중계서버 운영자가 로컬 네트워크 속도를 기반으로 대역폭을 알린다 하더라도, Tor에서는 여전히 '대역폭 당국'(bandwidth authorities)을 통해 인터넷의 여러 부분에서 발생하는 부하를 적절하게 조정할 필요가 있는 것입니다.

'표준 중계서버 부하량'은 무엇인가요?

대부분의 중계서버에선 실제 처리량 대비 30%~80%의 부하 수준(loaded)을 보이는 게 일반적입니다. 클라이언트 입장에선 위와 같이 설정돼있는 게 낫습니다. 과도하게 부하가 걸린 증계서버에의 지연시간(latency)가 길어질 수 있기 때문입니다. (Tor는 각 중계서버의 부하가 10% 수준에 머물 수 있도록, 많은 중계서버가 있었으면 합니다. 부하량이 그 수준에 이르면 일반적인 인터넷 만큼 Tor의 속도가 빨라질 거에요.)

중계서버가 느린 원인으로 종종 프로세서가 느려진 점, 연결이 제한량이 이른 점이 꼽히기도 합니다. 그 외엔 보통 네트워크가 느린 게 중계서버가 느린 원인입니다: 다른 Tor 중계서버와의 연결이 불량이거나, 두 연결 사이의 거리가 멀기 때문에 느려지는 것입니다.

중계서버를 제한하는 요소를 알아내는 방법

중계서버를 느리게 하는 요소는 다양합니다. 해당 요소를 찾아내는 방법을 지금부터 알아보겠습니다.

시스템 제한

  • RAM, CPU, 중계서버의 소켓/파일 기술자(socket/file descriptor) 사용량을 살펴보세요.

Tor는 시작 시 이러한 요소를 로그로 기록해둡니다. 다른 요소를 'top'과 같은 도구(tool)로 조회할 수 있습니다.

서비스 제공자(provider)에 의한 대역폭 제한

  • 귀하의 중계서버 제공자와 다른 중계서버간 인터넷 대등접속(대역폭, 지연 속도)를 확인하세요. 미국의 인터넷 서비스 제공자인 Comcast를 통해 전송되는 중계서버는 속도가 종종 느립니다. 북미와 서유럽 이외 지역에서의 중계서버도 일반적으로 해당 지역대비 느립니다.

Tor Network 제한

중계서버 대역폭이 중계서버 자체 측정치로 제한되거나, 디렉터리 기관에서의 측정치로 제한될 수 있습니다. 어떤 기준으로 중계서버의 대역폭이 제한되고 있는지 다음 문답을 통해 알아낼 수 있습니다:

  • 귀하의 중계서버에 제시된 각 투표를 합의 건전성(큰 페이지)에서 확인하세요. 그리고 중앙값도 확인하세요. 귀하의 중계서버에 '디렉터리 기관에서 운영 중(Running by some directory authorities)'이라 표시돼있지 않다면:
    • 잘못된 IPv4 주소나 IPv6 주소로 설정돼있지 않던가요?
    • 다른 네트워크에서 중계서버의 IPv4나 IPv6 주소에 접근할 수 있던가요?
    • 귀하가 운영하는 중계서버의 IPv4 주소에 여러 중계서버가 있진 않던가요?

위 문답에 모두 해당하지 않는다면, 귀하가 운영하는 중계서버의 자체 대역폭 측정치(observed bandwidth)와 자체 대역폭 제한 측정치(bandwidth rate 혹은 limit)를 확인해보세요. Look up your relay on Metrics. '대역폭' 항목에 마우스를 갖다 대면, '관측된 대역폭'과 '중계서버의 대역폭 비율'이 표시됩니다.

좀 더 구체적인 예시를 확인하세요: 합의의 가중치 하락 and 출구 중계서버의 속도 향상.

해결 방법

두 수치 중 가장 작은 게 중계서버에 할당된 대역폭 제한량입니다.

  • 두 수치 중 작은 게 '대역폭 비율(bandwidth rate)'이라면, torrc에 있는 옵션인 BandwidthRate/Burst나 RelayBandwidthRate/Burst를 높게 조정하세요.
  • 두 수치 중 작은 게 '관측된 대역폭(observed bandwidth)'이라면, 자체 측정값이 늘어나지 않는 한, 현재 대역폭에서 더 증가하지 않습니다. 중계서버가 느린 원인을 찾아내야 합니다.
  • 대역폭 측정치의 중앙값(median)에 해당할 경우, 귀하의 중계서버를 대다수 대역폭 기관에서 느리다고 간주한 것입니다. 이 경우엔 왜 대역폭 기관에서 귀하의 중계서버를 느리다고 봤는지 알아봐야 합니다

중계서버 측정을 직접 해보기

귀하의 중계서버가 자체적으로 느리다고 진단한 경우거나 대역폭 기관에서 느리다고 본 경우라면, 귀하가 직접 대역폭을 테스트해볼 수 있습니다:

  • 현재 네트워크 및 CPU 환경에서 Tor가 낼 수 있는 속도를 Tor에서 테스트를 돌려 알아보세요.
  • 현재 CPU 환경에서 tor가 얼마나 빨리 작동되는지 tor와 chutney로 테스트를 돌려보세요. 대역폭 증가 추세가 멈출 때까지 데이터 양을 계속 늘려보세요.

NAT/라우터 기기에서 포트 포워딩을 하는 절차를 portforward.com에서 알아보세요.

귀하의 중계서버가 내부 망에서 실행 중이라면, 포트 포워딩 설정이 필요합니다. TCP 연결 포워딩은 시스템에 따라 다릅니다. 하지만 방화벽에 관련 자주 묻는 질문 항목에 기재된 예해가 유효할 수 있으니 확인해보세요.

또한 GNU/Linux에서 iptables를 사용한 방법을 예시로 보여드리면 다음과 같습니다:

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 9001 -j ACCEPT

외부 인터페이스(인터넷에 연결된 부분)가 다르다면 "eth0"를 변경해야 할 수 있습니다. 인터페이스가 하나만 있을 가능성이 있습니다(루프백 인터페이스 제외). 따라서 찾는 거 자체는 그렇게 어렵지 않을 겁니다.

아닙니다. 법 집행기관이 당신의 출구 노드에 관심을 갖게 되면, 당신의 컴퓨터가 압류당할 수 있습니다 이런 까닭에, 출구 중계서버를 집에서 혹은 가정 내 인터넷 연결을 통해 실행하지 않는 게 가장 좋습니다.

집에서 돌리는 대신에, Tor에 호의적인 상업 시설에서 출구 중계서버를 돌리는 걸 고려해 보세요. 귀하의 출구 중계서버 IP 주소가 가정의 IP 주소와 다르도록 관리하고, 귀하의 트래픽이 거길 거치지 않도록 하세요. 출구 중계서버로 호스팅 중인 컴퓨터에 민감한 개인 정보를 저장해두는 것도 당연히 피하셔야 합니다.

torrc 파일 내에 있는 '계정 옵션'을 통해 주어진 시간동안 중계서버에서 사용하는 최대 바이트 수를 설정할 수 있습니다.

    AccountingStart day week month [day] HH:MM

위 옵션으로 계정을 언제 초기화할지 지정할 수 잇습니다. 예를 들어 주당 제공되는 총 바이트 수를 설정하려면(매주 수요일 오전 10:00에 초기화 됩니다), 다음과 같이 설정하세요:

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

해당 기능은 집계 기간동안 중계서버에서 주고 받는 보내는 데이터 최대치를 규정하는 기능입니다. (AccountingStart에서 설정한) 집계 기간이 초기화되면, AccountingMax 계수기가 0으로 초기화됩니다.

된예시: 하루에 오고가는 트래픽 양을 50 GB로 설정하고, 집계가 매일 정오에 초기화되는 상황을 가정해봅시다.

    AccountingStart day 12:00
    AccountingMax 50 GBytes

집계 기간이 초기화된 직후에 귀하의 중계서버가 바로 깨지는 않을 수 있음을 유의하세요. 중계서버에서 지난 집계기간이 초기화되고 새로운 집계기간 설정 후 깨어나는 사이에 지난 기간동안 얼마나 빠르게 할당량이 빠져나갔는지를 추적하고, 임의 지점을 선택해야 하기 때문입니다. Tor는 이 방식으로 수백 개의 중계서버가 월초에 한꺼번에 재시작하지 않도록 할뿐 아니라, 깨지 않는 문제도 방지하고 있습니다.

연결 속도 대비 후원할만한 대역폭 양이 적으시다면, 일일 집계 설정을 사용하시는 걸 추천합니다. 일일 집계 설정 시 1일차에 월 할당량을 다 쓰는 일을 미연에 방지할 수 있습니다. 간단하게 월별 제공량을 30으로 나눠보세요. 한편 귀하가 개인적으로 평소보다 대역폭을 많이 쓰는 날도 있을 수 있으므로, 이를 고려해 rate의 설정치를 보수적으로 잡을 필요가 있습니다: XGB를 각 방향에 저공하고자 한다면, RelayBandwidthRate 값을 20*X KBytes로 설정하면 됩니다. 예를 들어, 50GB를 각 경로에 제공하고자 한다면, RelayBandwidthRate 를 1000 KBytes로 설정하면 되겠죠: 귀하의 중계서버는 이런 식으로도 적어도 반나절은 Tor 네트워크에 기여할 수 있습니다.

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # 로 평균 수준을 유지하면서도 버스트 값을 높게 잡을 수 있습니다

Onion 서비스

Onion 사이트 탐색 중에는 Tor 브라우저는 주소창에 현재 웹페이지가 안전함을 의미하는 onion 아이콘을 별개로 띄웁니다.

onion을 나타내는 이미지 양파 아이콘의 의미:

  • Onion 서비스가 인증기관에서 발행한 인증서(CA-Issued Certificate)를 통해 검증된 HTTP나 HTTPS 프로토콜로 제공됩니다.
  • Onion 서비스가 자체 서명 인증서(Self-Signed Certificate; SSC)를 통해 검증된 HTTPS 프로토콜로 제공됩니다.

빨간 줄이 그어진 양파를 나타내는 이미지 발간 줄이 그어진 양파 아이콘의 의미:

  • Onion 서비스가 안전하지 않은 URL에서 온 스크립트로 제공됩니다.

경고 표시가 새겨진 양파를 나타내는 아이콘 경고 표시가 새겨진 양파 아이콘의 의미:

  • Onion 서비스가 만료된 인증서를 통해 검증된 HTTPS 프로토콜로 제공됩니다.
  • Onion 서비스가 HTTPS 프로토콜로 제공되고 있으나, 잘못된 도메인입니다.
  • Onion 서비스가 안전하지 않은 URL에서 여러 형태로 제공되고 있습니다.

원하는 onion 서비스에 접속할 수 없나요? onion 주소 56자를 제대로 입력했는지 확인하세요. 한 글자만 틀려도 Tor 브라우저를 통한 사이트 접속이 불가능합니다. 그런데도 onion 서비스에 연결할 수 없으면 나중에 다시 시도해 주십시오. 일시적인 연결 문제일 수도 있고 사이트 관리자는 경고없이 사이트가 오프라인 이동을 허용할 수도 였습니다.

DuckDuckGo onion 서비스에 접속해 타 onion 서비스에 접속 가능한지 시험해볼 수 있습니다.

Onion 위치는 신규 HTTP 헤더로, 웹사이트가 onion 서비스도 운영함을 알릴 때 사용합니다. 방문한 웹사이트에서 onion 사이트를 이용할 수 있다면, '.onion 사용 가능'이라 적힌 보라색 알약 모양의 추천 창이 URL 바에 나타납니다. ".onion 사용 가능"을 클릭하면, 웹사이트를 다시 불러오고 해당 웹사이트의 onion 서비스로 리다이렉트합니다. 현 시점에서 Onion 위치를 사용할 수 있는 브라우저는 데스크톱용 Tor 브라우저(WIndows, macOS, GNU/Linux)입니다. Onion 위치에 대한 더 자세한 정보를 Tor 브라우저 매뉴얼에서 알아보세요. onion 서비스 관리자라면, 내 onion 사이트에 Onion 위치를 설정하는 방법를 배워보세요.

제가 사용하는 Onion 서비스가 V2인지 V3인지 어떻게 아나요?

주소의 길이가 56자인지를 보면 V3 Onion 주소인지 아닌지 판별할 수 있습니다. 예시: Tor Project의 v2 주소:http://expyuzz4wqqyqhjn.onion/, Tor Project의 v3 주소: http://2gzyxa5ihm7nsggfxnu52rck2vv4rvmdlkiu3zzui5du4xyclen53wid.onion/

Onion 서비스 관리자라면, 가능한 빨리 V3 Onion 서비스로 업그레이드하세요. 사용자라면, 북마크에 저장해둔 기존의 onion 사이트 주소를 v3 onion 주소로 업데이트하세요.

v2의 서비스 중단 과정이 궁금해요

2020년 9월, Tor는 onion 서비스 관리자와 클라이언트를 대상으로 v2가 서비스 종료될 예정이며, 버전 0.4.6.에서 단종됨을 경고했습니다. 2021년 6월, Tor 브라우저에서 사용자를 대상으로 경고 메시지를 송출하기 시작했습니다.

2021년 7월, Tor 0.4.6.을 기점으로 v2 지원이 종료되며, 코드 은행에서의 지원이 삭제됩니다.

2021년 10월, Tor 프로젝트에서 모든 지우너 기기를 대상으로 한 새로운 Tor 클라이언트 안정 버전을 릴리스합니다. 해당 버전에서 v2가 비활성화됩니다.

Tor 프로젝트 블로그 포스트인 Onion 서비스 버전 2 서비스 중단 타임라인에서 더 살펴보세요.

v2 onion 주소를 게속 써도 될까요? 2021년 9월 이후에도 v2 onion 주소에 접속할 수 있나요? 하위호환이 불가능한 거죠?

v2 onion 주소는 근본적으로 안전하지 않습니다. v2 onion 주소를 가지고 있다면, v3로 당장 옮기시는 걸 권합니다. v3로의 전환은 v2와의 하위호환이 불가능합니다: 즉 2021년 9월 이후 v2 onion 서비스에는 접속할 수 없습니다.

v2에서 v3로 이동할 때 개발자에게 추천하는 방식이 있나요? 사람들에게 새 v3 주소를 알리는 좋은 방법이 있을까요?

torrc에서 버전 3 주소를 만들기 위해서는, v2 서비스 때 처럼 새로운 서비스를 생성해야 합니다. 다음 두 줄을 입력하세요:

HiddenServiceDir /full/path/to/your/new/v3/directory/
HiddenServicePort <virtual port> <target-address>:<target-port>

이로써 초기 버전이 3으로 설정됐습니다. 그 외 따로 설정할 필요가 없습니다. tor를 재시작 하세요. 그 후 디렉터리에서 새 주소를 찾아보세요. 사용자에게 이행 계획을 전하기 위해 서비스 종료 전까지 버전 2 서비스를 운영하고 싶다면, 버전 2 서비스 구성 블록에 다음 행을 입력하세요:

HiddenServiceVersion 2

이를 통해 구성 파일에서 어떤 게 어떤 버전인지 파악할 수 있습니다.

귀하의 웹사이트에 설정된 Onion 위치를 갖고 있다면, 헤더를 새 v3 주소로 설정해야 합니다. onion 서비스 운영에 관한 기술 문서를 커뮤니티 포탈에 있는 Onion 서비스 페이지에서 확인하세요.

위 서비스 종료 발표를 못 봤어요. v3로 전환할 시간을 좀 더 주실 수 있나요?

안 됩니다. v2 연결은 서서히, 그리고 급전직하로 종료과정을 밟았습니다. 이제 끝낼 떄가 됐습니다.

v2 서비스는 9월에 끝나는 것인지, 아니면 이미 종료된 것인지 궁금합니다.

v2 서비스 종료 자체는 이미 이뤄졌습니다. Tor 0.4.6. 이전에 이미 v3 도입을 발표했으므로, 중계서버 운영자가 업데이트했다면 v2 서비스에 접근할 수 없습니다.

웹사이트 관리자인 제가 v2 onin 서비스에 접속하려는 사용자를 v3로 리다이렉트시킬 수 있을까요?

가능합니다. v2 서비스의 서비스 종료 시점 전까지 가능합니다. 귀하측 서비스 이용자들이 북마크 내 주소를 업데이트할 수 있도록 독려하세요.

v3 onion 서비스를 사용하면 DDoS 문제를 줄일 수 있을까요?

맞습니다. onion 서비스의 보안성을 증진하고자 계속 작업 중입니다. Tor 프로젝트 로드맵 상에 있는 ESTABLISH_INTRO Cell DoS Defense Extension, Res tokens: Anonymous Credentials for Onion Service DoS ResilienceA First Take at PoW Over Introduction Circuits 같은 작업들이 그 예입니다. 위 제안서의 개요를 How to stop the onion denial (of service)에서 확인하세요.

Tor에서만 접속할 수 있는 웹사이트를 'onion'이라 부르며, 최상위 도메인이 .onion입니다. 예를 들어, DuckDuckGo의 onion은 https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/ 입니다. Tor 브라우저를 통해 이러한 형태의 웹사이트에 접속할 수 있습니다. 웹사이트 호스트를 통해 주소를 공유받아야 합니다. 일반적인 웹사이트와 달리, onion은 검색 엔진에 인덱싱되지 않기 때문입니다.

인증된 onion 서비스란 서비스 접속 전에 클라이언트가 인증 토큰(이 경우엔 사설 키가 됩니다)을 제공해야 하는 onion 서비스를 말합니다. 이때 사설키를 서비스에 보내는 것은 아닙니다. 사설키는 내부에서 기술자를 복호하는 데에만 쓰입니다. onion 서비스 관리자에게 '액세스 크리덴셜'을 받을 수 있습니다. onion 서비스 관리자에게 연락해 접속할 수 있도록 요청하세요. 더 자세한 정보를 Tor 브라우저에서 onion 인증을 사용하는 방법에서 확인하세요. 클라이언트 인증 방식의 onion 서비스를 개설하고자 한다면, 커뮤니티 포탈에 있는 클라이언트 인증을 살펴보세요.

Onion 서비스로 브라우징 뿐 아니라 익명 웹사이트를 만드는 것과 같이 특정 결과물을 익명으로 배포할 수 있습니다.

메타데이터 없는 채팅, 메타데이터 없는 파일 공유, SecureDrop 이나 OnionShare와 같은언론인과 정보원 간의 안전한 소통, 안전한 소프트웨어 업데이트, Facebook과 같은 유명 사이트에의 안전한 방문, 이 모든 것들이 Onion 서비스의 덕을 보고 있습니다.

Onion 서비스는 특수 목적 최상위 도메인(Top Level Domain; TLD)인 .onion을 사용합니다(.com, .net, .org 를 안 쓰고요). Onion 서비스는 또한 Tor 네트워크를 경유하지 않고는 접속할 수 업습니다.

Onion 아이콘

onion 서비스를 사용하는 웹사이트에 접속할 때, Tor 브라우저는 URL 바에 양파 모양의 아이콘을 띄웁니다. 해당 아이콘을 통해 연결 환경이 안전한지, onion 서비스를 사용중인지 알 수 있습니다.

To learn more about onion services, read How do Onion Services work?

기타

Tor 개발자가 Tor 사용자를 추적할 방법 자체가 없습니다. Tor에 적용된 보호 기능은 익명성을 무력화하려는 적 세력을 막는 수단이면서, 동시에 Tor 프로젝트가 사용자를 추적하는 것까지 막는 수단으로도 작용합니다.

아뇨. Tor 프로젝트에서 제공하는 온라인 서비스는 없습니다. 프로젝트 목록에서 Tor 프로젝트가 그동안 진행한 모든 소프트웨어 프로젝트를 살펴보세요.

Tor 프로젝트의 상표 관련 자주 묻는 질문에서 Tor가 진행해온 프로젝트 관련 제반 사항을 확인하실 수 있습니다.

Tor는 미국 연방 정부 기관, 사설 재단 및 개인 기부자를 포함하여 수많은 후원자가 후원합니다. 당사의 재무 보고서에 있는 모든 저희 후원자 및 일련의 블로그 게시물을 확인하십시오.

저희 후원자와 기금 모델에 대해 공개적으로 이야기하는 것이 지역사회와 신뢰를 유지하는 가장 좋은 방법이라고 생각합니다. Tor 프로젝트는 자본의 수원이 다양한 데서 오는 것을 지향합니다. 일개인이 아닌 다양한 기관과 개인을 통해서 충원될 수 있도록요.

Tor를 통해 파일을 공유하려면, OnionShare가 좋은 선택입니다. OnionShare는 Tor onion 서비스를 사용해 높은 보안성과 익명성을 유지하며 파일을 주고 받을 수 있는 오픈 소스 도구입니다. Onion Share는 컴퓨터 내에 웹 서버를 직접 돌림으로써 작동합니다. 웹 서버에서 생성한 Tor 웹 주소를 다른 분이 Tor 브라우저로 접속해 파일을 다운로드 받을 수 있습니다. 다른 분이 귀하의 웹 서버에 파일을 업로드 하는 것도 가능합니다. 이때 Tor 웹 주소는 누군가가 알아낼 수 없도록 무작위로 생성됩니다. OnionShare을 쓰기 위해 별도의 서버 구축도, 제3자 파일 공유 서비스도, 계정 로그인 조차 할 필요가 없습니다.

이메일, Google 드라이브, Dropbox, WeTransfer. 혹은 양자간 파일 전송 서비스를 제공하는 거의 대부분의 서비스는 귀하가 공유할 파일에 접속할 권한을 보유하고 있습니다. OnionShare를 쓸 때에는 그럴 필요가 없습니다. 무작위로 생성된 웹 주소를 (암호화 기능이 있는 메시지 앱에 주소를 붙여넣는 등의) 안전한 방식으로 보낸다는 전제 하에, 귀하와 서로 공유하는 사람 외에 다른 사람이 파일에 접근하는 것은 절대 불가능합니다.

OnionShare는 Micah Lee가 개발한 제품입니다.

많은 출구 노드는 BitTorrent와 같은 특정 유형의 파일 공유 트래픽을 차단하도록 설정됩니다. 특히 BitTorrent 사용 중에는 Tor를 통해 익명성 확보가 불가능합니다.

현재 경로 길이는 3개로 고정돼있을 뿐더러 경로 내 노드 수를 바꾸는 건 매우 신중하게 고려돼야 하는 민감한 사안입니다. 다시 말해, 일반적인 경우 노드 갯수는 3개 입니다. 그러나 예를 들어 onion 서비스에 접속하려 하거나 '.exit' 주소에 접속할 때에는 노드 갯수가 3개 보다 더 많습니다.

Tor 프로젝트에선 사용자가 임의로 경로를 3개 보다 많이 늘리는 게 바람직하다고 보지 않습니다. 노드 갯수를 늘리는 것은 (저희가 아는 한) 보안성을 증진하지도 않으면서 오히려 네트워크 부하량만 증가시키기 때문입니다. 또한 경로 길이를 3개 이상으로 늘리는 게 되려 익명성에 악영향을 끼칠 수 있습니다. 그 첫번째 이유로, denial of security 공격 방식을 더 용이하게 한다는 데 있습니다. 두 번째로, 노드 갯수를 많이 설정한 사용자가 많지 않다면 이를 사용자의 신원을 특정하는 요소로 사용할 수 있기 때문입니다.

아뇨. 11번의 베타 릴리스 끝에, Tor 프로젝트는 Tor Messenger의 지원을 중단했습니다. Tor 프로젝트는 여전히 Tor가 메시지 앱에 활용될 수 있을 정도로 강력한 체제라고 봅니다. 하지만 지금 당장 이를 현실화할 충분한 자원이 없습니다. 선생님께서 도와주실 수 있나요? 연락 주세요.

Vidalia에 더이상의 유지보수 및 지원은 없습니다. Vidalia가 제공하는 기능 중 많은 부분을 현재 Tor 브라우저 자체에 통합한 상태입니다..

Tor는 전 세계 사용자와 자원봉사자의 지원을 받아 당사의 소프트웨어 및 리소스를 개선할 수 있도록 지원하므로 귀하의 피드백은 당사와 모든 Tor 사용자에게 매우 소중합니다.

피드백 서식

피드백을 보내거나 버그를 보고하려면, 가능한 상세하게 적어서 보내주세요.

  • 사용하는 운영체제
  • Tor 브라우저 버전
  • Tor 브라우저 보안 레벨
  • Tor 프로젝트 측에서 재현할 수 있도록, 문제가 발생하기까지의 단계를 적어주세요. (예시: 브라우저를 열고 → url을 입력하고 → (i) 아이콘을 입력했더니 → 브라우저가 갑자기 꺼집니다)
  • 발생한 문제 상황을 찍은 스크린샷
  • 로그

Tor 프로젝트에 연락하는 방법

여러 경로로 Tor 프로젝트에 연락할 수 있습니다. 그 중 편한 방법을 사용하세요.

Tor 포럼

문제가 발생했을 때 Tor 포럼에서 도움을 구하는 것도 권장됩니다. 포럼에 새로운 주제(topic)을 제출하기 위해선 계정을 생성해야 합니다. 문의 글을 작성하기 전에, Tor 포럼의 심의 지침을 검토해주세요. 게시글을 영어(English)로 작성해 주세요. 그래야 글을 쓰고 바로 답변을 받을 수 있습니다. 버그를 발견하셨다면, GitLab을 사용해 제보해주세요.

GitLab

우선, 제보할 버그가 이미 Gitlab에 제보된 상태인지 확인해보세요. 제보된 역대 이슈를 https://gitlab.torproject.org/에서 전부 찾아 열람할 수 있습니다. 새로운 문제를 보고하려면, Tor 프로젝트의 GitLab 인스턴스에 신규 계정을 요청하세요. 그 후 문제를 보고할 적합한 저장소를 찾으세요. Tor 프로젝트에선 Tor Browser issue tracker를 통해 보고된 Tor 브라우저를 모두 추적하고 있습니다. Tor 브라우저가 아닌 Tor 프로젝트 웹사이트 관련 문제를 보고한다면, Web issue tracker에 보고해야 합니다.

Telegram

If you need help installing or troubleshooting Tor Browser and the Tor Forum is blocked or censored where you are, you can reach out to us on Telegram https://t.me/TorProjectSupportBot. A Tor support specialist will assist you. At the moment, the Telegram support channel is available in two languages: English and Russian.

이메일

Send us an email to frontdesk@torproject.org

이메일의 제목(subject) 항에는 보고 및 제보할 사항을 적어주세요.. 제목 항에 보고 사항을 구체적으로 적어주신다면(예시: "연결 문제', '웹사이트 관련 피드백', 'Tor 브라우저 관련 피드백', '브리지가 필요해요'), Tor 프로젝트 측에서 이를 파악한 후 대응하기가 용이합니다. 제목을 달지 않은 이메일을 종종 받습니다. Tor 프로젝트는 그런 류의 메일을 스팸으로 간주하고 읽지 않습니다.

빠르게 답변받으실 수 있도록, 메일 등의 보고문을 영어, 스페인어, 포르투갈어로 작성해주세요. 세 언어 모두 익숙하지 않으시다면, 편하게 사용할 수 있는 언어로 작성해주세요. 다만 답변을 받는 데 좀 더 시간이 걸릴 수 있습니다. 보내주신 내용을 확인하려면 따로 번역해야 하거든요.

블로그 포스트 코멘트

관련 문제나 피드백할 내용을 다룬 블로그 포스트에 언제든 코멘트를 남겨주세요. 코멘트로 작성할 내용이 블로그 포스트와 관련이 없는 경우, 코멘트 말고 다른 수단으로 Tor 프로젝트에 연락해 주세요:

IRC

OFTC에 있는 #tor 채널에서 Tor 프로젝트 구성원을 만날 수 있습니다. 여기서 피드백을 주시거나 버그 및 문제를 보고할 수 있어요. 보내주신 메시지에 바로 답변하지 못할 수도 있습니다. 하지만 가능할 때 백로그를 확인한 후 답신을 드리겠습니다.

OFTC 서버에 연결하는 방법을 알아보세요.

이메일 목록

이메일 리스트를 사용해 버그나 피드백을 보고하려면, 보고할 내용과 관련된 디렉터리로 보내는 게 좋습니다. 여기에 Tor 프로젝트의 모든 메일링 리스트가 담겨있으므로, 이 중에서 찾아 보고해주세요.

Tor 브라우저, Tor 네트워크, 혹은 Tor에서 개발한 다른 프로젝트와 관련돼 보고할 문제나 피드백이 있을 경우: tor-talk

Tor 프로젝트 웹사이트에 관련돼 보고할 문제나 피드백이 있을 경우 ux

Tor 중계서버를 운영하는 데 있어 보고할 문제나 피드백이 있을 경우: tor-relays

Tor 브라우저 매뉴얼이나 지원 웹사이트에서 제공하는 콘텐츠에 관해 피드백이 있을 경우: tor-community-team

보안 문제를 보고하기

Tor 프로젝트에서 내놓은 애플리케이션이나 Tor의 기반 구조 상에 보안 문제를 발견하셨다면, tor-security@lists.torproject.org로 메일을 보내주세요. Tor나 Tor 브라우저에서 보안 버그를 발견하셨다면, 주저하지 마시고 버그 보상 프로그램로 제출해주세요. 메일을 암호화하려면 tor-security-sendkey@lists.torproject.org 또는 pool.sks-keyservers.net에서 목록에 대한 GPG 공개 키를 받으십시오. 지문은 다음과 같습니다.

  gpg --fingerprint tor-security@lists.torproject.org
  pub 4096R/1A7BF184 2017-03-13
  Key fingerprint = 8B90 4624 C5A2 8654 E453 9BC2 E135 A8B4 1A7B F184
  uid tor-security@lists.torproject.org
  uid tor-security@lists.torproject.org
  uid tor-security@lists.torproject.org
  sub 4096R/C00942E4 2017-03-13

Tor를 BitTorrent와 사용하는 것은 권장되지 않습니다. 해당 주제에 대한 블로그 포스트에서 더 자세히 알아보세요.

당신의 도움에 감사드립니다! 후원 관련 자주 묻는 질문에서 후원하는 방법에 대한 정보도 더 알아보실 수 있습니다.

안타깝게도 귀하의 시스템이 악성 소프트웨어에 감염됐습니다. 해당 악성 프로그램을 Tor 프로젝트에서 만든 건 아닙니다. 악성 프로그램 제작자는 감염된 귀하께 Tor 브라우저 설치를 요구할 겁니다. 추측건대 귀하에게 요구한 랜섬, 즉 몸값을 익명화된 상태에서 수령하기 위해서일 겁니다.

Tor 브라우저와의 첫 경험이 이딴 일로 성사됐다면, 귀하가 우리를 더 나쁜 놈들이 누빌 수 있는 환경을 조성한 나쁜 놈들이라 욕해도 받아들이겠습니다.

하지만 부디 이 점은 생각해주세요. Tor 프로젝트의 소프트웨어는 인권 운동가, 기자, 가정폭력 생존자, 내부고발자, 법 집행관 등 다양한 사람들에 의해 광범위한 용도로 매일매일 사용되고 있다는 것을요. 이와같은 사람들을 보호하는 기능을 제공하는 Tor 프로젝트의 소프트웨어를 악성 프로그램 개발자와 범죄자들이 남용하고 있음은 굉장히 유감입니다. Tor 프로젝트는 자사 소프트웨어를 악의적 용도로 사용하는 것을 지원하지 않으며, 이를 용납하지도 않습니다.

Tor에는 특정 유저의 신원을 파악할 수 있는 어떠한 로그도 저장되지 않습니다. Tor 프로젝트에서는 네트워크가 잘 작동되는 지 점검 차에도 안전한 방식을 사용합니다. Tor Metrics에서 그 방법을 더 알아보실 수 있습니다.

설사 귀하의 애플리케이션에서 올바른 SOCKS 프로토콜 변종을 쓰고 있다고 하더라도, DNS 쿼리가 거기서 유출되고 있을 리스크가 여전히 존재합니다. 이는 Firefox 확장 기능이 목적지의 IP 주소, 소속 국가 등의 정보를 사용자에게 전달하기 위해 목적지 호스트네임을 분해하려 할 때 발생하는 문제입니다. 사용하는 애플리케이션에서 이런 활동을 하는 것 같다고 의심된다면, 확인을 위해 하단의 설명을 따르세요.

  1. torrc 파일TestSocks 1 을 추가하세요.
  2. Tor를 시작한 후 애플리케이션의 SOCKS 프록시 설정을 Tor의 SOCKS5 서버(socks5://127.0.0.1:9050 by default) 설정에 맞추세요
  3. 애플리케이션을 사용하면서 로그를 주시하세요. 매 socks 연결마다 Tor는 안전한 연결일 경우 notice 로그를 남깁니다. 그리고 DNS 요청이 유출되고 있는 연결의 경우 warn 로그를 남깁니다.

DNS 요청이 유출되고 있는 연결 모두를 자동으로 비활성화하려면, torrc 파일에 SafeSocks 1을 추가하세요.

Tor 프로젝트에서 그러지 않는 이유는 다음과 같습니다:

  1. 정보 공개를 하지 않을 수가 없습니다. Tor 클라이언트는 경로 선정을 위해 해당 정보가 필요하기 때문입니다. 따라서 '차단자'가 원할 경우 정보를 어떻게든 취할 수 있는 거죠. 더욱이, 설사 Tor 프로젝트에서 클라이언트에 중계서버 리스트를 제공하지 않는다고 하더라도, 사이트를 테스트할 목적으로 다량의 연결을 Tor에서 시도하는 분들이 여전히 존재할 것이고, 그분들이 자체적으로 따로 리스트를 만들 수도 있을 것입니다.
  2. 사람들이 저희를 차단하길 원한다면, 원하는 대로 해드려야 한다고 생각합니다. 당연히 Tor 프로젝트 입장에선 모든 분들이 Tor 사용자의 연결을 허용해주셨으면 합니다. 그러나 그분들에겐 자신의 서비스에의 연결을 허용할지 말지 선택할 권리가 있습니다. 따라서 익명 사용자를 차단하길 원한다면, 그럴 수 있다고 봅니다.
  3. '차단가능성'이 있는 게 전략적인 이점이 있기도 합니다: Tor에 위협받는다 느끼는 웹사이트 유지보수자 입장에선 설득력있는 반응일 수 있거든요. 옵션을 주는 게 오히려 장려책이 될 수 있습니다. 시스템에서 비공개 접속을 차단하는 게 정말 좋은 결정일까 멈춰서 생각할 수 있도록 해주는 거죠. 차단만이 방책이 아니라 생각된다면 무슨 옵션이 있을까 살펴볼 수 있겠죠. Tor를 차단하는데 썼을 시간에, 프라이버시와 익명성에 취했던 전반적인 방법론을 다시 생각해볼 수 있게 되는 것입니다.

A few things everyone can do now:

  1. Please consider running a relay to help the Tor network grow.
  2. Tell your friends! Get them to run relays. Get them to run onion services. Get them to tell their friends.
  3. If you like Tor's goals, please take a moment to donate to support further Tor development. We're also looking for more sponsors - if you know any companies, NGOs, agencies, or other organizations that want anonymity / privacy / communications security, let them know about us.
  4. We're looking for more good examples of Tor users and Tor use cases. If you use Tor for a scenario or purpose not yet described on that page, and you're comfortable sharing it with us, we'd love to hear from you.

Documentation

  1. Help localize the documentation into other languages. See becoming a Tor translator if you want to help out. We especially need Arabic or Farsi translations, for the many Tor users in censored areas.

Advocacy

  1. The Tor community uses the Tor Forum, IRC/Matrix, and public mailing lists.
  2. Create a presentation that can be used for various user group meetings around the world.
  3. Create a poster around a theme, such as "Tor for Human Rights!".
  4. Spread the word about Tor at a symposium or conference and use these Tor brochures as conversation starter.

아닙니다. Tor 프로젝트는 호스팅 서비스를 제공하지 않습니다.

Tor는 타인에 의한 검열로부터 인권과 프라이버시를 지키기 위해 설계됐습니다. 검열의 당사자가 Tor일지라도요. Tor로 끔찍한 짓을 저지르는 자들의 작태는 심히 유감입니다. 그러나 그들을 없애려고 Tor를 막을 수는 없습니다. Tor를 좋은 용도로 사용하는 인권운동가, 저널리스트, 학대 피해자와 같은 분들의 지지 기반을 악화시키는 게 필연적으로 동반되기 때문입니다. Tor를 사용하는 특정인을 짚어 막는 다는 건 곧 Tor 프로젝트에서 소프트웨어에 백도어를 넣지 않는 이상 근본적으로 불가능합니다. 백도어를 넣을 경우 사용자가 발생하는 취약성에 노출돼, 독재 정권 당국이나 다른 적들에의 공격에 노출될 수 있습니다.

소개 문서 보도자료 채용 블로그 뉴스레터 문의 후원하기 지원 커뮤니티 자주 묻는 질문 Tor 개요 Tor 브라우저 Tor 메신저 모바일용 Tor GetTor Tor에 연결하기 검열 HTTPS 운영자 Onion 서비스 Debian 저장소(Debian Repository) RPM 저장소(RPM Repository) 대안으로서의 설계 및 방법론 little-t-tor 기타 범죄 관련 자주 묻는 질문 문의사항을 보내세요

문의사항을 보내세요

Tor 커뮤니티에선 그동안 쭉 OFTC라 부르는 IRC 네트워크를 사용해 수많은 활동을 나날이 추진해 왔습니다. IRC는 Tor 커뮤니티에서 꽤 잘 작동돼 왔습니다. 그러다가 IRC 내 저희 커뮤니티가 시간이 흘러감에 따라 성숙해지고, 여러 채널에서 가입하는 신규 인원까지 유입됐는데, 그분들 사이에서 특별한 요구사항이 새로 제시됐습니다.

매트릭스 브리지

Tor 커뮤니티에서 저희 IRC 커뮤니티와 Matrix 네트워크을 중계하는 실시간 대화방을 개설했습니다. 즉 일반적인 Tor 사용자가 Element와 같은 친숙한 앱으로 Tor 프로젝트 팀과 채팅할 수 있도록 Tor 커뮤니티가 중계하고 있다는 겁니다. #tor:matrix.org 방이나 #tor IRC channel 이 활성화돼있습니다: 둘 중 어떤 플랫폼을 골라도, 저희 팀에선 두 플랫폼 모두에서 귀하의 메시지를 확인할 수 있습니다.

Matrix 내 'Tor 기여자'가 있는 대화방에 참여하려면, Matrix 계정이 필요합니다. 계정을 생성하는 경로가 여러 개 있습니다. 계정 생성 경로 중 하나는 Matrix.org 재단을 거치는 겁니다. Matrix.org 재단에서 무료로 계정을 등록할 수 있습니다. app.element.io에서도 계정을 등록할 수 있습니다.

Matrix 계정을 생성한 후, Tor Matrix Space에 참여 해 Tor 대화방을 둘러볼 수 있습니다. 혹은 #tor:matrix.org 사용자 지원 대화방에 바로 입장할 수도 있습니다.

OFTC IRC 네트워크

위 방식 외에 IRC를 쓰길 원한다면, OFTC의 웹 IRC 클라이언트를 사용할 수 있습니다:

  1. OFTC webchat을 여세요.

  2. 빈칸을 채우세요:

    NICKNAME: 어떤 닉네임이든 상관 없습니다만, Tor 구성원과 대화할 때 처음 사용한 닉네임을 쭉 사용하세요. 이미 다른 사람이 사용 중인 닉네임이라면, 시스템에서 메시지를 송출합니다. 이때 다른 닉네임을 골라야 합니다.

    CHANNEL: #tor

  3. Enter를 클릭하세요

짜잔! 이제 IRC, 즉 인터넷 채팅이 가능합니다.

몇 초 후, #tor에 자동으로 입장됩니다. 해당 채팅방에는 Tor 개발자, 중계서버 운영자, Tor 커뮤니티 구성원이 있습니다. #tor 채널이 궁금해서 들어오신 분들도 있답니다.

화면 최하단에 있는 빈칸 바에 내용을 적어 물어볼 수 있습니다. "질문해도 되나요?"라는 채팅을 적기 보다는, 그냥 바로 물어보세요.

채팅방 사람들이 바로 답변할 수도 있지만, (채팅방 인원 목록에 있는 사람들이 항상 상주해 있는 것이 아니고, 채팅방 이력을 기록해두었다가 나중에 읽을 수도 있기에) 답변 시간이 지연될 수도 있습니다.

대화방 내 특정 인물하고만 대화하려면, 메시지 문두에 대상의 닉네임을 적으세요. 그러면 그 분에게 대화하고자 하는 사람이 있다는 알림이 보통 수신됩니다.

OFTC는 일반적으로 Tor를 통한 웹 채팅 사용을 일반적으로 허용하지 않습니다. 이런 이유 뿐 아니라 많은 사람들이 어쨌든 OFTC 사용을 선호하기 때문에, OFTC 사용을 원하신다면 IRC 클라이언트의 사용도 고려하셔야 합니다.

tor-project 채널에서 Tor 구성원들이 모여 얘기를 나누고 일일 Tor 작업을 분담해 처리하고 있습니다. #tor 대비 인원 수가 적은 만큼, 업무 처리에 좀 더 집중할 수 있답니다. 이 채널에 참여하시는 것도 얼마든지 환영이에요. #tor-project에 참여하려면, 닉네임(nick)을 반드시 해당 채널에 등록 후 검증받아야 합니다.

tor-project 및 기타 Tor 공식 채널에 연락하는 방법은 다음과 같습니다.

닉네임 정하기

  1. Tor 프로젝트 팀과 직접 대화할 방법이 있을까요?에 기재된 방법에 따라 #tor에 접속하세요.

  2. 그러고 나서, 화면 최상단 좌측에 있는 '상태'라고 표시된 글자를 누르세요.

  3. 페이지 최 하단의 창에 다음을 입력하세요: /msg nickserv REGISTER yournewpassword youremailaddress

  4. '엔터'를 누르세요

지금까지의 과정이 다 잘 진행됐다면, 등록됐다는 메시지가 뜰 겁니다.

이제 시스템에서 nick 대신 nick_으로 귀하의 계정이 등록됩니다.

이럴 경우 그냥 감수할 수밖에 없습니다만, 이때 귀하는 사용자이면서 사용자가 아닌 상태임을 기억하세요.

IRC에 로그인 할 때마다 등록된 닉네임(nick)을 확인하도록 설정하려면, 다음을 입력하세요.

/nick yournick

/msg nickserv IDENTIFY YourPassWord

닉네임을 검증하는 방법

닉네임을 등록한 후, #tor-project와 비공개 채널(protected channel)에의 접근권을 얻기 위해 닉네임의 검증(verified) 절차를 거쳐야 합니다.

  1. https://services.oftc.net/로 이동하세요. 그 후 'To verify your account' 섹션에 제시된 절차를 따르세요

  2. 로그인 했던 당시의 IRC 웹페이지로 돌아간 후 다음을 입력하세요:

    /msg nickserv checkverify

  3. ENTER를 클릭하세요

  4. 지금까지 문제 없이 잘 됐다면, 다음과 같은 메시지를 받을 겁니다:

*!NickServ*checkverify

Usermodechange: +R

!NickServ- Successfully set +R on your nick.
`

닉네임이 검증됐습니다!

이제 다음을 입력해 #tor-project에 참여할 수 있습니다:

/join #tor-project and hit enter.

이제 채널에의 입장이 허용됩니다. 축하드려요!

하지만, 채팅방 입장이 불허된 채 머무르고 있다면, #tor 채널에 도움을 구하세요.

IRC 창 최상단 왼 쪽에 있는 다른 채널 명을 클릭해 채널을 왔다갔다 할 수 있습니다.

Tor는 전 세계 사용자와 자원봉사자의 지원을 받아 당사의 소프트웨어 및 리소스를 개선할 수 있도록 지원하므로 귀하의 피드백은 당사와 모든 Tor 사용자에게 매우 소중합니다.

피드백 서식

피드백을 보내거나 버그를 보고하려면, 가능한 상세하게 적어서 보내주세요.

  • 사용하는 운영체제
  • Tor 브라우저 버전
  • Tor 브라우저 보안 레벨
  • Tor 프로젝트 측에서 재현할 수 있도록, 문제가 발생하기까지의 단계를 적어주세요. (예시: 브라우저를 열고 → url을 입력하고 → (i) 아이콘을 입력했더니 → 브라우저가 갑자기 꺼집니다)
  • 발생한 문제 상황을 찍은 스크린샷
  • 로그

Tor 프로젝트에 연락하는 방법

여러 경로로 Tor 프로젝트에 연락할 수 있습니다. 그 중 편한 방법을 사용하세요.

Tor 포럼

문제가 발생했을 때 Tor 포럼에서 도움을 구하는 것도 권장됩니다. 포럼에 새로운 주제(topic)을 제출하기 위해선 계정을 생성해야 합니다. 문의 글을 작성하기 전에, Tor 포럼의 심의 지침을 검토해주세요. 게시글을 영어(English)로 작성해 주세요. 그래야 글을 쓰고 바로 답변을 받을 수 있습니다. 버그를 발견하셨다면, GitLab을 사용해 제보해주세요.

GitLab

우선, 제보할 버그가 이미 Gitlab에 제보된 상태인지 확인해보세요. 제보된 역대 이슈를 https://gitlab.torproject.org/에서 전부 찾아 열람할 수 있습니다. 새로운 문제를 보고하려면, Tor 프로젝트의 GitLab 인스턴스에 신규 계정을 요청하세요. 그 후 문제를 보고할 적합한 저장소를 찾으세요. Tor 프로젝트에선 Tor Browser issue tracker를 통해 보고된 Tor 브라우저를 모두 추적하고 있습니다. Tor 브라우저가 아닌 Tor 프로젝트 웹사이트 관련 문제를 보고한다면, Web issue tracker에 보고해야 합니다.

Telegram

If you need help installing or troubleshooting Tor Browser and the Tor Forum is blocked or censored where you are, you can reach out to us on Telegram https://t.me/TorProjectSupportBot. A Tor support specialist will assist you. At the moment, the Telegram support channel is available in two languages: English and Russian.

이메일

Send us an email to frontdesk@torproject.org

이메일의 제목(subject) 항에는 보고 및 제보할 사항을 적어주세요.. 제목 항에 보고 사항을 구체적으로 적어주신다면(예시: "연결 문제', '웹사이트 관련 피드백', 'Tor 브라우저 관련 피드백', '브리지가 필요해요'), Tor 프로젝트 측에서 이를 파악한 후 대응하기가 용이합니다. 제목을 달지 않은 이메일을 종종 받습니다. Tor 프로젝트는 그런 류의 메일을 스팸으로 간주하고 읽지 않습니다.

빠르게 답변받으실 수 있도록, 메일 등의 보고문을 영어, 스페인어, 포르투갈어로 작성해주세요. 세 언어 모두 익숙하지 않으시다면, 편하게 사용할 수 있는 언어로 작성해주세요. 다만 답변을 받는 데 좀 더 시간이 걸릴 수 있습니다. 보내주신 내용을 확인하려면 따로 번역해야 하거든요.

블로그 포스트 코멘트

관련 문제나 피드백할 내용을 다룬 블로그 포스트에 언제든 코멘트를 남겨주세요. 코멘트로 작성할 내용이 블로그 포스트와 관련이 없는 경우, 코멘트 말고 다른 수단으로 Tor 프로젝트에 연락해 주세요:

IRC

OFTC에 있는 #tor 채널에서 Tor 프로젝트 구성원을 만날 수 있습니다. 여기서 피드백을 주시거나 버그 및 문제를 보고할 수 있어요. 보내주신 메시지에 바로 답변하지 못할 수도 있습니다. 하지만 가능할 때 백로그를 확인한 후 답신을 드리겠습니다.

OFTC 서버에 연결하는 방법을 알아보세요.

이메일 목록

이메일 리스트를 사용해 버그나 피드백을 보고하려면, 보고할 내용과 관련된 디렉터리로 보내는 게 좋습니다. 여기에 Tor 프로젝트의 모든 메일링 리스트가 담겨있으므로, 이 중에서 찾아 보고해주세요.

Tor 브라우저, Tor 네트워크, 혹은 Tor에서 개발한 다른 프로젝트와 관련돼 보고할 문제나 피드백이 있을 경우: tor-talk

Tor 프로젝트 웹사이트에 관련돼 보고할 문제나 피드백이 있을 경우 ux

Tor 중계서버를 운영하는 데 있어 보고할 문제나 피드백이 있을 경우: tor-relays

Tor 브라우저 매뉴얼이나 지원 웹사이트에서 제공하는 콘텐츠에 관해 피드백이 있을 경우: tor-community-team

보안 문제를 보고하기

Tor 프로젝트에서 내놓은 애플리케이션이나 Tor의 기반 구조 상에 보안 문제를 발견하셨다면, tor-security@lists.torproject.org로 메일을 보내주세요. Tor나 Tor 브라우저에서 보안 버그를 발견하셨다면, 주저하지 마시고 버그 보상 프로그램로 제출해주세요. 메일을 암호화하려면 tor-security-sendkey@lists.torproject.org 또는 pool.sks-keyservers.net에서 목록에 대한 GPG 공개 키를 받으십시오. 지문은 다음과 같습니다.

  gpg --fingerprint tor-security@lists.torproject.org
  pub 4096R/1A7BF184 2017-03-13
  Key fingerprint = 8B90 4624 C5A2 8654 E453 9BC2 E135 A8B4 1A7B F184
  uid tor-security@lists.torproject.org
  uid tor-security@lists.torproject.org
  uid tor-security@lists.torproject.org
  sub 4096R/C00942E4 2017-03-13

Debian 저장소(Debian Repository)

절대 안 됩니다. Ubuntu 세계에 있는 패키지를 받아 쓰지 마세요. Ubuntu 저장소에 있는 Tor가 안정적으로 업데이트되지 않은 전력이 있습니다. 즉 안정성 및 보안 패치가 적용된 최신 릴리스를 놓칠 수 있단 뜻입니다. Ubuntu 저장소에서 받지 마시고, Tor Debian 저장소에서 받아 설치하세요.

네 가능합니다. deb.torproject.org는 onion 서비스로도 제공되고 있습니다: http://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/

참고: # 기호가 달린 행은 루트 권한을 받아 실행되는 코드입니다. 다시 말해, 사용자 계정에 시스템 관리자 권한(system administration privileges)을 부여해 접속해야 한다는 겁니다. 예시) 'sudo 그룹'에 계정이 추가돼 있어야 합니다.

Tor에 Apt를 사용하려면, apt transport를 먼저 설치해야 합니다:

   # apt install apt-transport-tor

설치 후 다음 항목을 /etc/apt/sources.list에 추가하거나, 새로운 파일을 /ect/apt/sources.list.d/에 추가하세요:

   # 안정 버전(stable version)을 사용하는 경우
   deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org <DISTRIBUTION> main

   # 안정 버전(stable version)을 사용하지 않는 경우
   deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] tor://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org tor-nightly-main-<DISTRIBUTION> main

<DISTRIBUTION> 항목을 사용 중인 운영 체제의 코드명으로 변경하세요. 운영 체제 버전을 확인하려면, lsb_release -ccat /etc/debian_version 을 입력해 실행하세요.

Add the gpg key used to sign the packages by running the following command at your command prompt:

   # wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

Install tor and tor debian keyring

Now refresh your sources and try to install tor and tor debian keyring:

   # apt update
   # apt install tor deb.torproject.org-keyring

Tor 프로젝트는 Debian 패키지 저장소을 개설해 관리하고 있습니다. Debian에서는 Tor의 LTS 버전을 제공하는 상황이라 사용자가 최신 버전의 Tor를 받을 수 없을 수 있기 때문입니다.따라서 tor를 Tor 프로젝트의 저장소에서 받는 걸 권합니다.

Tor 패키지 저장소에서 Debain 기반 배포판을 활성화하려면 다음과 같이 진행하세요:

참고: # 기호가 달린 행은 루트 권한을 받아 실행되는 코드입니다. 다시 말해, 사용자 계정에 시스템 관리자 권한(system administration privileges)을 부여해 접속해야 한다는 겁니다. 예시) 'sudo 그룹'에 계정이 추가돼 있어야 합니다.

전제 조건: CPU 아키텍처가 조건에 부합하는지 확인하기

The package repository offers amd64, arm64, and i386 binaries. Verify your operating system is capable of running the binary by inspecting the output of the following command:

  # dpkg --print-architecture

amd64, arm64, 혹은 i386중에 하나가 출력돼야 합니다. 그 외의 CPU 아키텍처는 저장소에서 제공되는 바이너리에 호환되지 않습니다.

Note: The package repository does not offer 32-bit ARM architecture (armhf) images (yet). You should either install the version Debian offers (make sure to check out Debian backports, too, as that one has often a more up-to-date Tor package), or build Tor from source.

1. apt-transport-https를 설치하세요

libapt-pkg 라이브러리를 사용해 모든 패키지 관리자(package managers)를 활성화 합니다. libapt-pkg를 통해 '하이퍼텍스트 보안 전송 프로토콜'(HyperText Transfer Protocol Secure, HTTPS)을 거쳐 소스에서 사용 가능한 모든 메타데이터와 패키지에 접근(access)할 수 있습니다.

   # apt install apt-transport-https

2. /etc/apt/sources.list.d/ 경로에 새 파일을 생성하고 tor.lst라 명명하세요. 다음 항목을 입력하세요:

   deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main

If you want to try experimental packages, add these in addition to the lines from above:

   deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org tor-experimental-<DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org tor-experimental-<DISTRIBUTION> main

Nightly 빌드를 사용하려면 하단의 행을 덧붙이세요:

   deb     [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org tor-nightly-main-<DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org tor-nightly-main-<DISTRIBUTION> main

<DISTRIBUTION> 항목을 사용 중인 운영 체제의 코드명으로 변경하세요. 운영 체제 버전을 확인하려면, lsb_release -ccat /etc/debian_version 을 입력해 실행하세요.

주의: Ubuntu Focal 버전부터 32비트 호환성이 제거됩니다. 따라서 다음 명령 행을 덧붙이세요:

   deb     [arch=<ARCHITECTURE> signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org focal main
   deb-src [arch=<ARCHITECTURE> signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org focal main

<ARCHITECTURE> 부분에 사용하는 운영체제 아키텍처를 쓰세요 (이전 단계에서 dpkg --print-architecture 명령을 통해 확인하셨을 거에요).

sudo apt update 중 다음과 같이 경고 메시지가 뜹니다:

   Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://deb.torproject.org/torproject.org focal InRelease' doesn't support architecture 'i386'

3. 그런 후에 패키지 서명을 위해 gpg 키를 추가합니다. 명령 프롬프트에 다음 명령을 실행하세요:

   # wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null

4. tor와 tor debian keyring을 설치하세요

Tor프로젝트에선 Debian 패키지를 제공해 Tor의 서명 키를 최신으로 유지할 수 있도록 지원하고 있습니다. Debian 패키지를 사용해 설치하시려면 다음의 절차를 따르세요:

   # apt update
   # apt install tor deb.torproject.org-keyring

Tor rpm 패키지

CentOS, RHEL, Fedora를 대상으로 Tor 프로젝트 자체적으로 유지보수중인 RPM 패키지 저장소에서 받아 설치하실 수 있습니다.

참고: # 기호가 달린 행은 루트 권한을 받아 실행되는 코드입니다. 다시 말해, 사용자 계정에 시스템 관리자 권한(system administration privileges)을 부여해 접속해야 한다는 겁니다. 예시) 'sudo 그룹'에 계정이 추가돼 있어야 합니다.

CentOS, RHEL, Fedora에서 Tor 패키지 저장소를 활성화하려면 다음과 같이 진행하세요:

1. (CentOS, RHEL 한정) epel 저장소를 활성화합니다

‪# dnf install epel-release -y

2. /etc/yum.repos.d/tor.repo 경로에 다음을 추가하세요

CentOS나 RHEL일 경우:

[tor]
name=Tor for Enterprise Linux $releasever - $basearch
baseurl=https://rpm.torproject.org/centos/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://rpm.torproject.org/centos/public_gpg.key
cost=100

Fedora일 경우:

[tor]
name=Tor for Fedora $releasever - $basearch
baseurl=https://rpm.torproject.org/fedora/$releasever/$basearch
enabled=1
gpgcheck=1
gpgkey=https://rpm.torproject.org/fedora/public_gpg.key
cost=100

3. Tor 패키지를 설치하세요

이제 최신 Tor 패키지가 설치됩니다.

‪# dnf install tor -y

처음으로 실행하는 거라면, GPG 공개 키를 가져와야(import) 합니다.

Importing GPG key 0x3621CD35:
Userid     : "Kushal Das (RPM Signing key) <kushal@torproject.org>"
Fingerprint: 999E C8E3 14BC 8D46 022D 6C7D E217 C30C 3621 CD35
From       : https://rpm.torproject.org/fedora/public_gpg.key
Is this ok [y/N]: y

범죄 관련 자주 묻는 질문

아주 좋아요. Tor 프로젝트에서 '출구 정책'을 시행하는 이유가 여기에 있습니다.

Tor 중계서버 각각에는 출구 정책이 적용됩니다. 출구 정책이란 주어진 중계서버에서 어떤 아웃바운드 트래픽(outbound connections)을 허용하고 거부할지 규정하는 정책을 말합니다. '출구 정책'은 저장소를 통해 Tor 클라이언트에게 전달됩니다. 따라서 클라이언트는 원 목적지로의 전송을 거부하는 출구 중계서버를 고르는 걸 자동으로 피할 수 있습니다. 이런 방식으로 각 중계서버는 연결하고자 하는 서비스, 호스트, 네트워크를 선택할 수 있습니다. 이때 남용 가능성과 각 중계서버의 상황이 고려됩니다. '출구 정책'을 초기 설정대로 사용하고 있을 경우 진입 노드에서 발생한 문제 해결 지원 를 참고하세요. 그리고 Mike Perry가 작성한 성가신 문제에 최대한 얽히지 않으면서 출구 노드를 운영하는 방법 문서도 읽어보세요.

초기 설정 상 '출구 정책'은 (웹 브라우징과 같은) 대중적인 서비스로의 연결을 허용하는 한편, (메일과 같이) 남용 가능성이 있는 몇몇 서비스를 제한합니다. 또한 (Tor 기본 파일 공유 포트와 같이) Tor가 감당할 수 없는 부하량이 오가는 서비스 또한 제한됩니다. torrc 파일을 수정해서 출구 정책을 변경할 수 있습니다. 남용될 가능성이 있는 서비스 대다수를 피하고자 한다면, torrc 파일 내 설정을 "reject *:*"로 변경하세요. 해당 설정으로 변경 시 귀하의 중계서버는 Tor 네트워크 내 트래픽을 중계하는 데 사용되지만, 외부 웹사이트나 다른 서비스를 연결하는 데에는 사용되지 않게 됩니다.

출구 연결을 허용할 때에는 '이름 분석'이 유효한지 확인하세요(즉 귀하의 컴퓨터에서 인터넷 주소를 올바르게 분해했는지를 확인하세요). (모든 트래픽을 차단하는 방화벽이나 콘텐츠 필터 등에 의해) 주어진 자원이 컴퓨터에 전송될 수 없는 경우, '출구 정책'에서 해당 자원을 단호히 거부하세요. 그러지 않으면 Tor 사용자에게도 영향이 갑니다.

범죄자는 굳이 Tor 없이도 범죄를 저지를 수 있습니다. 범죄자는 법을 어기고자 하므로, Tor보다 더 은밀하게 탐색할 수 있는 수많은 선택지를 이미 갖고 있습니다. 휴대폰을 훔쳐서 사용하고, 다 쓴 후에 도랑에 던져버리면 그만이니까요; 한국이나 브라질의 컴퓨터에 침입해서, 범죄적 활동에 쓰는 프로그램을 실행하는데 이를 사용할 수도 있습니다; 스파이웨어, 바이러스 등의 기법을 사용해 Windows 운영체제를 사용하는 말그대로 전세계의 수백만의 기기를 장악할 수도 있습니다.

Tor는 법을 준수하는 평범한 분들께 보호 수단을 제공하는 걸 목표로 합니다 대중이 아닌 범죄자들이 되려 은밀하게 인터넷을 돌아다닐 수 있는 이 상황을 우리는 바로잡아야 할 것입니다.

익명성을 주창하는 일부 집단에선 이러한 현상이 그저 익명성의 '상호보완적 관계'라고 설명합니다. 악의적인사용례가 있으면 선한 사용례가 있다는 겁니다. 하지만 그 이상의 이유가 있습니다. 범죄자 같은 악인은 익명성을 확보하는 좋은 방법을 알아내려는 동기가 충분합니다. 익명성의 확보를 위해서 돈을 낼 동기도 많이들 갖고 있고요. 익명성 확보를 쉽게 달성하기 위해 무고한 피해자의 신원을 훔쳐 재사용(신원 탈취)하기까지 합니다. 반면 보통 사람들은 온라인 상에서 어떻게 자신의 개인 정보를 보호할지 그 방법을 알아내는 데 쓸 시간적 여유도 없고, 재정적 여유도 없습니다. 어떤 말을 해도 부족할 정도로 최악이지 않습니까?

결국 답변은 '네'가 되겠습니다. 범죄자가 Tor를 사용할 수 있죠. 그러나 그들은 더 좋은 옵션을 이미 갖고 있습니다. 또한 범죄자가 Tor를 쓸 수 있단 이유로 이를 전세계에서 치워버린다고 해서, 그들이 나쁜 짓을 그만둘 거 같지도 않습니다. 동시에, Tor와 다른 개인 정보 보호 수단이 신원 탈취, 스토킹 등의 물리적 범죄에 대항할 수 있단 점을 고려해야 합니다.

분산 서비스 거부 공격(Distributed Denial of Service Attacks, DDoS)은 일반적으로 수천대의 컴퓨터가 조직적으로 한꺼번에 트래픽을 피해 대상(victim)에 전송하는 방식을 사용합니다. 피해 대상(victim)의 대역폭을 압도할 정도로 트래픽을 보내는 게 목표인 관계로, 공격자는 보통 핸드셰이크나 조정이 필요없는 UDP 패킷을 전송합니다.

하지만 Tor는 모든 IP 패킷을 보내지 않고, 그 중에서 올바른 구조의 TCP 스트림만 전송합니다. 이런 이유로 Tor를 거쳐 UDP 패킷을 보낼 수 없습니다. (SYN 플러딩과 같은 특수 형태의 DDoS 공격 역시 Tor에선 불가능합니다) 따라서 일반적인 DDoS 공격을 Tor를 거쳐 수행하는 건 불가능합니다. Tor는 또한 외부 사이트에 대한 대역폭 증폭 공격도 허용하지 않습니다: Tor 네트워크에서 목적지까지 의도대로 트래픽을 보내려면, 바이트 하나하나를 따로 보내야만 합니다. 따라서, DDoS 공격에 유효할 정도의 대역폭을 관장하는 공격자라면 일반적으로 굳이 Tor가 없이도 잘만 합니다.

우선, Tor 출구 정책에 따라 포트 25 (SMTP)을 통과하는 트래픽을 모두 차단하는 게 기본으로 설정돼있습니다. 따라서 기본적으로 스팸 메일이 Tor를 거쳐 전송되는 일 자체가 불가능합니다. 일부 중계서버 운영자가 포트 25를 자기 소관의 출구 노드에 활성화할 가능성이 있긴 합니다. 즉 컴퓨터가 발신 메일을 받아들이게 되는 사례가 발생하게 됩니다. 하지만 개인 차원에서 Tor와 별도로 '오픈 메일 중계서버'를 설정하면 그만입니다. 간단히 말해, Tor는 스팸 메일 전송 경로로 유용하지 않습니다. 거의 모든 Tor 중게서버가 메일을 전송하는 거 자체를 거부하기 때문입니다.

물론, 스패머들의 활동은 메일의 전송에 국한되지 않는 게 사실입니다. 스패머들은 Tor를 이용해 개방 HTTP 프록시에 연결합니다 (그리고 연결 후 SMTP 서버로 이동합니다). 악성 메일 발신 CGI 스크립트에 연결하고 자신의 봇넷을 관리해야 하기 때문입니다. 즉 스팸 메시지를 보내도록 명령된 감염된 여러 컴퓨터와 통신하기 위함이죠.

이러한 스패머들의 행태에 유감을 표합니다. 하지만 이들은 Tor 없이도 이미 일을 잘 저지르고 있는 상황임을 알아주셨으면 합니다. 또한 스패머의 교묘한 통신 메커니즘(가령 스푸핑된 UDP 패킷) 다수는 Tor 상에서 사용될 수 없음도 알아주세요. Tor는 정상적인 방식으로 생성된 TCP 연결만을 전송하기 때문입니다.

대국적으로 볼 땐 그리 심하지 않습니다. Tor 네트워크가 운영되기 시작한 2003년 이래 고소에 엮인 적이 손에 꼽습니다. 물론 넷 상에서 프라이버시를 중시하는 네트워크 모두가 그러하듯, 악의적 목적으로 사용하려는 사람들도 많이 유입되는 것이 사실입니다. Tor의 출구 전략은 '네트워크에의 자발적 자원 후원' 역할을 '출구 중계서버가 받는 악용 혐의 고소'에서 분리시키는 겁니다. 그럼으로써 Tor 네트워크가 지난 익명 네트워크보다 더 지속적으로 서비스 되길 희망합니다.

Tor를 선한 목적에서 쓰는 경우 역시 많기에, 저희는 현재 균형을 잘 맞춰 서비스하고 있다 느낍니다.

귀하가 Tor 중계서버를 운영하면서 (기본 출구 정책 대로) 출구 연결을 허용한다면, 싫은 소리를 꼭 한번 즈음은 들을 것이라 해도 과언이 아닙니다. 남용 문제에 대한 항의가 다양한 형태로 올 수 있습니다. 예를 들어:

  • 누군가가 Hotmail에 접속해 랜섬 메일을 회사에 전송했습니다. FBI가 귀하께 공문(polite mail)을 보낼 것입니다. Tor 중계서버를 운영했다고 해명하면, FBI 당국은 "아 그렇군요" 하면서 갈 겁니다. [포트 80]
  • 누군가가 Tor를 사용해 Google 그룹에 접속하고, Usernet에 스팸 메일을 보낸 후, 귀하측 현지 ISP에 귀하가 이렇게 깽판을 치고 있다고 항의 메일을 보내서 귀하의 중계서버를 정지시키려 합니다. [포트 80]
  • 누군가가 IRC 네트워크에 접속한 후 민폐를 저지릅니다. 현지 ISP에서는 귀하의 컴퓨터 네트워크에서 도덕적으로 불미스런 일이 일어나고 있다는 공문을 받을 겁니다. (DDoS 공격을 해당 컴퓨터에서 받고 있다는 내용도 추가될 수 있습니다.) [포트 6667
  • Somebody uses Tor to download a Vin Diesel의 영화를 Tor를 통해 다운로드 받았습니다. 이로인해 현지 ISP에서 DMCA takedown 통지를 받았습니다. EFF에서 제작한Tor DMCA Response Template에서 왜 해당 사안의 책임 소재에 ISP가 끼지 않고, 이들이 해당 통지를 무시할 수 있는지 설명돼있습니다. [임의의 포트(arbitrary port)]

몇몇 호스팅 서비스는 다른 서비스 대비 Tor 출구 중계서버에 관대한 편입니다. good and bad ISPs wiki 문서에 제시된 목록을 확인해 보세요.

'남용 문제'에 대한 여러 유형의 항의에 모두 대응할 수 있도록, collection of templates 문서에 템플릿을 올려두었습니다. 성가신 문제에 최대한 얽히지 않으면서 출구 노드를 운영하는 방법'완화된 출구 정책'(Reduced Exit Policy) 운영하기에 제시된 사항을 숙지하고 이를 준수한다면, 남용 문제에 얽히는 일을 선제적으로 줄일 수 있습니다.

귀하가 운영하는 Tor 중계서버의 IP가 접속하려는 인터넷 사이트나 인터넷 서비스에서 차단된 걸 발견하실 수도 있습니다. 이는 출구 정책의 적용 유무를 가리지 않고 일어날 수 있는 일입니다. 해당 인터넷 서비스나 사이트에선 Tor에 출구 정책이 있는지 모르고, 상관하지도 않을 가능성이 크기 때문입니다. (다른 활동에 사용하지 않은 여분의 IP가 있을 경우, 해당 IP로 중계서버를 운영해 보는 것으로 갈음할 수도 있습니다.) 정리하자면, 가정 내 인터넷 환경을 Tor 중계서버 돌리는 데 쓰지 않는 게 바람직합니다.

몇몇 멍청한 것들이 Tor를 이용해 IRC 채널에 트롤 짓, 즉 적대 유발 행위를 벌이는 경우가 가끔 있습니다. 이러한 남용 행위로 인해 IP 특정 임시 밴 (IRC에서는 'klines'라고 속되게 부릅니다) 이 이루어집니다. 네트워크 관리자가 트롤 행위를 하는 것들을 자신의 네트워크에서 쫓아내기 위함입니다.

위와 같은 관리자의 대응에서 IRC의 보안 모델이 가진 근본적 결함이 확실하게 드러납니다: IRC 보안 모델에선 IP 주소가 '한 사람'에 대응된다고 상정합니다. 따라서 IP 주소를 밴 하면 그 사람도 밴 할 수 있다고 보는 거죠. 실제론 그렇지 않습니다. 위 사례와 같은 많은 훼방꾼들은 문자 그대로 수백만 개에 달하는 오픈 프록시를 활용하며, 보안이 취약한 인터넷 상의 컴퓨터도 그들의 트롤 짓에 활용됩니다. IRC 네트워크는 이러한 모든 노드를 차단하려 한다는 점에서, 지는 싸움을 하고 있는 거죠. 그러던 중 트롤 짓에 대응하기 위한 블랙리스트 산업이 비록 규모는 작지만 이 결함있는 보안 모델에 기반해 혜성처럼 등장했습니다(안티바이러스 업계의 등장 배경과 아주 다르진 않습니다). Tor 네트워크는 여기 블랙리스트에 들어있을 뿐입니다.

한편 IRC 서버 관리자 관점에서 볼 때, 보안은 양자택일의 대상이 아닙니다. 트롤러나 다른 집단 공격에 빠르게 대응해야, 공격자의 시나리오대로 흘러가지 않을 수 있기 때문입니다. 그리고 주어진 시간에 IRC 네트워크에서 개별 IP 주소 대다수는 웬만하면 각 개인과 대응됩니다. 특례로 접속이 할당된 NAT 게이트도 예외로 포함됩니다. 오픈 프록시 사용을 막고자 하는 게 헛된 노력임에도 불구하고, 트롤링하는 IRC 유저 하나를 밴 해두면 이윽고 해당 유저가 지쳐 떠날 수 있으므로 아예 효과가 없다고 볼 수는 없습니다.

하지만 실제 답은 옳은 행동을 하는 사용자를 받아들이고, 나쁜 짓을 하는 사용자를 내보낼 수 있도록 애플리케이션 레벨의 권한 체계를 실행시키는 겁니다. 패킷을 통해 전송된 속성이 아닌, 인적 속성을 기반으로 해야 합니다 (가령 특정 경로로 흭득한 사용자의 패스워드)

분명 모든 IRC 네트워크가 Tor 노드를 차단하려 하진 않습니다. 어찌됐든 간에, 상당수의 사람들이 현실 세계의 신원을 밝히지 않으면서도 올바르게 사람들과 소통하기 위해 Tor로 IRC에 참여하고 있다는 것은 사실입니다. 각 IRC 네트워크는 수많은 IP 중에서 악성 사용자가 사용할 법한 IP를 더 차단할 것이냐, 얌전히 활동하는 Tor 사용자의 기여분을 잃을 것이냐를 두고 기회비용을 계산해 결정해야 합니다.

귀하가 차단됐다면, 네트워크 운영자에게 문의해 상황을 설명하세요. 운영자가 Tor라는 거 자체를 전혀 모를 수도 있습니다. 또는 밴한(klining) 호스트네임이 Tor 출구 노드라는 것을 모를 수도 있습니다. 귀하가 문제를 토로했음에도 운영자가 Tor를 차단해야만 한다는 결정을 굽히지 않는다면, 자유로운 발언권이 보장된 다른 IRC로 옮기는 걸 고려하는 게 좋을 거에요. 운영자를 irc.oftc.net의 #tor 채널에 초대해서 tor 사용자들을 구경해보게 하면, 그들이 사악한 사람이 아니라는 주장에 설득력이 실릴지도 모릅니다.

Tor나 Tor 출구 노드를 차단하는 것으로 보이는 IRC 네트워크를 찾으셨다면, 다른 Tor 사용자도 이 사실을 알 수 있도록 Tor IRC block tracker에 제보해주세요. 적어도 하나의 IRC 네트워크에서 부주의로 차단된 상태의 출구 노드의 차단을 풀도록 해당 페이지에 연락을 취합니다(consult).

설사 Tor가 스팸 유포에 유용하지 않은 도구라 하더라도, 열성적으로 차단목록을 갱신하는 자들 눈엔 Tor와 같은 공개 네트워크 모두가 적폐 세력으로 보일 것입니다. 우리가 강압적인 네트워크 관리자로서 정책, 서비스, 라우팅 부분을 공격해 피해자들에게서 몸값을 뺴낸다고 보는 거죠.

서버 관리자가 이러한 차단리스트를 써 착신 메일을 막겠다고 결정할 경우, Tor와 Tor 출구 정책을 설명하면서 재고할 것을 요청하세요.

그렇다니 유감입니다. 인터넷 서비스에서 익명 사용자를 차단해야 하는 타당한 상황이 있는 것은 사실입니다. 그러나 안전하게 사이트에 접속하려는 익명 사용자를 차단하지 않으면서도 문제를 해결할 더 쉬운 방법이 있는 경우가 많습니다.

먼저 애플리케이션 단에서 '나쁜 놈'들이랑 평범한 사용자를 구분할 수 있는 방법이 애플리케이션 단에 있는지 생각해보세요. 예를 들어 사이트 내에 특정 사용자만 쓸 수 있는 영역을 개설하거나, 가입자만 게시글을 쓸 수 있도록 차등을 두는 방법이 있습니다. Tor IP 주소의 최신 목록을 빌드하는 건 매우 쉽습니다. 이 목록을 Tor 사용자와 '나쁜 사용자'를 구분하여 Tor 네트워크를 통한 Tor 사용자의 접속만 허용하는 데 사용할 수 있습니다. 굳이 서비스 다방면에 밴을 걸 필요 없이 다중 계층 접속 방식(multi-tiered access)을 적용할 수 있는 것입니다.

예를 들어, 자원봉사자가 운영하는 IRC 네트워크(Freenode IRC Network)엔 조직적인 남용자가 채널에 들어와 대화(conversation)을 교묘히 탈취할 위험이 있습니다.

두 번째, 수많은 분들이 그저 데이터를 안전하게 지키려는 순수한 목적에서 Tor를 사용하고 있습니다. 즉 일상적인 브라우징 활동 중 마케팅 회사의 데이터 수집 행위를 막으려고 Tor를 쓰는 겁니다. 한편 검열을 위해 현지 네트워크에 설치된 방화벽을 뚫기 위한 유일한 수단으로 Tor를 쓰는 분들도 있습니다. 평범한 브라우징 활동을 위한 적합한 목적 하에 귀하의 서비스에 연결하는 Tor 유저가 많습니다. Tor 네트워크를 밴할 때 발생하는 기회비용을 생각하고 결정하시기 바랍니다. Tor 네트워크를 밴하는 대가로 Tor 사용자의 기여분과, 향후 Tor 네트워크에서 유입될 선한 사용자를 모두 잃게 되니까요. (악의적인 Tor 사용자들이 나타나고 나서야, 자신의 사이트에 선한 Tor 사용자가 이렇게 많았다는 것을 파악하는 관리자 분들이 많습니다.)

이 시점에서 몇몇 IP 주소에 많은 유저를 밀집시키는 다른 서비스도 어떻게 처리할지 자문해봐야 합니다. 이런 측면에서 보면 Tor와 AOL은 그리 다르지 않습니다.

마지막으로, Tor 중계서버의 '출구 정책'(exit policies)은 각 서버마다 차이가 있음을 알아주세요. 상당한 수의 Tor 중계서버에서 출구 연결을 전혀 허용하지 않는 경우가 많습니다. 출구 연결을 일부 허용하는 중계서버라도 귀하 측 서비스에의 연결을 이미 차단해놓은 경우가 많습니다. 노드를 밴하려면, 출구 정책을 파스하는 데 먼저 착수해야 합니다. 그 후 이러한 연결을 허용하는 노드만 차단해야 합니다. 이때 출구 정책은 시간에 따라 변할 수 있음에 유의하세요 (Tor 네트워크 노드 리스트도 마찬가지입니다).

정말로 위와 같이 하고 싶으시다면, Tor 출구 중계서버 목록 혹은 쿼리 가능한 DNS 기반 목록 을 활용하세요.

(몇몇 시스템 관리자가 공식 정책이라는 명분, 혹은 남용 패턴을 근거로 수많은 IP 주소를 차단합니다. 하지만 Tor를 사용하는 시스템만 접근만 받기 위해, Tor 출구 중계 서버를 허용하는 방법을 문의하는 경우도 있습니다. 위 목록의 스크립트는 연결을 허용할 때에도 유용합니다.)

Tor 개발자가 Tor 사용자를 추적할 방법 자체가 없습니다. Tor에 적용된 보호 기능은 익명성을 무력화하려는 적 세력을 막는 수단이면서, 동시에 Tor 프로젝트가 앞으로 일어날 일을 파악할 수 없도록 하는 요소로도 작용합니다.

Tor를 재설계해 백도어를 넣으면 되지 않냐고 묻는 팬 분들이 종종 있었습니다. Tor에 백도어를 집어넣으면 두 가지 문제가 발생합니다. 첫번째, 시스템이 문자 그대로 심각하게 약화됩니다. 사용자와 사용자의 활동의 상관관계를 분석해내는 중앙집중식 방식은 모든 부류의 공격자에게 있어 큰 허점(gaping hole)과 같습니다. 게다가 이를 적절히 관리할 책임이 있는 '정책 메커니즘'은 비대한 크기에 비해 유효성이 항상 보장되지도 않습니다. 두 번째, 설사 정책 메커니즘이 유효하더라도 악의적 세력을 해당 방식으로 잡을 수 없을 겁니다. (신원을 탈취하거나, 보안 수준이 낮은 컴퓨터를 바운스 지점으로 악용하는 등) 공격자로서의 익명성을 유지할 수 있도록 다른 수단을 사용할 것이기 때문입니다.

궁극적으론 사이트 관리자가 직접 위험 노출 요소가 있는지, 보안 이슈가 없는지 점검해야 합니다. 위와 같은 어려움은 인터넷이라는 문명의 이기를 누리려면 거쳐야 하는 단면에 불과합니다. 악성요소가 어디서 오더라도 시스템을 보호할 수 있을 정도로 대비해 두어야 합니다. 추적과 감시 기능을 더 두는 게 남용 문제에 대한 해결책은 아닙니다.

그렇다고 Tor가 안전하다는 말은 아닌 점에 유의하세요. 경찰에서 사용해오던 전통적 기법은 여전히 Tor를 대상으로 유효합니다. 범죄 수단, 동기, 기획을 분석하는 방법론이나 용의자 심문, 필적 분석, 내용 분석, 함정 수사, 키보드 타이핑 간격 분석(keyboard taps), 그 외 다양한 물리적 수사 방식이 여전히 효과가 있다는 겁니다. 또한 Tor 프로젝트는 법조계 구성원 분들이 Tor 소프트웨어를 통해 온라인 상에서 익명으로 은밀하게 수사할 수 있도록 방법을 알려드리고 있습니다. 이와 같이 법조계를 포함한 다양한 분들과 함께 일할 수 있는 점에 굉장히 기쁩니다.

Tor 프로젝트는 .onion 주소를 관리(host), 제어(control)하는 주체가 아닐 뿐더러, 운영자가 누구ㅇ고, .onion 주소의 실제 주소도 알아낼 수 없습니다. .onion 주소는 onion 서비스에 접속하는 주소입니다. onion 서비스 기술자(descriptor)는 명칭의 끝에 .onion이 붙습니다. onion 서비스 기술자는 자동적으로 생성되는 명칭으로, Tor 중계서버에 설치될 수도 있고, 인터넷 내 클라이언트에 설치될 수도 있습니다. onion 서비스는 사용자와 서비스 제공자의 신원과 위치를 파악하려는 공격자로부터 이들을 보호하기 위해 설계됐습니다. 즉 onion 서비스로 서비스 운영자의 신원과 .onion 사이트의 위치를 숨길 수 있는 것입니다. Tor 프로젝트도 알 수 없을 정도로요.

그렇다고 onion 서비스가 취약점 없는 안전한 설계로 이루어졌다는 것은 아닙니다. 경찰에서 사용해오던 전통적 기법은 여전히 Tor를 대상으로 유효합니다. 범죄 수단, 동기, 기획을 분석하는 방법론이나 용의자 심문, 필적 분석, 내용 분석, 함정 수사, 키보드 타이핑 간격 분석(keyboard taps), 그 외 다양한 물리적 수사 방식이 여전히 효과가 있다는 겁니다.

아동학대물(child abuse materials)에 관련된 항의 사항이 있으시다면, 아동 포르노물을 수사하는 국가조직인 National Center for Missing and Exploited Children에 이를 보고하세요: http://www.missingkids.com/. Tor 프로젝트는 귀하가 보고하는 링크를 조회하지 않습니다.

Tor 프로젝트는 Tor의 남용 행위를 심각하게 보고 있습니다. 활동가와 법조계 종사자 분들이 Tor를 사용해 남용 행위를 조사하고 있고, 피해자 지원에 힘 쓰고 있습니다. Tor 프로젝트도 그분들이 Tor를 업무에 잘 쓸 수 있도록 힘을 보태고 있습니다. 그분들이 갖곤 하는 기술적 부분의 오개념을 바로잡을 수 있도록 Tor 프로젝트는 돕고 있습니다. 피해자 커뮤니티 중 일부 구성원이 동정 받지 못하고, 오히려 오명을 쓰는 경우가 있기 때문에, 같은 피해자 집단에서 도움을 받기 위해선 '개인정보 보호 기술'이 필요합니다.

Tor 프로젝트에서는 Tor에 백도어를 설치하거나 검열 수단을 집어넣으라는 외부기관의 요구를 거절하고 있습니다. 그런 거에 관심이 없기 때문에 거절하는 건 아닙니다. 현실 세계에서 일어나는 아동 학대, 인신 매매에 맞서 싸우는 Tor의 노력에 담긴 진의가 훼손될 수 있기 때문에 거부하는 것입니다. 피해자를 위한 온라인 상의 안식처도 없어질 수 있고요. 그러는 동안 범죄자는 여전히 봇넷, 도난폰, 해킹된 호스팅 계정, 우편 및 택배 시스템, 부패 관료 등 주어진 콘텐츠를 전달하는 모든 제반 기술에 손댈 수 있습니다. 그런 범죄자는 기술 영역에 있어 남들보다 앞서기 때문입니다. 이런 형국에 정책결정자가 차단과 필터링 수준이 충분하다고 판단 내리는 건 정말로 위험합니다. Tor 프로젝트는 아동 학대를 막고 근절하는 데 노력을 쏟고 싶은 것이지, 이러한 범죄의 온상을 가려달라는 정치인의 손에 놀아나 그들의 표를 채워주는 것 따위엔 관심이 없습니다. 관계당국의 부패가 미치는 악영향은 굉장히 큽니다: 국제연합(United Nations, UN)에서 작성한 보고서인 부패가 인신매매에 미치는 영향에서 자세히 살펴보세요.

끝으로 중요한 것은, 전 세계에서 어린 아이들의 이름으로 제정되는 정책이 제정될 때 그들을 하나의 성숙한 인격체로 대해줘야 한다는 것입니다. 만약 법 제정 과정에서 아이들의 의견을 어리다는 이유로 무시한다면, 법이 만들어지고 나서 아이들이 우리에게 고마워 할까요? 국가가 다른 아이들을 보호하지 못하고 있음을 폭로하려 한다면 어떻게 하실 건가요?

Tor 메트릭스

Tor 프로젝트 측에서 유저 수를 셌다는 건 사실이 아닙니다. 다만 저장소에서 받는 요청의 수는 세고 있습니다. 이는 클라이언트가 중계서버 목록을 업데이트할 때 발생하는 것으로, 이러한 요청 건수를 보고 간접적으로 유저 수를 추측할 수 있습니다.

아닙니다. 얼마나 많은 저장소가 국가코드를 보고했는지는 Tor 프로젝트 측에서 확인할 수 있습니다. 또한 저희는 해당 보고를 기반으로 네트워크 내 유저 수 총계를 추정할 수 있습니다.

Tor 프로젝트는 평균적인 클라이언트가 하루에 10번의 요청을 할 것이라고 가정합니다. 1년 내내 연결된 Tor 클라이언트의 경우 하루에 15개 정도의 요청을 보내고 받습니다. 그러나 모든 클라이언트가 항시 연결된 상태가 아니므로, 평균 클라이언트 수를 Tor 프로젝트에선 10으로 잡은 것입니다. Tor 프로젝트는 디렉터리 요청을 10으로 간단하게 나누어 해당 결과치를 사용자 수로 간주합니다. 한 요청이 하루 중 1/10 가량, 즉 2시간에 24분 가량을 온라인에 머무르는 클라이언트 하나에 상응한다고 가정해 사용자 수를 계산하기도 합니다.

동시 접속자의 평균 값으로, 하루동안 수집한 데이터를 토대로 추산됐습니다. 사용자 수의 정확한 값은 Tor 프로젝트에서도 확인할 수 없습니다.

없습니다. 중계서버에서는 발신국에서 전송된 요청과 24시간 동안의 사용자 수 총계만 보고하기에, 그런 류의 자료 외에는 없습니다. Tor 프로젝트에서 시간 당 사용자 수를 집계하기 위해 수집하는 통계자료는 저희가 생각하기엔 너무 자세할 뿐더러, 자칫 사용자를 위험에 노출시키지 않을까 우려됩니다.

그 후 해당 사용자를 하나로 셉니다. 클라이언트를 세고 싶습니다만, 대부분의 사람들에겐 클라이언트 보단 사용자라는 용어가 더 직관적입니다. 그래서 Tor 프로젝트에선 클라이언트라는 말을 안 쓰고 사용자라 굳이 표현하는 겁니다.

아뇨, 과표집되지 않습니다. 하루에 IP 주소가 많이 바뀌었다 해서, 중계서버 목록도 자주 바뀌었던 것은 아니기 때문입니다.

저장소에서 IP 주소를 국가코드로 분해하고 해당 코드를 종합해 보고합니다. Tor에 GeoIP 데이터베이스가 같이 들어있는 이유기도 합니다.

극소수의 브리지만이 전송 데이터나 IP 버전 데이터를 보고하는 상황입니다. 또한 기본적으로 Tor 프로젝트에선 '기본 OR 프로토콜'과 IPv4의 사용을 요청하는 게 적당하다고 보고 있습니다. 더 많은 브리지에서 이러한 데이터를 보낼 수록, 더 정확한 수치를 낼 수 있습니다.

중계서버와 브리지에선 24시간 간격, 즉 매일 자정에 데이터를 보고합니다.
그러한 간격을 바로잡은 후, 중계서버와 브리지는 18시간 후 새로운 데이터를 보고할 겁니다.
사실 직전 일의 데이터는 그저 알고리즘에 의한 가공물일 뿐이고, 최근 트렌드 변화 정도만 나타날 수 있습니다. Tor 프로젝트는 그래프의 마지막 데이터 지점에 이를 표시하는 걸 피하고자 직전 이틀을 그래프에서 잘라낸 것입니다.

Tor 프로젝트에선 사용자 수가 더이상 눈에 띄게 변화하지 않을 것이라 자신할 때에, 해당 수치를 내놓기 때문에 그렇게 보이는 겁니다. 하지만 Tor 프로젝트에서 유저 수를 내놓은 후 몇 시간 뒤에야 데이터가 디렉터리에서 보고될 가능성이 무조건 존재합니다. 하지만 그럴 경우 그래프를 살짝 바꿔주면 그만이고요.

Tor 프로젝트에서 기술자 아카이브를 구축한 게 2011년 이전이긴 합니다. 그러나 유저 수를 추산할 때 사용하는 데이터가 해당 시기 이전의 기술자(descriptor)에 들어있지 않았습니다. 다음 압축 파일에서 해당 시기를 찾아 더 자세히 알아보세요:

압축 파일

직접 사용자의 경우, Tor 프로젝트에서는 기존 방식에서 세지 못했던 모든 디렉터리를 산입합니다. Tor 프로젝트에서는 또한 디렉터리 요청에 대한 응답이 적혀있는 바이트만 담긴 이력만 사용합니다. 따라서 일반적인 바이트 이력을 사용하는 것보다 더 정확한 값이 산출됩니다.

음 이건 완전 다른 문제예요. 장장 13페이지나 되는 기술 보고서를 통해 기존 접근 방식을 버린 이유를 설명해두었으니 확인하세요.
한 줄 요약: 기존 접근 방식을 쓸 경우 잘못된 값이 측정됐습니다. 그리고 이젠 올바른 값을 측정할 수 있고요.

Tor 프로젝트에선 '비정상 활동 기반 검열 탐지 시스템'을 구동하고 있습니다. 해당 시스템은 주어진 기간의 사용자 에측치를 살펴본 후, 다음 날 사용자 수를 예측합니다. 실제 값이 더 많거나 적다면, 이는 검열이 발생했거나, 검열에서 벗어났을 가능성이 있음을 뜻합니다. 기술 보고서에서 더 자세히 알아보세요.

Little-t-tor

주목: 다음 안내사항은 Tor 소스 코드의 검증을 위한 것입니다. Tor 브라우저의 서명을 검증하는 과정을 기재된 방식에 따라 제대로 진행해주세요

디지털 서명은 주어진 패키지가 원 개발자가 생성한 것이고 이후 손대지 않은 것임을 보장하는 절차입니다. 다운로드 받은 tor 소스 코드가 Tor 프로젝트에서 만들었고, 공격자에 의해 개조되지 않았음을 검증하는 게 왜 중요한지 그 이유와 검증 방법을 아래에 설명해뒀습니다.

Tor 프로젝트의 다운로드 페이지 에 있는 각 파일을 다운로드 받을 때 'checksum'과 'sig'라 명명된 두 파일을 같이 받게 됩니다. 이 두 파일의 이름 자체는 패키지와 같으며, 확장자가 각각 '.sha256sum', '.sha256sum.asc'입니다.

.asc 파일로 (패키지 검사합계가 포함된) .sha256sum 파일이 변조되지 않고 원본 그대로인지 여부를 검증합니다. 서명이 검증된 후(하단에서 서명이 검증되는 방식을 살펴보세요), 다음을 통해 패키지 무결성을 검증됩니다:

$ sha256sum -c *.sha256sum

위 파일을 통해 다운로드 한 파일이 Tor 측에서 제공하려 했던 파일과 정확히 같은지 검증할 수 있습니다. 웹 브라우저마다 다르지만, 일반적으로 'sig'와 'checksum' 링크를 오른쪽 마우스 버튼으로 클릭한 후, 'save file as' 옵션을 선택해 이 파일을 다운로드할 수 있습니다.

예를 들어, tor-0.4.6.7.tar.gztor-0.4.6.7.tar.gz.sha256sum.asc와 대응됩니다. 위의 파일 이름은 예시일 뿐, 귀하가 다운로드 받은 파일 이름과는 정확하게 일치하지 않습니다.

지금부터는 다운로드 받은 파일의 디지털 서명을 검증하는 방법을 운영 체제에 따라 설명해드리겠습니다. 서명에 기재된 날짜는 패키지가 서명된 순간을 의미함을 유의하세요. 따라서 새로운 파일이 업로드될 때마다, 새로운 서명이 생성되며, 기재된 날짜도 달라지게 됩니다. 서명을 검증한 이상 더이상 확인된 날짜가 상이하다고 해서 걱정할 필요가 없습니다.

GnuPG 설치하기

서명을 검증하기 전에 우선 GnuPG가 설치돼있어야 합니다.

윈도우 사용자라면:

Windows를 사용 중이라면, Gpg4win를 다운로드 받으세요. 그 후 다운로드 받은 '설치 도우미'를 실행하세요.

서명을 검증하려면 윈도우 명령 행인 cmd.exe에 명령 몇 개를 입력해야 합니다,

macOS 사용자라면:

macOS를 사용 중이라면, GPGTools를 설치하세요.

서명을 검증하려면 터미널('애플리케이션' 메뉴 내에 있습니다)에 명령 몇 개를 입력해야 합니다.

GNU/LINUX 사용자라면:

GNU/Linux를 사용한다면 GnuPG가 이미 시스템 내에 있을 겁니다. GNU/Linux 배포판 대다수엔 사전 설치 돼있거든요.

서명을 검하려면 터미널 창에 명령을 몇 개 입력해야 합니다. 귀하가 받은 배포판에 따라 하는 방법에 차이가 있습니다.

Tor 개발자 키 인출하기

다음에 제시되는 키로 tarball에 서명할 수 있습니다. 그 릴리스의 개발자가 누구냐에 따라 차이가 있으니 너무 기대하진 마세요.

상단의 링크에서 키를 인출할 수 있습니다. 아니면 다음을 통해서도 가능합니다:

$ gpg --auto-key-locate nodefault,wkd --locate-keys ahf@torproject.org
$ gpg --auto-key-locate nodefault,wkd --locate-keys dgoulet@torproject.org
$ gpg --auto-key-locate nodefault,wkd --locate-keys nickm@torproject.org

이를 사용할 경우 다음과 같이 떠야 합니다 (nickm이 개발한 릴리스):

gpg: key FE43009C4607B1FB: public key "Nick Mathewson <nickm@torproject.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1
pub   rsa4096 2016-09-21 [C] [expires: 2025-10-04]
      2133BC600AB133E1D826D173FE43009C4607B1FB
uid           [ unknown] Nick Mathewson <nickm@torproject.org>
sub   rsa4096 2016-09-23 [S] [expires: 2025-10-04]
sub   rsa4096 2016-09-23 [E] [expires: 2025-10-04]

오류 메시지가 표시되면 문제가 발생한 것이며 이 오류가 발생한 이유를 파악할 때까지 진행할 수 없습니다. Workaround (using a public key) 섹션을 대신 사용해 키를 가져올(import) 수도 있습니다.

키를 가져온 후, 파일(파일에 있는 지문을 통해 키를 식별할 수 있습니다)에 저장할 수 있습니다:

$ gpg --output ./tor.keyring --export 0x2133BC600AB133E1D826D173FE43009C4607B1FB

이 명령을 사용하면, 키가 ./tor.keyring 경로, 즉 현 디렉터리에 파일 형태로 저장됩니다. 이 명령을 사용했음에도 ./tor.keyring경로가 없다면, 뭔가 잘못된 겁니다. 문제의 원인을 찾을 때까지 더이상 진행할 수 없습니다.

서명의 검증

다운로드한 패키지의 서명을 검증하려면, 상응하는 .sha256sum.asc 서명 파일과 .sha256sum 파일을 따로 다운로드 받아야 합니다. 그 후 GnuPG가 다운로드한 파일을 검증하도록 하는 명령을 입력해 검증합니다.

하단의 예시는 귀하가 두 파일을 'Downloads' 폴더에 받았을 것을 상정하고 작성됐습니다. 이러한 명령에 적혀있는 파일명은 예시이지, 귀하가 받은 실제 파일명과는 상이한 점에 유의하세요: 예시엔 9.0이라 적혀있지만, 귀하가 다운로드 받은 버전은 이보다 높을 것입니다. 예시로 기재된 English (en-US) 버전이 아닌 다른 언어로 받으셨을 수도 있고요.

윈도우 사용자라면:

gpgv --keyring .\tor.keyring Downloads\tor-0.4.6.10.tar.gz.sha256sum.asc Downloads\tor-0.4.6.10.tar.gz.sha256sum

macOS 사용자라면:

gpgv --keyring ./tor.keyring ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum.asc ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum

BSD/Linux 사용자:

gpgv --keyring ./tor.keyring ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum.asc ~/Downloads/tor-0.4.6.10.tar.gz.sha256sum

명령의 결과가 다음과 같이 산출돼야 합니다(서명된 키에 따라 다릅니다) :

gpgv: Signature made Mon 16 Aug 2021 04:44:27 PM -03
gpgv:                using RSA key 7A02B3521DC75C542BA015456AFEE6D49E92B601
gpgv: Good signature from "Nick Mathewson <nickm@torproject.org>"

'해당 파일이나 디렉터리가 없습니다(No such file or directory)'라는 에러 메시지가 송출될 경우, 이전까지의 단계를 진행하면서 뭔가 잘못 했을 수 있습니다. 혹은 명령을 입력할 때 예시에 적힌 파일 이름을 그대로 적어서 문제가 발생한 것일 수도 있어요. 귀하가 받은 파일 이름과 예시 파일 이름은 살짝 다르거든요.

GnuPG에 대해 더 알아보셔도 좋습니다.

검사합 검증

검사합 서명이 적합함을 확인했다면, 이제 패키지의 무결성을 검증해야 합니다.

윈도우 사용자라면:

certUtil -hashfile tor-0.4.6.10.tar.gz.sha256sum SHA256

macOS 사용자라면:

shasum -a 256 tor-0.4.6.10.tar.gz.sha256sum

BSD/Linux 사용자:

sha256sum -c tor-0.4.6.10.tar.gz.sha256sum

Tor 프로젝트에서 (아직) 채택하지 않은 설계 및 방법론

아니요, 경로를 선택하는 네트워크를 신뢰할 수 없습니다. 악의적인 중계서버에서 귀하의 연결을 그들과 유착한 곳으로 보낼 수 있습니다. 그렇게 될 경우 적들이 귀하 트래픽의 처음부터 끝까지 조회할 수 있게 됩니다.

중계서버 운영자가 출구 정책으로 reject www.slashdot.org 과 같은 사항을 집어넣었다면 괜찮은 것입니다. 주어진 웹사이트에서 관장하는 모든 IP 주소를 파악하겠다고(거기다 해당 IP 주소 대상으로 다른 사이트도 차단하겠다고) 적어둔 것은 바람직하지 않습니다.

그럼에도 두 문제가 있습니다. 첫 번째로 이러한 차단의 손길이 사용자에게 미칠 수 있다는 겁니다. 가령 중계서버 운영자가 Tor 네트워크에서 나갈 때 호스트명이 아니라 IP 주소를 요청할 수 있습니다. 즉 운영자가 문제의 목적지 IP 주소 전부를 파악하길 요구한다는 겁니다.

두 번째 문제는 원격 공격으로 인해 임의의 사이트가 검열되는 일이 발생할 수 있는 점입니다. 예를 들어, Tor 운영자가 www1.slashdot.org 를 차단하고 몇몇 공격자가 Tor 중계서버의 DNS에 독을 풀어두었든가 주요 뉴스 사이트의 IP 주소를 분해하기 위해 호스트네임을 변경했다면, 갑자기 해당 Tor 중계서버는 그 뉴스 사이트를 차단하게 됩니다.

이렇게 하는 게 다음과 같은 이유로 쉽기 때문입니다: 먼저 이렇게 해야 Tor가 VoIP와 같은 신규 프로토콜을 다루기 더 쉬워집니다. 애플리케이션에 SKCOS를 적용하는 데 필요한 사항이 모두 해결됩니다. 출구 연결(exit connection)을 대상으로 출구 중계서버에 그렇게 많은 파일 기술자(descriptor)를 할당할 필요가 없습니다.

이러한 방향으로 진행하려 합니다만, 몇몇 문제가 있습니다:

  1. IP 패킷에 운영체제 속성이 드러난다는 것입니다. TCP 핑거프린팅 공격 등을 막으려면, IP 수준의 패킷 정규화가 현 단계에서 여전히 필요합니다. TCP 스택이 지닌 분산성과 복잡성, 그리고 기기 핑거프린팅 공격을 고려했을 때, 사용자 영역(user space)에 Tor만의 TCP 스택을 따로 제공하는 게 가장 나아보입니다.

  2. 애플리케이션 단 스트림의 정화가 여전히 필요합니다. Tor 프로젝트는 Torbutton과 같은 사용자 측에서의 애플리케이션이 계속 필요합니다. 그래서 패킷을 포착하고 IP 계층에서 패킷을 익명화하는 수준의 문제에 머무르진 않을 겁니다.

  3. 특정한 프로토콜에서 여전히 정보가 새고 있습니다. Tor 프로젝트는 사용자의 ISP 내의 DNS 서버가 아닌 연결되지 않을 법한 DNS 서버로 전송될 수 있도록 DNS 요청을 다시 작성합니다. 따라서 전송되는 프로토콜을 반드시 파악해야 합니다.

  4. DTLS (datagram TLS)엔 기본적으로 사용자가 없으며, IPsec은 확실히 큽니다. Tor 프로젝트에서 전송 메커니즘(transport mechanism)을 선정하면, 그 후엔 tagging 공격과 다른 잠재적 익명성 및 현재 중단, 재전송 등과 같이 일어나고 있는 무결성 이슈에 대응할 수 있는 새로운 종단간 Tor 프로토콜을 설계하는 것입니다.

  5. 임의의 IP 패킷에 대한 '출구 정책'은 곧 보안 상 안전한 침입 탐지 시스템(Intrusion Detection System, IDS)를 세우는 겁니다. Tor 노드 운영자 분들의 말씀에 따르면, Tor를 운영하고 싶지 않은 이유 중 하나가 '출구 정책'(exit policies)라고 합니다. IDS를 추가해 출구 정책을 관리한다면 Tor의 보인이 지닌 복잡도를 제고하고, Tor가 작동 불능에 빠질 가능성이 낮아집니다. IDS와 카운터 IDS 관련 논문에서 이 효능이 검증됐습니다. Tor가 (변조된 패킷이나 IP 플러드와 같은 임의의 IP와 달리) 적합한(valid) TCP 스트림(TCP stream)만 전송한다는 사실만 봐도 Tor가 잠재적 남용 문제의 산실이란 의심이 해명됩니다. '출구 정책'은 IP 패킷을 전송할 수 있게 됨에 따라 훨씬 더 중요한 요소로 자리잡았습니다. Tor 디렉터리 내 출구 정책을 요지만 간추려 설명할 필요가 있습니다. 그래야 어떤 노드에서 패킷이 나가는 걸 허용할지 클라이언트가 예측할 수 있으니까요. 더욱이 클라이언트는 출구 노드를 선정하기 전에 세션에 보내고자 하는 패킷 모두를 예측해야 합니다!

  6. Tor 내부 명 공간(Tor-internal name space)을 재설계 해야 합니다. Tor는 onion 서비스가 Tor 클라이언트로 전송되는 과정에서 이를 가로채는 방식으로 onion 서비스의 '.onion' 주소를 지원하고 있습니다. IP 단에서 행하는 이와 같은 방식은 Tor와 현지 DNS 리졸버 사이의 복잡한 인터페이스가 요구됩니다.

모든 Tor 유저를 관장할만큼 네트워크 크기를 조정해주시면 모든 Tor 사용자가 중계서버가 되는데 도움이 됩니다. 또한 Tor 중계서버를 돌리는 게 귀하의 익명성 증진에도 도움이 되고요. 하지만 많은 Tor 사용자는 좋은 환경의 중계서버가 되기 어렵습니다.가령, Tor 클라이언트가 제한적인 방화벽을 거쳐 구동될 수도 있고, 모뎀을 통해 연결되는 경우, 이에 해당하지 않더라도 우회로의 트래픽로 자리잡을 수 없는 경우 좋은 중계서버라 보기 어렵습니다. 이러한 클라이언트에 서비스를 제공하는 건 유효한 익명성을 모두에게 제공하는 데 있어 매우 위협적입니다. 많은 Tor 사용자들은 이와 같거나 유사한 제약을 받는 환경에 놓여있기 때문에, 이러한 사용자가 서비스에 포함되면 익명성 기능의 규모를 늘릴 수 있기 때문입니다.

Tor 프로젝트는 Tor 사용자가 중계서버를 운영할 수 있도록 장려하고 싶습니다. 따라서 Tor 프로젝트가 하고자 하는 건 곧 중계서버의 설정 및 유지보수에 이르는 프로세스를 간단하게 만드는 것입니다. 지난 몇 년간 중계서버를 쉽게 구성할 수 있도록 많은 개선이 이루어져 왔습니다: Tor는 이제 주어진 중계서버의 연결이 다른 노드로 도달할 수 있는지(reachable), 해당 중계서버에서 제공 가능한 대역폭은 어느 정도인지 자동으로 탐지할 수 있습니다.

다만, 다만 이와 같은 자동화 시스템을 하기 위해선 네 요소의 개선이 필요합니다:

  • 첫 번째, 허용할 대역폭의 적절한 양을 자동으로 추산할 수 있도록 여전히 개선할 필요가 있습니다. 이 경우엔 UDP 트랜스포트로 전환하는 게 가장 간단한 답이 될 듯 합니다. 사실 슬프게도 그리 간단한 대답은 아니지만요.

  • 두 번쨰, Tor 프로젝트는 사용자 수가 늘어날 때에도 시스템이 유연하게 작동하도록(scalability) Tor를 설계해야 합니다. 네트워크의 확장성 측면도 고려해야 하고(모든 Tor 중계서버가 모든 tor 중계서버에 연결할 수 있어야 한다고 요구하는 걸 막는 방법) , 디렉터리의 확장성도 고려해야 합니다(모든 Tor 사용자가 모든 Tor 중계서버를 알고 있어야 한다고 요구하는 걸 막는 방법). 이러한 변화는 익명성에 잠재적으로나 실질적으로나 큰 영향을 미칩니다. '난제'(Challenges) 보고서의 다섯 번째 항목에서 더 자세히 살펴보세요. 다시 말씀 드리지만, 이 경우엔 UDP 트랜스포트가 유효할 겁니다.

  • 세 번째, 귀하가 익명화된 트래픽을 보내는 과정에서, 공격자가 귀하의 중계서버를 통해 트래픽을 전송할 수 있는 리스크의 여지가 있음을 이해할 필요가 있습니다. 종류의 연구 논문에서 '후보 중계서버(candidate relay)를 통해 우회로 내 중계서버의 신원을 특정하는 방법과 우회로가 활성화된 상황에서 트래픽 내 딥(dip)을 찾아내는 방법을 다루었습니다.

papers describe to identify the relays in a circuit by running traffic through candidate relays and looking for dips in the traffic while the circuit is active. 이러한 방해 공격(clogging attack)은 중계서버가 중계서버 역할 외에 클라이언트까지 했던 게 아닌 이상, Tor 환경에선 그렇게 위협적이지 않습니다. 하지만 Tor 프로젝트에서 더 많은 클라이언트가 (브리지 중계서버든 일반 중계서버든 간에) 중계서버 기능을 활성화하도록 장려할 수록, 해당 공격 방식을 더 잘 파악해 막을 태세를 갖춰야만 할 것입니다.

  • 네 번째, Tor 프로젝트 입장에선 더 많은 사람들이 다른 사람의 트래픽을 중계할만한 장려책(incentive scheme)이 필요하기 때문입니다. Tor 프로젝트가 현재까지 생각해본 Tor 인센티브를 확인해보세요.

이 모든 거에 손을 보태주세요!