Skip to content

DevBot667/SecureChat

Repository files navigation

🇫🇷 Français | 🇬🇧 English

🔐 SecureChat

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


Android Kotlin E2E License


  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

  • X25519 ECDH + AES-256-GCM
  • Double Ratchet avec PFS + healing
  • Fingerprint emojis 96-bit anti-MITM
  • BIP-39 backup (24 mots)
  • Clé privée dans Android Keystore
  • 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)

✨ Fonctionnalités

🔒 Sécurité & Crypto
Feature Détail
🔐 Chiffrement E2E X25519 ECDH + AES-256-GCM
🔄 Perfect Forward Secrecy Double Ratchet (DH + KDF chains)
🔏 Fingerprint emojis 96-bit, 16 emojis, anti-MITM
🕵️ Metadata hardening senderUid hashé HMAC + messageIndex chiffré
🛡️ Zero-knowledge relay Firebase ne voit que du ciphertext
🔑 Keystore-backed Clé privée dans EncryptedSharedPreferences
🗄️ SQLCipher Base Room chiffrée AES-256
🧹 Zeroing mémoire Clés intermédiaires remplies de zéros
📏 Message padding Taille fixe (256/1K/4K/16K) anti-analyse de trafic
🗑️ Delete-after-delivery Messages supprimés de Firebase après déchiffrement
👻 Dummy traffic Messages factices périodiques (configurable)
📎 Fichiers E2E Chiffrement AES-256-GCM par fichier via Firebase Storage
🔒 PBKDF2 PIN 600K itérations + salt (remplace SHA-256)
✍️ Signature Ed25519 Chaque message signé, badge ✅/⚠️ anti-falsification
💬 Messagerie
Feature Détail
📷 QR Code Scan → clé publique + pseudo auto-remplis
📨 Demandes de contact Invitation → notification → accepter/refuser
🔴 Messages non lus Badge compteur + séparateur dans le chat
🔄 Temps réel Messages reçus même app en arrière-plan
🔔 Push notifications Opt-in, zéro contenu message
⏱️ Messages éphémères 10 durées (30s → 1 mois), synchro Firebase
Partage de fichiers E2E Chiffrés AES-256-GCM, 25 Mo max
👻 Trafic factice Messages indistinguables pour masquer l'activité
🗑️ Delete-after-delivery Ciphertext supprimé de Firebase après réception
�💀 Détection convo morte Auto-détection + nettoyage + re-invitation
🎨 Interface
Feature Détail
🌙 5 thèmes Midnight · Hacker · Phantom · Aurora · Daylight
Animations Transitions slide/fade, bulles animées, cascade
📜 Toolbar scrollable Se replie au scroll, réapparaît (snap)
🔽 FAB auto-hide Disparaît au scroll vers le bas
🫧 Bulles dynamiques Couleurs adaptées au thème via backgroundTint
🎭 Sélecteur visuel Grille MaterialCardView avec prévisualisation
📎 Icônes inline Attachement style Session (fichier/photo/caméra) animé
🔒 Protection
Feature Détail
🔒 App Lock PIN 6 chiffres + biométrie opt-in
Auto-lock Timeout configurable (5s → 5min)
🔑 Backup BIP-39 24 mots pour sauvegarder la clé d'identité
♻️ Restauration Restaurer sur un nouvel appareil via phrase
🗑️ Suppression complète Nettoie Firebase (profil, inbox, convos, clés de signature)
📵 Anonyme Zé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)  │  X25519 + 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é

Mesure Statut
Chiffrement E2E (X25519 + AES-256-GCM)
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
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)
Nettoyage clés de signature à la suppression de compte

📖 Analyse complèteSECURITY.md · Protocole crypto


🗺 Roadmap

Version Thème Statut
V1 Core — E2E, contacts, conversations, push, fingerprint, SQLCipher, App Lock, éphémère ✅ Done
V2 Crypto Upgrade — Full Double Ratchet X25519, Curve25519 natif ✅ Done
V2.1 Account Lifecycle — BIP-39 backup, restauration, suppression, dead convo ✅ Done
V2.2 UI Modernization — 5 thèmes, animations, CoordinatorLayout, zero hardcoded colors ✅ Done
V3 Security Hardening — R8, delete-after-delivery, padding, HMAC UID, PBKDF2, dummy traffic, fichiers E2E ✅ Done
V3.1 Settings Redesign — Paramètres Signal-like, PIN 6 chiffres, sous-écran Confidentialité, coroutines PIN ✅ Done
V3.2 Ed25519 Signing — Signature par message, badge ✅/⚠️, durcissement Firebase rules, nettoyage clés ✅ Done
V3.3 Material 3 + Tor + Attachment UX — Migration M3, intégration Tor complète, icônes inline Session, permissions Android 13+, durcissement logs ✅ Done
V3.4 Planned — Camouflage app + faux écran, Dual PIN, panic button, FLAG_SECURE, 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

Document Contenu
Architecture Patterns, layers, flux des demandes, cycle de vie
Protocole Crypto X25519, Double Ratchet, fingerprint, modèle de menace
Installation Prérequis, Firebase, build, dépendances
Structure Arbre complet du projet
Changelog Historique V1 → V3.3
Sécurité Audit complet, limites connues

Ce projet est sous licence GPLv3.

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




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


Releases

No releases published

Contributors