프라이버시를 원칙으로 삼는 사용자, 그리고 Solana 디지털 자산 커뮤니티 — 두 그룹 모두를 위해 만들었습니다. 스크린샷 차단, 진짜로 사라지는 메시지, 유출 방지 기능의 첨부파일 관리, 그리고 비수탁 지갑, 온체인 마켓플레이스, 수익 공유 채널까지 한 앱 안에서. Signal Protocol 로 암호화하고 키는 디바이스 안에만 두기에, 누구도 메시지를 볼 수 없습니다.
갓 내린 눈 위의 발자국은 다음 바람에 자취 없이 사라집니다.
당신의 메시지도, 파일도, 신원의 흔적도 그래야 합니다.
당신이 무료 인터넷 서비스를 이용하고 있다면, 당신이 그 서비스의 상품입니다. 사용자 데이터는 사용자가 통제해야 합니다.
주요 채팅 플랫폼은 계속 뚫립니다 — 2024 Discord 해킹, Telegram 메타데이터 협력 사례, 반복되는 클라우드 측 유출. 서버가 당신의 메시지를 읽을 수 있는 한, 결국 누군가는 읽습니다.
SnowChat 의 답 · 사용자의 메시지는 암호화되어 존재하며, 서버는 물론 누구도 읽을 수 없습니다Tensor 는 2024 년에 마켓플레이스에서 창작자 로열티를 제거했습니다 — 단 하나의 플랫폼 결정으로 창작자 경제 전체가 지워졌습니다. 무대의 소유자가 규칙도 소유합니다.
SnowChat 의 답 · 창작자 로열티는 Solana 위에서 강제됩니다. 플랫폼 정책이 아닌 온체인 규칙입니다남의 채팅 서버 위에 커뮤니티를 만들면 — 플랫폼이 당신을 추방하는 순간 전부 잃습니다. 채널이 자산입니다. 호스트가 그 자산을 압류해선 안 됩니다.
SnowChat 의 답 · 암호화된 채널과 이식 가능한 신원 — 당신의 커뮤니티는 당신과 함께 움직입니다암호학 용어를 사용자에게 들이대지 않습니다. 복잡함은 프로토콜 안에 두고, 보이는 건 채팅, 지갑, NFT 마켓플레이스뿐입니다. 아래는 production 빌드에서 수정 없이 캡쳐한 실제 화면입니다.
SnowChat 은 Signal Protocol 을 Pure Dart 로 직접 구현했습니다 — 플랫폼 채널 없음, 불투명한 네이티브 바이너리 없음. 모든 암호학 프리미티브가 검증 가능한 Dart 소스입니다.
Extended Triple Diffie-Hellman 으로 새 세션을 부트스트랩합니다. 서버에 등록된 사전 키 (prekey) 가 장기 비밀 키를 노출하지 않은 채 비동기 첫 접촉을 가능하게 합니다.
x25519 · ed25519
모든 메시지가 DH 래칫과 체인 래칫을 동시에 전진시킵니다. 미래 키가 유출돼도 과거 메시지는 복호되지 않고, 과거 키가 유출돼도 미래 메시지는 복호되지 않습니다.
HKDF · HMAC-SHA256
그룹 메시지는 한 번 암호화한 뒤 N 명에게 O(1) 로 팬아웃됩니다. SKDM (Sender Key Distribution Message) 이 그룹 메시지와 함께 인라인으로 흘러 키 분배 손실을 막습니다.
Signal Hybrid · 5세대 캐시
1:1 + 그룹 메시지 모두 DB 행에 발신자 식별자를 저장하지 않습니다. HMAC 으로 소유권 검증은 가능하지만, 운영자가 "누가 무엇을 보냈는지" 엿보는 것이 DB 레이어에서 차단됩니다.
senderId = NULL + senderHash
모든 파일은 업로드 전에 XSalsa20-Poly1305 로 봉인됩니다. 파일명, MIME 타입, 내용 전부 종단간 암호화 페이로드 안에 있고, 서버는 암호문 블롭과 크기만 볼 수 있습니다.
XSalsa20-Poly1305
로컬 Signal 세션 데이터베이스는 HKDF 로 파생된 키로 봉인되어 flutter_secure_storage (iOS 키체인 / Android Keystore) 안에 있습니다. 평문 폴백은 영구 차단됩니다.
SecretBox · Keychain
Android 의 FLAG_SECURE 와 iOS 의 백그라운드 스냅샷 차단이 기본으로 켜져 있습니다. 비공개 데이터가 표시되는 모든 화면에서 스크린샷, 화면 녹화, iOS 앱 전환기 썸네일이 모두 검은 화면으로 표시됩니다.
| 항목 | 서버가 아는 것 | 서버가 모르는 것 |
|---|---|---|
| 텍스트 메시지 | 암호문만 — 복호 불가 | 평문 내용 |
| 파일 본문 | XSalsa20-Poly1305 암호문 블롭 | 원본 파일, 파일명, MIME |
| 파일 복호 키 | — | fileKey 는 E2EE 페이로드 안 |
| 세션 저장소 | — | SecretBox 로 디스크에 봉인 |
| 사라지는 메시지 TTL | 버킷 힌트만 (예: <5m) | 정밀한 만료 시각 |
| Sealed sender ID (1:1, 그룹) | HMAC 소유권 토큰만 | DB 행의 평문 발신자 userId |
| 그룹 이름 | 암호문 블롭 (Phase 8.8 GMK) | 평문 그룹 이름 |
암호학은 시작일 뿐, 끝이 아닙니다. SnowChat 은 사용자 통제 삭제, OS 레벨 캡쳐 차단, 플랫폼 레벨 포렌식 저항을 Signal Protocol 위에 쌓아올립니다 — 기기를 잃어버려도, 스크린샷을 찍으려 해도, 수신자가 파일을 빼내려 해도, 메시지는 사라집니다.
대화방별 TTL (5분, 1시간, 1일, 7일, 커스텀). 양쪽이 같은 시계로 동시 삭제합니다 — 서버는 거친 버킷 힌트만 보고 정밀한 만료 시각은 절대 모릅니다. "사라진다" 는 UI 에서 숨겨지는 것이 아니라 디스크에서 진짜 지워지는 것입니다.
버킷 TTL · 양측 동기 삭제
사라지는 대화방에서 보낸 파일은 다운로드, 갤러리 저장, 공유, 전달이 모두 불가능합니다. 뷰어는 SnowChat 프로세스 안에서 렌더링하고 TTL 만료 시 복호한 데이터를 즉시 삭제합니다. PDF 도 외부 앱이 아닌 인앱 PDFKit 뷰어로 봅니다.
인앱 뷰어 · 저장/공유 차단
기본 활성화. Android FLAG_SECURE 가 수동 스크린샷과 최근 앱 썸네일 둘 다 차단합니다. iOS 의 백그라운드 스냅샷 차단이 앱 전환기에서 채팅을 검은 화면으로 렌더링합니다. 설정 화면에서도 사용자에게 표시 — 숨겨진 토글 없음.
FLAG_SECURE · iOS 스냅샷 차단
서버는 발신자 식별자를 행 레벨에 저장하지 않습니다. senderId = NULL, 소유권은 HMAC 으로 검증합니다. 운영자가 "누가 무엇을 보냈는지" 엿보는 것이 DB 레이어에서 차단됩니다. 완전한 포렌식 delivery-token 전환은 로드맵에 있습니다.
senderId NULL · HMAC 소유권
전화번호 없음, 이메일 없음, PII 없음. 당신의 신원은 로컬에서 파생된 BIP-39 24 단어입니다 — 어떤 기기에서도 복원 가능하고 어떤 계정 디렉토리에서도 추적 불가능합니다. 영장이 와도 서버가 넘길 자료가 없습니다.
BIP-39 · 24 단어 · PII 제로
Android allowBackup="false" 와 fullBackupContent="false" 로 Google Drive 백업을 완전히 차단합니다. iOS 키체인 항목은 동기화 불가로 표시. 기기를 잃으면 메시지를 잃습니다. 복구 문구를 잃으면 지갑을 잃습니다. 다른 사람의 서버 어디에도 사본이 없습니다.
Android 백업 off · iOS 키체인 로컬
SnowChat 의 채널은 단순한 그룹 채팅이 아니라 — 만들고, 운영하고, 수익까지 거두는 커뮤니티입니다. 멤버들은 Sender Key 그룹 암호화로 모이고 (O(1) 팬아웃, 서버는 암호문만 봄), 암호학적으로 서명된 역할로 운영하며 (플랫폼이 임의로 부여하거나 회수 불가), 온체인 마켓플레이스 수익을 함께 나눕니다 (수수료 50% 가 채널로 환원). 플랫폼은 중계자일 뿐이고, 키는 멤버에게 있습니다.
그룹 메시지를 한 번만 암호화하면 서버가 N 명에게 O(1) 로 배달합니다. Signal Hybrid 패턴이 새 멤버 가입 중 키 분배 손실을 막기 위해 SKDM (Sender Key Distribution Message) 을 인라인으로 함께 보냅니다.
Sender Key · SKDM 인라인
그룹의 표시 이름은 멤버들끼리만 공유하는 Group Metadata Key (GMK) 로 봉인됩니다. 서버는 암호문 블롭만 저장 — 운영자는 encryptedName: xKj9... 를 볼 뿐 "TEST CHANNEL" 같은 평문은 보지 못합니다.
Phase 8.8 · GMK 회전
소유자, 모더레이터, 멤버. 역할 전환은 기존 소유자의 서명으로 발행되고 암호학적으로 강제됩니다 — 서버는 역할을 부여하거나 회수할 수 없고 단지 서명된 전환을 중계할 뿐입니다. 모더레이션 권한은 호스트가 아닌 커뮤니티에 있습니다.
Ed25519 서명 역할
NFT 매물을 호스팅하는 채널은 마켓플레이스 수수료의 50% 를 가져갑니다 — 플랫폼 정책이 아니라 온체인 PDA 프로그램으로 분배됩니다. 플랫폼 소유자가 바뀌어도 살아남는 창작자 경제 — 규칙이 Solana 위에 있기 때문입니다.
PDA 수수료 분배 · 50/50
SnowChat 은 복구 문구에서 SLIP-0010 으로 파생된 비수탁 Solana 지갑을 함께 제공합니다 — 하드웨어 지갑이 사용하는 것과 같은 계층적 결정성 (HD) 표준입니다. 송금, 수신, 거래 모두 채팅 안에서 처리합니다.
SOL 이나 SPL 토큰을 채팅 안에서 바로 보냅니다. 트랜잭션은 로컬에서 서명되며 — 서버는 비밀 키를 본 적이 없습니다.
SLIP-0010 · BigInt lamports
NFT 등록과 거래가 PDA 기반 온체인 프로그램으로 정산됩니다 (Tensor 스타일 escrow → PDA 리팩터링). 오프체인 수탁자 없음 — 프로토콜 자체가 스왑을 강제합니다.
Solana PDA · Anchor
마켓플레이스 수수료의 50% 가 매물을 호스팅한 커뮤니티 채널로 돌아갑니다. 플랫폼이 폐지할 수 있는 정책이 아니라 프로그램에 박힌 규칙입니다.
온체인 규칙 · 50/50 분배
전화번호 없음, 이메일 없음, PII 없음. 당신의 신원은 24 단어 복구 문구입니다 — 어떤 기기에서도 복원 가능하고 어떤 계정 디렉토리에서도 추적 불가능합니다.
BIP-39 · 24 단어
음성 통화는 WebRTC peer-to-peer 와 네이티브 CallKit (iOS) / ConnectionService (Android) 통합으로 동작합니다. 시그널링은 봉인된 ephemeral 채널을 사용하고, 오디오 스트림은 기기 간 SRTP 입니다. Cloudflare TURN 릴레이는 폴백 전용입니다.
iOS 의 PushKit + CallKit 으로 화면이 잠긴 상태에서도 시스템 UI 를 통해 수신 벨이 울립니다. Android 에서는 Self-Managed Telecom ConnectionService 가 키가드를 우회해 동일한 경험을 제공합니다.
통화 초대, 응답, ICE 후보가 모두 메시지와 동일한 Sealed Sender 봉투를 통해 흐릅니다. 서버는 DB 행 레벨에서 누가 누구에게 거는지 보지 못합니다.
탭 한 번에 WAV (PCM 16 kHz) 로 녹음되고 텍스트 / 파일과 같은 방식으로 종단간 암호화됩니다. 채팅 안에서 바로 재생되고, 사라지는 음성에는 TTL 카운트다운이 표시됩니다.
SnowChat 은 단일 Docker Compose 스택 — 서버, Postgres, Redis 로 출하됩니다. 조직 경계 안에 배포하면 메신저가 그 경계를 벗어나지 않습니다. 정부 기관, 규제 산업, 보안 의식이 높은 기업 — 데이터는 조직의 하드웨어 위에서, 조직의 감사 아래에서, 조직의 브랜드로 살아갑니다.
전체 SnowChat 스택을 조직의 Docker / Kubernetes / 베어메탈 위에 배포합니다. 서버, Postgres, Redis 모두 조직 네트워크 안에 격리. 어떤 데이터도 조직 경계 밖으로 나가지 않습니다. air-gapped 환경도 지원합니다.
Docker Compose · K8s manifest 제공
도메인, 로고, 앱 아이콘, 인앱 문구, 앱 스토어 등록까지. SnowChat 을 조직의 공식 메신저로 리브랜드합니다. AGPL-3.0 클라이언트를 포크해서 직접 출시하거나, 빌드 파이프라인까지 저희가 운영해드립니다.
맞춤 도메인 · 맞춤 빌드
전체 소스 접근 (클라이언트는 AGPL-3.0 으로 GitHub 에 이미 공개, 서버는 온프레미스용 별도 라이선스). 내부 감사 문서, 보안 검토 지원, 맞춤 SLA 제공. 내부 암호학 감사는 이미 3 회 통과한 상태.
소스 공개 · 맞춤 SLA
Android: APK 직접 다운로드 (V1 production 서명). iOS: TestFlight 베타 — 공개 TestFlight 준비 중이므로 그동안은 이메일로 액세스 요청.
APK 직접 설치. 모던 Android (Galaxy S10+, Pixel 3+, 동급). 소스 브라우저에 대해 "출처를 알 수 없는 앱 설치 허용" 필요. V1 production 키스토어로 서명 — 이전 V1 빌드에서 자연 업그레이드 설치, 그 이전 키로 서명된 빌드는 먼저 제거 필요.
GitHub Releases 에서 호스팅 · SHA-256 · 0539e57442aa23be011c5f4c2014be6e99930c4746b0a56598d0c68242cd52a1
공개 TestFlight 는 준비 중입니다. 지금 비공개 베타에 들어오려면 아래 이메일로 연락 주세요 — 테스터로 추가할 Apple ID (이메일) 를 함께 적어주시면 됩니다. 초대는 보통 24시간 이내 발송됩니다.
✓ TestFlight 은 앱이 정식 출시되기 전에 미리 써보게 해주는 Apple 공식 앱입니다. 무료이고 안전합니다.
✓ V1 production 키로 서명되어 있습니다. 기존 사용자는 그 자리에서 업그레이드 — 데이터 손실 없습니다.