- 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
|
- 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)
|
🔒 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 |
|
┌──────────────────────────────────────────────────┐
│ UI Layer │
│ Fragments · ViewModels · Adapters │
├──────────────────────────────────────────────────┤
│ Repository Layer │
│ ChatRepository — source de vérité unique │
├────────────────┬────────────────┬────────────────┤
│ Room DB │ Crypto │ Firebase │
│ (SQLCipher) │ X25519 + DR │ Relay + FCM │
└────────────────┴────────────────┴────────────────┘
📖 Détails — Architecture complète · Protocole crypto · Structure du projet
# 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 complet — Installation & Configuration Firebase
| 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ète — SECURITY.md · Protocole crypto
| 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étails — Changelog complet
- Fork le repo
- Crée ta branche (
git checkout -b feature/ma-feature)
- Commit (
git commit -m 'Ajout de ma feature')
- Push (
git push origin feature/ma-feature)
- Ouvre une Pull Request
⚠️ Pour toute modification crypto, ouvrir une issue d'abord pour discussion.
| 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."