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 (social graph privacy against content inspection)
  • 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 or sender identity. 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: Unlinkable Authentication over Behavioral Metadata

Section titled “Decision 1: Unlinkable Authentication over Behavioral Metadata”

What we do: Meter actions with PrivacyPass tokens rather than tracking per-device behavior. Servers enforce rate limits at issuance, where identity is known, and learn nothing about who spends a token at redemption.

Rationale: Earlier revisions of this spec tracked aggregate per-device message volume and spam reports, on the reasoning that a pure zero-state server cannot resist spam flooding. Unlinkable authentication removes that tradeoff because now scarcity replaces attribution. A device cannot exceed its budget no matter how many addresses it holds, and the server never needs to know which device acted.

  • Rate limiting binds to issuance, not to observed behavior
  • Servers retain a spent-token nonce set, not a per-device behavioral profile
  • Servers derive no per-device abuse signal from the traffic they carry.
  • A report names a device_id only because a group member chose to disclose one, and is actionable only at issuance.
  • Federated abuse is bounded at the federation boundary rather than by identifying senders

What’s preserved: Content confidentiality, sender privacy, and social graph privacy against content inspection.

What this costs: A server cannot find a bad device on its own. It can only act on one a group member names. Abuse response works through uniform issuance budgets, operator-reviewed device reports, and per-origin federation limits. Reports leave a device_id-keyed record, which is the one piece of behavioral state this design otherwise avoids. It is bounded: it records that someone complained, never what the device did, and it expires. The server still derives nothing from the traffic it carries.

Privacy impact: The server learns how many tokens a device took, and roughly when. It does not learn what any of them were spent on.

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 derived from per-group mailbox keypairs, not 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 derived cryptographic identifier.

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

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 against content inspection)
  • 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)
  • Near-zero metadata (account age and report counts retained for abuse response)
  • Perfect unlinkability (mailboxes remain correlatable by source address and delivery timing)
  • Perfect forward secrecy forever (requires periodic key rotation)
  • Address rotation doesn’t hide device_id (contacts and group members know your device_id)