Zero-Knowledge Encryption

Your vault, identity data and contacts are encrypted on your device before they reach our servers. We do not have your password or the plaintext private keys that open that data. For communications protected by our current method, the stored copy is sealed to the account communication key; a small private-beta set remains readable by our servers until a separate re-sealing process.

What is Zero-Knowledge Encryption?

Zero-knowledge encryption means we have zero knowledge of your password and hold no plaintext private key that opens your vault, identity data or contacts. For communications protected by our current method, we keep no key that can open the sealed copy. It is a scoped promise, not a blanket one: a small private-beta set of communications remains readable by our servers, phone numbers, billing and some optional features are readable to us so the service can run, and picture messages are checked for known illegal material before they are stored.

Instead of sending your password, you use cryptographic signatures to prove you know it without revealing it. Think of it like proving you have a key without showing the key itself.

  • Password stays on your device, always

  • Data encrypted client-side before upload

  • We hold no key to your vault, identities or contacts

  • A copy of stored server data cannot by itself open your vault, identities or contacts when authentic, untampered client code encrypted them

The Zero-Knowledge Principle

What we can and cannot see

We NEVER See:

  • Your password (plaintext or encrypted)

  • Your plaintext private encryption keys

  • Your identity details (names, birthdates, addresses)

  • Your credentials (credit cards, IDs, licenses)

  • Your vault, identity data and contacts, which are encrypted on your device

We Only See:

  • For accounts using challenge-response login, your login public key (a leak of it cannot log in). Some private-beta accounts still retain a static login verifier until a successful sign-in with an up-to-date WIGGWIGG client. If that verifier leaks, someone else could sign in to the account
  • Your unique salt for key derivation
  • You and WIGGWIGG: your phone numbers and line settings (routing, voicemail, greetings, spam filter), SIP credentials, billing
  • You and WIGGWIGG: call and message records (not content), automatic-reply text, the intros your callers record, voicemail while Listen-by-phone is on or when the account has no usable communication key, and the other party's number in a call log when the account has no usable key or key lookup fails
  • Only you: your vault and identity data reach us encrypted. Account-key-sealed communications: under our current method, the stored copy is sealed to the account communication key. A small set retained from the private beta remains readable by our servers under older encryption until a separate re-sealing process. A message you send passes through us in the clear on its way to the carrier, and picture messages are checked before storage. To deliver a picture, we drop a readable copy behind a secret link that expires within minutes, just long enough for our carrier to pick it up, then we erase it. Our carrier keeps its own copy for a while: a picture message is never end-to-end encrypted. Under our current method, the copy kept in your account stays sealed

We literally can't read it

Type anything below. It's encrypted on your device with a key only you hold. Watch what actually reaches our servers.

Your device

Key derived here · never sent

Our servers

All we ever receive

…

We don't have your key; you do. If our servers were breached tomorrow, this is all an attacker would find of your vault: gibberish.

Zero-Knowledge Proof

How Zero-Knowledge Login Works

A cryptographic process that proves your identity without revealing your password

1

Request Salt

Client requests your unique salt (random bytes) needed to derive encryption keys from your password; the server sends a single-use login challenge along with it.

2

Derive Key

Your device derives a master encryption key from your password using Argon2id, a memory-hard key derivation function (128 MiB of working memory, 3 iterations). The memory cost is what blocks GPU and ASIC attacks: brute-forcing a single password requires 128 MiB of RAM per guess, not just CPU cycles.

3

Sign the Challenge

For an account using challenge-response login, your device derives an Ed25519 signing key from your master key (HKDF) and signs the single-use challenge sent by the server. Only someone who knows your password can produce that signature.

4

Verify Signature

For that account, the server stores the public key and verifies the signature. If it checks out, you're in, without the server ever seeing your password. The stored public key cannot be replayed to log in. Some private-beta accounts still retain a static login verifier until a successful sign-in with an up-to-date WIGGWIGG client. If that verifier leaks, someone else could sign in to the account.

5

Create Session

Session tokens are stored as HttpOnly cookies so JavaScript cannot read the cookie directly. This limits token theft but does not make injected code harmless.

Why This Matters

Traditional authentication sends your password (encrypted in transit) to the server where it's checked. With WIGGWIGG, your password never travels anywhere. For accounts using challenge-response login, the server keeps a public key and receives single-use signatures, not replayable login material. Some private-beta accounts still retain a static login verifier until a successful sign-in with an up-to-date WIGGWIGG client. If that verifier leaks, someone else could sign in to the account, although the verifier does not reveal the password or vault key. A copy of stored server data cannot by itself open your vault, identity data, contacts or communications sealed by our current method when authentic, untampered client code encrypted them. This protection does not cover an active compromise that changes the client code delivered to you. A small set of communications retained from the private beta remains readable by our servers. The You and WIGGWIGG tier, including phone numbers, routing settings and billing, is also readable by our servers because they need it to run your lines.

Technical Details

Cryptographic Implementation

Key Derivation

  • Argon2id with 128 MiB memory cost and 3 iterations

  • 32-byte unique salt per user

  • Separate keys for auth and encryption

  • Memory-hard design defeats GPU and ASIC brute-force

Password Authentication

  • Ed25519 signing key derived from your master key (HKDF)

  • Single-use server challenge signed on your device

  • For challenge-response accounts, the server stores the public key and verifies the signature

  • For those accounts, the stored public key cannot be replayed to log in

  • Some private-beta accounts still retain a static login verifier until a successful sign-in with an up-to-date WIGGWIGG client. If that verifier leaks, someone else could sign in to the account

Data Encryption

  • AES-256-GCM authenticated encryption

  • Client-side encryption for vault, identity and contact data

  • For communications protected by our current method, no server-held key opens the stored content; a small private-beta set remains readable until a separate re-sealing process

  • Unique IV per operation

Two-Layer Key Indirection

  • Your password derives a master key (Argon2id)

  • The master key wraps a separate vault key generated per account

  • Your vault, identity and contact data are encrypted under the vault key, not the master key

  • Password changes only re-wrap the vault key, never re-encrypt your data

Server-Blind Communications

  • Under our current method, inbound content is sealed to the account communication key, which a supported client opens after sign-in and unlock; some private-beta data still awaits a separate re-sealing process

  • We never record your conversations

  • Under our current method, we discard our copy of the sealing key the instant a message is stored

  • For a sealed message we keep no key that can read it: not at rest, not later, not under a warrant. Named exceptions our servers can read: voicemail while Listen-by-phone is on or when the account has no usable communication key, the other party's number in a call log when the account has no usable key or key lookup fails, the intros your callers record, automatic-reply text, the text and audio of your voicemail greeting, of the announcement we play to you on pickup, and of the prompt your callers hear before they identify themselves, and the personal number you verify for call forwarding. Separately, a message you send passes through us in the clear on its way to the carrier, and we check picture messages against known-illegal-image databases before storing them, keeping the picture when it matches

Session Security

Protecting Your Session

How we reduce session hijacking, cross-site request and script-injection risks

Session Protection Layers

Multiple security mechanisms work together to protect your authenticated session:

HttpOnly Cookies

Session tokens stored in HttpOnly cookies cannot be read directly by JavaScript, limiting cookie theft through injected code

SameSite Policy

SameSite=Lax prevents cookies from being sent in cross-site requests, blocking CSRF attacks

Secure Flag

Cookies only transmitted over HTTPS, preventing man-in-the-middle interception

Origin Check

Every state-changing request must pass a strict origin check on top of SameSite cookies, so a foreign site cannot forge it

Session Expiration

Sessions lapse after 30 days of inactivity and are hard-capped at 90 days; you can shorten this to 1 day in Security settings

Encrypted Vault Key

Your vault key (the actual data-encryption key) is held as a non-extractable key handle for the active session (kept across page refreshes unless you choose Maximum Security) and wiped on lock or logout. The master key is wiped right after it unwraps the vault key on login.

Why This Matters

XSS Protection

Injected JavaScript cannot read an HttpOnly session cookie directly. It may still act within the live page, so HttpOnly is one layer rather than complete protection from script injection.

CSRF Protection

Attackers cannot trick your browser into making authenticated requests to our API because SameSite cookies plus a strict origin check on every state-changing request block cross-site requests.

Defense in Depth

Multiple layers of protection mean that if one security mechanism fails, others are still in place to protect your session.

Cookie Security

  • HttpOnly flag prevents JavaScript access

  • Secure flag enforces HTTPS

  • SameSite=Lax blocks cross-site requests

  • Explicit domain scoping

Learn more about our cookie policy

Session Storage

  • Vault key held as a non-extractable key handle for the active session (kept across page refreshes unless you choose Maximum Security)

  • AES-256-GCM encryption

  • Automatic expiration

  • Wiped on lock or logout

Learn more about our cookie policy

Frequently Asked Questions

What does zero-knowledge actually mean?

Zero-knowledge means we have zero knowledge of your password and hold no plaintext private key that opens your vault, identities or contacts. You never send us your password; instead, you prove you know it using cryptographic signatures. Communications protected by our current method are sealed to the account communication key; a small private-beta set remains readable by our servers until a separate re-sealing process.

How is this different from traditional password authentication?

Traditional systems send your password, even if encrypted in transit, to the server where it is hashed and checked. With WIGGWIGG, your password never leaves your device. Accounts using challenge-response login derive a signing key and answer a single-use challenge. Some private-beta accounts still retain a static login verifier until a successful sign-in with an up-to-date WIGGWIGG client. The verifier is not the password, but if it leaks, someone else could sign in to the account.

How does zero-knowledge password verification work?

For an account using challenge-response login, your device derives your master key from your password using Argon2id (128 MiB memory-hard, 3 iterations), derives an Ed25519 signing key from it (HKDF), and signs a single-use server challenge. The server verifies the signature against the stored public key; that key cannot be replayed to log in. Your password never leaves your device. Some private-beta accounts still retain a static login verifier until a successful sign-in with an up-to-date WIGGWIGG client. If that verifier leaks, someone else could sign in to the account.

How do you prevent session hijacking?

We use multiple layers of session protection: HttpOnly cookies prevent JavaScript from reading session tokens directly, SameSite=Lax limits cookies in cross-site requests, Secure flags require HTTPS, and a strict origin check on state-changing requests rejects forged cross-site requests. Injected code cannot read an HttpOnly cookie directly, but it may still act within a live page, so these controls reduce risk without making script injection harmless.

Where are my encryption keys stored?

Your master key is derived from your password using Argon2id (128 MiB memory-hard, 3 iterations). It is never stored anywhere: it briefly unwraps your account's vault key on login, then it is wiped from memory. The vault key (the actual data-encryption key) is held as a non-extractable key handle for the active session (kept across page refreshes unless you choose Maximum Security) and wiped on lock or logout.

What if WIGGWIGG gets hacked?

A breach that copies stored server data cannot by itself open your vault, identity data, contacts or communications sealed by our current method when authentic, untampered client code encrypted them. The private key material stored for this data is wrapped under keys we do not hold in plaintext. This does not cover an active compromise that changes the web client code delivered to you. Some private-beta accounts still retain a static login verifier until a successful sign-in with an up-to-date WIGGWIGG client. If that verifier leaks, someone else could sign in to the account and see its server-readable data. A small set of private-beta communications and the You and WIGGWIGG tier, including phone numbers, routing settings and billing, are also server-readable and could be exposed.

Ready to Experience True Privacy?

Join WIGGWIGG and experience zero-knowledge security firsthand.