Skip to content
This repository was archived by the owner on Apr 4, 2026. It is now read-only.

Repository files navigation

🇫🇷 Français | 🇬🇧 English

🔐 SecureChat

Chat chiffré de bout en bout pour Android — gratuit, anonyme, sans serveur


AndroidKotlinE2ELicenseTermsPrivacy


 Vos messages sont chiffrés AVANT d'être envoyés.
Firebase ne voit que du bruit.
Pas de numéro. Pas d'email.
Juste un pseudo et une clé.


⚡ En bref

🔐 Crypto

  • PQXDH : X25519 + ML-KEM-1024 (post-quantique)
  • SPQR : ré-encapsulation PQ périodique (toutes les 10 msgs)
  • AES-256-GCM / ChaCha20-Poly1305 (auto) + Double Ratchet avec PFS + healing
  • Fingerprint emojis 96-bit anti-MITM + QR code scanner
  • Vérification indépendante par utilisateur + messages système
  • BIP-39 backup (24 mots) + grille autocomplete
  • Photos one-shot — vue unique, suppression sécurisée 2 phases
  • Clé privée dans Android Keystore (StrongBox si dispo)
  • Base locale chiffrée SQLCipher
  • Message padding taille fixe (256/1K/4K/16K)
  • PBKDF2 PIN (600K itérations)
  • Dummy traffic (trafic factice par conversation)
  • Fichiers E2E chiffrés AES-256-GCM
  • Signature Ed25519 anti-falsification par message
  • Tor intégré — SOCKS5, VPN TUN, IP masquée

🎨 UI/UX

  • Material Design 3 — Migration complète des 5 thèmes
  • 5 thèmes : Midnight · Hacker · Phantom · Aurora · Daylight
  • Animations fluides — transitions, bulles, cascade
  • Icônes d'attachement inline — Style Session, animation slide-up
  • Écran Tor Bootstrap — Choix Tor/Normal, progress animé, 5 thèmes
  • Toolbar scrollable + FAB auto-hide
  • Bulles dynamiques colorées par thème
  • App Lock PIN + biométrie
  • Messages éphémères (30s → 1 mois)
  • Photos one-shot vue unique 🔥

✨ Fonctionnalités

🔒 Sécurité & Crypto
FeatureDétail
🔐Chiffrement E2EPQXDH : X25519 + ML-KEM-1024 + AES-256-GCM / ChaCha20-Poly1305 + SPQR
🔄Perfect Forward SecrecyDouble Ratchet (DH + KDF chains)
🔏Fingerprint emojis + QR96-bit, 16 emojis + QR code SHA-256, scanner intégré
Vérification indépendanteChacun vérifie de son côté, message système + lien cliquable
🛡️DeviceSecurityManagerDétection StrongBox, niveau MAXIMUM/STANDARD
🕵️Metadata hardeningsenderUid hashé HMAC + messageIndex chiffré
🛡️Zero-knowledge relayFirebase ne voit que du ciphertext
🔑Keystore-backedClé privée dans EncryptedSharedPreferences
🗄️SQLCipherBase Room chiffrée AES-256
🧹Zeroing mémoireClés intermédiaires remplies de zéros
📏Message paddingTaille fixe (256/1K/4K/16K) anti-analyse de trafic
🗑️Delete-after-deliveryMessages supprimés de Firebase après déchiffrement
👻Dummy trafficMessages factices périodiques (configurable)
📎Fichiers E2EChiffrement AES-256-GCM par fichier via Firebase Storage
🔒PBKDF2 PIN600K itérations + salt (remplace SHA-256)
✍️Signature Ed25519Chaque message signé, badge ✅/⚠️ anti-falsification
📸Photos one-shotVue unique (sender + receiver), suppression sécurisée 2 phases
💬 Messagerie
FeatureDétail
📷QR CodeScan → clé publique + pseudo auto-remplis (deep link v2)
📨Demandes de contactInvitation → notification → accepter/refuser
🔴Messages non lusBadge compteur + séparateur dans le chat
🔄Temps réelMessages reçus même app en arrière-plan
🔔Push notificationsOpt-in, zéro contenu message
⏱️Messages éphémères10 durées (30s → 1 mois), synchro Firebase
Partage de fichiers E2EChiffrés AES-256-GCM, 25 Mo max
👻Trafic facticeMessages indistinguables pour masquer l'activité
🗑️Delete-after-deliveryCiphertext supprimé de Firebase après réception
�💀Détection convo morteAuto-détection + nettoyage + re-invitation
🎨 Interface
FeatureDétail
🌙5 thèmesMidnight · Hacker · Phantom · Aurora · Daylight
AnimationsTransitions slide/fade, bulles animées, cascade
📜Toolbar scrollableSe replie au scroll, réapparaît (snap)
🔽FAB auto-hideDisparaît au scroll vers le bas
🫧Bulles dynamiquesCouleurs adaptées au thème via backgroundTint
🎭Sélecteur visuelGrille MaterialCardView avec prévisualisation
📎Icônes inlineAttachement style Session (fichier/photo/caméra) animé
🔒 Protection
FeatureDétail
🔒App LockPIN 6 chiffres + biométrie opt-in
Auto-lockTimeout configurable (5s → 5min)
🔑Backup BIP-3924 mots pour sauvegarder la clé d'identité
♻️RestaurationGrille autocomplete 24 mots + restaurer sur nouvel appareil
🗑️Suppression complèteNettoie Firebase (profil, inbox, convos, clés de signature)
📵AnonymeZéro numéro, zéro email, zéro tracking

🏗 Architecture

┌──────────────────────────────────────────────────┐
│ UI Layer │
│ Fragments · ViewModels · Adapters │
├──────────────────────────────────────────────────┤
│ Repository Layer │
│ ChatRepository — source de vérité unique │
├────────────────┬────────────────┬────────────────┤
│ Room DB │ Crypto │ Firebase │
│ (SQLCipher) │ PQXDH + DR │ Relay + FCM │
└────────────────┴────────────────┴────────────────┘

📖 DétailsArchitecture complète · Protocole crypto · Structure du projet


🛠 Quick Start

# 1. Clone
git clone https://github.com/DevBot667/SecureChat.git
cd SecureChat
# 2. Ajouter google-services.json dans app/ (voir docs/SETUP.md)# 3. Build
./gradlew assembleDebug

📖 Guide completInstallation & Configuration Firebase


🔐 Sécurité

MesureStatut
Chiffrement E2E (PQXDH : X25519 + ML-KEM-1024 + AES-256-GCM / ChaCha20)
Double Ratchet avec PFS + healing
Zeroing mémoire (clés intermédiaires)
Envoi atomique (ratchet + Firebase)
Mutex par conversation (thread-safe)
SQLCipher (base locale chiffrée AES-256)
Metadata hardening (trial decryption)
senderUid hashé HMAC-SHA256 par conversation
Message padding taille fixe (anti traffic analysis)
Delete-after-delivery (Firebase auto-cleanup)
Dummy traffic configurable (trafic factice)
Fichiers E2E (AES-256-GCM + Firebase Storage)
PBKDF2 PIN (600K itérations + salt)
R8/ProGuard obfuscation + log stripping complet (d/v/i/w/e/wtf)
Fingerprint emojis 96-bit anti-MITM + QR code SHA-256 scanner
App Lock (PIN + biométrie)
Firebase security rules restrictives
BIP-39 backup/restore (24 mots)
allowBackup=false, zéro logs sensibles
Material Design 3 — migration complète des 5 thèmes
Icônes d'attachement inline avec animation (style Session)
Permissions Android 13+ (READ_MEDIA_IMAGES/AUDIO)
Geste prédictif (enableOnBackInvokedCallback)
Routage Tor intégré (SOCKS5 + VPN TUN + libtor.so)
Écran bootstrap Tor (choix + progress + 5 thèmes)
Toggle Tor dans Paramètres Sécurité + reconnexion
Dummy traffic par conversation
Signature Ed25519 par message (anti-falsification)
PQXDH : X25519 + ML-KEM-1024 (résistance post-quantique)
SPQR : ré-encapsulation ML-KEM toutes les 10 messages
ChaCha20-Poly1305 alternatif (auto-détection hardware AES)
Upgrade PQXDH différé (rootKey-only, zéro désync)
StrongBox hardware key storage (si disponible)
DeviceSecurityManager (probe StrongBox + profil utilisateur)
QR deep link v2 (X25519 + ML-KEM + nom, auto-fill)
displayName masqué de Firebase (zéro PII serveur)
Vérification d'empreinte indépendante par utilisateur
Messages système de vérification + lien cliquable
lastDeliveredAt (skip messages déjà traités au redémarrage)
Delete-after-failure (nettoyage messages en échec Firebase)
Déduplication atomique dual-listener (ConcurrentHashMap)
Nettoyage clés de signature à la suppression de compte
Audit sécurité V3.4.1 — 42+ vulnérabilités corrigées
Firebase rules : write-once (signing_keys, mlkem_keys, inbox)
Validation senderUid/ciphertext/iv/createdAt dans Firebase rules
Zeroing mémoire HKDF (IKM, PRK, expandInput)
Zeroing mémoire MnemonicManager (encode + decode)
FLAG_SECURE (MainActivity, LockScreen, RestoreFragment, dialogs)
Protection anti-tapjacking (filterTouchesWhenObscured)
usesCleartextTraffic=false (zéro trafic HTTP)
Deep link hardening (whitelist, limites, anti-injection)
Clipboard EXTRA_IS_SENSITIVE + auto-clear 30s
SecureFileManager (suppression 2 passes : aléatoire + zéros)
FCM payload opaque (zéro metadata dans les notifications push)
Firebase Storage : delete restreint au uploadeur uniquement
Validation ML-KEM taille + Base64 côté client
Input validation FirebaseRelay.sendMessage (require guards)
Cloud Function : regex validation senderUid + conversationId

📖 Analyse complèteSECURITY.md · Protocole crypto


🗺 Roadmap

VersionThèmeStatut
V1Core — E2E, contacts, conversations, push, fingerprint, SQLCipher, App Lock, éphémère✅ Done
V2Crypto Upgrade — Full Double Ratchet X25519, Curve25519 natif✅ Done
V2.1Account Lifecycle — BIP-39 backup, restauration, suppression, dead convo✅ Done
V2.2UI Modernization — 5 thèmes, animations, CoordinatorLayout, zero hardcoded colors✅ Done
V3Security Hardening — R8, delete-after-delivery, padding, HMAC UID, PBKDF2, dummy traffic, fichiers E2E✅ Done
V3.1Settings Redesign — Paramètres Signal-like, PIN 6 chiffres, sous-écran Confidentialité, coroutines PIN✅ Done
V3.2Ed25519 Signing — Signature par message, badge ✅/⚠️, durcissement Firebase rules, nettoyage clés✅ Done
V3.3Material 3 + Tor + Attachment UX — Migration M3, intégration Tor complète, icônes inline Session, permissions Android 13+, durcissement logs✅ Done
V3.4PQXDH + Security — ML-KEM-1024 post-quantique, deep link v2, QR auto-fill nom, displayName masqué Firebase, DeviceSecurityManager StrongBox, vérification empreinte indépendante, messages système, fix désync PQXDH, fix dual-listener, lastDeliveredAt✅ Done
V3.4.1One-Shot + UX + Security Audit — Photos éphémères, grille BIP-39, QR fingerprint, audit 29 layouts, PIN oublié, audit sécurité complet (42+ fixes) : Firebase rules write-once, zeroing mémoire HKDF/mnemonic, FLAG_SECURE, deep link hardening, SecureFileManager, FCM opaque, Storage owner-only delete, input validation✅ Done
V3.5SPQR + ChaCha20 + Threat Model — Triple Ratchet PQ (ré-encapsulation ML-KEM toutes les 10 msgs), ChaCha20-Poly1305 alternatif (auto-détection hardware), modèle de menace documenté dans SECURITY.md✅ Done
V3.6Planned — Camouflage app + faux écran, Dual PIN, panic button, messages vocaux E2E, sealed sender, reply/quote🔜

📖 DétailsChangelog complet


🤝 Contribuer

  1. Fork le repo
  2. Crée ta branche (git checkout -b feature/ma-feature)
  3. Commit (git commit -m 'Ajout de ma feature')
  4. Push (git push origin feature/ma-feature)
  5. Ouvre une Pull Request

⚠️ Pour toute modification crypto, ouvrir une issue d'abord pour discussion.


📖 Documentation

DocumentContenu
ArchitecturePatterns, layers, flux des demandes, cycle de vie
Protocole CryptoX25519, Double Ratchet, fingerprint, modèle de menace
InstallationPrérequis, Firebase, build, dépendances
StructureArbre complet du projet
ChangelogHistorique V1 → V3.5
SécuritéAudit complet, limites connues

Ce projet est sous licence GPLv3. Consultez les Terms of Service avant toute utilisation.

Fourni à des fins éducatives. Utilisez-le comme base pour comprendre le chiffrement E2E sur mobile.


⚠️ Avertissement : Ce logiciel est un projet personnel et éducatif. L'implémentation cryptographique n'a pas été auditée par un cabinet de sécurité tiers. Aucune garantie de sécurité absolue n'est fournie. Ne l'utilisez pas comme seul moyen de communication sécurisée dans des situations critiques. L'utilisation de ce logiciel est à vos propres risques. Voir TERMS.md.




"Vos messages, vos clés, votre vie privée."


About

(Moved to Fialka) 🔐 End-to-end encrypted chat for Android. PQXDH (X25519 + ML-KEM-1024) + AES-256-GCM, full Double Ratchet (PFS + healing), Firebase relay. Zero metadata, zero tracking.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages