← Coconut Wireless · Ecosystem

🥥 Coconut Wireless — Security

Honest overview of what is implemented today (build: safety-v1). No phone number required. Private keys never leave your device for chat E2E.

Whitepaper v0.9 · public draft

Positioning

Signal-level security for the open web — no phone number, Linux-friendly, no big-tech owner. We do not claim “more secure than Signal” until Double Ratchet and an independent audit ship. We claim: open client path, ciphertext chat, verifiable keys, working calls.

1. What the server can and cannot see

DataServerNotes
Username / display nameYesAccount directory
PasswordHashed onlyNever stored plaintext
Chat message body (E2E on)Ciphertext onlycipher + iv; plaintext stripped when present
Your private keyNeverStays in browser localStorage for that username
Your public keyYesSo peers can encrypt to you
Who messaged whom / whenMetadataDelivery requires routing; minimization is ongoing
Call signaling (invite, SDP, ICE)Yes (relay)Needed to connect; media is peer WebRTC
Voice/video media bytesNot by designWebRTC P2P or TURN relay encrypted with DTLS-SRTP

2. Chat encryption (current)

Algorithm

What this gives you

Roadmap

X25519 migration, sealed sender / metadata minimization, post-quantum hybrid (X25519 + Kyber), independent audit.

3. Safety Numbers (shipping now)

Open a chat → tap 🔐. Coconut builds a 60-digit Safety Number from both identity public keys (order-independent).

Algorithm: SHA-256("coconut-safety-v1|" + sortedCanonKeyA + "|" + sortedCanonKeyB) → 60 digits

4. Voice & video calls

5. Authentication

6. Audit roadmap

7. How to verify a contact (user steps)

  1. Both of you open Coconut and the same chat
  2. Each taps 🔐 Safety Number
  3. Compare the digits (or scan QR) in person or via a second channel
  4. If they match → Mark verified
  5. If they differ → stop sending sensitive data and investigate

8. Known limitations (honest)