bitchat이란?

bitchat은 탈중앙화 P2P 메신저입니다. 가장 멋진 점은 인터넷이 전혀 필요 없다는 것이에요. 블루투스 저전력(BLE) Mesh 네트워크를 통해 주변 기기들이 자동으로 네트워크를 구성하고 메시지를 여러 차례 중계하면서 진정한 오프라인 통신을 가능하게 합니다.

프로젝트는 현재 GitHub에서 28,000개 이상의 Star를 받았고, 최근 가장 핫한 오픈소스 통신 프로젝트 중 하나입니다. Unlicense(퍼블릭 도메인) 라이선스를 채택해 완전히 자유롭게 사용할 수 있습니다.

핵심 기능 일람

기능 설명
🔌 듀얼 전송 아키텍처 블루투스 Mesh(로컬 오프라인) + Nostr 프로토콜(인터넷 글로벌 통신)
🔒 엔드투엔드 암호화 블루투스는 Noise Protocol, Nostr은 NIP-17
📡 자동 네트워킹 기기가 자동으로 발견되고 메시지가 다중 홉으로 중계(최대 7홉)
🕵️ 완전한 익명성 계정 불필요, 전화번호 불필요, 영구 식별자 없음
🌍 지리 채널 geohash 기반 위치 기반 채팅방
🚨 긴급 삭제 화면 세 번 탭하면 모든 데이터 즉시 삭제
📱 전 플랫폼 iOS + macOS 네이티브 지원

기존 채팅 앱과 뭐가 다를까?

위챗/Telegram/Signal:
  사용자 → 인터넷 → 중앙 서버 → 인터넷 → 사용자

bitchat(블루투스 모드):
  기기A → 기기B → 기기C → 기기D(다중 홉 Mesh, 인터넷 불필요)

bitchat(Nostr 모드):
  사용자 → Nostr 릴레이 네트워크(탈중앙화) → 사용자

핵심 차이점: 기지국이 나가떨어지거나, 네트워크가 마비되거나, 깊은 산속에 있어도 bitchat은 그대로 작동합니다.

기술 아키텍처 깊이 파헤치기

bitchat의 정교함은 듀얼 전송 하이브리드 아키텍처에 있습니다 — 블루투스가 로컬 통신을, Nostr이 글로벌 연결을 담당하며 두 가지는 매끄럽게 전환됩니다.

블루투스 Mesh 네트워크층

블루투스 Mesh는 bitchat의 핵심 혁신입니다. Bluetooth Low Energy(BLE)를 활용해 기기 간 직접 통신을 구현합니다:

  • 자동 발견: 기기가 범위 내에 들어오면 주변 노드를 자동으로 식별
  • 다중 홉 중계: 메시지가 기기 간에 여러 번 점프할 수 있어 최대 7홉까지, 통신 범위를 대폭 확장
  • Noise Protocol 암호화: 엔드투엔드 암호화 + 순방향 비밀성, 키가 유출되어도 과거 메시지를 복호화할 수 없음
  • 바이너리 프로토콜: BLE 대역폭 제한에 맞춰 최적화된 컴팩트한 데이터 패킷 포맷
  • 적응형 전원 관리: 스마트 듀티 사이클 조절로 배터리 수명 연장

Nostr 프로토콜층

블루투스를 사용할 수 없을 때 bitchat은 자동으로 Nostr 프로토콜로 전환해 인터넷 통신을 수행합니다:

  • 290개 이상의 글로벌 릴레이 노드: 분산형 네트워크로 신뢰성 보장
  • 지리 위치 채널: geohash 좌표 기반 로컬 커뮤니티 채팅
  • NIP-17 암호화: Gift-wrapped 다이렉트 메시지, 인터넷에서의 프라이버시 보호
  • 임시 키: 각 geohash 영역마다 완전히 새로운 암호화 신원 사용

스마트 메시지 라우팅

bitchat의 메시지 라우팅 전략은 꽤 똑똑해요:

우선순위 1: 블루투스 직연결(가장 빠르고 가장 프라이빗)
    ↓ 사용 불가
우선순위 2: Nostr 릴레이(글로벌 커버리지)
    ↓ 사용 불가
우선순위 3: 메시지 큐(연결 복구 후 자동 전송 대기)

설치 및 빠른 시작

iOS / macOS 설치

bitchat은 Apple 생태계 네이티브 앱으로, App Store에서 바로 다운로드할 수 있습니다:

App Store에서 "Bitchat Mesh" 검색 후 설치

소스코드에서 빌드(개발자용)

직접 컴파일하거나 개발에 참여하고 싶다면:

BASH
# 레포지토리 클론
git clone https://github.com/permissionlesstech/bitchat.git
cd bitchat

# macOS 사용자 원클릭 실행
brew install just
just run

# 또는 Xcode로 열기
open bitchat.xcodeproj

소스코드에서 빌드할 때 몇 가지 설정 단계가 필요합니다:

BASH
# 1. 로컬 설정 템플릿 복사
cp Configs/Local.xcconfig.example Configs/Local.xcconfig

# 2. Local.xcconfig에 Developer Team ID 추가
# 3. Entitlements 수동 업데이트:
#    group.chat.bitchat을 group.<당신의TeamID>로 교체

첫 사용

bitchat을 열면 IRC 스타일 터미널 인터페이스가 나타납니다 — 이게 바로 이 앱의 특징이에요:

╔══════════════════════════════════╗
║         bitchat v2.0             ║
║   bluetooth mesh chat            ║
╠══════════════════════════════════╣
║ [mesh] mesh 네트워크에 오신 것을  ║
║        환영합니다!                ║
║ [mesh] 주변에서 3개의 기기가      ║
║        발견되었습니다             ║
║                                  ║
║ <alice> 嘿, 있는 사람?            ║
║ <bob>   있어요! 신호 좋아요        ║
║ <you>   테스트 메시지, 오프라인    ║
║        에서도 전송 가능           ║
║                                  ║
║ > /help 모든 명령어 보기          ║
╚══════════════════════════════════╝

IRC 스타일 명령어 빠른 참고

bitchat은 클래식 IRC 명령어 스타일을 채택했어요. 오래된 인터넷 사용자라면 아주 익숙할 거예요:

BASH
# 기본 명령어
/msg <사용자명> <메시지>    # 다이렉트 메시지 전송
/who                        # 온라인 사용자 확인
/slap <사용자명>            # 클래식 IRC 인터랙션(때려주기)
/help                       # 사용 가능한 모든 명령어 보기

# 채널 및 지리
/join <채널명>              # 채널 참가
/geo                        # 현재 지리 채널 확인
/location <정밀도>          # 지리 채널 정밀도 설정
                        #   block      = 블록 단위
                        #   neighborhood = 동네 단위
                        #   city       = 도시 단위
                        #   province   = 성/주 단위
                        #   region     = 국가/광역 단위

# 보안
/wipe                       # 모든 데이터 긴급 삭제(세 번 탭으로도 실행 가능)

고급 활용법

지리 위치 채널 설정

bitchat의 지리 채널은 킬러 기능입니다 — 같은 지역에 있는 bitchat 사용자와 자동으로 대화할 수 있어요. 서로 친구를 추가할 필요 없이 말이죠:

BASH
# 도시 단위로 설정(주변 수 km 내 사람들이 모두 볼 수 있음)
/location city

# 블록 단위로 설정(아주 가까운 사람들만)
/location block

# 현재 속한 지리 채널 확인
/geo

지리 채널은 geohash 인코딩을 기반으로 하며, 정밀도는 거칠게에서 세밀하게:

정밀도 geohash 길이 커버리지 범위 사용 시나리오
region 2자 국가 단위 전국 토론
province 4자 성/주 단위 성/省内 교류
city 5자 도시 단위 도시 내 커뮤니티
neighborhood 6자 동네 단위 이웃 간 교류
block 7자 블록 단위 대면 활동

다이렉트 메시지 암호화 원리

bitchat의 다이렉트 메시지 암호화는 전송 방식에 따라 자동으로 최적의 방식을 선택합니다:

블루투스 모드(Noise Protocol):

1. 양측이 BLE 연결 설정
2. Noise Protocol 핸드셰이크 실행
3. 세션 키 생성(순방향 비밀성)
4. 모든 메시지 엔드투엔드 암호화 전송

Nostr 모드(NIP-17 Gift Wrap):

1. 상대방 Nostr 공개 키 획득
2. 메시지를 상대방 공개 키로 암호화
3. 외층에 임시 키로 다시 포장(gift wrap)
4. Nostr 릴레이를 통해 전송, 릴레이는 내용 복호화 불가

긴급 보안 메커니즘

민감한 시나리오(예: 시위 활동, 재난 현장)에서 bitchat은 빠른 삭제 기능을 제공합니다:

  • 세 번 탭 삭제: 화면을 연속으로 세 번 탭하면 모든 채팅 데이터, 키, 신원 정보가 순식간에 삭제됩니다
  • 영구 식별자 없음: 매 연결마다 임시 신원을 사용하며 흔적을 남기지 않습니다
  • 로컬 저장: 모든 데이터는 기기 로컬에만 저장되며 서버에 어떤 것도 업로드하지 않습니다

실전 시나리오

시나리오 1: 야외 활동 / 등산 트레킹

휴대전화 신호가 없는 산에서 bitchat을 사용하면 팀원 간 통신을 유지할 수 있습니다:

BASH
# 모든 팀원이 bitchat 실행
# 주변 기기를 자동으로 발견하고 Mesh 네트워크 구성
# 다중 홉 중계로 팀원이 흩어져도 통신 가능

# 동일 도시 채널 설정으로 근처 사람들과 연락
/location city

시나리오 2: 대형 행사 / 뮤직 페스티벌

콘서트나 뮤직 페스티벌 현장에서는 기지국이 자주 과부하 상태가 되지만, bitchat은 전혀 영향을 받지 않습니다:

BASH
# 블록 단위 채널 설정
/location block

# 근처 사람들과 채팅, 위치 공유
/msg friend 나 무대 왼쪽에 있어, 찾았어?

시나리오 3: 재난 응급 통신

지진, 홍수 등 재해로 기지국이 마비되었을 때 bitchat은 생명을 구하는 도구가 될 수 있습니다:

BASH
# 완전 오프라인 작동, 어떤 인프라도 필요 없음
# 다중 홉 Mesh로 메시지를 더 멀리 전달
# 엔드투엔드 암호화로 구조 요청 정보 프라이버시 보호

시나리오 4: 프라이버시 민감 시나리오

감시당하기 싫은 통신 수요:

BASH
# 완전 익명, 전화번호 등록 불필요
# 블루투스 모드는 어떤 서버도 거치지 않음
# 세 번 탭 삭제, 증거 신속 제거

다른 탈중앙화 통신 도구와 비교

기능 bitchat Briar Bridgefy Meshtastic
블루투스 Mesh ✅ ✅ ✅ ✅(LoRa)
인터넷 폴백 ✅ Nostr ✅ Tor ❌ ❌
엔드투엔드 암호화 ✅ ✅ ✅ ✅
익명, 등록 불필요 ✅ ✅ ❌ ✅
iOS 지원 ✅ ❌ ✅ ❌
지리 채널 ✅ ❌ ❌ ❌
오픈소스 프로토콜 Unlicense GPL 부분 오픈소스 GPL
GitHub Stars 28K+ 5K+ 3K+ 4K+

bitchat의 고유한 장점은 블루투스 + Nostr 듀얼 모드 아키텍처와 지리 채널 기능으로, 이는 동종 도구 중에서도 유일무이합니다.

요약

bitchat은 정교하게 설계된 탈중앙화 통신 도구로, 이렇게 증명합니다: 인프라가 무너진 상황에서도 우리는 여전히 연결될 수 있다.

누구에게 적합할까? - 🏕️ 야외 애호가(등산, 캠핑, 탐험) - 🎪 대형 행사 참가자(뮤직 페스티벌, 전시회, 스포츠 이벤트) - 🔐 프라이버시 지향 매니아(완전한 익명 통신 추구) - 🆘 응급 통신 수요자(재난 구조, 응급 준비) - 👨‍💻 개발자(Mesh 네트워크와 탈중앙화 프로토콜에 관심 있는 분)

프로젝트 주소: github.com/permissionlesstech/bitchat

다운로드: iOS/macOS에서 App Store에서 "Bitchat Mesh" 검색

모든 통신이 중앙 서버에 의존하는 시대에, bitchat은 우리에게 상기시킵니다: 진정한 통신의 자유는 누구의 허가도 필요 없다는 것을.