Saltar al contenido principal
fr/blog/obscura/research/conclusions/

obscura/research/conclusions

7 min de lecture

Meta-Conclusion (2026-07-08)

Après une analyse complète de l'empreinte navigateur — examinant FingerprintJS (44 vecteurs), BrowserLeaks (15+ outils), EFF Cover Your Tracks, les empreintes au niveau réseau (TCP, TLS, HTTP/2, QUIC), et les vecteurs au niveau matériel — les conclusions suivantes éclairent la conception d'Obscura.


Résumé de l'Inventaire des Vecteurs

Catégorie Vecteurs Totaux Contrôlable par Proxy Partiel Incontrôlable
Réseau & Protocole 13 3 6 4
HTTP & En-têtes 12 11 1 0
API JavaScript / DOM 44 29 13 2
Fonctionnalités Navigateur ~100+ 0 ~10 ~90+
Système & Matériel 15 6 4 5
Comportemental 8 1 4 3
Total Distinct ~60+ uniques ~50 ~38 ~100+

Couverture réaliste : Le proxy contrôle ~55% de la surface d'empreinte. Les ~45% restants sont matériels, comportementaux, ou des fonctionnalités inhérentes au navigateur.


Évaluation d'Impact par Couche

Couche 1 : Réseau & Protocole — IMPACT ÉLEVÉ, Contrôlable

Vecteur Contrôlable Priorité pour Obscura Méthode
Empreinte TLS (JA3/JA4) Oui Critique utls (Go) / Rust TLS personnalisé
Empreinte HTTP/2 Partiel Élevée Contrôle personnalisé des trames SETTINGS
En-têtes HTTP (12 vecteurs) Oui Élevée Réécriture d'en-têtes au proxy
DNS Oui Élevée Résolveur local + listes de blocage
Fuite IP WebRTC Oui Élevée Injection JS pour bloquer RTCPeerConnection
Pile TCP/IP Non Faible Pile du conteneur héritée
QUIC/HTTP/3 Bloquer Moyenne Bloquer UDP 443
Attaques temporelles Partiel Faible Arrondir performance.now()

Couche 2 : API JavaScript — IMPACT MOYEN, Partiellement Contrôlable

29 vecteurs entièrement usurpables via injection JS :

  • navigator.userAgent, platform, language, languages
  • navigator.hardwareConcurrency, deviceMemory
  • screen.width, height, colorDepth, pixelDepth, availTop/Left
  • navigator.cookieEnabled, webdriver
  • Fuseau horaire Intl.DateTimeFormat
  • navigator.vendor, vendorFlavors
  • navigator.architecture, pdfViewerEnabled
  • Apple Pay, Private Click Measurement
  • Requêtes média (prefers-reduced-motion, color-gamut, etc.)
  • localStorage, sessionStorage, indexedDB, openDatabase

13 vecteurs partiellement usurpables :

  • Canvas — l'injection de bruit est détectable
  • WebGL — peut bloquer debug_renderer_info, pas le rendu
  • Audio — peut aplatir la sortie, la variation matérielle persiste
  • Polices — peut arrondir les mesures, pas éliminer l'énumération
  • Plugins — peut surcharger, mais limité
  • Bloqueurs DOM — détectables

2 vecteurs non usurpables :

  • Empreinte FPU mathématique — comportement matériel en virgule flottante
  • Latence de base audio — pile audio matérielle

Couche 3 : Fonctionnalités Navigateur — IMPACT FAIBLE, Incontrôlable

~100+ tests de support de fonctionnalités (WebGL, WebGPU, WebUSB, Service Workers, etc.) sont inhérents au navigateur. Ne peuvent pas être modifiés au niveau proxy.

Atténuation : Le blocage DNS des domaines d'empreinte connus empêche le chargement de nombreux scripts de détection de fonctionnalités.

Couche 4 : Matériel & Système — IMPACT FAIBLE, Incontrôlable

Modèle GPU, fonctionnalités CPU, matériel audio, disposition du clavier, polices installées — ce sont des propriétés système locales que le proxy ne peut pas modifier.

Couche 5 : Comportemental — HORS DE PORTÉE

Mouvements de souris, dynamique de frappe, motifs de défilement, durée de session — la biométrie comportementale est hors de contrôle de tout proxy.


Résultats Clés

1. L'Usurpation d'Empreinte TLS est Non Négociable

Si Obscura termine TLS (requis pour le MITM), le serveur voit la pile TLS du proxy. Sans usurpation, la destination détecte immédiatement qu'un proxy est utilisé. C'est la fonctionnalité la plus critique.

2. La Cohérence Interne est Obligatoire

Chaque signal doit correspondre au même profil :

Profil : "Chrome 120 / Windows 11"
   User-Agent: Chrome 120 sur Win11
   Sec-CH-UA-Platform: "Windows"
   JA3: Chrome 120 Win11
   Paramètres HTTP/2 SETTINGS : valeurs de Chrome
   fuseau horaire : correspond à la locale Win11
   écran : résolution typique Win11
   platform: "Win32"

L'incohérence est elle-même une empreinte.

3. Le Blocage DNS est le Meilleur Retour sur Investissement

Bloquer fingerprintjs.com, *.metrics.*, et les domaines de suivi empêche le chargement des scripts d'empreinte. C'est la protection la plus simple et la plus efficace.

4. Canvas/WebGL/WebGPU sont les Problèmes Difficiles

Ces rendus s'effectuent sur le matériel local. Le proxy peut :

  • Bloquer les API d'info de débogage (modèle GPU caché)
  • Injecter du bruit dans la sortie canvas (détectable par comparaison)
  • Ne pas contrôler le rendu réel des pixels

Tor Browser résout ce problème en rendant tous les utilisateurs identiques (casse complètement WebGL). Obscura ne peut pas égaler cela au niveau réseau.

5. QUIC/HTTP/3 Doit Être Bloqué

QUIC est chiffré de bout en bout. Si autorisé, le trafic contourne entièrement le proxy. Bloquer UDP 443.

6. WebRTC Doit Être Bloqué

WebRTC contourne le proxy via STUN. Bloquer via surcharge JS de RTCPeerConnection.


Principes de Conception


  1. Cohérence sur exhaustivité : Un ensemble plus petit de signaux parfaitement cohérents bat une protection large mais incohérente.



  2. Bloquer plutôt qu'usurper : Si un vecteur ne peut pas être usurpé de manière fiable (canvas, audio), le bloquer plutôt que de fuire des données partielles. Le blocage est détectable mais fuit moins d'informations.



  3. Défense en profondeur : Blocage DNS (empêche les scripts de charger) + usurpation d'en-têtes (couche HTTP) + usurpation TLS (couche transport) + injection JS (couche API navigateur) — chaque couche ajoute une protection.



  4. Échec sécurisé : En cas d'incertitude, bloquer. Toujours préférer la prévention des fuites de confidentialité à la fonctionnalité.



  5. Mises à jour régulières des profils : Les navigateurs publient de nouvelles versions mensuellement, changeant les empreintes. Les profils doivent être mis à jour ou Obscura devient détectable.



  6. Diversité des profils : Différents profils pour différents contextes (travail, personnel, incognito) empêche la corrélation inter-contextes.



Périmètre pour Obscura v1

[MVP]
 Usurpation d'en-têtes HTTP             (tous les en-têtes, 12 vecteurs)   
 Usurpation d'empreinte TLS             (JA3/JA4 via utls)          
 Blocage DNS                            (gestion des listes de blocage)      
 Blocage WebRTC                         (injection JS)              
 Usurpation d'API Navigator             (29 vecteurs JS)             
 Blocage QUIC                           (rejet UDP 443)              
 3-5 profils d'identité                 (Chrome, Firefox, Safari)   
 Interface Web                          (TS + CSS, gestion de profil)    

[Post-MVP]
 Injection de bruit Canvas              (meilleur effort)              
 Blocage des infos de débogage WebGL     (partiel)                  
 Blocage AudioContext                    (partiel)                  
 Usurpation d'empreinte HTTP/2           (SETTINGS personnalisé)          
 Éditeur de profil personnalisé          (fonctionnalité UI)               
 Statistiques de trafic                  (tableau de bord)                
 Réduction d'énumération des polices     (arrondi des mesures)     

Évaluation Finale

Aspect Verdict
Viabilité Viable comme amélioration significative de la confidentialité
Définitivité Pas définitif — aucun outil ne peut l'être
Unicité Unique — aucun outil réseau multi-couche anti-empreinte existant
Couverture des Vecteurs ~55% contrôlable, ~45% hors périmètre
Maintenance Moyenne-Élevée — les profils TLS/HTTP nécessitent des mises à jour
Impact sur les Performances Faible-Moyen — le MITM ajoute de la latence
Expérience Utilisateur Élevée — transparent pour les appareils finaux
Déploiement Simple — conteneur Docker, configurer une fois

Mot de la Fin


Obscura mérite d'être construit comme une couche de confidentialité pratique qui augmente significativement le coût de l'empreinte numérique, pas comme une solution miracle. Sa valeur unique est une protection multi-couche à l'échelle du réseau, sans configuration par appareil — ce qu'aucun outil existant ne fournit.



"La confidentialité parfaite est impossible. Une confidentialité significative ne l'est pas."