Privacy Tools Guide

Cwtch uses decentralized peer-to-peer Tor-based routing to hide metadata (who talks to whom, when), while Signal uses centralized servers but provides strong encryption and is more user-friendly. Signal is better for most users needing reliable encrypted messaging, while Cwtch suits users with advanced threat models who need metadata protection against sophisticated adversaries. Cwtch offers stronger anonymity guarantees but requires technical skill to operate correctly and has a smaller user base.

Fundamental Architectural Differences

Signal operates as a centralized messaging service with end-to-end encryption. While Signal’s encryption protocol—used by WhatsApp, Facebook Messenger, and other platforms—provides strong content confidentiality, the service maintains centralized infrastructure. This centralization creates metadata patterns that sophisticated adversaries can analyze.

Cwtch takes a fundamentally different approach by eliminating centralized servers entirely. The application builds on Tor’s onion routing to create a peer-to-peer network where no single point of failure exists. Each Cwtch installation functions simultaneously as a client and relay node, participating in message forwarding without knowing message content or ultimate destination.

Network Topology Comparison

Signal Architecture:
User A <-> Signal Server <-> User B
      |           |
      v           v
  Centralized infrastructure
  Metadata collection possible

Cwtch Architecture:
User A <-> Tor Node 1 <-> Tor Node N <-> User B
     |              |              |
     v              v              v
  Distributed peer-to-peer
  No central metadata collection point

Metadata Resistance in Practice

Metadata—the information about who communicates with whom, when, and how often—often reveals more than message content itself. Intelligence agencies and sophisticated adversaries frequently target metadata rather than encrypted payloads.

Signal’s Metadata Collection

Signal collects and stores:

While Signal has implemented features like Sealed Sender (reducing some metadata exposure) and has minimized retained data, the architecture still involves centralized servers that observe connection patterns.

Cwtch’s Metadata Minimization

Cwtch addresses metadata through several mechanisms:

No Identity Requirements: Cwtch does not require phone numbers, email addresses, or usernames. Users identify each other through Tor hidden service addresses—cryptographic identifiers that reveal no personal information.

Onion Routing: Every message traverses multiple Tor nodes, each只知道下一跳和上一跳, preventing any single node from knowing both sender and receiver.

Continuous Mix: Cwtch implements continuous mixing of traffic, introducing dummy messages and varying timing to prevent traffic analysis.

Encryption Implementation

Both Signal and Cwtch implement strong end-to-end encryption, but their threat models differ:

Signal Protocol

Signal uses the Double Ratchet algorithm with:

The protocol provides forward secrecy and future secrecy (break-in recovery). However, the Signal server can observe:

Cwtch Encryption

Cwtch implements a modified Double Ratchet optimized for peer-to-peer environments:

Practical Deployment Considerations

For developers evaluating these platforms, several practical factors warrant consideration:

Signal Advantages

Cwtch Advantages

Code Example: Message Flow Comparison

Understanding the technical differences becomes clearer through message flow comparison:

Signal Message Flow:

1. Alice sends message to Signal server
2. Signal server determines Bob's online status
3. Signal server delivers to Bob (or stores for offline delivery)
4. Signal server knows Alice messaged Bob at timestamp T

Cwtch Message Flow:

1. Alice's client encrypts message for Bob's .onion address
2. Message enters Tor network at Alice's Tor daemon
3. Multiple Tor relays forward encrypted packets
4. Bob's Tor daemon receives and decrypts
5. No server ever sees sender-receiver correlation

Threat Model Suitability

The choice between Signal and Cwtch depends on specific threat models:

Use Signal when:

Use Cwtch when:

Technical Limitations of Cwtch

Cwtch’s focus on metadata resistance introduces trade-offs:

Installation and Configuration

Getting Started with Cwtch

Download Cwtch from cwtch.im (verify GPG signatures):

# Download and verify
gpg --import cwtch.pub.asc
gpg --verify cwtch-linux-0.3.5.tar.gz.asc cwtch-linux-0.3.5.tar.gz

# Extract and run
tar -xzf cwtch-linux-0.3.5.tar.gz
./cwtch/cwtch &

After launch, Cwtch creates a local database and begins participating in the Tor network. The first startup downloads Tor if not already present.

Configuring Cwtch for Optimal Privacy

Edit ~/.local/share/cwtch/cwtch.conf for advanced configuration:

[experiments]
# Enable additional experimental privacy features
exponential-backoff=true
auto-group-invite=false

[privacy]
# Use Tor bridges for additional anonymity
use-bridges=true
bridge-1=...

[local]
# Custom port for local UI (security through obscurity)
ui-port=8085

Creating and Sharing Your Identity

Cwtch generates a cryptographic identity on first launch. To share with contacts:

# Your Cwtch address is displayed in the UI as a QR code or text
# Copy and share securely with trusted contacts
# Contacts add you manually by entering your full address

Unlike Signal (phone numbers), Cwtch requires manual key exchange. This increases friction but eliminates phone-number-based identity tracking.

Practical Threat Model Examples

Journalist Communicating with Sources

Signal threat model: Journalists want confidential messages, but authorities can see who communicated with whom through metadata analysis.

Cwtch advantage: Metadata resistance prevents authorities from establishing that a journalist and source communicated at all. Even if one party is compromised, traffic analysis cannot trace connections backward.

Political Dissident in Repressive Regime

Signal limitation: Centralized servers store which devices are active; authorities can correlate online times with location data.

Cwtch advantage: Distributed peer-to-peer routing eliminates central observation point. No service provider exists to compel cooperation or leak metadata.

Corporate Insider Reporting Misconduct

Signal consideration: Messages are encrypted end-to-end, but delivery receipts and device information still flow through Signal’s servers.

Cwtch feature: Every message transits through multiple Tor relays with padding and cover traffic. No metadata about message timing is observable.

Forensic Resilience and Data Destruction

Both platforms handle evidence differently:

Cwtch message deletion:

Signal message deletion:

For scenarios requiring complete forensic resistance, Cwtch’s architecture provides stronger guarantees.

Performance Characteristics and Scaling

Cwtch Performance Profile

Signal Performance Profile

For real-time communication, Signal’s speed advantage is substantial. For asynchronous scenarios, Cwtch’s privacy advantages may justify slower delivery.

Building on Cwtch: Developers and Integrations

Cwtch’s open-source protocol enables custom applications:

// Example: Building a Cwtch-based application
package main

import (
  "github.com/cwtch-im/cwtch/model"
  "github.com/cwtch-im/cwtch/event"
)

func main() {
  // Initialize Cwtch engine with peer
  peer := model.NewCwtchPeer("alice")

  // Register event handler
  event.SetupMockEventManager().Subscribe(
    event.NetworkStatus,
    func(ev event.Event) {
      // Handle network events
    },
  )

  // Send group message
  peer.SendMessage("group-id", "secret message")
}

Developers can build privacy-preserving applications using Cwtch’s underlying protocol, bypassing limitations of the default UI.

Comparison Matrix: Cwtch vs Signal vs Other Options

Feature Cwtch Signal Wire Session
Metadata Resistance Excellent Good Good Excellent
Centralized No Yes Yes No
Phone Number No Yes No No
Message History Stored locally Server-stored Server-stored Local
Open Source Full Full Full Full
Scalability Limited Excellent Good Limited
User Base Small Large Medium Growing

Built by theluckystrike — More at zovo.one