{% extends "base.html" %} {% block title %}About - Stego{% endblock %} {% block content %}
About Stego

Stego hides encrypted messages and files inside images using multi-factor authentication.

Features
  • Text & File Embedding
    Any file type: PDF, ZIP, documents
  • Multi-Factor Security
    Photo + passphrase + PIN/RSA key
  • AES-256-GCM Encryption
    Authenticated encryption with integrity check
  • DCT & LSB Modes
    JPEG resilience (DCT) or high capacity (LSB)
  • Random Pixel Embedding
    Defeats statistical analysis
  • Large Image Support
    Up to {{ max_payload_kb }} KB, tested with 14MB+ images
  • Zero Server Storage
    Nothing saved, files auto-expire
  • QR Code Keys
    Import/export RSA keys via QR
  • Channel Keys v4.1
    Group/deployment isolation
Embedding Modes

Two modes optimized for different use cases.

DCT Mode Default

DCT (Discrete Cosine Transform) embeds data in frequency coefficients. Survives JPEG recompression.

  • Capacity: ~75 KB/MP
  • Output: JPEG or PNG
  • Color: Color or grayscale
  • Speed: ~2s
  • Error Correction: Reed-Solomon

Instagram, Facebook
WhatsApp, Signal, Telegram
Twitter/X
Any recompressing platform
LSB Mode

LSB (Least Significant Bit) embeds data in the lowest bit of each color channel. Imperceptible to the eye.

  • Capacity: ~375 KB/MP
  • Output: PNG (lossless)
  • Color: Full color
  • Speed: ~0.5s

Email attachments
Cloud storage
Direct file transfer
Social media
Comparison
Aspect DCT Mode Default LSB Mode
Capacity (1080p) ~50 KB ~770 KB
Survives JPEG ✅ Yes ❌ No
Social Media ✅ Works ❌ Broken
Detection Resistance Better Moderate
Auto-Detection: Mode is detected automatically when decoding.
How Security Works

Multi-factor authentication derives encryption keys:

Reference Photo
Something you have
~80-256 bits
Passphrase
Something you know
~44 bits (4 words)
Static PIN
Something you know
~20 bits (6 digits)
RSA Key
Optional
~128 bits
Combined entropy: 144-424+ bits. 128 bits is infeasible to brute force.
Key Derivation

{% if has_argon2 %} Argon2id 256MB memory cost. Memory-hard KDF defeats GPU/ASIC attacks. {% else %} Argon2 Not Available Using PBKDF2-SHA512 with 600k iterations. Install argon2-cffi for stronger security. {% endif %}

Channel Keys v4.1

Channel keys provide deployment/group isolation. Messages encoded with one channel key cannot be decoded with a different key, even if all other credentials match.

Auto

Uses server-configured key if available, otherwise public mode.

  • Server admin configures the shared key
  • All users share the same channel
Public

No channel key. Compatible with other public installations.

  • Default if no server key configured
  • Anyone can decode (with credentials)
  • Interoperable between deployments
Custom

Your own group key. Share with recipients.

  • Format: XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX
  • 32 chars (128 bits entropy)
  • Private group communication
{% if channel_configured %}
This server has a channel key configured: {{ channel_fingerprint }}
{% else %}
This server is running in public mode. Set STEGASOO_CHANNEL_KEY to enable server-wide channel isolation.
{% endif %}
Version History
v4.2.1
Security & API improvements: API key authentication, TLS with self-signed certs, CLI tools (compress, rotate, convert), jpegtran lossless JPEG rotation

4.1.7 Progress bars for encode, mobile polish, release validation
4.1.1 DCT RS format stability, Docker cleanup, first-boot wizard
4.1.0 Reed-Solomon error correction for DCT, majority voting headers
4.0.0 Channel keys, DCT default, subprocess isolation
3.2.0 Single passphrase, more default words
3.0.0 DCT mode, JPEG output, color preservation
2.x Web UI, REST API, RSA keys, QR codes, file embedding
1.0.0 Initial release, CLI only, LSB mode
Usage Guide

  1. Agree on a reference photo (never transmitted)
  2. Go to Generate to create credentials
  3. Memorize passphrase and PIN
  4. If using RSA, store the key file securely
  5. Share credentials via secure channel

  1. Go to Encode
  2. Upload reference photo and carrier image
  3. Choose mode:
    • DCT (default): social media
    • LSB: email, cloud, direct transfer
  4. Enter message or select file
  5. Enter passphrase and PIN/key
  6. Download stego image

  1. Go to Decode
  2. Upload reference photo
  3. Upload stego image
  4. Enter passphrase and PIN/key
  5. View message or download file
Mode is auto-detected.
Limits & Specs
Max Payload
{{ max_payload_kb }} KB
Max Carrier
24 MP
DCT Capacity
~75 KB/MP
LSB Capacity
~375 KB/MP
Encryption
AES-256
DCT ECC
RS Code
Reed-Solomon Error Correction: DCT mode corrects up to 16 byte errors per 223-byte chunk. Handles problematic carrier images with uniform areas that cause unstable DCT coefficients.

Max text 2M characters
Max upload 30 MB
File expiry 10 min
PIN 6-9 digits
RSA keys 2048, 3072 bit
Passphrase 3-12 words (BIP-39)
Python Version 3.10-3.12
Built with Flask, Pillow, NumPy, SciPy, jpegio, reedsolo, cryptography, argon2-cffi
{% endblock %}