
TorChat - Tor 네트워크를 통한 안전하고 비공개적이며 익명의 P2P 채팅
Tor 네트워크를 통한 안전하고 비공개적인 익명 피어투피어 채팅.
TorChat은 정말 멋집니다. 다른 도구에는 없는 멋진 기능들이 있습니다.
영구 주소를 사용하는 표준 Tor 채팅 시스템과 달리, 이 구현은 완전히 일시적입니다.
제로 영속성: 서버는 임시 히든 서비스를 생성합니다. 세션이 종료되면 .onion 주소는 삭제되며 복구하거나 재사용할 수 없습니다.
하이브리드 아키텍처: Tor 서비스를 호스팅하는 것이 사용자에게 보통 가장 어려운 부분이라는 점을 발견했습니다. 이를 해결하기 위해 서버 모드는 설정이 전혀 필요 없는 임베디드 Tor 프로세스를 사용합니다. 클라이언트 모드는 여러분이 이미 가지고 있을 Tor 인스턴스(예: Tor 브라우저)에 연결하기만 하면 됩니다. 즉, 시스템 Tor를 사용합니다.
간단한 보안: 암호화를 위해 ChaCha20-Poly1305를 선택했습니다. 대부분의 하드웨어에서 AES보다 빠르며 내장 인증을 제공하므로, 전송 중 메시지의 단 한 비트라도 변조되면 앱이 이를 거부합니다.
네, 🔏으로 설계되었습니다.
참고: ChaCha20-Poly1305는 ChaCha20 스트림 암호와 Poly1305 메시지 인증 코드를 결합한 AEAD(부가 데이터 인증 암호화) 알고리즘입니다.[1] 하드웨어 가속이 없을 때 소프트웨어 성능이 빠르며, 일반적으로 AES-GCM보다 빠릅니다.[1]: §B
출처: https://en.wikipedia.org/wiki/ChaCha20-Poly1305 https://protonvpn.com/blog/chacha20
자동 설정: 네트워크 전문가가 될 필요가 없습니다. 서버가 Tor 핸드셰이크를 처리하고 비밀 .onion 주소를 자동으로 생성해 줍니다.
자동 삭제 초대장: 초대장에는 내장 타이머가 있습니다. 링크는 10분 동안만 유효하며, 그때까지 아무도 참여하지 않으면 "문"은 영원히 잠깁니다.
QR 코드 공유: 56자리 onion 주소(오타 내기 쉬움)를 직접 입력하는 대신, 호스트는 게스트가 스캔할 QR 코드만 보여주면 됩니다.
양방향 대화(전이중 모드): Python 스레드를 사용하여 양쪽 모두 상대방이 끝낼 때까지 기다리지 않고 동시에 메시지를 입력하고 수신할 수 있습니다.
완전 삭제: 이 도구는 일시적입니다. 즉, 어떤 흔적도 남기지 않습니다. 로그도, 기록도, 저장된 파일도 없습니다. 채팅을 닫으면 주소와 메시지는 애초에 없었던 것처럼 사라집니다.
TorChat은 최상의 사용자 경험을 위해 Tor 아키텍처를 사용합니다:
의존성 제로 - 임베디드 Tor 사용
AppImage를 실행하기만 하면 됩니다. AppImage에 대해 필요한 설정은 없습니다.
./TorChat-x86_64.AppImage
# Choose: [1] Host chat (Server)
Tor 필요 - 시스템 Tor 또는 Tor 브라우저 사용
대부분의 사람들은 이미 이걸 가지고 있습니다 아마도요.
옵션 A: Tor 브라우저 사용 (가장 쉬움)
# 1. First you need to open the Tor Browser because it gives you a SOCKS proxy that works on port 9150 which's the Tor Browser.
# 2. Run TorChat client
./TorChat-x86_64.AppImage
# Choose: [2] Connect to peer (Client)
옵션 B: 시스템 Tor 사용
# 1. Install and start system Tor
sudo apt install tor [ debian ]
sudo pacman -S tor [ arch ]
To start the tor service you need to use the following command:
sudo systemctl start tor.
This will get the tor service up and running. You have to use the tor service if you want to use tor. The command sudo
systemctl start tor
is what you should type to start tor.
# 2. Run TorChat client
./TorChat-x86_64.AppImage
# Choose: [2] Connect to peer (Client)
사용자 1 (호스트):
chmod +x TorChat-x86_64.AppImage
./TorChat-x86_64.AppImage # Choose [1] Server
# Share the invite URL/QR code
사용자 2 (참여):
# Open Tor Browser first, then:
./TorChat-x86_64.AppImage # Choose [2] Client
# Paste the invite URL
자신이 멋진 개발자라고 생각한다면, 바로 당신을 위한 것입니다.
Python 3.7+
시스템 Tor (클라이언트 모드 전용)
git clone https://github.com/blackXploit-404/torchat.git
cd torchat
python -m venv torchat
source torchat/bin/activate
pip install -r requirements.txt
서버 (호스트):
python3 server.py
# This uses embedded Tor, so no setup is needed
클라이언트 (참여):
# Start system Tor first
python3 client.py
암호화 흐름:
공유 비밀은 SHA256으로 해시되어 32바이트 키를 생성합니다.
모든 메시지에 대해 12바이트 무작위 nonce가 생성됩니다.
메시지가 암호화되고 nonce가 데이터 앞에 추가됩니다.
수신자는 처음 12바이트를 분리하여 복호화 nonce로 사용합니다.
네트워킹:
서버: 127.0.0.1:5000에 바인딩되며, Tor가 이를 공개 .onion 주소로 매핑합니다.
클라이언트: SOCKS5 프로토콜을 사용하여 TCP 연결을 Tor 회로를 통해 터널링합니다.
┌─────────────────┐ ┌─────────────────┐
│ SERVER MODE │ │ CLIENT MODE │
├─────────────────┤ ├─────────────────┤
│ Embedded Tor │ │ System Tor │
│ - Tor process │◄──►│ - SOCKS proxy │
│ - Hidden service│ │ - Port 9050/9150│
│ - No dependencies│ │ - Existing Tor │
└─────────────────┘ └─────────────────┘
SENDER SIDE:
User Message: "Hello World"
│
▼
┌─────────────────────┐
│ ChaCha20-Poly1305 │
│ Encryption Engine │
├─────────────────────┤
│ Key: SHA256(secret) │
│ Nonce: 12 random │
│ Plaintext: message │
└─────────────────────┘
│
▼
Encrypted Bytes: [nonce + ciphertext + auth_tag]
│
▼
┌─────────────────────┐
│ Tor Network │
│ (3-hop anonymity) │
└─────────────────────┘
RECEIVER SIDE:
I got some encrypted bytes. These encrypted bytes were received. The encrypted bytes are now here.
│
▼
┌─────────────────────┐
│ ChaCha20-Poly1305 │
│ Decryption Engine │
├─────────────────────┤
│ Key: SHA256(secret) │
│ Nonce: extract │
│ Verify: auth_tag │
└─────────────────────┘
│
▼
Decrypted Message: "Hello World"
HOST TOR NETWORK CLIENT
┌─────────┐ ┌───┐ ┌───┐ ┌───┐ ┌─────────┐
│Embedded │───────────▶│ A │───▶│ B │───▶ │ C │◄─────│ System|│
│ Tor │ │ │ │ │ │ │ │ Tor │
└─────────┘ └───┘ └───┘ └───┘ └─────────┘
│ Entry Middle Exit │
│ Node Node Node │
▼ ▼
.onion Address 3-Hop Encrypted Circuit SOCKS5 Proxy
공유 비밀. 이 방법은 이미 설정된 비밀번호를 사용하며 현재로서는 사용해도 괜찮습니다.
사용자 인증 없음. 초대 URL을 얻은 사람은 누구나 참여할 수 있습니다.
메시지 기록 없음. 메시지는 어디에도 저장되지 않습니다. 즉, 메시지를 보내도 어디에도 보관되지 않습니다. 메시지가 저장되지 않으므로 나중에 다시 볼 수 없습니다. 이것이 시스템이 메시지를 처리하는 방식입니다. 메시지는 어떤 저장 공간에도 보관되지 않고 그냥 사라집니다.
초대장 만료 - 보안을 위해 초대장은 만료됩니다 (기본 10분)
# Embedded Tor (Server)
DataDirectory /tmp/tor_chat_xyz/
HiddenServiceDir /tmp/tor_chat_xyz/hidden_service/
HiddenServicePort 5000 127.0.0.1:5000
SocksPort 0 # Disabled for server
# System Tor (Client)
SocksPort 9050
# Default system configuration
"Address not found": Tor 네트워크가 새 .onion 디스크립터를 게시할 때까지 30~60초 기다리라는 안내를 추가했습니다.
"Connection timed out": Tor 서비스 상태와 네트워크 연결을 확인하라고 안내합니다.
sudo systemctl status tor
지금은 이것보다 더 많은 기능이 있습니다

TorChat은 합법적인 프라이버시 강화 커뮤니케이션을 위해 제작되었습니다. 책임감 있게 사용하고 현지 법률을 준수하세요.
이 프로젝트는 MIT 라이선스로 배포됩니다. 자세한 내용은 LICENSE를 참조하세요.
TorChat을 더 좋게 만들고 싶으신가요? 기여를 환영합니다!