Categoría: Comportamiento del Usuario / Interacción Humano-Computadora
1. Descripción
La biometría del comportamiento mide cómo un usuario interactúa con su dispositivo. A diferencia de los fingerprints de hardware, estos son dinámicos — varían con el estado de ánimo, contexto, fatiga y práctica. Sin embargo, también son altamente individuales: la dinámica de teclado por sí sola puede identificar a un usuario con >95% de precisión en entornos controlados.
2. Vectores
2.1 Dinámica de Teclado
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, // Duración de pulsación
})
})
Características medibles:
- Tiempo de pulsación: Duración entre keydown y keyup (típicamente 50-150ms)
- Intervalo entre teclas: Tiempo entre pulsaciones sucesivas
- Presión de tecla (en dispositivos compatibles): Presión táctil para cada tecla
- Patrones de error: Uso de retroceso, comportamiento de corrección
- Velocidad de escritura: Caracteres por minuto (varía según la tarea)
- Ritmo: Patrones consistentes de intervalos largos/cortos
Entropía: ~15-25 bits (altamente individual)
Estabilidad: Moderada — afectada por fatiga, emoción, dispositivo, tipo de teclado
2.2 Patrones de Movimiento del Ratón
document.addEventListener('mousemove', event => {
console.log({
x: event.clientX,
y: event.clientY,
timestamp: performance.now(),
button: event.buttons,
movementX: event.movementX,
movementY: event.movementY
})
})
Características medibles:
- Trayectoria: Curvatura del camino, rectitud, sobrepaso
- Perfil velocidad-aceleración: Cómo cambia la velocidad durante el movimiento
- Comportamiento de clic: Tiempo entre mouse-down y mouse-up, precisión de posición
- Patrones de hover: Dónde pausa el ratón
- Acoplamiento de desplazamiento: Movimiento del ratón durante el desplazamiento
Entropía: ~10-20 bits (moderadamente individual)
Estabilidad: Baja-Moderada — afectada por superficie, dispositivo, tarea
2.3 Patrones de Desplazamiento
document.addEventListener('scroll', event => {
console.log({
scrollY: window.scrollY,
timestamp: performance.now(),
deltaMode: event.deltaMode,
deltaY: event.deltaY
})
})
Características medibles:
- Velocidad de desplazamiento: Píxeles por evento de scroll
- Aceleración: Cómo cambia la velocidad de desplazamiento
- Frecuencia de pausa: Con qué frecuencia se detiene el desplazamiento
- Ritmo: Desplazamiento regular vs ráfagas
- Patrón de leer-y-desplazar: Tiempo entre detener el desplazamiento y el siguiente desplazamiento
Entropía: ~8-12 bits
Estabilidad: Baja — dependiente de la tarea (artículo vs resultados de búsqueda vs redes sociales)
2.4 Gestos Táctiles (Móvil)
element.addEventListener('touchstart', e => { /* inicio táctil */ })
element.addEventListener('touchmove', e => { /* trayectoria táctil */ })
element.addEventListener('touchend', e => { /* fin táctil, velocidad */ })
Medible:
- Ángulo de deslizamiento, velocidad, aceleración
- Presión de toque (en dispositivos compatibles)
- Patrones de pellizco-zoom
- Coordinación multi-dedo
- Tamaño de toque (área de contacto del dedo)
Entropía: ~12-18 bits
Estabilidad: Moderada — afectada por dispositivo, agarre, postura
3. Fortalezas del Atacante
| Fortaleza | Explicación |
|---|---|
| Altamente individual | La dinámica de teclado puede identificar a un usuario con >95% de precisión |
| Continuo | No es una verificación única — monitoreo continuo |
| Difícil de imitar | Fingir el comportamiento de otra persona es extremadamente difícil |
| Sin permiso requerido | Los eventos de ratón/teclado/táctil son legibles desde JS |
| Pasivo | El usuario no puede saber que está siendo medido |
4. Debilidades del Atacante
| Debilidad | Explicación | Explotable? |
|---|---|---|
| Requiere interacción | No puede tomar fingerprint sin entrada del usuario | Limitar interacción |
| Alta varianza | Cambia con el estado de ánimo, fatiga, contexto | Reduce fiabilidad |
| Largo tiempo de recolección | Necesita minutos de datos para precisión | Sesiones cortas son seguras |
| Requiere ML | El hash simple no funciona para datos de comportamiento | No |
| Dependiente de la tarea | No es consistente entre diferentes sitios web | Correlación limitada |
| Fácilmente interrumpido | La interferencia de temporización JS rompe la medición | Sí |
5. Detección de Manipulación
| Técnica | Cómo Funciona |
|---|---|
| Falta de event listeners | No capturar eventos de ratón/teclado es sospechoso |
| Patrones de ruido inyectados | Datos de temporización con patrones inusuales (demasiado regulares, demasiado aleatorios) |
| Calidad de señal | Falta de características de micro-temporización esperadas del hardware |
6. Mitigaciones para Obscura
6.1 Lo Que Obscura Puede Hacer
| Mitigación | Efectividad | Detectabilidad | Implementación |
|---|---|---|---|
| Anular registro de event listeners | Baja | Alta | Proxy de event handlers |
| Inyectar ruido de temporización | Baja-Media | Media | Redondear marcas de tiempo de eventos |
| Bloquear tipos de eventos específicos | Media | Alta | Anular addEventListener |
6.2 Lo Que Obscura No Puede Hacer
| No Puede | Por Qué |
|---|---|
| Cambiar el comportamiento del usuario | El usuario mueve el ratón, escribe, se desplaza — esto es físico |
| Eliminar la entrada de teclado | Escribir es necesario para la interacción |
| Normalizar patrones de ratón | El movimiento del ratón es controlado por el usuario |
| Prevenir la clasificación ML | El ML puede encontrar patrones en datos ruidosos |
6.3 Enfoque Recomendado
1. Redondear marcas de tiempo de eventos a 50ms de granularidad (reduce precisión de temporización)
2. Aceptar — la biometría del comportamiento requiere infraestructura ML (la mayoría de atacantes no tendrán esto)
3. Usar Tor Browser para navegación de alta sensibilidad (Tor deshabilita muchos eventos)
Nota: La biometría del comportamiento es principalmente una preocupación para objetivos de alto valor (banca, redes sociales) con inversión significativa en ML. Para la navegación típica, este vector rara vez se explota.
7. Referencias de Investigación
- 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" — menciona el rastreo de comportamiento en el contexto de correlación entre sitios.