← Nocta

Security

Last updated: 12 July 2026

NOCTA is a private messenger. This page explains, in plain terms, what the server can and cannot see, what we defend against, how we ship software you can verify, and how to report a problem.

NOCTA is in beta. We do not claim to be "fully audited" or "completely secure" — no honest project should. Instead, we tell you exactly what our protections are and where their limits are.

What the server can see

Messages and attachments are end-to-end encrypted on your device before they leave it. The server relays sealed envelopes it cannot open. It never sees your message text, your media, or your keys.

The server does NOT see

  • The content of your messages or attachments.
  • Your private or session keys — they never leave your device unencrypted.
  • Message previews in push notifications (pushes are wake-only).

The server DOES see (metadata required to route)

  • That an encrypted envelope exists, its size, and which conversation and device it is destined for.
  • Delivery timing and your device inventory (so we can wake the right device).
  • One "urgent" bit per call invite, so a ringing call can wake a locked screen quickly.

We minimize this metadata deliberately, and we are honest that some of it is unavoidable to deliver a message at all.

Encryption architecture

  • End-to-end encryption using an X3DH-style handshake and a Double Ratchet, per conversation and per device.
  • Per-device trust: each device has its own keys, so compromising one device does not silently expose the others.
  • Local data is stored in an encrypted database (SQLCipher); secrets live in the platform secure store, fail-closed — if secure storage is unavailable, the app refuses to fall back to plaintext.
  • TLS 1.3 protects the connection between your device and the server, on top of the end-to-end layer.
  • Safety Numbers let you verify a contact’s key by comparing a code or scanning a QR, with an alert if a contact’s key ever changes.

Signed releases you can verify

Every release build is signed with a stable release key. The same key signs each update, so your device only accepts genuine, in-place updates — a build signed by anyone else is rejected.

We publish the version and the SHA-256 hash of each build on the downloads page. When public builds are available for download, you will be able to check that the file you received matches the hash we published.

Threat model (summary)

In scope — what we defend against

  • A passive network observer trying to read your messages in transit.
  • A malicious server operator or hosting provider trying to read chats or contacts.
  • A lost or stolen device: local data is ciphertext-only and gated behind a server-assisted cold-start unlock; you can revoke the device and trigger a local wipe.
  • Push and OS notification intermediaries: pushes are opaque wake-only signals with no previews.

Out of scope / honest limits

  • We cannot stop a person you are chatting with from screenshotting or photographing what you send them.
  • We cannot fully defend an already-unlocked, actively compromised device in real time.
  • At this stage we do not hide all metadata from the server (see above), and we are not an anonymity network.
  • We do not build "fake history" or deceptive duress features.

Deliberate exceptions (labelled in the app)

A few features are not end-to-end by design, and we label them clearly in the app rather than hiding them:

  • Support tickets: messages you send to support are readable by the operator, so we can help you. Marked "non-E2E" in the app.
  • Assistant / bot lanes: bot conversations are RPC-style, so the bot lane is not end-to-end. Marked in the app.
  • Optional auto-translation: when you enable it, message text passes through a translation service in memory (not stored long-term). Disclosed on enable.

Reporting a vulnerability

If you find a security issue, please email security@nocta.wtf. For privacy questions, use privacy@nocta.wtf. We will acknowledge reports and work with you in good faith. Please give us reasonable time to fix an issue before disclosing it publicly.

Who builds NOCTA?

NOCTA is built by a small independent team. We intentionally do not publish the personal identities of the people who build it. Privacy infrastructure attracts harassment, pressure, social engineering, and attempts to compromise the people behind it.

Our accountability model is different: we publish what can be verified. NOCTA relies on signed releases, published build hashes, a documented threat model, a transparent changelog, and dedicated security and privacy contacts. We minimize exposed information about our team for the same reason we minimize exposed information about our users — less data means fewer ways to pressure, track, or attack people.

As the project matures and budget allows, we plan limited external reviews and, later, a broader independent audit. We will report honestly on what has and has not been reviewed.