자주 묻는 질문

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

완전한 익명성은 일반적으로 불가능해요. 설사 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 Browser is currently available on Windows, Linux, macOS, and Android.

On Android, The Guardian Project also provides the Orbot app to route other apps on your Android device over the Tor network.

There is no official version of Tor Browser for iOS yet, as explained in this blog post. Our best available recommendation is Onion Browser.

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

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

Each browser's settings and features create what is called a "browser fingerprint". 각 사용자마다 갖는 고유한 지문이 시중의 브라우저 대부분을 사용하면서 자신도 모르는 사이에 남게 돼요. 이로 인해 인터넷을 거쳐 귀하를 추적할 수 있게 되는 겁니다. Tor 브라우저엔 사용자 간 사실상 동일한 (완벽하지 않아요!) 지문을 갖도록 특수 설계가 이루어졌습니다. This means each Tor Browser user looks like many other Tor Browser users, making it difficult to track any individual user.

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

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

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

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

You can find more detailed information about Tor + VPN at our wiki.

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

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

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

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

'익명성'과 '성능' 두 마리 토끼를 모두 잡는 건 어려움을 명심하세요. Tor 네트워크의 익명성은 부분적으로는 '다양성'에서 옵니다. 따라서 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 프로젝트의 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에 백도어는 없습니다.

We know some smart lawyers who say that it is unlikely that anybody will try to make us add one in our jurisdiction (United States). 백도어를 삽입할 거라고 계속 묻는 그들과 싸우겠습니다. (법조인들이 말하는 것처럼) 이길 거예요.

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

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

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

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

그럼 대체 어찌해야 할까요? 공격자가 C 중계기를 조회하고 조정할 수 있다고 가정해 봅시다. 총 N 중계기가 있다고도 가정해 봅시다. If you select new entry and exit relays each time you use the network, the attacker will be able to correlate all traffic you send with probability around (c/n)^2. 그러나 대다수 사용자들에게 프로파일링이란 항시 추적당하는 것처럼 나쁜 겁니다: 공격자의 감시 없이 이것 저것 하고 싶은데 말이죠. 또한 감시하는 공격자는 감시 횟수가 한 번이든, 여러 번이든 나쁜 건 매한가지이에요. 따라서 시작 중계기와 출구 중계기를 아무리 무작위로 많이 골라봐야 사용자가 공격자의 프로파일링에서 벗어날 가능성은 없다는 거죠.

"입구 지킴이" 해결책: 각 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' 옵션을 선택해서 이 파일을 다운로드할 수 있습니다.

예를 들어, tor-browser-windows-x86_64-portable-13.0.1.exe 파일은 tor-browser-windows-x86_64-portable-13.0.1.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 [email protected]

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

gpg: key 4E2C6E8793298290: public key "Tor Browser Developers (signing key) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1
      EF6E286DDA85EA2A4BA7DE684E2C6E8793298290
uid           [ unknown] Tor Browser Developers (signing key) <[email protected]>

NOTE: Your output may deviate somewhat from the above (eg. expiration dates), however you should see the key correctly imported.

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

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

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

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

서명의 검증

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

하단의 예시는 두 파일을 'Downloads' 폴더에 받았을 것을 상정하고 작성됐습니다. Note that these commands use example file names and yours will be different: you will need to replace the example file names with exact names of the files you have downloaded.

For Windows users (change x86_64 to i686 if you have the 32-bit package):

gpgv --keyring .\tor.keyring Downloads\tor-browser-windows-x86_64-portable-13.0.1.exe.asc Downloads\tor-browser-windows-x86_64-portable-13.0.1.exe

macOS 사용자라면:

gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-macos-13.0.1.dmg.asc ~/Downloads/tor-browser-macos-13.0.1.dmg

For GNU/Linux users (change x86_64 to i686 if you have the 32-bit package):

gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-linux-x86_64-13.0.1.tar.xz.asc ~/Downloads/tor-browser-linux-x86_64-13.0.1.tar.xz

The result of the command should contain:

gpgv: Good signature from "Tor Browser Developers (signing key) <[email protected]>"

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

Refreshing the PGP key

Run the following command to refresh the Tor Browser Developers signing key in your local keyring from the keyserver. This will also fetch the new subkeys.

gpg --refresh-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

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

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

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 EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

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

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

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

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

새로운 안정적인 버전의 Tor 브라우저를 출시할 때마다 새로운 기능과 알려진 문제를 자세히 설명하는 블로그 게시물을 작성해요. 업데이트를 진행한 후 Tor 브라우저에 문제가 발생했다면, blog.torproject.org에서 최신 안정 Tor 브라우저에 관련 게시글을 살펴보세요. 겪으신 문제가 해당 게시글에 기재돼있을 수 있습니다. 겪으신 문제가 기재돼있지 않은 경우, Tor 브라우저'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 multiple 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)
Suomi (fi)
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 브라우저 Alpha releases를 설치해서 차기 지원 대상 언어를 테스트 해주시는 것도 Tor 브라우저 최신 릴리스 개발에 도움이 돼요.

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

Tor 브라우저라고 주장하는 가짜 앱을 결제한 경우 Apple 또는 Play 스토어에 환불을 요청하거나 은행에 사기 거래를 신고하세요. We cannot refund you for a purchase made to another company.

[email protected]로 가짜 Tor 브라우저를 보고할 수 있습니다.

Tor Browser is currently available on Windows, Linux, macOS, and Android.

On Android, The Guardian Project also provides the Orbot app to route other apps on your Android device over the Tor network.

There is no official version of Tor Browser for iOS yet, as explained in this blog post. Our best available recommendation is Onion Browser.

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

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

Tor 브라우저를 사용하면 다른 브라우저보다 속도가 느릴 수 있습니다. 수백만의 사용자가 매일 Tor 네트워크를 경유하고 있고, 이들의 트래픽을 6000개의 중계기(relay)가 전송하고 있습니다. 이런 역할을 하는 각 중계기에서 지연 시간이 종종 발생할 수 있습니다. 그리고 설계 상, 트래픽은 전 세계 여러 지역에 있는 자원봉사자(volunteer)의 중계를 통해 전송돼요. 이런 여건 상 병목과 네트워크 지연 시간의 발생은 필연적이에요. running your own relay을 운영하면 Tor 네트워크의 속도 향상에 도움이 돼요. 다른 분들께도 운영을 권해보세요. For the much more in-depth answer, see Roger's blog post on the topic and Tor's Open Research Topics: 2018 edition about Network Performance. You can also checkout our recent blog post Tor Network Defense Against Ongoing Attacks, which discusses the Denial of Service (DoS) attacks on the Tor Network. Furthermore, we have introduced a Proof-of-Work Defense for Onion Services to help mitigate some of these attacks. 그렇긴 해요만, Tor는 과거에 비해 훨씬 빨라졌습니다. 타 브라우저 대비 속도 면에서 그리 큰 차이를 느끼지 못하실 거에요.

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

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

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

다음 방식을 통해 Tor 브라우저를 기본 브라우저로 설정할 수 있습니다. 하지만 모든 운영 체제에서 유효하진 않을 수 있습니다. Tor Browser works hard to isolate itself from the rest of your system, and the steps for making it the default browser are unreliable. This means sometimes a website would load in Tor Browser, and sometimes it would load in another browser. This type of behavior can be dangerous and break anonymity.

타 브라우저로 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을 사용하려면 별도로 구성하야 돼요. If you need to be sure that all traffic will go through the Tor network, take a look at the Tails live operating system which you can start on almost any computer from a USB stick or a DVD.

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

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

Tor 브라우저는 Tor를 사용할 수 있도록 특별히 설계된 Firefox의 개조 버전이에요. A lot of work has been put into making Tor Browser, including the use of extra patches to enhance privacy and security. 다른 브라우저에서도 Tor 사용이 문자 그대로 불가능한 건 아니에요만, 공격을 받거나 정보가 유출될 가능성에 노출될 수 있습니다. 따라서 Tor를 타 브라우저에서 사용하는 것에 대해 Tor 프로젝트는 강경히 반대하는 입장이에요. Tor 브라우저가 어떻게 설계됐는지 더 자세히 알아보세요.

Bookmarks in Tor Browser for Desktop can be exported, imported, backed up, restored as well as imported from another browser. The instructions are similar on Windows, macOS and Linux. Tor 브라우저의 북마크를 관리하려면 여기로 가세요:

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

북마크를 내보내고자 할 때

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

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

북마크를 가져오고자 할 때

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

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

백업하고자 할 때

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

복원하고자 할 때

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

Import bookmarks from another browser

Firefox에 있는 북마크를 Tor 브라우저로 가져올 수 있습니다. Firefox 내 북마크를 내보내서 Tor로 가져오는 방법으로 두 가지가 있습니다: HTML 파일이나 JSON 파일으로의 방식이에요. After exporting the data from the browser, follow the above steps to import the bookmark file into your Tor Browser.

주의: 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 브라우저를 찾아 명령 창에 다음을 입력해 Tor 브라우저를 실행합니다.

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

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

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

Tor Browser in its default mode is starting with a content window rounded to a multiple of 200px x 100px to prevent fingerprinting of the screen dimensions. This is an anti-fingerprinting feature in Tor Browser called Letterboxing.

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

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

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

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

은행 및 기타 민감한 웹 사이트의 경우 (일반적으로 한 국가에서 서비스에 접근하는 사용자가 갑자기 지구 반대편에 있는 출구 중계기에서 접속하는 경우 계정이 잠기거나 일시 중단되는 것과 같은) 지리 기반 차단도 흔히 볼 수 있어요.

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

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

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

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

Tor 브라우저로 자바스크립트로 떡칠된 웹사이트에 들어가면 기능 부분에서 이슈가 있을 수 있습니다. The simplest fix is to click on the Security level icon (Shield icon next to the URL bar), then click "Settings..." Set your security level to "Standard".

대다수 안티바이러스 및 맬웨어 보호 애플리케이션에서는 사용자가 '허용 목록(allowlist)'에 특정 프로세스를 등록해 차단을 방지하도록 설정할 수 있게 해두었습니다. Please open your antivirus or malware protection software and look in the settings for an "allowlist" or something similar. Next, include the following processes:

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

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

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

If you have exhausted general troubleshooting steps, it's possible that your connection to Tor is censored. In that case, connecting with one of the built-in censorship circumvention methods in Tor Browser can help. Connection Assist can automatically choose one for you using your location.

If Connection Assist is unable to facilitate the connection to Tor, you can configure Tor Browser to use one of the built-in circumvention methods manually. To use bridges and access other censorship circumvention related settings, click "Configure Connection" when starting Tor Browser for the first time. In the "Bridges" section, locate the option "Choose from one of Tor Browser's built-in bridges" and click on the "Select a built-In bridge" option. From the menu, select a censorship circumvention method.

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 one of Tor Browser's built-in bridges" and click on the "Select a built-In bridge" option. Select a censorship circumvention method from the menu. 탭을 닫으면 설정이 자동으로 저장됩니다.

If Tor fails to connect, you might have to try other methods of getting bridges. Please refer to the Tor Browser User Manual for further instructions and more information about bridges. If you have Tor Browser installed type about:manual#bridges in the address bar of Tor Browser to read the offline manual.

Tor 브라우저에서의 접속 문제를 초래하는 원인 중 가장 흔한 게 시스템 시계가 올바르게 설정되지 않은 거예요. 시스템 시계와 시간대가 정확하게 설정돼있는지 확인하세요. If this doesn't fix the problem, see the Troubleshooting page on the Tor Browser manual.

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 행동이예요. 회로의 첫 번째 중계기를 "입구 지킴이" 또는 "지킴이"라고 불러요. 알려진 익명성 침해 공격으로부터의 보호를 위해 2-3개월 동안 회로의 첫 번째 중계기로 유지되는 빠르고 안정적인 중계기예요. 회로 상 나머지 중계기는 웹사이트에 방문할 때마다 변경돼요. 이 모두가 있어야 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:

  • The torrc is in the Tor Browser Data directory at Browser/TorBrowser/Data/Tor inside your Tor Browser directory.

macOS에서:

  • The torrc is in the Tor Browser Data directory at ~/Library/Application Support/TorBrowser-Data/Tor.
  • 라이브러리 폴더는 최신 버전의 macOS에 숨겨져 있습니다. 파인더에서 이 폴더로 이동하려면, '이동' 메뉴에서 '폴더로 이동'을 선택하세요.
  • 그런 다음 창에 ~/Library/Application Support/를 입력하고 이동을 클릭합니다.

torrc 편집 전에 Tor 브라우저를 닫으세요. Tor 브라우저를 닫지 않고 편집할 경우 수정 사항이 적용되지 않을 수 있어요. Some options will have no effect as Tor Browser overrides them with command line options when it starts Tor.

Have a look at the sample torrc file for hints on common configurations. 사용 가능한 다른 환경 설정 옵션을 더 알아보려면, Tor 설명서 페이지를 참고하세요. 기억하세요. torrc에 # 으로 시작하는 행은 주석으로 취급되기에 Tor의 환경 설정에 아무런 영향을 미치지 않아요.

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

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

Each browser's settings and features create what is called a "browser fingerprint". 각 사용자마다 갖는 고유한 지문이 시중의 브라우저 대부분을 사용하면서 자신도 모르는 사이에 남게 돼요. 이로 인해 인터넷을 거쳐 귀하를 추적할 수 있게 되는 겁니다. Tor 브라우저엔 사용자 간 사실상 동일한 (완벽하지 않아요!) 지문을 갖도록 특수 설계가 이루어졌습니다. This means each Tor Browser user looks like many other Tor Browser users, making it difficult to track any individual user.

새로 설치한 부가 기능으로 인해 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가 접속하려는 포트를 한정하는 방법이 적혀있어요.

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 브라우저를 궁극적으로는 보안 상 최대한 안전하면서도, 대다수 사람들이 편하게 이용할 수 있도록 만들고 싶습니다. 따라서 현 수준에선 자바스크립트를 기본으로 활성화 해두는 게 이러한 목표에 부합하는 결정이라 하겠습니다.

For users who want to have JavaScript disabled on all HTTP sites by default, we recommend changing your Tor Browser's Security Levels option. This can be done by clicking on the Security level icon (the shield right next to the URL bar) and then clicking on "Settings...". 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.

It is often important to know what version of Tor Browser you are using, to help you troubleshoot a problem or just to know if Tor Browser is up to date. This is important information to share when raising a support ticket.

Tor Browser Desktop

  • When you have Tor Browser running, click on "Settings" in the hamburger menu (≡).
  • Scroll down to the "Tor Browser Updates" section where the version number is listed.

안드로이드용 Tor 브라우저

From the app

  • When you have Tor Browser for Android running, tap on 'Settings'.
  • Scroll to the bottom of the page.
  • Tap on 'About Tor Browser'.
  • 버전 번호는 이 페이지에 나열되어야 해요.

From Android menu

  • Navigate to Android's Settings.
  • Tap on 'Apps' to open the list of apps installed on your device.
  • Find 'Tor Browser' from the list of apps.
  • 'Tor 브라우저'를 누르세요.
  • Scroll down to the very bottom of the page where the version number will be listed.

Lyrebird is the name of Tor's obfs4proxy that implements several pluggable transport protocols, including obfs4, meek and WebTunnel. In Tor Browser, it also implements the feature to request bridges and the circumvention API for Connection Assist.

Legacy operating systems are unsupported versions of operating systems. For instance, Microsoft ended official support for Windows 7, 8 and 8.1 in January of 2023. Legacy unsupported operating systems receive no security updates and may have known security vulnerabilities. With no official support and Firefox (Tor Browser is based on Firefox ESR) dropping support for legacy operating systems, maintaining Tor Browser for obsolete operating systems becomes unfeasible and a security risk for users.

Support for Windows 8.1 or lower and macOS 10.14 or lower will be discontinued with the release of Tor Browser 14, scheduled for the end of 2024. Users on Windows 7, 8 and 8.1 and macOS 10.12 to 10.14 will continue receiving security updates for Tor Browser 13.5 for a limited time until at least March of 2025, pending a re-evaluation by Firefox.

Users on legacy operating systems are strongly advised to upgrade their operating system for access to Tor Browser 14 and later and for the latest security updates and new features in Tor Browser. Windows users are recommended to upgrade to Windows 10 or 11. macOS users are recommended to upgrade to macOS 10.15 (Catalina) or later. In some cases, it may require newer hardware in order to support the newer operating system.

모바일용 Tor

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

안드로이드에 맞게 개발된 Tor 브라우저 가 있어요. 안드로이드용 Tor 브라우저만 받으면 안드로이드 기기에서 tor를 사용할 수 있어요.

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

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

안드로이드용 Tor 브라우저와 Orbot 모두 훌륭한 애플리케이션이에요. 그러나 두 앱의 용도는 서로 다릅니다. 안드로이드용 Tor 브라우저는 데스크톱용 Tor 브라우저와 유사하면서, 모바일 기기에 제공되는 애플리케이션이에요. 또한 Tor 네트워크를 사용하고 익명성을 유지하는 것을 목표로 하는 원스톱 브라우저, 즉 단일 브라우저이에요. Orbot on the other hand is a proxy that will enable you to send the data from your other applications (E-Mail clients, instant messaging apps, etc.) through the Tor network; a version of Orbot is also inside of Tor Browser for Android, and is what enables it to connect to the Tor network. That version, however, does not enable you to send other apps outside of Tor Browser for Android through it. Tor 네트워크를 어떻게 쓰길 원하는 지에 따라, 하나만 설정하든 두 개를 설정하든 훌륭한 선택일 수 있어요.

We recommend iOS apps Onion Browser and Orbot for a secure connection to Tor. Onion Browser and Orbot are open source, use Tor routing, and are developed by someone who works closely with the Tor Project. 그렇지만 Apple은 iOS에서 실행하는 브라우저를 Webkit이라는 것을 사용함을 요구합니다. 이처럼 어니언 브라우저가 Tor 브라우저와 동일한 사생활 보호를 있기 가로막습니다.

어니언 브라우저에 대해 자세히 알아보기. Download Onion Browser and Orbot from the App Store.

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

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

The tracking code being reported is carried over from Firefox for Android as Tor Browser is based on Firefox. Exodus and other analysis tools have conducted static analysis of this tracking code, which does not verify whether the tracking code is active or disabled. All of the tracking code is disabled in Tor Browser for Android. Additionally, a complete removal of the tracking code is planned.

Tor에 접속하기

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

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

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

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

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

Tor 브라우저에서의 접속 문제를 초래하는 원인 중 가장 흔한 게 시스템 시계가 올바르게 설정되지 않은 거예요. 시스템 시계와 시간대가 정확하게 설정돼있는지 확인하세요. If this doesn't fix the problem, see the Troubleshooting page on the Tor Browser manual.

접속하는 데 문제가 있을 경우, 오류 메시지가 나타날 수 있습니다. 이때 '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 브라우저를 찾아 명령 창에 다음을 입력해 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. You can also download Tor Browser from https://tor.eff.org or from https://tor.calyxinstitute.org/.

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

If you suspect that your government or Internet Service Provider (ISP) has implemented some form of Internet censorship or filtering, you can test whether the Tor network is being blocked by using OONI Probe. OONI Probe is a free and open source application developed by the Open Observatory of Network Interference (OONI). It is designed to test and measure which websites, messaging apps, and circumvention tools may be blocked.

Before you run these measurement tests, please carefully read OONI's security recommendations and risk assessment. As any other testing tool, please be aware of false positive tests with OONI.

To check if Tor is blocked, you can install OONI Probe on your mobile device or on your desktop, and run the "Circumvention Test". An OONI Tor Test can serve as an indication of a potential block of the Tor network, but a thorough analysis by our developers is crucial for a conclusive evaluation.

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 브라우저를 찾아 명령 창에 다음을 입력해 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, 안드로이드. 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. '브리지' 섹션에서, 'Tor 브라우저의 내장 브리지로부터 선택' 옵션을 찾고 '내장 브리지 선택' 옵션을 눌러주세요. 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. '브리지' 섹션에서, 'Tor 브라우저의 내장 브리지로부터 선택' 옵션을 찾고 '내장 브리지 선택' 옵션을 눌러주세요. From the menu, select 'Snowflake'.

If your internet access is not censored, you should consider installing the Snowflake extension to help users in censored networks. When you run Snowflake on your regular browser, you will proxy traffic between censored users and an entry node in the Tor network, and that's all.

Due to censorship of VPN servers in some countries, we kindly ask you to not run a snowflake proxy while connected to a VPN.

부가기능

먼저 WebRTC가 켜져있는지 확인하세요. Then you can install this extension for Firefox or the extension for Chrome which will let you become a Snowflake proxy. 직전 24시간동안 얼마나 많은 사람이 도움을 받았는지도 확인할 수 있어요.

웹페이지

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

If you have exhausted general troubleshooting steps, it's possible that your connection to Tor is censored. In that case, connecting with one of the built-in censorship circumvention methods in Tor Browser can help. Connection Assist can automatically choose one for you using your location.

If Connection Assist is unable to facilitate the connection to Tor, you can configure Tor Browser to use one of the built-in circumvention methods manually. To use bridges and access other censorship circumvention related settings, click "Configure Connection" when starting Tor Browser for the first time. In the "Bridges" section, locate the option "Choose from one of Tor Browser's built-in bridges" and click on the "Select a built-In bridge" option. From the menu, select a censorship circumvention method.

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 one of Tor Browser's built-in bridges" and click on the "Select a built-In bridge" option. Select a censorship circumvention method from the menu. 탭을 닫으면 설정이 자동으로 저장됩니다.

If Tor fails to connect, you might have to try other methods of getting bridges. Please refer to the Tor Browser User Manual for further instructions and more information about bridges. If you have Tor Browser installed type about:manual#bridges in the address bar of Tor Browser to read the offline manual.

중국의 사용자도 몇 단계만 밟으면 황금방패를 우회하고 Tor 네트워크에 접속할 수 있어요.

To get an updated version of Tor Browser, try the Telegram bot first: @gettor_bot. If that doesn't work, you can send an email to [email protected] 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를 입력하세요. 또는 다음의 이메일 주소[email protected]로 이메일을 보내주세요. 이때 이메일 제목은 'private bridge cn'으로 해주세요. 기술 분야에 능통하신 분이라면, 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 contact our support team on Telegram Tor Project Support and Signal.

Find up-to-date instructions on how to circumvent censorship and connect to Tor from Russia on our forum guide: Tor blocked in Russia - how to circumvent censorship.

If you need help, contact us via Telegram, WhatsApp, Signal, or by email [email protected]. For censorship circumvention instructions, use "private bridge ru" as the subject line of your email.

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

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

은행 및 기타 민감한 웹 사이트의 경우 (일반적으로 한 국가에서 서비스에 접근하는 사용자가 갑자기 지구 반대편에 있는 출구 중계기에서 접속하는 경우 계정이 잠기거나 일시 중단되는 것과 같은) 지리 기반 차단도 흔히 볼 수 있어요.

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

HTTPS

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

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

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



잠재적으로 보이는 데이터
Site.com
방문 중인 사이트입니다.
사용자 / 비밀번호
사용자 이름과 비밀번호가 인증을 위해서 사용됩니다.
데이터
데이터가 전송되고 있습니다.
위치
웹사이트를 방문하는 데 사용되는 컴퓨터의 네트워크 위치(공용 IP 주소)입니다.
Tor
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는 동적 IP 주소로 중계기를 무난하게 다룰 수 있어요. torrc의 주소 줄을 공란으로 두시면 Tor가 알아맞힐게요.

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

집에서 돌리는 대신에, Tor에 호의적인 상업 시설에서 출구 중계기를 돌리는 걸 고려해 보세요. 출구 중계기를 위한 별도의 IP 주소를 할당받고, 이 주소를 통해 자체 트래픽을 라우팅하지 마세요. 출구 중계기로 호스팅 중인 컴퓨터에 민감한 개인 정보를 저장해두는 것도 당연히 피하셔야 해요.

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인 것은 흔하지 않아요.

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

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

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

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

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

초기 설정 상 '출구 정책'은 (웹 브라우징과 같은) 대중적인 서비스로의 접속을 허용하는 한편, (메일과 같이) 남용 가능성이 있는 몇몇 서비스를 제한해요. 또한 (Tor 기본 파일 공유 포트와 같이) Tor가 감당할 수 없는 부하량이 오가는 서비스 또한 제한돼요. torrc 파일을 수정해서 출구 정책을 변경할 수 있어요. If you want to avoid most if not all abuse potential, set it to "reject *:*". 해당 설정으로 변경 시 중계기는 Tor 네트워크 내 트래픽을 중계하는 데 사용되지만, 외부 웹사이트나 다른 서비스를 접속하는 데에는 사용되지 않게 돼요.

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

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

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

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

If that doesn't fix it, you should use the "Address" config option to specify the IP address you want it to pick. If your computer is behind a NAT and it only has an internal IP address, see the following Support entry on dynamic IP addresses.

한편 IP 주소가 많을 경우, 'OutboundBindAddress'을 설정해 외부에 표시하고자 하는 IP 주소로 외부 접속을 받고자 할 수 있어요.

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

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

If you're using Debian or Ubuntu especially, please use the Tor Project's repository, so you can easily receive updates. In addition, using the package provides other conveniences:

  • Your ulimit -n gets set to a high number, so Tor can keep open all the connections it needs.
  • The package creates and uses a separate user, so you don't need to run Tor as your own user.
  • The package includes an init script so Tor runs at boot.
  • Tor can bind to low-numbered ports, then drop privileges.

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

하루종일(24/7) 켜둘 수 있는 경우에만 Windows 중계기를 운영할 수 있어요 상시 켜둘 수 있을지 확신이 안 든다면, Snowflake가 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 https://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 is sadly single threaded except for when the "onion skins" are processed. 'onion skin'은 암호화기법이 적용된 작업으로, 잘 알려진 'onion 계층'을 대상으로 매 회로마다 적용돼야 작동해요.

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

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

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%가 점유되는 순간 핸들러가 발동돼요. Thus, let's say tor thinks it can use 2GB in total then at 1.5GB of memory usage, it will start freeing memory. 이러한 상태를 과부하 상태로 간주해요.

To estimate the amount of memory it has available, when tor starts, it will use MaxMemInQueues or, if not set, will look at the total RAM available on the system and apply this algorithm:

    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의 램 용량이 바람직해요. 물론 더 증설한다고 시스템적으로 해가 되는 건 결코 아니에요만. Note: If you are running a powerful server with lots of RAM then you might end up in an overloaded state due to the default queue size limit of 8GB even though you still have plenty of RAM unused. Add an appropriate MaxMemInQueues entry to your torrc configuration in that case.

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

해당 카운터가 짧은 시간 동안 상당한 수치량으로 증가한다면, 중계기가 혼잡한 겁니다. 큰 어니언 서비스 또는 네트워크에서의 DDoS에 의해 지킴이로 사용되고 있는 것 같아요.

중계기가 여전히 과부하 상태이고 원인 규명이 안 됐다면 [email protected]에 메일을 보내주세요. network-report OpenPGP key을 통해 메일을 암호화해 보낼 수 있어요.

When upgrading your Tor relay, or moving it to a different computer, be sure to keep the same identity keys (stored in keys/ed25519_master_id_secret_key and keys/secret_id_key in your DataDirectory).

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

For simplicity, just copying over the entire DataDirectory should work too.

You may wish to keep backups of these identity keys, plus pt_state for a bridge, so you can restore the relay if something goes wrong.

기본 공개 포트 목록이 하단에 있으면, 중계기 운영자가 torrc 구성이나 소스 코드 수정을 통해 모든 포트를 열어볼 수 있음을 명심하세요. The default according to src/or/policies.c (line 85 and line 1901) from the source code release release-0.4.6:

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 *:*

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, lox, none, any. You can find a description of each distributor in the rdsys distributors documentation.

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

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

Tor 프로젝트는 Tor 중계기의 쉽고 간편한 설정에 주안점을 두고 개발하고 있어요:

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

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

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

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

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

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

So even if all relay operators set their advertised bandwidth to their local connection speed, we would still need bandwidth authorities to balance the load between different parts of the Internet.

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

대부분의 중계기에선 실제 처리량 대비 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)에 해당할 경우, 중계기를 대다수 대역폭 기관에서 느리다고 간주한 거예요. 이 경우엔 왜 대역폭 기관에서 중계기를 느리다고 봤는지 알아봐야 해요

중계기 측정을 직접 해보기

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

  • Run a test using tor to see how fast tor can get on your network

    For this, you need to configure a tor client to use use your relay as entry. If your relay has only Guard flag, set EntryNodes with your relay fingerprint in torrc. If your relay doesn't have Guard flag or it has Guard and Exit flags, you can't set your relay as an entry node (see https://gitlab.torproject.org/tpo/core/tor/-/issues/22204), but you can set it as your bridge, even if it is not a bridge. To set your relay as a bridge, add to your torrc:

    Bridge <ip>:<port>
    UseBridge 1
    

    Then download a large file using your SocksPort as a socks proxy. For this, you can use curl, eg:

    curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
    

    Using different user/password guarantees different circuits. You can use $RANDOM.

    That will give you some idea of how much traffic your relay can sustain.

    Alternatively, you can run relay_bw to test your relay using 2 hops circuits, in a similar way as sbws does.

  • Run a test using tor and chutney to find out how fast tor can get on your CPU. Keep increasing the data volume until the bandwidth stops increasing.

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

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

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

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

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

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

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

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

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

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

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

    AccountingStart day week month [day] HH:MM

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

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

This specifies the maximum amount of data your relay will send during an accounting period, and the maximum amount of data your relay will receive during an accounting period. (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 # 로 평균 수준을 유지하면서도 버스트 값을 높게 잡을 수 있어요

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

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

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

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

Bandwidth soft limit reached; commencing hibernation.
No new connections will be accepted

이 상태를 해결하려면 두 개의 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 로 바꾸는 게 설정을 분리하는 데 있어 더 쉬울 수 있어요.

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

  • "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 재설치를 대비한 백업 정도만 따로 해두세요. 이 기능을 사용하려면, 해당 주제를 자세하게 다룬 가이드를 참고하세요.

이제 지킴이가 되었기 때문에, 클라이언트가 다른 포지션에서는 덜 사용하고 있지만, 아직 지킴이로 사용하기 위해 기존 지킴이를 교체한 경우는 많지 않아요. 이 블로그 포스트Changing of the Guards: A Framework for Understanding and Improving Entry Guard Selection in Tor을 읽어보세요

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

반드시 모든 발신 접속을 허용하도록 설정해야 해요. 그래야 각 중계회선이 다른 중계회선과 통신할 수 있어요.

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

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

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

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

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

각 지문는 (띄어쓰기 없는) 40글자의 신원 지문(identity fingerprint)이에요.

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

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가 아님에 유의하세요.

어니언 서비스

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

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

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

주소의 길이가 56자인지를 보면 V3 Onion 주소인지 아닌지 판별할 수 있어요. 예시: Tor Project의 v2 주소:https://expyuzz4wqqyqhjn.onion/, Tor Project의 v3 주소: https://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 접속은 서서히, 그리고 급전직하로 종료과정을 밟았어요. 이제 끝낼 떄가 됐어요.

Will services start failing to be reached in September, or before already?

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)에서 확인하세요.

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

Image of an onion 양파 아이콘의 의미:

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

Image of an onion with a red slash 발간 줄이 그어진 양파 아이콘의 의미:

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

Image of an onion with a caution sign 경고 표시가 새겨진 양파 아이콘의 의미:

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

Onion-Location is a HTTP header that web sites can use to advertise their onion counterpart. 방문한 웹사이트에서 onion 사이트를 이용할 수 있다면, '.onion 사용 가능'이라 적힌 보라색 알약 모양의 추천 창이 URL 바에 나타납니다. ".onion 사용 가능"을 클릭하면, 웹사이트를 다시 불러오고 해당 웹사이트의 onion 서비스로 리다이렉트해요. 현 시점에서 Onion 위치를 사용할 수 있는 브라우저는 데스크톱용 Tor 브라우저(WIndows, macOS, GNU/Linux)이에요. Onion 위치에 대한 더 자세한 정보를 Tor 브라우저 매뉴얼에서 알아보세요. onion 서비스 관리자라면, 내 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?

인증된 onion 서비스란 서비스 접속 전에 클라이언트가 인증 토큰(이 경우엔 사설 키가 돼요)을 제공해야 하는 onion 서비스를 말해요. 이때 사설키를 서비스에 보내는 것은 아니에요. 사설키는 내부에서 기술자를 복호하는 데에만 쓰이에요. onion 서비스 관리자에게 '액세스 크리덴셜'을 받을 수 있어요. onion 서비스 관리자에게 연락해 접속할 수 있도록 요청하세요. 더 자세한 정보를 Tor 브라우저에서 onion 인증을 사용하는 방법에서 확인하세요. If you want to create an onion service with client authentication, please see the Client Authorization section in the Community portal.

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

기타

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

Tor는 미국 연방 정부 기관, 사설 재단 및 개인 기부자를 포함하여 수많은 후원자가 후원해요. Check out a list of all our sponsors and a series of blog posts on our financial reports.

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

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

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

OnionShare는 Micah Lee가 개발한 제품이에요.

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

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

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

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

당신의 도움에 감사드립니다! You can find more information about donating on our donor FAQ.

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

Tor는 타인에 의한 검열로부터 인권과 프라이버시를 지키기 위해 설계됐어요. 검열의 당사자가 Tor일지라도요. Tor를 사용하여 끔찍한 일을 저지르는 사람들이 있다는 것은 유감이지만, 인권 활동가, 언론인, 학대 생존자 및 Tor를 좋은 일에 사용하는 다른 사람들이 있기 때문에 조치를 취하기는 어려워요. Tor를 사용하는 특정인을 짚어 막는 다는 건 곧 Tor 프로젝트에서 소프트웨어에 백도어를 넣지 않는 이상 근본적으로 불가능해요. 백도어를 넣을 경우 사용자가 발생하는 취약성에 노출돼, 독재 정권 당국이나 다른 적들에의 공격에 노출될 수 있어요.

설사 애플리케이션에서 올바른 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를 BitTorrent와 사용하는 것은 권장되지 않아요. 해당 주제에 대한 블로그 포스트에서 더 자세히 알아보세요.

Tor는 소프트웨어와 리소스 개선을 위해 전 세계 사용자와 자원봉사자의 지원에 의존하므로, 피드백은 당사 및 모든 Tor 사용자에게 매우 소중해요.

피드백 서식

When sending us feedback or reporting a bug, please include as many of these as possible:

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

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

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

Tor 포럼

We recommend asking for help on the Tor Forum. 포럼에 새로운 주제(topic)을 제출하기 위해선 계정을 생성해야 해요. Before you ask, please review our discussion guidelines. 게시글을 영어로 작성해주세요. 그래야 글을 쓰고 바로 답변을 받을 수 있습니다. 버그를 발견하셨다면, GitLab을 사용해 제보해주세요.

GitLab

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

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.

WhatsApp

WhatsApp 전화번호 +447421000612에 텍스트 메시지를 보내서 지원 팀에 연락할 수 있습니다. 이 서비스는 오직 텍스트 메시지로만 지원됩니다. 통화나 영상 통화는 지원되지 않습니다.

Signal

시그널 전화번호 +17787431312에 텍스트 메시지를 보내서 도움을 요청하실 수 있습니다. 시그널은 개인 정보 보호에 초점을 둔 무료 메시지 앱입니다. 이 서비스는 오직 텍스트 메시지로만 지원됩니다. 통화나 영상 통화는 지원되지 않습니다. 메시지를 보내주신 후, 상담원이 문제 해결 방법을 안내하고 도와드릴 것입니다.

이메일

Send us an email to [email protected].

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

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

블로그 포스트 코멘트

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

IRC

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

OFTC 서버에 접속하는 방법을 알아보세요.

이메일 목록

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

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

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

보안 문제를 보고하기

If you've found a security issue, please email [email protected].

If you want to encrypt your mail, you can get the OpenPGP public key for this address from keys.openpgp.org. Here is the current fingerprint:

  pub   rsa3072/0x3EF9EF996604DE41 2022-11-15 [SC] [expires: 2024-12-11]
      Key fingerprint = 835B 4E04 F6F7 4211 04C4  751A 3EF9 EF99 6604 DE41
  uid Tor Security Contact <[email protected]>
  sub   rsa3072/0xF59EF1669B798C36 2022-11-15 [E] [expires: 2024-12-11]
      Key fingerprint = A16B 0707 8A47 E0E1 E5B2  8879 F59E F166 9B79 8C36

If you wish to participate in our bug bounty program, please be aware, submitting a security issue to a third-party website carries certain risks that we cannot control, as a result we'd prefer the report directly.

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

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

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

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

하지만 부디 이 점은 생각해주세요. Tor 프로젝트의 소프트웨어는 인권 운동가, 기자, 가정폭력 생존자, 내부고발자, 법 집행관 등 다양한 사람들에 의해 광범위한 용도로 매일매일 사용되고 있다는 것을요. 이와같은 사람들을 보호하는 기능을 제공하는 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 프로젝트에서 그러지 않는 이유는 다음과 같어요:

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

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

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

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

연락하세요

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

매트릭스 브리지

The Tor community is opening up its day-to-day conversations by bridging our IRC community to the Matrix network. 즉 일반적인 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 사용자에게 매우 소중해요.

피드백 서식

When sending us feedback or reporting a bug, please include as many of these as possible:

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

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

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

Tor 포럼

We recommend asking for help on the Tor Forum. 포럼에 새로운 주제(topic)을 제출하기 위해선 계정을 생성해야 해요. Before you ask, please review our discussion guidelines. 게시글을 영어로 작성해주세요. 그래야 글을 쓰고 바로 답변을 받을 수 있습니다. 버그를 발견하셨다면, GitLab을 사용해 제보해주세요.

GitLab

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

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.

WhatsApp

WhatsApp 전화번호 +447421000612에 텍스트 메시지를 보내서 지원 팀에 연락할 수 있습니다. 이 서비스는 오직 텍스트 메시지로만 지원됩니다. 통화나 영상 통화는 지원되지 않습니다.

Signal

시그널 전화번호 +17787431312에 텍스트 메시지를 보내서 도움을 요청하실 수 있습니다. 시그널은 개인 정보 보호에 초점을 둔 무료 메시지 앱입니다. 이 서비스는 오직 텍스트 메시지로만 지원됩니다. 통화나 영상 통화는 지원되지 않습니다. 메시지를 보내주신 후, 상담원이 문제 해결 방법을 안내하고 도와드릴 것입니다.

이메일

Send us an email to [email protected].

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

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

블로그 포스트 코멘트

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

IRC

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

OFTC 서버에 접속하는 방법을 알아보세요.

이메일 목록

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

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

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

보안 문제를 보고하기

If you've found a security issue, please email [email protected].

If you want to encrypt your mail, you can get the OpenPGP public key for this address from keys.openpgp.org. Here is the current fingerprint:

  pub   rsa3072/0x3EF9EF996604DE41 2022-11-15 [SC] [expires: 2024-12-11]
      Key fingerprint = 835B 4E04 F6F7 4211 04C4  751A 3EF9 EF99 6604 DE41
  uid Tor Security Contact <[email protected]>
  sub   rsa3072/0xF59EF1669B798C36 2022-11-15 [E] [expires: 2024-12-11]
      Key fingerprint = A16B 0707 8A47 E0E1 E5B2  8879 F59E F166 9B79 8C36

If you wish to participate in our bug bounty program, please be aware, submitting a security issue to a third-party website carries certain risks that we cannot control, as a result we'd prefer the report directly.

Debian 저장소(Debian Repository)

네 가능해요. deb.torproject.org는 onion 서비스로도 제공되고 있어요: https://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/

Note: The symbol # refers to running the code as root. This means you should have access to a user account with system administration privileges, i.e. your user should be in the sudo group.

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/deb.torproject.org-keyring.gpg] tor+https://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org <DISTRIBUTION> main

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

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

Since Debian bookworm you can also use the more modern deb822-style:

   # echo "\
     Types: deb deb-src
     Components: main
     Suites: bookworm
     URIs: tor+https://apow7mjfryruh65chtdydfmqfpj5btws7nbocgtaovhvezgccyjazpqd.onion/torproject.org
     Architectures: amd64 arm64 i386
     Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
     " | sudo tee /etc/apt/sources.list.d/tor.sources

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

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

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

Note: The symbol # refers to running the code as root. This means you should have access to a user account with system administration privileges, i.e. your user should be in the sudo group.

전제 조건: 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/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org <DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/deb.torproject.org-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/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org tor-experimental-<DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org tor-experimental-<DISTRIBUTION> main

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

   deb     [signed-by=/usr/share/keyrings/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org tor-nightly-main-<DISTRIBUTION> main
   deb-src [signed-by=/usr/share/keyrings/deb.torproject.org-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/deb.torproject.org-keyring.gpg] https://deb.torproject.org/torproject.org focal main
   deb-src [arch=<ARCHITECTURE> signed-by=/usr/share/keyrings/deb.torproject.org-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 'https://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/deb.torproject.org-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) <[email protected]>"
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 파일을 수정해서 출구 정책을 변경할 수 있어요. If you want to avoid most if not all abuse potential, set it to "reject *:*". 해당 설정으로 변경 시 중계기는 Tor 네트워크 내 트래픽을 중계하는 데 사용되지만, 외부 웹사이트나 다른 서비스를 접속하는 데에는 사용되지 않게 돼요.

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

Tor's mission is to advance human rights with free and open-source technology, empowering users to defend against mass surveillance and internet censorship. We hate that there are some people who use Tor for nefarious purposes, and we condemn the misuse and exploitation of our technology for criminal activity.

It's essential to understand that criminal intent lies with the individuals and not the tools they use. Just like other widely available technology, Tor can be used by individuals with criminal intent. And because of other options they can use it seems unlikely that taking Tor away from the world will stop them from engaging in criminal activity. At the same time, Tor and other privacy measures can fight identity theft, physical crimes like stalking, and be used by law enforcement to investigate crime and help support survivors.

분산 서비스 거부 공격(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 has implemented exit policies. Tor 중계기 각각에는 출구 정책이 적용돼요. 출구 정책이란 주어진 중계기에서 어떤 아웃바운드 트래픽(outbound connections)을 허용하고 거부할지 규정하는 정책을 말해요. 이런 방식으로 각 중계기는 접속하고자 하는 서비스, 호스트, 네트워크를 선택할 수 있어요. 이때 남용 가능성과 각 중계기의 상황이 고려돼요. We also have a dedicated team, Network Health, to investigate bad relay behavior and kick them out of the network.

It is important to note that while we can combat some type of abuse like bad relays in our network, we can't see or manage what users do on the network and that is by design. This design overwhelmingly allows for beneficial uses by providing human rights activists, journalists, domestic violence survivors, whistleblowers, law enforcement officers, and many others with as much privacy and anonymity as possible. Learn more about our users and Tor's beneficial use cases here.

귀하가 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에 이를 보고하세요: https://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

Attention: These instructions are meant for installing tor the network daemon i.e. little-t-tor. For instructions on installing Tor Browser, refer to Tor Browser user manual.

Admin access: To install Tor you need root privileges. Below all commands that need to be run as root user like apt and dpkg are prepended with '#', while commands to be run as user with '$' resembling the standard prompt in a terminal.

Debian / Ubuntu

Do not use the packages in Ubuntu's universe. In the past they have not reliably been updated. That means you could be missing stability and security fixes.

Configure Tor package repository.

Enable the Tor Project APT repository by following the instructions.

Package installation

# apt install tor

Fedora

Configure Tor Package repository

Enable the Tor Project's RPM package repository by following the instructions.

Package installation

# dnf install tor

FreeBSD

Package installation

# pkg install tor

OpenBSD

Package installation

# pkg_add tor

macOS

Install a package manager

There are two package managers on OS X: Homebrew and Macports. You can use the package manager of your choice.

To install Homebrew follow the instructions on brew.sh.

To install Macports follow the instructions on macports.org.

Package installation

If you are using Homebrew in a Terminal window, run:

# brew install tor

If you are using Macports in a Terminal window, run:

$ sudo port install tor

Arch Linux

To install the tor package on Arch Linux, run:

# pacman -Syu tor

DragonFlyBSD

Bootstrap pkg

DragonFlyBSD's daily snapshots and releases (starting with 3.4) come with pkg already installed. Upgrades from earlier releases, however, will not have it. If pkg is missing on the system for any reason, it can be quickly bootstrapped without having to build it from source or even having DPorts installed:

# cd /usr
# make pkg-bootstrap
# rehash
# pkg-static install -y pkg
# rehash

Recommended steps to setup pkg

Here, it will be similar to what we have on a FreeBSD system, and we are going to use HTTPS to fetch our packages, and updates - so here we also need an extra package to help us out (ca_root_nss).

Installing the ca_root_nss package:

# pkg install ca_root_nss

For fresh installations, the file /usr/local/etc/pkg/repos/df-latest.conf.sample is copied to /usr/local/etc/pkg/repos/df-latest. The files ending in the ".sample" extension are ignored; pkg(8) only reads files that end in ".conf" and it will read as many as it finds.

DragonflyBSD has 2 packages repositories:

  • Avalon (mirror-master.dragonflybsd.org);
  • Wolfpond (pkg.wolfpond.org).

We can simply edit the URL used to point out the repositories on /usr/local/etc/pkg/repos/df-latest and that's it! Remember to use pkg+https:// for Avalon.

After applying all these changes, we update the packages list again and try to check if there's already a new update to apply:

# pkg update -f
# pkg upgrade -y -f

Package installation

Install the tor package:

# pkg install tor

NetBSD

Setup pkg_add

Modern versions of the NetBSD operating system can be set to use pkgin, which is a piece of software aimed to be like apt or yum for managing pkgsrc binary packages. We are not convering its setup here, and opt to use plain pkg_add instead.

# echo "PKG_PATH=https://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/$(uname -m)/$(uname -r)/All" > /etc/pkg_install.conf

Package installation

Install tor NetBSD's package:

# pkg_add tor

Void Linux

To install the tor package on Void Linux, please run:

# xbps-install -S tor

Installing Tor from source

Download latest release and dependencies

The latest release of Tor can be found on the download page.

If you're building from source, first install libevent, and make sure you have openssl and zlib (including the -devel packages if applicable).

Install tor

tar -xzf tor-<version>.tar.gz; cd tor-<version>

Replace <version> with the latest version of tor, for example, tor-0.4.8.12

./configure && make

Now you can run tor as src/app/tor (0.4.3.x and later), or you can run make install (as root if necessary) to install it into /usr/local/, and then you can start it just by running 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 [email protected]
$ gpg --auto-key-locate nodefault,wkd --locate-keys [email protected]
$ gpg --auto-key-locate nodefault,wkd --locate-keys [email protected]

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

gpg: key FE43009C4607B1FB: public key "Nick Mathewson <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1
pub   rsa4096 2016-09-21 [C] [expires: 2025-10-04]
      2133BC600AB133E1D826D173FE43009C4607B1FB
uid           [ unknown] Nick Mathewson <[email protected]>
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 <[email protected]>"

'해당 파일이나 디렉터리가 없습니다(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 프로젝트에서 (아직) 채택하지 않은 설계 및 방법론

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

Tor 프로젝트는 Tor 사용자가 중계기를 운영할 수 있도록 장려하고 싶어요. 따라서 Tor 프로젝트가 하고자 하는 건 곧 중계기의 설정 및 유지보수에 이르는 프로세스를 간단하게 만드는 거예요. 지난 몇 년간 중계기를 쉽게 구성할 수 있도록 많은 개선이 이루어져 왔어요: Tor는 이제 주어진 중계기의 접속이 다른 노드로 도달할 수 있는지(reachable), 해당 중계기에서 제공 가능한 대역폭은 어느 정도인지 자동으로 탐지할 수 있어요.

다만, 다만 이와 같은 자동화 시스템을 하기 위해선 네 요소의 개선이 필요해요:

  • 첫 번째, 허용할 대역폭의 적절한 양을 자동으로 추산할 수 있도록 여전히 개선할 필요가 있어요. 이 경우엔 UDP 트랜스포트로 전환하는 게 가장 간단한 답이 될 듯 해요. 사실 슬프게도 그리 간단한 대답은 아니지만요.

  • 두 번쨰, Tor 프로젝트는 사용자 수가 늘어날 때에도 시스템이 유연하게 작동하도록(scalability) Tor를 설계해야 해요. 네트워크의 확장성 측면도 고려해야 하고(모든 Tor 중계기가 모든 tor 중계기에 접속할 수 있어야 한다고 요구하는 걸 막는 방법) , 디렉터리의 확장성도 고려해야 해요(모든 Tor 사용자가 모든 Tor 중계기를 알고 있어야 한다고 요구하는 걸 막는 방법). 이러한 변화는 익명성에 잠재적으로나 실질적으로나 큰 영향을 미칩니다. '난제'(Challenges) 보고서의 다섯 번째 항목에서 더 자세히 살펴보세요. 다시 말씀 드리지만, 이 경우엔 UDP 트랜스포트가 유효할 겁니다.

  • 세 번째, 익명화된 트래픽을 보내는 과정에서, 공격자가 중계기를 통해 트래픽을 전송할 수 있는 리스크의 여지가 있음을 이해할 필요가 있어요. 종류의 연구 논문에서 '후보 중계기(candidate relay)를 통해 회로 내 중계기의 신원을 특정하는 방법과 회로가 활성화된 상황에서 트래픽 내 딥(dip)을 찾아내는 방법을 다루었어요. 이러한 방해 공격(clogging attack)은 중계기가 중계기 역할 외에 클라이언트까지 했던 게 아닌 이상, Tor 환경에선 그렇게 위협적이지 않아요. 하지만 Tor 프로젝트에서 더 많은 클라이언트가 (브리지 중계기든 일반 중계기든 간에) 중계기 기능을 활성화하도록 장려할 수록, 해당 공격 방식을 더 잘 파악해 막을 태세를 갖춰야만 할 거예요.

  • 네 번째, Tor 프로젝트 입장에선 더 많은 사람들이 다른 사람의 트래픽을 중계할만한 장려책(incentive scheme)이 필요하기 때문이에요. Tor 프로젝트가 현재까지 생각해본 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 리졸버 사이의 복잡한 인터페이스가 요구돼요.

Mullvad Browser

Mullvad Browser is Tor Browser without the Tor Network - that allows anyone to take advantage of all the privacy features Tor created. If people want to connect the browser with a VPN they trust, they can easily do so.

The browser's 'out-of-the-box' configurations and settings will mask many parameters and features commonly used to extract information from a person's device, including fonts, rendered content, and several hardware APIs. By default, Mullvad Browser has private mode enabled, blocks third-party trackers and cookies.

The browser is free and open-source and was developed by the Tor Project in collaboration with Mullvad VPN. It is distributed by Mullvad and can be downloaded on their website.

Mullvad Browser is free and open-source software that connects to the internet (if you use it together with Mullvad VPN) through the encrypted VPN tunnels and VPN servers of Mullvad. You can use it without or with any VPN, but you should make sure to use a VPN provider you can trust. Aside from the way that both browsers connect users to the internet (Tor network vs trusted VPN connection) the differences between both browsers are very small and come down to individual preference and use cases for the end-user.

As a benefit of connecting to the internet using the Tor network, various Tor specific features are closely integrated with our own browser that Mullvad Browser does not offer, including:

  • Circuit isolation and the integration with new-identity
  • Access to Onion Services (i.e. onionsites, Onion-Location redirects, onion authentication, and SecureDrop integration)
  • Built-in censorship circumvention with a unique UX found in Tor Browser's connection settings and connection assist

Our objective with this collaboration is to provide more choice for online privacy (e.g., minimize fingerprinting and try to prevent linkability) to users at all levels.

You should use Mullvad Browser if you are looking for a privacy enhanced browser solution to connect with your trusted VPN. Its default settings and features are intended to combat mass surveillance, data mining and tracking, or other privacy violations that are commonly employed by big tech companies.

While Mullvad Browser offers similar privacy protections to Tor Browser, it is best suited for the threat model of corporate mass-surveillance by big tech companies.

Unlike other browsers on the market, Mullvad Browser's business model does not rely on capitalizing on users' behavioral data. Mullvad makes money by selling their VPN, they are not in the business of selling user data from the browser.

Mullvad Browser was developed by the Tor Project who have a proven track record of building and deploying free and open-source privacy preserving technologies such as Tor Browser, Onion Services, the Tor network etc. that have helped millions of people from at-risk communities defend their right to privacy and anonymity online.

For any and all support inquiries, please email: [email protected]. User support is available via email or via Github issues.

Mullvad has been part of the Tor community for many years now. They are a Shallot Level member (highest membership tier) of the Tor Project membership program and have been a founding member of the Tor Project's Membership Program.

When Mullvad approached us to jointly develop a browser, we said yes because there is great value alignment between our two organizations in our efforts to make privacy-enhancing technologies more widely available and make mass-surveillance impractical.

Mullvad Browser fills a gap in the market for those who want to run a privacy-focused browser as good as Tor Browser but with a trusted VPN instead of the Tor Network. This partnership contributes to providing people with more free privacy options for web browsing while challenging the current business model of exploiting people's data. It demonstrates that it is possible to develop free technology solutions that prioritize the protection of user privacy. Mullvad shares the same values around internet privacy and freedom and is dedicated to making privacy-enhancing technologies more widely available and rendering mass-surveillance impractical.

This joint project with Mullvad has contributed to addressing legacy code issues for Tor Browser and allowed the allocation of dedicated resources to make necessary improvements that benefit both Tor and Mullvad Browsers. Over the last couple of years, the Tor Project has launched a number of initiatives to increase adoption of our technologies and made significant improvements to the usability of our own products.

No, Tor Browser is here to stay. We know that millions of users around the world rely on Tor Browser and other solutions that the Tor Project offers to safely connect to the internet, to browse anonymously online and to circumvent censorship. Therefore Tor Browser will continue to exist. There are a lot of reasons to continue to maintain and improve Tor Browser, it is still one of the few solutions that provides anonymity online because of its use of the Tor network. This combination is a powerful one and sometimes one of the few options that censored and surveilled users have in their region to freely and safely access the internet. This is also a free solution for all, making it an affordable solution for people at risk.

The development of Mullvad Browser will actually help make Tor Browser stronger because it allows us to continue to address legacy issues and code, and fix vulnerabilities.

Not at all, we are continuing to invest on improving the usability of Tor Browser, as we have done in the last 5 years with major releases that included user experience improvements. We are also working hard on bringing Tor Browser for Android up to par with the desktop version's features.

The development of Mullvad Browser has helped us address legacy issues and code, and fix vulnerabilities. It has not affected our attention and dedication to Tor Browser.

Two years ago we started a project to bring a VPN-like app that connects to the Tor network for Android users. We know that many of the sites and services a user connects to via browser on desktop become an app when they are using the internet on mobile. It is important for us to address this use case as the majority of people around the world only use a mobile device to connect to the internet, especially those in the Global South and at risk situations. Offering a browser that connects to the internet with a trusted VPN as opposed to the Tor network is an important step in offering more alternatives when it comes to free privacy-focused browsers and can benefit Tor Browser in the future when our 'VPN-like' app has launched.

Yes, here are the full list of requests Mullvad Browser makes by default:

  • Browser update (Mullvad)
  • Mullvad Browser Extension update (Mullvad)
  • Mullvad DoH (Mullvad)
  • NoScript/Ublock Origin update (Mozilla)
  • Certificates & Domains update (Mozilla)
  • Ublock Origin filter lists update (various lists)