Bitchat 삭제 명령 — 정부는 코드의 유통을 막을 수 있는가

네트워크를 쓰지 않는 앱을 네트워크 차단으로 막을 수 없다면, 국가는 코드의 유통 경로를 노린다. 그 전략은 유효한가, 아니면 스트라이샌드 효과의 방아쇠일 뿐인가.

도입

2026년 7월 24일, 인도 언론 The Hindu는 인도 정부가 GitHub에 대해 블루투스 기반 채팅 앱 Bitchat의 저장소 삭제를 명령했다고 보도했다. 이 사실은 Bitchat의 개발을 주도해 온 Jack Dorsey — Twitter 공동 창업자이자 Block CEO — 가 공개하면서 알려졌다. 정부 명령서가 인용한 삭제 사유는 이렇다. “이 앱은 네트워크 제한 중에도 통신을 가능하게 하며, 반국가 세력, 테러 조직, 조직범죄 집단, 사이버 범죄자가 합법적 감청을 회피하고 법적으로 부과된 제한에도 불구하고 통신을 지속할 실질적 위험을 만든다.”

이 문장은 그 자체로 분석 대상이다. 명령서가 문제 삼는 것은 Bitchat의 어떤 취약점이나 불법 콘텐츠가 아니라, 정부가 통제할 수 없는 통신 수단이 존재한다는 사실 그 자체이기 때문이다. Hacker News에서 이 소식은 541포인트, 438개 댓글을 모으며 하루 종일 첫 화면에 머물렀고, 같은 주 GitHub 트렌딩에서 permissionlesstech/bitchat 저장소는 하루 2,300개 이상의 스타를 받으며 1위에 올랐다. 삭제 명령이 오히려 최고의 홍보가 된 셈이다.

이 사건은 “정부 대 빅테크”라는 익숙한 구도가 아니라, 더 근본적인 질문을 던진다. 인터넷 인프라를 우회하도록 설계된 소프트웨어를, 국가는 무엇으로 막을 수 있는가.

차단할 네트워크가 없다는 문제

Bitchat의 기술적 구조를 보면 인도 정부가 왜 GitHub이라는 우회로를 택했는지 이해할 수 있다. Bitchat은 2025년 여름 Dorsey의 주말 프로젝트로 시작된 앱으로, 인터넷 연결 없이 블루투스 저전력(BLE) 메시 네트워크만으로 메시지를 전달한다. 서버가 없고, 계정이 없고, 전화번호도 이메일도 요구하지 않는다. 메시지는 근처 기기들을 릴레이 노드 삼아 홉 단위로 전파된다.

이 구조는 국가의 전통적 차단 수단을 대부분 무력화한다. 통신사에 차단을 명령할 수 없다 — 통신사 망을 쓰지 않기 때문이다. DNS 차단도, IP 차단도 의미가 없다 — 접속할 서버가 없기 때문이다. 계정 정지도 불가능하다 — 계정이 없기 때문이다. 남는 것은 두 가지다. 앱스토어에서 앱을 내리게 하는 것, 그리고 소스 코드의 유통 자체를 막는 것. 인도 정부의 GitHub 삭제 명령은 후자다.

맥락도 중요하다. HN 스레드에서 여러 코멘터가 지적한 배경 — 요지를 정리하면 — 은 현재 인도 라다크 지역에서 기후 활동가 Sonam Wangchuk이 이끄는 대규모 비폭력 시위가 진행 중이고, 정부가 시위 확산을 막기 위해 지역 인터넷 차단을 반복해 왔다는 것이다. 인터넷 차단 시에도 동작하는 메시 채팅 앱은 이 통제 체계의 구멍이 된다. 한 코멘터는 인도의 통신 통제가 2008년 뭄바이 테러 이후 강화된 역사를 짚었다 — 당시 테러범들이 위성전화로 공격을 조율했고, 이후 인도는 대부분의 위성통신 기기를 금지했으며, 지금도 경유 여행객이 수하물에 Garmin inReach 같은 위성 메신저를 넣었다가 구금되는 사례가 보고된다는 것이다 (HN 코멘트 요지 발췌).

즉 이번 명령은 돌발 행동이 아니라, “모든 통신은 감청 가능해야 한다”는 인도 통신 정책의 일관된 연장선이다. 1990년대 후반 통신 업계 컨퍼런스에서 인도 정부 대표가 VoIP에 어떻게 대응할 것이냐는 질문에 정색하며 “허용하지 않겠다”라고 답했다는 일화가 HN 스레드에서 회자된 것도 같은 맥락이다 (HN 코멘트 요지 발췌). VoIP도, 위성전화도, 종단간 암호화 메신저도, 매번 “허용하지 않겠다”로 시작했다. 달라진 것은 상대다. 위성전화는 하드웨어라서 세관에서 압수할 수 있다. WhatsApp 같은 중앙형 메신저는 사업자를 압박할 수 있다. Bitchat은 GitHub에서 git clone 한 번이면 복제되는 오픈소스 코드이고, 사업자도 서버도 없다.

기술적으로 부연하면, Bitchat의 메시지는 종단간 암호화된 채 스토어 앤드 포워드 방식으로 전파된다. 수신자가 범위 밖에 있으면 중간 노드가 암호문을 보관했다가 재전달하고, 중간 노드는 자기가 나르는 메시지의 내용을 읽을 수 없다. 감청 포인트를 만들려면 프로토콜 자체를 바꿔야 하는데, 프로토콜은 공개된 코드다. 결국 정부가 개입할 수 있는 지점은 코드가 사람에게 도달하는 경로뿐이라는 결론이 나온다.

GitHub이라는 초크포인트, 그리고 그 한계

인도 정부의 선택은 역설적으로 정확한 판단이었다. 탈중앙 통신 앱의 아킬레스건은 통신 계층이 아니라 유통 계층이다. 아무리 서버리스 앱이라도 사용자가 앱을 얻는 경로 — 앱스토어, 그리고 개발이 이루어지는 코드 호스팅 — 는 중앙화되어 있다. Apple App Store와 Google Play는 각국 정부 요청에 따라 지역별로 앱을 내린 전례가 많고, GitHub 역시 국가별 법적 요청에 따라 저장소를 지역 차단해 온 투명성 보고서를 낸다. 국가 입장에서 GitHub은 몇 안 남은 유효한 초크포인트다.

그러나 이번 사례는 그 초크포인트의 유효기간이 끝나가고 있음을 보여준다. 삭제 명령이 보도된 지 하루 만에 일어난 일들을 시간순으로 보자. 첫째, HN 스레드가 폭발하면서 저장소 링크가 수십만 명에게 노출됐고, 저장소는 보도 시점에도 삭제되지 않은 채 살아 있었다. 둘째, 저장소가 GitHub 트렌딩 일간 1위에 올랐다 — 본 리포트 작성 시점 기준 하루 2,346 스타. 셋째, 7월 25일 Bitchat 프로젝트는 P2P 코드 호스팅 프로토콜인 Radicle에 미러를 공개했다. Radicle은 Git 저장소를 중앙 서버 없이 노드 간 복제로 유통하는 시스템으로, 이번에야말로 “삭제를 명령할 대상”이 사라진다.

Radicle 이전은 특히 기술적으로 흥미롭다. Radicle에서 저장소는 자기 인증(self-certifying) 식별자를 갖고, 노드들이 관심 있는 저장소를 서로 시드한다. BitTorrent가 파일 유통에서 했던 일을 Git 협업 전반으로 확장한 구조다. Bitchat — 그 자체가 인프라 없는 통신을 지향하는 프로젝트 — 가 자신의 유통 경로마저 인프라 없는 형태로 옮긴 것은, 프로젝트의 철학과 생존 전략이 일치한 드문 사례다.

이것이 교과서적인 스트라이샌드 효과다. 한 HN 코멘터의 지적은 뼈아프다 — 요지를 옮기면, 시위 이전까지 Bitchat의 인도 내 실사용자는 미미한 수준이었을 것이고, 정부가 무시했다면 아무도 몰랐을 앱을 정부 스스로 전국적 뉴스로 만들었다는 것이다. 검열 저항성을 설계 목표로 삼은 소프트웨어에게 검열 시도는 최고의 제품 검증이자 마케팅이다.

다만 낙관만 할 일은 아니다. 스타 수와 실사용은 다르다. BLE 메시는 밀도가 확보된 도심 시위 현장에서는 동작하지만, 노드가 성긴 지역에서는 메시지가 전달되지 않는다. 그리고 코드가 살아남는 것과 일반 사용자가 앱을 설치할 수 있는 것도 다른 문제다. Apple이 인도 App Store에서 앱을 내리면, 사이드로딩이 막힌 iPhone 사용자에게 GitHub의 소스 코드는 사실상 무용지물이다. 유통 계층의 검열 내성은 플랫폼의 개방성에 종속된다 — 이것은 같은 주 HN을 달군 Android의 온디바이스 ADB 제한 논란과도 이어지는 문제다.

코드 유통의 다음 국면

이 사건이 시사하는 바를 세 층위로 나눠 보자.

정부 측 시나리오. 인도의 시도가 실패로 보이더라도, 각국 정부가 코드 호스팅 플랫폼을 압박하는 빈도는 늘어날 것이다. 영국의 Online Safety Act, EU의 CSAM 스캔 논의, 그리고 여러 국가의 “합법적 감청” 요구는 모두 종단간 암호화·탈중앙 통신과 정면충돌하는 궤도에 있다. GitHub 같은 플랫폼은 국가별 차단이라는 절충으로 대응해 왔지만, 절충이 통하지 않는 사례가 쌓일수록 “코드 자체를 불법화”하는 입법 시도가 나올 수 있다. 1990년대 미국의 암호 수출 규제 — PGP 소스 코드를 책으로 인쇄해 수출한 것이 수정헌법 1조 논쟁이 된 — 의 재판이다.

GitHub의 대응 방식도 주목할 지점이다. GitHub은 정부의 법적 요청에 대해 전면 삭제가 아닌 해당 국가 내 지역 차단(geo-blocking)으로 대응하고, 그 내역을 github/gov-takedowns 저장소에 공개해 왔다. 인도 사용자에게는 안 보이지만 나머지 세계에는 보이는 절충이다. 그러나 이 절충은 양쪽 모두를 만족시키지 못한다. 정부 입장에서는 VPN 하나로 뚫리는 차단이고, 개발자 입장에서는 플랫폼이 국가 단위 검열의 집행자가 되는 선례다. 절충의 수명이 다해 갈수록 양측 모두 다음 수단을 찾게 된다.

개발자 측 시나리오. 검열 가능성이 있는 프로젝트의 유통 다변화가 표준 관행이 될 것이다. Bitchat의 Radicle 이전은 상징적이다. Git 자체가 분산 VCS임에도 우리는 지난 15년간 GitHub이라는 단일 허브에 개발 흐름을 집중시켜 왔다. 포크와 클론은 검열에 강하지만, 이슈·PR·릴리스 같은 협업 메타데이터는 플랫폼에 갇혀 있다. Radicle류의 P2P 포지가 그 메타데이터까지 복제 가능하게 만들면, “저장소 삭제 명령”이라는 개념 자체가 시대착오가 된다.

사용자 측 현실. 그럼에도 병목은 결국 단말이다. 메시 네트워킹 앱의 실효성은 설치 기반의 밀도에 비례하는데, 설치 경로는 두 앱스토어가 쥐고 있다. 정부가 학습한다면 다음 표적은 코드 호스팅이 아니라 앱스토어일 것이고, 그 전선에서는 플랫폼 사업자의 저항 유인이 훨씬 약하다. 검열 저항 통신의 미래는 암호학이 아니라 단말 개방성 규제 — EU DMA의 사이드로딩 의무화 같은 — 에 달려 있다는 역설이 성립한다.

결론

“정부는 코드의 유통을 막을 수 있는가”라는 리드 질문으로 돌아가자. 답은 조건부다. 단일 플랫폼에 갇힌 코드라면 막을 수 있다. 그러나 Bitchat 사례가 보여주듯, 삭제 명령이 공개되는 순간 코드는 관심과 함께 복제되어 플랫폼 바깥으로 흘러넘친다. 국가가 이길 수 있는 상대는 코드가 아니라 유통 채널이고, 유통 채널의 탈중앙화가 진행될수록 남는 초크포인트는 앱스토어와 단말뿐이다.

한 HN 코멘터의 문장이 이 사건의 요약으로 적절하다 — 요지를 옮기면, 국가의 안전이 시민 간의 사적 메시지를 전부 차단할 수 있는 능력에 의존한다면, 그 정부는 이미 시민에게 안전을 제공한다는 본연의 목표에 실패한 것이다. 감청 불가능한 통신 수단의 존재를 국가 위협으로 규정하는 순간, 모든 암호화 소프트웨어와 그 개발자가 잠재적 피고가 된다. 다음 삭제 명령이 어느 저장소에 도착할지, 그리고 그때 우리의 코드는 어디에 몇 개의 사본으로 존재할지 — 오픈소스에 관여하는 모두가 자기 일로 물어야 할 질문이다.


출처: