Catégorie : Comportement Utilisateur / Interaction Humain-Machine
1. Description
La biométrie comportementale mesure comment un utilisateur interagit avec son appareil. Contrairement aux empreintes matérielles, celles-ci sont dynamiques — elles varient avec l'humeur, le contexte, la fatigue et la pratique. Cependant, elles sont aussi hautement individuelles : la dynamique de frappe seule peut identifier un utilisateur avec une précision >95% dans des environnements contrôlés.
2. Vecteurs
2.1 Dynamique de Frappe
document.addEventListener('keydown', event => {
console.log({
key: event.key,
timestamp: performance.now(),
code: event.code,
location: event.location
})
})
document.addEventListener('keyup', event => {
console.log({
key: event.key,
timestamp: performance.now(),
holdTime: performance.now() - keydownTime, // Durée de maintien de la touche
})
})
Caractéristiques mesurables :
- Temps de maintien de la touche : Durée entre keydown et keyup (typiquement 50-150ms)
- Intervalle inter-touche : Temps entre les pressions de touches successives
- Pression de la touche (sur appareils supportés) : Pression tactile pour chaque touche
- Motifs d'erreur : Utilisation de la touche retour, comportement de correction
- Vitesse de frappe : Caractères par minute (varie selon la tâche)
- Rythme : Motifs cohérents d'intervalles longs/courts
Entropie : ~15-25 bits (hautement individuelle)
Stabilité : Modérée — affectée par la fatigue, l'émotion, l'appareil, le type de clavier
2.2 Motifs de Mouvement de Souris
document.addEventListener('mousemove', event => {
console.log({
x: event.clientX,
y: event.clientY,
timestamp: performance.now(),
button: event.buttons,
movementX: event.movementX,
movementY: event.movementY
})
})
Caractéristiques mesurables :
- Trajectoire : Courbure du chemin, rectitude, dépassement
- Profil vitesse-accélération : Comment la vitesse change pendant le mouvement
- Comportement de clic : Temps entre enfoncement et relâchement, précision de position
- Motifs de survol : Où la souris fait une pause
- Couplage de défilement : Mouvement de souris pendant le défilement
Entropie : ~10-20 bits (modérément individuelle)
Stabilité : Faible-Modérée — affectée par la surface, l'appareil, la tâche
2.3 Motifs de Défilement
document.addEventListener('scroll', event => {
console.log({
scrollY: window.scrollY,
timestamp: performance.now(),
deltaMode: event.deltaMode,
deltaY: event.deltaY
})
})
Caractéristiques mesurables :
- Vitesse de défilement : Pixels par événement de défilement
- Accélération : Comment la vitesse de défilement change
- Fréquence de pause : À quelle fréquence le défilement s'arrête
- Rythme : Défilement régulier vs par salves
- Modèle lire-puis-défiler : Temps entre l'arrêt du défilement et le défilement suivant
Entropie : ~8-12 bits
Stabilité : Faible — dépendante de la tâche (article vs résultats de recherche vs réseaux sociaux)
2.4 Gestes Tactiles (Mobile)
element.addEventListener('touchstart', e => { /* début toucher */ })
element.addEventListener('touchmove', e => { /* trajectoire toucher */ })
element.addEventListener('touchend', e => { /* fin toucher, vitesse */ })
Mesurable :
- Angle, vitesse, accélération du balayage
- Pression d'appui (sur appareils supportés)
- Motifs de pincement-zoom
- Coordination multi-doigts
- Taille de contact (zone de contact du doigt)
Entropie : ~12-18 bits
Stabilité : Modérée — affectée par l'appareil, la prise en main, la posture
3. Forces de l'Attaquant
| Force | Explication |
|---|---|
| Hautement individuelle | La dynamique de frappe peut identifier un utilisateur avec >95% de précision |
| Continue | Pas une vérification ponctuelle — surveillance continue |
| Difficile à imiter | Falsifier le comportement d'une autre personne est extrêmement difficile |
| Aucune autorisation requise | Les événements souris/clavier/tactiles sont lisibles depuis JS |
| Passif | L'utilisateur ne peut pas savoir qu'il est mesuré |
4. Faiblesses de l'Attaquant
| Faiblesse | Explication | Exploitable ? |
|---|---|---|
| Nécessite une interaction | Ne peut pas empreinter sans entrée utilisateur | Limiter l'interaction |
| Haute variance | Change avec l'humeur, la fatigue, le contexte | Réduit la fiabilité |
| Long temps de collecte | Nécessite des minutes de données pour la précision | Les sessions courtes sont sûres |
| ML requis | Le simple hachage ne fonctionne pas pour les données comportementales | Non |
| Dépendant de la tâche | Pas cohérent entre différents sites web | Corrélation limitée |
| Facilement perturbé | L'interférence de timing JS brise la mesure | Oui |
5. Détection de la Manipulation
| Technique | Comment Ça Marche |
|---|---|
| Écouteurs d'événements manquants | Aucun événement souris/clavier capturé est suspect |
| Motifs de bruit injecté | Données de timing avec des motifs inhabituels (trop réguliers, trop aléatoires) |
| Qualité du signal | Caractéristiques de micro-timing attendues du matériel manquantes |
6. Atténuations pour Obscura
6.1 Ce Qu'Obscura Peut Faire
| Atténuation | Efficacité | Détectabilité | Implémentation |
|---|---|---|---|
| Surcharger l'enregistrement d'écouteurs d'événements | Faible | Élevée | Proxy des gestionnaires d'événements |
| Injecter du bruit de timing | Faible-Moyenne | Moyenne | Arrondir les horodatages des événements |
| Bloquer des types d'événements spécifiques | Moyenne | Élevée | Surcharger addEventListener |
6.2 Ce Qu'Obscura Ne Peut Pas Faire
| Ne Peut Pas | Pourquoi |
|---|---|
| Changer le comportement utilisateur | L'utilisateur déplace la souris, tape, définit — c'est physique |
| Supprimer la saisie au clavier | La frappe est nécessaire pour l'interaction |
| Normaliser les motifs de souris | Le mouvement de souris est contrôlé par l'utilisateur |
| Empêcher la classification ML | Le ML peut trouver des motifs dans des données bruitées |
6.3 Approche Recommandée
1. Arrondir les horodatages des événements à 50ms (réduit la précision du timing)
2. Accepter — la biométrie comportementale nécessite une infrastructure ML (la plupart des attaquants n'en auront pas)
3. Utiliser Tor Browser pour la navigation à haute sensibilité (Tor désactive de nombreux événements)
Note : La biométrie comportementale est principalement une préoccupation pour les cibles de grande valeur (banques, réseaux sociaux) avec un investissement ML significatif. Pour la navigation typique, ce vecteur est rarement exploité.
7. Références de Recherche
- Monaco, J. et al. (2018). "Behavioral Biometrics: A Survey." ACM Computing Surveys.
- Teh, P. et al. (2014). "A Survey on Keystroke Dynamics." ACM Computing Surveys.
- Yampolskiy, R. et al. (2011). "Behavioral Biometrics: A Survey and Classification." International Journal of Biometrics.
- Acar, G. et al. (2014). "The Web Never Forgets" — mentionne le suivi comportemental dans le contexte de la corrélation inter-sites.