Messagerie chiffrée de bout en bout avec authentification par clé USB physique.
Assecured est une application de messagerie desktop sécurisée construite avec Wails v2 (Go + React). Elle implémente le Signal Protocol pour le chiffrement de bout en bout et utilise une clé USB physique comme facteur d'authentification matériel.
Aucun mot de passe n'est stocké sur un serveur. L'identité cryptographique de l'utilisateur vit exclusivement sur sa clé USB, protégée par le système Pazoo (mot de passe + séquence d'animaux).
- Signal Protocol — Double Ratchet, X3DH, PreKeys pour le chiffrement E2E des messages privés
- Sender Keys — Chiffrement de groupe conforme à la spec Signal
- Clé USB obligatoire — L'identité cryptographique est stockée uniquement sur un support physique
- Pazoo — Système d'authentification combinant mot de passe + séquence visuelle d'animaux, dérivé via Argon2id
- Wipe automatique — Après plusieurs tentatives échouées, la clé USB est effacée et le compte supprimé
- Messages éphémères — Mode de conversation où les messages sont automatiquement supprimés
- Chiffrement des fichiers — AES-256-GCM pour les fichiers envoyés, clés dérivées par session
- Conversations privées chiffrées E2E
- Groupes avec gestion des rôles (admin/membre)
- Envoi de fichiers (images, documents, audio, vidéo) chiffrés
- Prévisualisation des images et GIFs inline
- Sélecteur d'emojis et de GIFs (Tenor)
- Statuts de messages (envoyé, distribué, lu)
- Indicateur de présence en ligne
- Appels audio/vidéo en peer-to-peer via WebRTC
- Appels de groupe
- Partage d'écran
- Configuration des périphériques audio/vidéo
- Avatar personnalisable
- Bio
- Consultation du profil des contacts
├── main.go # Point d'entrée Wails
├── app.go # Logique applicative principale (bindings Go ↔ JS)
├── event_manager.go # Gestion des événements temps réel (Supabase Realtime + polling)
├── auth/ # Authentification, contacts, blocage
├── crypto/ # Primitives cryptographiques
├── signalcrypto/ # Implémentation Signal Protocol (Double Ratchet, X3DH, Sender Keys)
├── message/ # Envoi/réception de messages, cache chiffré sur USB
├── group/ # Gestion des groupes (création, membres, invitations)
├── supabase/ # Client Supabase (BDD, Realtime, Storage)
├── usb/ # Gestion de la clé USB (identité, wipe, hardware ID)
├── pazoo/ # Système Pazoo (dérivation de clé Argon2id)
├── frontend/ # Interface React + Vite
│ ├── src/pages/ # Écrans (Login, Register, Messenger, USBSetup)
│ └── src/components/ # Composants (CallManager, EmojiPicker, GifPicker, etc.)
| Composant | Technologie |
|---|---|
| Backend | Go 1.23 |
| Frontend | React 18 + Vite |
| Framework desktop | Wails v2 |
| Base de données | Supabase (PostgreSQL) |
| Temps réel | Supabase Realtime (WebSocket) |
| Stockage fichiers | Supabase Storage |
| Chiffrement | Signal Protocol (X3DH + Double Ratchet + Sender Keys) |
| Dérivation de clé | Argon2id |
| Appels | WebRTC |
- Go 1.23+
- Node.js 20+
- Wails CLI v2 —
go install github.com/wailsapp/wails/v2/cmd/wails@latest - Une clé USB pour l'authentification
- Un projet Supabase configuré (tables: users, messages, contacts, groups, etc.)
# Cloner le repo
git clone https://github.com/Xanderssss/Assecuredv1.git
cd Assecuredv1
# Installer les dépendances frontend
cd frontend && npm install && cd ..
# Lancer en mode développement
wails dev
# Compiler l'exécutable
wails buildL'exécutable sera généré dans le dossier build/bin/.
-
Première utilisation — L'utilisateur branche une clé USB vierge, choisit un nom d'utilisateur, un mot de passe et une séquence Pazoo (6+ animaux). L'identité cryptographique (clés Ed25519 + X25519) est générée et stockée chiffrée sur la clé USB.
-
Connexion — L'utilisateur branche sa clé USB et reproduit son mot de passe + séquence Pazoo. Le hash final est dérivé via Argon2id avec un sel matériel (hardware ID + volume UUID de la clé USB).
-
Protection anti-brute-force — Après plusieurs tentatives échouées, la clé USB est automatiquement effacée (secure wipe) et le compte supprimé de la base de données.
L'implémentation suit la spécification Signal :
- X3DH (Extended Triple Diffie-Hellman) pour l'établissement de session
- Double Ratchet pour le chiffrement des messages privés avec forward secrecy
- Sender Keys pour le chiffrement de groupe performant
- PreKey bundles publiés sur Supabase pour permettre les sessions asynchrones
- Les sessions et Sender Keys sont persistées chiffrées sur la clé USB
Développé par Xander et Yorgalus, deux passionnés de cybersécurité. Ce projet a été fait pour le kiff.
Le système d'authentification Pazoo (mot de passe + séquence d'animaux) est développé en collaboration avec TeSairen.
Projet privé — Tous droits réservés.
