Haamly

Haamly Security & FAQ

← Back to Home

Threat Model

Haamly is designed to reduce spam and protect message confidentiality. This is an honest overview of our security model and limitations.

Participants:
-----------
[Sender Device]    [Haamly Server]    [Haamly Datastore]    [Recipient Device]
     |                   |                     |                      |
     |                   |                     |                      |
     |-- metadata ------>|                     |                      |
     |   (encrypted)     |                     |                      |
     |                   |-- approval? ------->|                      |
     |-- message ------->|                     |                      |
     |   (encrypted)     |                     |                      |
     |                   |                     |<-- download ---------|  
     |                   |                     |    (encrypted)       |
     |                   |                     |                      |

Message Flow:
-------------
1. Sender encrypts metadata + message separately
2. Haamly Server reads encrypted metadata 
3. Haamly Server enforces approval rules
4. Approved messages and metadata stored in Haamly Datastore
5. Recipient Device downloads metadata and message and decrypts locally

Trust & Access Boundaries:
--------------------------
Sender Device:
- Generates keys locally
- Encrypts metadata and message separately before send
- Only recipient can decrypt message

Haamly Server:
- Reads encrypted metadata
- Enforces sender approval rules
- Routes approved encrypted payloads to datastore
- Cannot read message content

Haamly Datastore:
- Stores encrypted metadata and messages
- Cannot decrypt any data
- Only serves encrypted payloads to authorized recipients

Recipient Device:
- Holds decryption keys
- Downloads encrypted data from datastore
- Decrypts metadata and messages locally
- Manages contact approvals

Threat Actors Considered:
-------------------------
- Network attacker (MITM)
- Malicious server operator
- Compromised datastore
- Compromised email provider
- Passive metadata observer

Threat Actors NOT Trusted:
--------------------------
- Haamly infrastructure
- Haamly datastore
- Cloud providers
- Email identity providers (Gmail, Outlook)

Threat Actors Trusted:
----------------------
- User's own devices

This is closer to a messaging threat model than traditional email.

What Haamly Does NOT Protect Against

No system is magic. Here are the things Haamly explicitly does not claim to solve.

❌ Compromised Devices

If an attacker controls your device (malware, keylogger, malicious browser extension), they can read your messages.

Haamly assumes:

  • Your device OS is trusted
  • Your local key storage is secure

This is a limitation of all end-to-end encrypted systems, including Signal.

❌ Social Engineering

If you approve a sender you shouldn't have, Haamly cannot save you.

Consent is enforced technically—but judgment is still human.

❌ Identity Spoofing Outside the Haamly Network

Haamly protects messages inside its encrypted system.

It does not prevent:

  • Someone impersonating you on legacy email
  • Phishing attempts outside Haamly

❌ Traffic Analysis by a Global Adversary

Haamly does not claim resistance to:

  • Nation-state–level global traffic correlation
  • Timing analysis across the entire internet

This would require Tor-like infrastructure and comes with major usability tradeoffs.

❌ Denial-of-Service Attacks

While unapproved senders cannot reach your inbox, Haamly does not prevent:

  • Flooding of sender requests
  • Infrastructure-level DoS attacks

These are handled operationally, not cryptographically.

❌ Legal Compulsion of Users

Haamly cannot protect users from:

  • Being compelled to unlock their own devices
  • Providing access under local laws

Haamly can only truthfully say:

We cannot decrypt your data ourselves.

What Haamly Does Protect Against

How Haamly Works

1. Your inbox is closed by default

Unlike traditional email where anyone can message you, Haamly requires explicit approval.

2. New senders request permission

When someone tries to email you for the first time, their message waits in a pending queue.

3. Once approved, messages are encrypted

Messages use X3DH (Extended Triple Diffie-Hellman) key exchange from the Signal Protocol for end-to-end encryption.

4. Unapproved senders never reach your inbox

Spam is prevented by design, not filtering after the fact.

Design Goals

Why This Section Matters

Haamly is designed in public. We believe in being honest about:

We're not overselling cryptography. We're building for adults who understand that security is about reducing risk, not eliminating it.

Signal Protocol Usage

Haamly implements the Signal Protocol (including X3DH and Double Ratchet) as an open cryptographic standard. "Signal Protocol" is a trademark of Signal Messenger, LLC. Haamly is an independent, open-source project and is not affiliated with, endorsed by, or operated by Signal Messenger or the Signal Foundation.

Open Source & Auditable

Fully transparent code licensed under GPLv3. Audit our security yourself.

View on GitHub