← Back to Home

Security Architecture

How SecureCall protects your voice calls · Last updated February 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
Forward SecrecyDouble RatchetPer-session key derivation with ratcheting
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

When you install SecureCall, your device generates an X25519 key pair using a cryptographically secure random number generator (CSPRNG). The private key never leaves your device. The public key is used to establish encrypted channels with your contacts.

Call Establishment

  1. Caller sends encrypted signaling message via our relay server
  2. Both parties perform X25519 Diffie-Hellman key exchange
  3. Shared secret is derived using HKDF-SHA256
  4. Double Ratchet initializes with the shared secret
  5. Direct peer-to-peer connection is established via WebRTC
  6. Voice frames are encrypted with XChaCha20-Poly1305 before transmission

Perfect Forward Secrecy

The Double Ratchet protocol ensures that each call session uses unique encryption keys. Even if an attacker compromises your long-term key, they cannot decrypt past or future calls. Each voice frame uses a fresh key derived from the ratchet state.

Signaling Server

Our signaling server facilitates call setup but cannot decrypt any content. It only sees:

Once a peer-to-peer connection is established, voice data flows directly between devices without touching our servers.

Rust Crypto Engine

The cryptographic core of SecureCall is written in Rust, a systems programming language that guarantees memory safety at compile time. This eliminates entire classes of vulnerabilities:

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: