🔬 Recherche future
Vision R&D 2026-2028
L'objectif à long terme est de faire évoluer BlocMail d'un système à base de règles vers un système hybride règles + IA adaptatif, capable d'apprendre des nouvelles menaces et de s'améliorer en continu.
Axe 1 — IA embarquée (Q3 2026)
Objectif
Intégrer un modèle ML léger directement dans les Edge Functions pour améliorer la précision de 30% sans dégradation de latence.
Approche : SetFit (few-shot learning)
SetFit permet d'entraîner un classificateur efficace avec très peu d'exemples labellisés :
from setfit import SetFitModel, SetFitTrainer
from datasets import Dataset
# Entraînement sur un petit corpus
train_dataset = Dataset.from_dict({
"text": ["Votre colis est prêt", "Réunion demain 14h", ...],
"label": [1, 0, ...] # 1=spam, 0=ham
})
model = SetFitModel.from_pretrained("sentence-transformers/all-MiniLM-L6-v2")
trainer = SetFitTrainer(model=model, train_dataset=train_dataset)
trainer.train()
# Export ONNX pour Edge Function
model.save_pretrained("./model-onnx")
Avantages :
- Entraînement rapide (< 1h sur GPU)
- Peu d'exemples nécessaires (8-32 par classe)
- Export ONNX compatible Deno/TF.js
Architecture cible
Email headers + contenu
↓
[Règles actuelles] → patternScore + headerScore
↓
[SetFit ONNX] → iaScore (sémantique + contexte)
↓
[Velocity] → velocityScore (fréquence temporelle)
↓
scoreFinal = 0.30×header + 0.35×pattern + 0.20×ia + 0.15×velocity
Corpus d'entraînement cible
| Source | Volume | Statut |
|---|---|---|
| SMS Spam Collection | 5 574 | ✅ Disponible |
| Enron Spam | 33 716 | ✅ Disponible |
| Corpus communautaire BlocMail (opt-in) | ~10 000 (cible) | 🔄 En collecte |
| Phishing FR 2025-2026 (manuel) | ~2 000 | 📋 À créer |
Axe 2 — Détection de campagnes en temps réel (Q3 2026)
Objectif
Identifier les campagnes de spam/phishing à l'échelle (même IP, même domaine, même pattern utilisé par N utilisateurs simultanément).
Architecture
Signal utilisateur A (IP: 1.2.3.4, domaine: evil.com)
Signal utilisateur B (IP: 1.2.3.4, domaine: evil.com)
Signal utilisateur C (IP: 1.2.3.4, domaine: evil.com)
↓
Table PostgreSQL: ip_velocity { ip, domain, count, window_start }
↓
Si count > threshold → velocityScore élevé pour les analyses suivantes
↓
Alerte : "Campagne détectée sur evil.com — 47 signalements en 1h"
Partenariats API 33700 / SignalSpam
Intégration des flux de signalements en temps réel :
- 33700 : plateforme nationale signalement SMS/appels
- SignalSpam : signalement spam email (MAAWG)
Objectif : délai de détection < 15 minutes après le début d'une campagne.
Axe 3 — Analyse NLP du corps d'email (Q4 2026)
Problème actuel
Seuls les headers sont analysés. Le corps de l'email contient des signaux très forts (URLs, demandes d'action, urgence).
Approche prévue
Extraction d'URLs
// Extraire et analyser toutes les URLs du corps
const urls = extractUrls(emailBody);
for (const url of urls) {
const vtResult = await virusTotal.check(url);
if (vtResult.malicious > 0) urlScore += 40;
// Détecter redirections masquées
const finalUrl = await followRedirects(url);
if (finalUrl !== url) urlScore += 20;
}
Analyse de sentiment / urgence
// Signaux d'urgence dans le texte
const urgencyPatterns = [
/urgent|immédiat|maintenant|aujourd'hui/i,
/expire dans|délai|limite/i,
/agissez vite|ne manquez pas|dernière chance/i,
];
Résumé LLM (GPT-4 / LLaMA)
Pour les emails suspects (score > 60), générer automatiquement un résumé explicatif :
"Cet email prétend être d'Orange et vous demande de mettre à jour
vos informations de paiement via un lien suspect. L'URL pointe vers
orange-update-secure.net (domaine créé il y a 3 jours). Score: 89/100."
Axe 4 — Analyse des pièces jointes (2027)
Signaux à analyser (sans ouvrir les fichiers)
| Signal | Technique | Risque |
|---|---|---|
| Extension double (.pdf.exe) | Regex sur filename | Malware |
| Taille anormale pour le type | Heuristique | Malware caché |
| Hash MD5/SHA256 | Base VirusTotal | Malware connu |
| Entropie élevée (fichier chiffré) | Calcul entropie Shannon | Ransomware |
Important : L'analyse se fait uniquement sur les métadonnées MIME, jamais sur le contenu (vie privée).
Axe 5 — Federated Learning (2027-2028)
Concept
Entraîner le modèle ML de manière distribuée sans centraliser les données des utilisateurs.
Utilisateur A → Entraîne modèle local → Envoie gradients (pas données)
Utilisateur B → Entraîne modèle local → Envoie gradients
↓
Serveur agrège les gradients → Améliore le modèle global
↓
Modèle amélioré redistribué à tous les utilisateurs
Avantages :
- Les données ne quittent jamais le device de l'utilisateur
- RGPD nativement respecté
- Amélioration continue sans compromettre la vie privée
Stack : TensorFlow Federated ou PySyft
Axe 6 — Recherche sur les datasets FR (2026)
Lacune identifiée
Les datasets publics sont majoritairement en anglais. Il manque un corpus de spam/phishing français de qualité.
Plan de constitution
- Collecte opt-in : les utilisateurs BlocMail peuvent contribuer anonymement leurs emails spam (avec consentement explicite)
- Labellisation : équipe interne + crowdsourcing
- Validation : double annotation pour les cas ambigus
- Publication : release open-source du dataset FR (Q4 2026)
Cible : 10 000 emails labellisés (spam/ham) en français, couvrant 2024-2026.
Publications et contributions open-source prévues
| Publication | Horizon | Description |
|---|---|---|
| Dataset spam FR | Q4 2026 | 10k emails FR labellisés |
| Modèle SetFit spam FR | Q4 2026 | Modèle fine-tuné sur HuggingFace |
| Librairie patterns | 2027 | @blocmail/spam-patterns npm |
| SDK BlocMail | 2027 | @blocmail/sdk JS/Python |
| Article de recherche | 2027 | Benchmark scoring hybride vs ML pur |