Shadowsocks는 인터넷 역사의 묘한 한구석을 차지합니다. 2012년 중국에서 한 개발자가 혼자 작성해 오픈소스로 공개했고, 수백만 명이 방화벽 우회의 일꾼으로 조용히 받아들인 프록시입니다. VPN과 끊임없이 비교되는데, 대개 잘못된 질문 — "어느 쪽이 더 나은가?" — 과 함께입니다. 사실 둘은 같은 일을 하려는 것이 아닌데도요.

짧은 답: Shadowsocks는 알아보지 못하게 트래픽을 국가 방화벽 너머로 옮기도록 설계된 암호화 프록시입니다. VPN은 기기 전체를 위한 암호화 터널로, 지금 접속한 네트워크로부터의 개인정보 보호를 위해 설계되었습니다. 둘은 겹치지만 서로 다른 위협에 답하며 — 알맞은 선택은 실제로 어느 위협이 여러분의 것이냐에 달려 있습니다.

핵심 요약

  • Shadowsocks는 검열을 통과하려고 만든 암호화 SOCKS5 프록시입니다. 애초에 개인정보 보호 제품으로 설계된 적이 없습니다.
  • 그 비결은 아무것도 아닌 것처럼 보이는 것입니다: 핸드셰이크 시그니처도, 프로토콜 배너도 없이, 특징 없는 암호화된 바이트뿐입니다.
  • VPN은 기기의 모든 앱을 덮으며, 누수와 끊긴 연결에 대한 표준화된 동작을 갖춥니다. 프록시 설정은 천차만별입니다.
  • 현대 방화벽은 "아무것도 아닌 것처럼 보이는" 트래픽을 표시하는 법을 익혔고, 그래서 고전적인 Shadowsocks는 더 이상 무사통과가 아닙니다.
  • 위협 모델로 고르세요: 검열 저항, 기기 전체의 개인정보 보호, 혹은 — 점점 흔해지는 — 둘을 한 앱에서.

Shadowsocks는 실제로 무엇인가

2012년, clowwindy라는 이름으로 활동하던 개발자가 개인 트래픽을 중국 국가 방화벽 너머로 보내기 위한 작은 도구를 공개했습니다. 2015년, 당국의 압박을 받은 뒤 그는 코드를 삭제하고 손을 뗐습니다. 프로젝트는 커뮤니티가 유지하는 구현으로 살아남아 그 이후로 활발히 개발되어 왔으며 — Outline 같은 도구의 토대이기도 합니다. 그 기원 이야기가 설계를 완전히 설명합니다. Shadowsocks는 광고주가 아니라 방화벽이 문제였던 사람이 만든 것입니다.

구조적으로 Shadowsocks는 한 쌍입니다. 여러분 기기의 클라이언트와, 필터링된 네트워크 바깥 어딘가의 서버입니다. 클라이언트는 표준 프록시 인터페이스인 SOCKS5를 통해 애플리케이션 트래픽을 받아, 현대적인 인증 암호로 암호화한 뒤 서버를 거쳐 중계하고, 서버는 그것을 실제 목적지로 보냅니다.

영리한 부분은 빠져 있는 것입니다. 평범한 암호화 연결은 스스로를 알립니다. TLS는 알아볼 수 있는 hello로 열리고, VPN 프로토콜은 알아볼 수 있는 핸드셰이크로 열립니다. Shadowsocks 프록시 연결은 아무것도 없이 열립니다. 첫 바이트부터 그 흐름은 헤더도, 배너도, 고정된 패킷 크기도 없는 고엔트로피 암호문입니다. 볼 구조가 없으니 대조할 시그니처도 없습니다.

그것이 VPN과 어떻게 다른가

차이는 각각이 동작하는 계층에서 시작해, 거기서부터 퍼져 나갑니다.

적용 범위. VPN은 운영체제 수준에서 네트워크 인터페이스를 만들고 기기 전체를 그것을 통해 라우팅합니다 — 프록시 설정이 전혀 없는 앱을 포함해 모든 앱을요. Shadowsocks는 프록시입니다. 고전적으로는 그것을 향하도록 설정된 애플리케이션을 실어 나릅니다. 모바일 클라이언트는 시스템 전체를 로컬 터널 인터페이스로 라우팅해 이 경계를 흐리지만, 그것은 설치한 클라이언트의 기능이지 프로토콜의 보장이 아닙니다.

장애 동작. 성숙한 VPN 앱은 껄끄러운 질문들에 표준화된 답을 가지고 있습니다. 터널이 끊기는 순간 트래픽은 어떻게 되는가, DNS 요청은 어디로 가는가, 가장자리로 무언가 새어 나가는가. Shadowsocks에서는 그 답이 어떤 클라이언트를 골랐고 어떻게 설정했는지에 전적으로 달려 있습니다 — 그중 무엇도 프로토콜이 보장하지 않습니다.

신뢰. VPN 제공업체는 로그 정책과 이력으로 평가할 수 있는 회사입니다 — 노로그 정책이 정말 무엇을 뜻하는지에서 살펴보는 것들이죠. Shadowsocks 서버는 보통 자체 호스팅이거나, 작고 흔히 익명인 재판매업자에게서 구매한 것입니다. 어느 쪽이든 누군가가 먼 끝을 운영하며 여러분 트래픽이 어디로 가는지 관찰할 수 있습니다. 프록시는 엔드포인트를 신뢰해야 할 필요를 없애지 않습니다. 누구를 신뢰하는지를 바꿀 뿐이며, 재판매업자라면 보통 그들에 대해 아무것도 모릅니다.

이 비교의 일반적인 버전 — 검열을 넘어서, 프록시 대 VPN — 을 원한다면 VPN vs 프록시입니다.

10년 동안 통했던 이유

심층 패킷 검사는 그 핵심이 시그니처 매칭입니다. 프로토콜을 알아본 다음 정책을 결정하는 것이죠. Shadowsocks는 알아볼 것을 아무것도 주지 않았습니다. 그래서 검열자에게는 두 가지 달갑지 않은 선택지만 남았습니다 — 목적지 주소를 하나씩 차단하는, 값싸게 빌린 서버를 상대로 하는 두더지 잡기 게임이거나, 분류할 수 없는 모든 것을 차단하고 평범한 암호화 트래픽에 가는 부수적 피해를 감수하거나입니다.

여러 해 동안 그 부수적 피해는 감수할 만한 것이 아니었고, Shadowsocks는 그 틈으로 빠져나갔습니다. 그 틈이 닫혀 오고 있습니다.

"아직 되나?"가 이제 진짜 질문이 된 이유

두 가지 대응책이 판도를 바꿨습니다. 첫째는 능동 탐침(active probing)입니다. 검열 시스템이 수상한 연결을 알아채면, 같은 서버에 스스로 접속해 어떻게 반응하는지 시험하며 프록시 동작을 찾습니다. 둘째는 더 무딥니다. 연구자들이 USENIX Security 2023에서 기록한 바에 따르면, 2021년 말 이후로 중국의 방화벽은 첫 패킷이 특징 없는 고엔트로피 데이터처럼 보이는 연결을 — Shadowsocks를 보이지 않게 만들었던 바로 그 구조의 부재를 — 때때로 그냥 끊어 왔습니다. 검열자가 아무것도 아닌 것처럼 보이는 트래픽 자체를 신호로 결정하면, 아무것도 아닌 것처럼 보이는 것은 더 이상 위장이 아니게 됩니다.

커뮤니티는 두 방향으로 답했습니다. 하나: Shadowsocks를 진짜로 평범해 보이는 전송 안에 감싸기 — 실제 TLS 세션, WebSocket 연결입니다. 둘: 실제 프로토콜을 아예 흉내 내기 — trojan과 REALITY 계열의 후속 도구들은 찔러봐도 정상적인 HTTPS처럼 보입니다. 더 새로운 Shadowsocks 규격도 구버전을 잡아냈던 탐침 수법에 맞서 프로토콜을 단단히 했습니다. 쫓고 쫓기는 싸움은 계속됩니다. 단순한 도구 하나가 어디서나 조용히 통하던 시대는 끝났습니다.

QUIC로의 전환

가장 최근 장은 QUIC를 통과합니다. HTTP/3 아래에 깔린 암호화 UDP 전송이죠. 이제 평범한 웹 트래픽의 큰 몫이 QUIC이며, 이는 그것을 훌륭한 위장막으로 만듭니다. HTTP/3처럼 보이는 터널은 잡음이 아니라 일상적인 웹 서핑처럼 보입니다. "QUIC VPN"을 찾는 검색이 실은 바로 이것에 관한 것입니다 — Hysteria2와 TUIC 같은 더 새로운 우회 도구는 위장과 길고 손실 많은 경로에서의 성능을 위해 QUIC에 올라타며, IETF의 MASQUE 작업은 HTTP/3 위의 프록시를 표준화하고 있습니다. Apple은 같은 계열의 발상으로 iCloud Private Relay를 만들었습니다 — iCloud Private Relay vs VPN이 그 비교를 다룹니다.

QUIC도 끝판은 아닙니다. 검열자는 민감한 시기에 UDP를 통째로 속도 제한하거나 차단할 수 있고 실제로 그렇게 하며, 이는 트래픽을 다시 TCP와 TLS 위장 쪽으로 밀어냅니다. 어떤 전송도 어디서나 이기지는 못합니다 — 그래서 우회 도구는 계속 다양해지고, 오래가는 질문은 "어떤 프로토콜이냐"가 아니라 여러분의 도구가 옷을 갈아입을 수 있느냐입니다.

어느 쪽이 필요한가?

실제로 눈앞에 있는 문제로 정리해 보세요.

  • 네트워크가 밖으로 내보내 주지 않는다. VPN 프로토콜이 식별되어 끊기는 곳에서는 난독화가 결정적 요소이고, 기본 설정의 표준 VPN 프로토콜은 아예 연결되지 않을 수 있습니다. 여기가 Shadowsocks의 본거지입니다 — 그리고 같은 필요가 난독화된 WireGuard 포크를 낳았는데, AmneziaWG vs WireGuard에서 다룹니다.
  • 네트워크와 ISP로부터의 개인정보 보호를 원한다. 기기 전체의 적용, 예측 가능한 DNS 처리, 터널이 끊겼을 때의 온당한 동작이 이색적인 전송보다 더 중요합니다. 그것이 VPN 쪽 열이며, 일상적 사용의 대부분입니다. 호텔 Wi-Fi, ISP의 프로파일링, 신뢰할 수 없는 네트워크 말이죠. VPN은 어떻게 검열을 우회하는가가 이 두 세계 사이의 경계를 더 자세히 긋습니다.
  • 둘 다. 심하게 필터링되는 네트워크에 있는 사람들은 보통 둘 다 한꺼번에 필요합니다. VPN의 적용 범위에, 스스로를 알리지 않는 트래픽이요. 역사적으로 그것은 부품들로 설정을 직접 짜 맞추는 것을 뜻했습니다. 점점 더, 그것은 연결이 기본적으로 난독화되는 VPN을 뜻합니다.

Snap VPN은 이것을 VPN 쪽에서 접근합니다. 아래는 WireGuard이고, 연결에 우리 자체의 난독화 기법을 적용해 검사 시스템에 교과서적인 VPN 시그니처를 건네지 않게 합니다. 우리는 회선 수준의 구체적 사항을 공개하지 않습니다 — 위장은 문서화되는 순간 빠르게 낡으니까요 — 그러나 그 목표는 이 비교 전체가 가리키는 바로 그것입니다. VPN 트래픽이 사냥당하는 네트워크에서도 여전히 연결되는, 기기 전체의 개인정보 보호죠.

자주 묻는 질문

Shadowsocks는 VPN인가요? 아닙니다. 암호화 프록시입니다. 모바일 클라이언트가 기기 전체를 그것을 통해 라우팅할 수 있어 VPN처럼 느껴지지만, VPN 앱이 표준화하는 보장들 — 기기 전체 라우팅, 누수 처리, 끊긴 터널 동작 — 은 Shadowsocks 프로토콜 자체의 일부가 아닙니다.

Shadowsocks는 아직 작동하나요? 많은 곳에서, 상당한 시간 동안, 그렇습니다 — 하지만 고전적인 Shadowsocks는 더 이상 무사통과가 아닙니다. 현대 검열 시스템은 완전히 암호화된 "구조 없는" 트래픽을 표시하고 의심되는 서버를 능동적으로 탐침하므로, 현재의 설정은 단단해진 규격, TLS 감싸기, 혹은 후속 프로토콜에 기댑니다.

Shadowsocks보다 나은 것은 무엇인가요? "나은"이 무엇을 뜻해야 하느냐에 달려 있습니다. 오늘날 탐지를 피하는 데에는 실제 HTTPS를 흉내 내거나 QUIC에 올라타는 후속 도구들이 우위에 있습니다. 평범한 네트워크에서의 일상적 개인정보 보호에는 노로그 VPN이 더 단순하고 더 완전한 도구입니다.

Shadowsocks는 안전한가요? 암호화는 견고합니다 — 현대적인 인증 암호이고, 공개적으로 규격화되어 있습니다. 실질적인 위험은 다른 곳에 있습니다. 여러분의 서버를 운영하는 사람은 트래픽이 어디로 가는지 볼 수 있고, 아무 출처에서나 내려받은 클라이언트는 변조되었을 수 있습니다. 자체 호스팅은 첫 번째를 해결하고, 공식 빌드만 설치하는 것은 두 번째를 해결합니다.

결론

  • Shadowsocks는 알아볼 수 있는 형태가 없음으로써 작동하는 검열 회피 프록시입니다. VPN은 기기 전체의 개인정보 보호 터널입니다.
  • 둘은 서로 다른 위협에 답하며, "나은"은 여러분의 위협에 견주어야만 말이 됩니다.
  • 검열자가 "아무것도 아닌 것처럼 보이는" 것을 따라잡았고, 그래서 판은 실제 무언가처럼 보이는 쪽으로 — TLS, WebSocket, QUIC로 — 옮겨 갔습니다.
  • 대부분의 사람에게, 대부분의 경우, 실용적인 답은 VPN이며 — 이상적으로는 검사 장비에 스스로를 광고하지 않는 VPN입니다.

iPhone에서 WireGuard로 동작하고, 자기 연결을 난독화하며, 여러분이 누구인지 묻지 않는 VPN을 원한다면 — 이메일도, 계정도, 트래픽 로그도 없이 — Snap VPN이 App Store에 있습니다.