Aller au contenu principal

🔬 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

SourceVolumeStatut
SMS Spam Collection5 574✅ Disponible
Enron Spam33 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)

SignalTechniqueRisque
Extension double (.pdf.exe)Regex sur filenameMalware
Taille anormale pour le typeHeuristiqueMalware caché
Hash MD5/SHA256Base VirusTotalMalware connu
Entropie élevée (fichier chiffré)Calcul entropie ShannonRansomware

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

  1. Collecte opt-in : les utilisateurs BlocMail peuvent contribuer anonymement leurs emails spam (avec consentement explicite)
  2. Labellisation : équipe interne + crowdsourcing
  3. Validation : double annotation pour les cas ambigus
  4. 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

PublicationHorizonDescription
Dataset spam FRQ4 202610k emails FR labellisés
Modèle SetFit spam FRQ4 2026Modèle fine-tuné sur HuggingFace
Librairie patterns2027@blocmail/spam-patterns npm
SDK BlocMail2027@blocmail/sdk JS/Python
Article de recherche2027Benchmark scoring hybride vs ML pur