← Back to Home
CLASSIFIED

Security Architecture — Briefing

How SecureCall protects your voice calls · Last updated April 2026

Cryptographic Primitives

SecureCall uses proven, peer-reviewed cryptographic primitives. We do not invent our own cryptography — we use established algorithms implemented in a memory-safe language.

ComponentAlgorithmDetails
Symmetric EncryptionXChaCha20-Poly1305256-bit AEAD cipher with 192-bit extended nonce
Key ExchangeX25519Elliptic Curve Diffie-Hellman on Curve25519
Identity AuthenticationP-256 / SHA-256Android Keystore identity signs registration and call transcripts
Session Key LifecycleX25519 + HKDF-SHA256Separate key material per call, discarded at call end
Key DerivationHKDF-SHA256HMAC-based key derivation function
TransportDTLS-SRTPEncrypted peer-to-peer media transport
Audio CodecOpus48kHz, adaptive bitrate 6-510 kbps

Architecture Overview

Key Generation

For each call, SecureCall uses X25519 key material generated on the participating devices. A per-install P-256 key held in Android Keystore signs registration and both call transcripts. Private key material is not sent to the signaling service.

Call Establishment

  1. Caller sends call-setup data through the signaling service
  2. Both parties perform X25519 Diffie-Hellman key exchange
  3. HKDF-SHA256 binds the shared secret to both signed transcripts
  4. Both peers verify HMAC key confirmation and show the same security code
  5. Direct peer-to-peer connection is established via WebRTC
  6. Voice frames are encrypted with XChaCha20-Poly1305 before transmission

Per-call key lifecycle

X25519 and HKDF-SHA256 derive separate key material for each call, which is discarded when the call ends. XChaCha20-Poly1305 protects application media frames. SecureCall does not implement a Double Ratchet, per-frame ratcheting or post-compromise security.

Signaling Server

The signaling service facilitates call setup and is not designed to receive call plaintext. It does process:

Media uses a direct WebRTC path when available and otherwise may traverse a TURN relay. Application media frames remain encrypted. Direct canonical sc-... identities are key-derived; human-readable aliases, custom IDs and phone lookup remain server-resolved, so compare the canonical identity or six-digit security code when target authenticity matters.

Rust Crypto Engine

The cryptographic core of SecureCall is written in Rust. Rust's type and ownership system reduces several classes of memory-safety defects in safe Rust; native dependencies, FFI boundaries, logic errors, and unsafe code still require review and tests:

The Rust crypto engine is compiled to a native library and called from the Android app via JNI (Java Native Interface).

Anti-Recording Protection

SecureCall includes active protection against call recording attempts (Pro and Premium tiers):

When a threat is detected, the response depends on your tier:

TierResponse
FreeWarning notification
ProBlock threat + alert dialog
PremiumAutomatically terminate call

Audit & Source Code

SecureCall's complete source code is publicly available for security review:

We welcome security researchers to review our code and report vulnerabilities responsibly. Contact: GitHub Issues

What We Cannot Do

Due to our architecture, we are technically unable to:

StealthX Platform — Shared Crypto Stack

SecureCall is part of the StealthX Platform. All three products share the same cryptographic foundation:

ProductEncryptionKey ExchangeKey LifecycleTransport
SecureCallXChaCha20-Poly1305X25519Per-call HKDF key; no ratchetWebRTC DTLS-SRTP
SecureChatXChaCha20-Poly1305X25519Double RatchetTor/.onion Relay Nodes
ChameleonXChaCha20-Poly1305X25519Double RatchetLocal + AIDL IPC

No AES-GCM. No BouncyCastle. No custom cryptography. One stack, internally reviewed, used everywhere.

SecureChat Security Design → | Chameleon on GitHub →