End-to-End Encryption

Your credentials and data stay private. Always.

TL;DR

  • Device-local keys, AES-256-GCM, TLS 1.3, secure pairing
  • We can't read your credentials; only your devices can
  • Provider Match uses aggregated stream quality analytics—never your credentials
  • Zero-knowledge architecture: we can't see your credentials
  • Device-generated keys stored locally (Keychain/Keystore/WebCrypto)
  • PostgreSQL RLS for additional access control
  • Key rotation supported for enhanced security

What We Encrypt

We encrypt all sensitive data before it leaves your device:

  • Provider credentials: M3U URLs, Xtream codes, usernames, passwords
  • Authentication tokens: Session tokens, refresh tokens, API keys
  • Personal preferences: Favorite channels, viewing history (if enabled)

All encrypted data is stored as ciphertext only. Without your device's key, this data is completely unreadable—even to us.

Key Management

Device-Local Vault Key

Each device generates its own unique encryption key:

  • iOS/macOS: Stored in Keychain with hardware encryption
  • Android: Android Keystore with hardware-backed security
  • Web: WebCrypto API with IndexedDB storage

Device Pairing

When adding a new device, we use a secure pairing process:

  1. New device generates a temporary key pair
  2. Existing device displays a 6-digit pairing code
  3. Keys are exchanged using ECDH (Elliptic Curve Diffie-Hellman)
  4. Vault key is wrapped and transmitted securely
  5. New device unwraps and stores the key locally

Cryptographic Details

Symmetric Encryption

AES-256-GCM
  • 256-bit keys
  • 96-bit random IVs per record
  • Additional authenticated data (AAD)
  • 128-bit authentication tags

Key Wrapping

AES-KW / XChaCha20-Poly1305
  • RFC 3394 compliant AES key wrap
  • Alternative XChaCha20 for web clients
  • PBKDF2 with 100,000 iterations

Transport Security

TLS 1.2+ Required
  • TLS 1.3 preferred
  • Certificate pinning in native apps
  • HSTS with preload
  • Perfect forward secrecy

Additional Layers

Defense in Depth
  • PostgreSQL row-level security
  • Encrypted database backups
  • Audit logging (no PII)
  • Rate limiting & DDoS protection

Threat Model

Database Breach

If our database is compromised, attackers get only ciphertext. Without device keys, the data remains encrypted and unusable.

Insider Access

Our team has no access to encryption keys or plaintext data. All sensitive operations happen on your device.

Lost Device

Revoke access from account settings. The device's local key becomes invalid, and encrypted data remains protected.

Government Requests

We can only provide encrypted data. Without your device's key, we cannot decrypt your credentials or personal information.

Frequently Asked Questions

Can you see my IPTV password?

No. Your passwords are encrypted on your device before being sent to our servers. We store only the encrypted version and have no way to decrypt it.

Does AI see my stream URLs?

No. AI processing happens on channel metadata and EPG data only. Your actual stream URLs and credentials never leave the encrypted vault.

What if I lose all my devices?

For security, we cannot recover encrypted data without a device key. We recommend keeping at least one backup device paired to your account.

Can I export my data?

Yes. You can export all your data in decrypted format from any paired device. Go to Settings → Privacy → Export Data.

How do I delete everything?

Account deletion is immediate and permanent. All encrypted data is purged from our servers. Go to Settings → Account → Delete Account.

Is this open source?

Our encryption libraries and security-critical code are open source and available for audit on GitHub. See our security repository.

Ready to take control of your privacy?

Join thousands who trust mytelly.app with their IPTV.