Trojan-GFW 쉬운 설명: 중국 인터넷 검열 우회 프로토콜

개요

Trojan-GFW는 중국의 만리장성 방화벽(GFW)을 우회하기 위한 트래픽 혼합 프로토콜입니다. 일반적인 VPN과 달리 Trojan-GFW는 트래픽을 HTTPS 프로토콜로 인식하게 만들어 방화벽을 속이는 방식으로 작동합니다. 이 방법은 무작위 혼합이나 강력한 암호화에 의존하는 대신, 최대한 HTTPS 트래픽과 구분하기 힘든 수준으로 생성하여 방화벽이 이를 일반적인 트래픽으로 오해하게 합니다.

Trojan은 한국에서 ‘트로이 목마’로 번역됩니다. 제작자가 이름을 이렇게 지은 이유는 GFW(중국 방화벽)을 우회하는게 아니라 속여서 가로질러 가도록 하겠다는 의미로 만들었습니다.

오픈 소스

Trojan-GFW는 이름 때문에 초보분들은 바이러스, 악성코드 같은 것으로 오해하실 수 있으나 Trojan-GFW는 오픈소스 프로젝트로, GitHub에서 직접 소스 코드를 확인할 수 있습니다. 오픈소스 소프트웨어의 장점은 코드가 투명하게 공개되어 있기 때문에, 보안 전문가, 개발자들이 직접 코드 내부를 검토할 수 있으며 문제가 생기면 언제든 수정도 가능합니다. 그래서 Open Source라는 이름 하나로 보안성과 신뢰성을 확보할 수 있습니다. – https://trojan-gfw.github.io/trojan/

기술적 방식 요약

앞서 설명드린대로 Trojan 프로토콜은 방화벽을 속여서 일반 웹 사이트 사용자로 인식하게 만들어 통과하도록 설계되어있습니다. TLS를 통해 다중 혼합 방식을 사용하여 인터넷 검열 및 필터링 시스템을 우회하는 도구입니다. 능동/수동 탐지 및 QoS 제한 등 다양한 장애물을 우회할 수 있다고 설명합니다.

트래픽은 (유효한 인증서를 사용하는 것은 사용자의 책임)에 의해 보호되기 때문에 사이트를 방문하는 경우 트래픽은 (핸드셰이크 후에 하나만 있음)와 동일하게 보입니다. 사이트를 방문하지 않는 경우 트래픽은 Kept Alive 또는 와 동일하게 표시됩니다. 이 때문에 트로이 목마는 ISP 제한을 우회할 수도 있습니다. (TLS, HTTP, HTTPS, RTT, TLS, WebSocket, QoS)

능동 감지(Active Detection)

올바른 구조와 비밀번호 없이 연결되는 모든 연결은 미리 설정된 엔드포인트로 리디렉션되므로, 의심스러운 탐색이 연결될 경우 트로이 목마 서버는 해당 엔드포인트와 정확히 동일하게 동작합니다 (기본 설정).

수동 감지(Passive Detection)

트래픽이 TLS로 보호되기 때문에(*유효한 인증서를 사용하는 것은 사용자의 몫), 사이트를 방문하면 트래픽은 HTTPS와 동일하게 보입니다(핸드셰이크 후에는 하나의 연결만 유지됩니다). 사이트를 방문하지 않는 경우, 트래픽은 HTTP 유지 연결 또는 WebSocket QoS처럼 보입니다. 이러한 이유로 트로이 목마는 ISP 제한을 우회할 수 있습니다. (TLS, HTTP, HTTPS, RTT, TLS, WebSocket, QoS)

장벽

클라이언트가 서버에 연결할 때 실제로 웹사이트에 접속하는 것처럼 행동합니다. 만약 방화벽이 이를 탐지하려고 해도, Trojan은 의심스러운 트래픽을 로컬 서버로 보냄으로써 탐지를 피합니다. 따라서, 일반적인 웹 트래픽처럼 보이게 하여 방화벽이나 인터넷 서비스 제공자의 감시를 우회하는 것입니다.

쉽게 말해, Trojan은 “나는 평범한 웹사이트 접속이야”라고 속이는 방식으로 방화벽을 속여서 차단을 피하는 기술입니다.

일반 유저들에게는 적합하지 않을 수 있습니다.

  • Trojan-GFW는 이름에서도 알 수 있듯 중국 국가 방화벽 우회에 중점을 둔 기술입니다.
  • VPN처럼 우리가 일반적으로 기대하는 인터넷 개인 정보 보호를 기대하기는 어렵습니다.
  • 다른 국가에서는 효과적으로 작동하지 않을 수 있습니다.
  • 서버 세팅을 따로 해야하기 때문에 진입 장벽이 조금 높습니다.

마지막 부분으로 인해 초보자가 사용하기에는 무리가 있습니다.

예를 들면 서버에 Trojan-GWF를 설치하려면 아래의 순서를 따라야 합니다.

설치 전 준비되어야 할 것
CMake >= 3.7.2
Boost >= 1.66.0
OpenSSL >= 1.1.0
libmysqlclient

설치
git clone https://github.com/trojan-gfw/trojan.git

Build
mkdir build
cd build/
cmake ..
make
ctest
sudo make install

리눅스, 터미널에 익숙하신 분들에게는 매우 쉬운 명령어지만 초보분들에게는 외계어로 보일수도 있습니다. 저런 간단한 것이 이해되신다면 직접하실 수 있고 아니라면 배우는데 약간의 시간을 투자해야 합니다.

이는 이 분야에서 큰형이라 할 수 있는 Shadowsocks도 마찬가지 입니다. 그래서 이런 기술을 사용해서 서버를 빌려주는 업체를 사용하기도 합니다. 블로그 메뉴 VPN 탭에서 중국 전용 VPN 부분을 보시면 됩니다.

2 Comments

  1. 프로톤 스텔스도 tls 터널로 동작하죠 근데 중국이면 ml이라도 돌려서 막을거 같네요

    1. 작년에 중국 출장 며칠 다녀온 친구가 Proton Stealth를 사용해봤는데 안됐다고 하더라구요. 요즘은 잘 되는지 궁금하네요. 중국 갈일이 없어서ㅜ

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다