Skip to content

Security Analysis and Threat Model

Message Security (a.k.a What MLS Guarantees)

Section titled “Message Security (a.k.a What MLS Guarantees)”
  • Confidentiality: Only group members can decrypt messages.
  • Authenticity: Messages are cryptographically signed by the sender.
  • Integrity: Tampering is cryptographically detectable.
  • Forward Secrecy: Past messages are secure even if current keys are compromised.
  • Post-Compromise Security: Key rotations help recover from breaches.
  • Non-Repudiation: Senders cannot deny sending signed messages.
  • Identity Verification: Public key fingerprints enable manual verification.
  • Key Consistency: Devices can detect key changes.
  • No PII Required: No phone numbers, emails, or identifying information.
AttackDescriptionProtectionLimitation
Network EavesdroppingPassive monitoring of network trafficAll message content encrypted with MLSMessage timing and size patterns observable
Server CompromiseMalicious or compromised server operatorsServers cannot decrypt messages or forge identitiesCan deny service or correlate delivery addresses
Active Network AttacksMan-in-the-middle attacks on message deliveryEnd-to-end MLS encryption prevents tamperingCan block or delay messages
Identity ImpersonationAttacker claims to be someone elseCryptographic signatures prevent forgeryInitial contact exchange is vulnerable to MITM
Address-Based TrackingLong-term tracking via delivery addressesAddress rotation prevents correlationTiming analysis may still reveal patterns
AttackMitigationLimitation
Traffic AnalysisMinimal routing metadata, no sender addresses in federated messagesMessage timing patterns may reveal relationships
Key CompromiseMLS provides post-compromise security and forward secrecyRequires key rotation to recover security
Social EngineeringClear trust indicators in the UIUsers may ignore security warnings

Cryptid’s privacy model balances strong cryptographic protections with practical spam prevention. This section analyzes what privacy guarantees Cryptid provides and what limitations exist.

Cryptid’s privacy guarantees vary by adversary capability:

Adversary TypeCan ObserveCannot Observe
Network ObserverMessage timing, sizes, IP addresses, deliver addressesContent, recipients, device identity, groups
Compromised ServerAccount age, message volume, online status, delivery addresses, KeyPackage consumptionContent, device identity linkage, social graph
Federation PeerThat your server exchanges messages, destination serversWhich users, specific addresses, content, relationships
Malicious Group MemberMessages in their groups, your device_idMessages in other groups, your other contacts, your delivery addresses
  • Message content: MLS encryption prevents access by anyone except group members
  • Message authenticity: Signatures prevent forgery and ensure sender accountability
  • Forward secrecy: Past messages secure even if current keys compromised
  • Post-compromise security: Key rotations recover security after breaches
  • Sender privacy: Servers don’t know which device sent a message (sender address not transmitted)
  • Social graph privacy: No contact lists or relationship tracking server-side (though timing correlation can infer relationships)
  • Group privacy: Servers don’t know what groups you’re in or who’s in them
  • Identity privacy: No PII required, addresses are cryptographically derived (pseudonymous)
  • Content confidentiality: All message content is MLS encrypted end-to-end
  • Activity patterns: Servers track account age and message volume for spam prevention
  • Online status: Servers know when you’re active (for delivery optimization)
  • Federation domains: Servers see which domains you communicate with
  • Delivery addresses: Servers see recipient addresses for routing (but they’re pseudonymous, rotatable)
  • Device-to-address mapping: Servers link device_id to delivery addresses (24-hour retention, not exposed via API)
  • KeyPackage consumption: Servers observe aggregate group addition frequency (not specific groups)
  • Message timing: Servers observe when messages are sent/received
  • Message sizes: Approximate message length visible
  • Account age: Registration time tracked for progressive trust
  • Message volume: Aggregate send/receive counts for rate limiting

Servers storing KeyPackages can observe:

  • Total KeyPackages uploaded per device
  • Total KeyPackages consumed (approximate group addition frequency)
  • Timing of KeyPackage consumption

Example: Server knows “device X consumed 50 KeyPackages in 30 days” (~1.6 groups/day).

What Servers CANNOT observe:

  • Which specific groups the device joined
  • Who else is in those groups
  • Message content or recipients

Privacy analysis:

This reveals aggregate social activity level but not:

  • Specific group memberships
  • Individual conversation patterns
  • Relationships with other users

See Contact Exchange and Trust Establishment for planned v2.0 improvements (blind KeyPackage storage).

  • Traffic patterns: Communication timing and volume visible to ISP/network
  • Server connections: Which Cryptid servers you connect to
  • Connection duration: How long you’re online

Important: This metadata does NOT reveal message content, sender identity, or social relationships. Only that communication occurs.

Cryptid’s multiple delivery address system provides proactive privacy protection:

  1. Prevents long-term tracking:

    • Network observer sees different addresses over time
    • Cannot build long-term profile without correlating other metadata
  2. Isolates contexts:

    • Compromise of one address doesn’t affect others
    • Each context has separate pseudonym
  3. Enables spam prevention:

    • Alice’s public address gets spammed
    • Alice burns the address and creates a new one
    • Spammer loses routing information
    • New address is unknown to spammer
  1. Device identity in groups:

    • Group members know your device_id (MLS requirement)
    • Address rotation doesn’t change your device_id
    • Group members can always message you (have your device_id)
  2. Server-side patterns:

    • Server tracks device_id → addresses mapping (24h retention)
    • Can observe address rotation patterns (how often you rotate)
    • Can correlate timing across addresses (same device_id)
  3. Network-level patterns:

    • Connection timing (when you’re online)
    • Traffic volume (how much you communicate)
    • Server domains (which servers you use)
Privacy GoalMechanismLimitation
Hide delivery endpointAddress rotationDevice_id still known to contacts
Prevent spamBurn compromised addressesMust share new address with contacts
Context isolationMultiple addressesServer knows all belong to same device
Long-term trackingRegular rotationTiming correlation may still work

Best practices for maximum privacy:

  1. Rotate public addresses frequently (weekly or after each use)
  2. Use separate addresses for different contexts
  3. Burn addresses that receive spam immediately
  4. Use different servers for different contexts (multi-homing)
SystemIdentity RequiredServer Sees RecipientsServer Sees ContentServer Tracks Behavior
Discord/SlackEmail/usernameFull visibilityFull accessExtensive
WhatsAppPhone numberFull visibilityE2EEMetadata tracking
SignalPhone numberSealed senderE2EEMinimal
Matrix (E2EE)UsernameRoom metadataE2EE roomsRoom/federation metadata
Email (PGP)Email addressFull headersPGP encryptedEmail headers
CryptidNone (keys only)Recipient visible (rotatable), sender hiddenMLS E2EEAggregate patterns (device_id) + KeyPackage consumption

Better than:

  • Discord, Slack, WhatsApp: No content access, no sender tracking
  • Traditional email: No identity requirement, no header metadata
  • Matrix: Less metadata, no room state visibility

Comparable to:

  • Signal: Similar E2EE strength, similar design around sender privacy

Trade-off vs.:

  • Pure anonymity systems (Tor): Less anonymous but more practical and lower latency

Decision 1: Behavioral Metadata for Spam Prevention

Section titled “Decision 1: Behavioral Metadata for Spam Prevention”

What we do: Track minimal behavioral patterns (account age, message volume) to enable progressive trust rate limiting.

Rationale: Pure “zero state” servers are vulnerable to spam flooding, rendering the system unusable. The chosen metadata is:

  • Limited to aggregate patterns (not per-message tracking)

  • Temporary (expires after 30 days)

  • Observable anyway (message timing/volume visible to network observers)

  • Necessary for practical spam prevention

What’s preserved: Content confidentiality, sender privacy, social graph privacy. The privacy boundaries that truly matter for confidential communication.

Privacy impact: Server learns “Device X receives ~50 messages/day” but not “Device X messages Device Y about topic Z.”

Decision 2: Rotatable Pseudonymous Addresses

Section titled “Decision 2: Rotatable Pseudonymous Addresses”

What we do: Devices have multiple rotatable pseudonymous addresses rather than single permanent addresses or full anonymity.

Architecture:

  • Device identity (device_id): Permanent cryptographic identity
  • Delivery addresses: Ephemeral routing endpoints (rotatable)
  • Separation enables privacy (rotate addresses) + accountability (stable device_id)

Rationale:

  • Stable device identity enables:

    • Persistent group membership (groups need stable member identifiers)
    • Blocking and moderation (based on cryptographic identity)
    • Trust decisions (verify fingerprints, build reputation)
  • Rotatable delivery addresses enable:

    • Privacy via address rotation (prevent long-term tracking)
    • Spam prevention (burn compromised addresses)
    • Context isolation (different addresses for different purposes)
  • This hybrid approach balances:

    • Accountability: device_id provides stable identity for trust/blocking
    • Privacy: delivery addresses are ephemeral and rotatable

What’s preserved:

  • Device_id is cryptographic, contains no PII
  • Delivery addresses are random, not derived from device_id
  • Cannot link addresses to device_id without server cooperation
  • Address rotation prevents long-term address-based tracking

Privacy impact:

  • Contacts/groups know your device_id (for MLS and blocking)
  • Network observers see delivery addresses (rotatable for privacy)
  • Servers link device_id to addresses (24h retention, not exposed)

Comparison with alternatives:

ApproachPrivacyAccountabilityComplexity
Single permanent addressLowHighSimple
Fully anonymout (Tor)HighNoneComplex
CryptidMedium-HighMedium-HighModerate

Cryptid chooses the balanced middle ground: enough privacy for most use cases and enough accountability for community health.

What we do: Identity is purely cryptographic (Ed25519 keypairs). No phone numbers, emails, or personal information required.

Rationale: Phone numbers and emails are:

  • Privacy-invasive (reveal real identity)
  • Centralized (controlled by telecoms/email providers)
  • Surveillance-friendly (can be subpoenaed)
  • Not necessary for secure communication

What’s preserved: Complete pseudonymity. The server never learns your real identity.

Privacy impact: You can use Cryptid completely anonymously. Your device address is just a random cryptographic identifier.

The protocol architecture supports optional enhanced privacy features in future versions:

Address Unlinkability: Planned for v2.0

  • Blind KeyPackage storage (server doesn’t know device_id → KeyPackages mapping)
  • Prevents server from tracking group addition activity
  • Requires client-side hash management and larger bundles
  • See Contact Exchange and Trust for details

Cryptographic Address Derivation: Planned for v2.0

  • Derive addresses from device_id + random salt using HKDF
  • Enables proof of ownership without revealing device_id
  • Allows address unlinkability from device_id
  • Requires changes to announcement protocol

Relay Networks: Undecided

  • Route messages through multiple servers to hide server-to-server relationships
  • Similar to Tor, but specifically for Cryptid federation
  • Trade-off: Increased latency, more complexity

Message Padding: Undecided

  • Normalize message sizes to reduce size-based inference
  • Prevents distinguishing “Hi” from “Here’s my tax documents”
  • Trade-off: Increased bandwidth usage

Traffic Mixing: Undecided

  • Batch and delay messages to obscure timing patterns
  • Makes it harder to correlate “Alice sent message” with “Bob received message”
  • Trade-off: Increased latency

These features are intentionally left to future specifications to maintain initial protocol simplicity while keeping the door open for enhanced privacy.

What Cryptid Guarantees:

  • No one but group members can read your messages (E2EE)
  • Servers don’t know who sent you a message (sender privacy)
  • Servers don’t know what groups you’re in (social graph privacy)
  • No personal information required (pseudonymity)
  • Delivery addresses are rotatable (prevents long-term address-based tracking)
  • Device identity separate from routing (privacy + accountability)

What Cryptid Does Not Guarantee:

  • Complete anonymity from network observers (traffic timing visible)
  • Zero metadata (account age and message volume tracked for spam prevention)
  • Perfect unlinkability (servers link device_id to addresses for 24h, then expire)
  • Perfect forward secrecy forever (requires periodic key rotation)
  • Address rotation doesn’t hide device_id (contacts and group members know your device_id)