Un Análisis Técnico de Señales de Hardware, Comportamiento y Navegador Inherentes que No Pueden Falsificarse en la Capa de Red
Investigación Obscura — Julio 2026
Resumen
Las herramientas de privacidad a nivel de red como Obscura pueden falsificar eficazmente headers HTTP, fingerprints TLS, consultas DNS y propiedades del navegador accesibles desde JavaScript. Sin embargo, una clase significativa de vectores de fingerprinting opera por debajo, por encima o fuera del alcance del proxy. Estos vectores derivan de características físicas del hardware, detalles de implementación del navegador, patrones de comportamiento del usuario y la asimetría inherente de la carrera armamentista de detección.
Este documento cataloga estos vectores incontrolables, analiza sus fortalezas y debilidades desde la perspectiva de un atacante, y propone estrategias de mitigación — tanto dentro del alcance de Obscura como mediante herramientas complementarias.
1. Introducción
1.1 La Brecha del Proxy
Obscura opera en las Capas OSI 3-7 (red a aplicación). Las señales que se originan en:
- Capa 0-2 (hardware físico, GPU, chip de audio, CPU)
- Capa 7+ (motor de renderizado del navegador, comportamiento del usuario)
- Inconsistencias entre capas (desajustes entre señales falsificadas y no falsificadas)
...están fuera del control directo del proxy.
1.2 Clasificación
| Categoría | Vectores | Causa Raíz | Apalancamiento del Proxy |
|---|---|---|---|
| GPU/Hardware | Renderizado Canvas, WebGL, WebGPU | Pipeline de renderizado físico | Ninguno |
| Audio Hardware | AudioContext, latencia | DSP de audio, controladores | Ninguno |
| CPU/Plataforma | Precisión matemática, características Wasm, SIMD | Microarquitectura | Ninguno |
| Navegador Inherente | Soporte de características, CSS media, bugs, rarezas | Implementación del motor | Ninguno (solo bloqueo DNS) |
| Comportamiento | Ratón, teclado, desplazamiento, temporización | Usuario | Ninguno |
| Residual de Red | TCP/IP, clock skew, RTT | Pila SO/contenedor | Parcial |
| Entre Capas | Inconsistencia de perfil, heurísticas de detección | Lógica | Indirecto |
1.3 El Problema de la Asimetría
La asimetría fundamental: el servicio de fingerprinting necesita solo un vector exitoso para identificar o correlacionar a un usuario. El defensor debe bloquear todos los vectores.
Este documento no pretende resolver esta asimetría. Documenta el riesgo residual.
2. Fingerprinting de GPU y Pipeline de Renderizado
Documento completo: gpu-rendering.md
2.1 Por Qué Funciona
El pipeline de renderizado GPU es físicamente determinista — la misma entrada siempre produce la misma salida en el mismo hardware. Las diferencias surgen de:
- Microarquitectura GPU (cantidad de ALUs, unidades de rasterización, TMUs, ROPs)
- Versión del controlador y optimizaciones del compilador
- Diferencias de precisión de punto flotante en shaders
- Algoritmos de anti-aliasing
- Orden de renderizado subpíxel (RGB vs BGR)
- Matrices de conversión de espacio de color
2.2 Vectores
| Vector | Entropía | Detectable si se Bloquea |
|---|---|---|
Hash de Canvas toDataURL() |
~5-7 bits | Sí |
WEBGL_debug_renderer_info.UNMASKED_RENDERER |
~20 bits (modelo exacto de GPU) | Sí |
| Hash de renderizado de escena WebGL | ~10-15 bits | Sí |
adapterInfo de WebGPU (vendor, arch, device, driver) |
~25+ bits | Sí |
| Límites de WebGPU (50+ capacidades numéricas) | ~30+ bits | Sí |
| Lista de extensiones WebGL | ~8-12 bits | Sí |
2.3 Ventajas del Atacante
- Sin dependencia de red: El renderizado es local, no se necesita petición
- Bloqueado al hardware: No puede cambiarse sin hardware diferente
- Multi-navegador: La misma GPU produce fingerprints similares en Chrome/Firefox/Safari
- Pasivo: El usuario no puede saber que está siendo fingerprintado
2.4 Debilidades (desde la perspectiva del atacante)
- Bloquear es fácil para el usuario: Las flags de Firefox
privacy.resistFingerprintingy CanvasBlocker funcionan - Tor Browser lo derrota: El renderizado por software (SwiftShader) normaliza toda la salida
- Las actualizaciones de controladores cambian el fingerprint: Inestabilidad periódica
- La inyección de ruido funciona: La inyección de píxeles aleatorios de CanvasBlocker rompe la repetibilidad
- La detección estadística de manipulación es imperfecta: Los atacantes solo pueden adivinar si se inyectó ruido
2.5 Mitigaciones Propuestas
| Mitigación | Efectividad | Impacto | Implementación |
|---|---|---|---|
| Bloquear WebGL/WebGPU por completo | Alta | Rompe contenido 3D | Inyección JS |
| Inyección de ruido en Canvas | Media-Alta | Detectable | Inyección JS (algoritmo CanvasBlocker) |
| Ruido aleatorio consistente por sesión | Media | Correlación de sesión posible | Inyección JS |
Bloquear WEBGL_debug_renderer_info |
Media | Bloquea fuga de modelo GPU | Inyección JS |
| Renderizado GPU por software (SwiftShader) | Muy Alta | Gran impacto en rendimiento | Solo lado cliente (Tor Browser) |
| Redondear dimensiones de canvas a cuadrícula | Baja | Reduce entropía | Inyección JS |
Lo mejor que Obscura puede hacer: Bloquear + inyección de ruido mediante JS. No puede igualar el renderizado por software de Tor Browser.
3. Fingerprinting de Hardware de Audio
Documento completo: audio-hardware.md
3.1 Por Qué Funciona
El procesamiento de audio involucra:
- Implementación del controlador de audio (ALSA, PulseAudio, PipeWire, CoreAudio, WASAPI)
- Características del hardware DAC/ADC
- Algoritmos de conversión de frecuencia de muestreo
- Comportamiento de compresión de dinámicas
- Manejo de búferes de audio
Estos producen diferencias consistentes y medibles en la salida del oscilador y el comportamiento del compresor.
3.2 Vectores
| Vector | Entropía | Notas |
|---|---|---|
getChannelData de AudioContext sobre salida de DynamicsCompressor |
~8-12 bits | Más común |
| Latencia base de AudioContext | ~4-6 bits | Dependiente del hardware |
| Soporte de frecuencia de muestreo | ~2-3 bits | Varía según hardware |
| Número máximo de canales | ~1-2 bits | Stereo vs envolvente |
3.3 Ventajas del Atacante
- Consistente entre sesiones: Mismo hardware → mismo fingerprint de audio
- Difícil de detectar manipulación: El sitio puede comparar múltiples lecturas
- Funciona en segundo plano: No se necesita interacción del usuario
3.4 Debilidades
- El comportamiento de DynamicsCompressor cambia entre versiones del navegador
- Puede bloquearse por completo (Firefox resistFingerprinting bloquea AudioContext)
- Aplanar la salida es detectable pero no puede distinguirse de hardware real con comportamiento idéntico
3.5 Mitigaciones Propuestas
| Mitigación | Efectividad | Impacto |
|---|---|---|
| Bloquear AudioContext por completo | Alta | Rompe aplicaciones dependientes de audio |
| Aplanar salida del compresor (devolver todo -100dB) | Media | Patrón detectable |
| Inyectar ruido periódico en el búfer de salida | Media-Alta | Complejo, detectable |
| Anular frecuencia de muestreo a valor fijo | Baja | Solo una señal |
Lo mejor que Obscura puede hacer: Bloquear AudioContext mediante inyección JS.
4. Fingerprinting de CPU y Plataforma
Documento completo: cpu-platform.md
4.1 Por Qué Funciona
La CPU es el componente más fundamental del sistema. Su comportamiento es determinista y medible desde JavaScript:
- Precisión aritmética de punto flotante (el cumplimiento de IEEE 754 varía ligeramente)
- Resolución de
performance.now()(depende del temporizador hardware, SO) - Detección de características basada en Wasm (SIMD, AES-NI, AVX, BMI1/BMI2, POPCNT)
- Canales laterales de temporización de caché (aunque mitigados en navegadores)
- Velocidad de ejecución de WebAssembly (benchmark de rendimiento relativo)
4.2 Vectores
| Vector | Entropía | Notas |
|---|---|---|
| Fingerprint matemático (precisión FPU) | ~4-6 bits | Sutil, sorprendentemente identificador |
| Detección de características Wasm | ~8-12 bits | Capacidades de CPU |
Resolución de performance.now() |
~2-3 bits | Dependiente de SO/CPU |
navigator.hardwareConcurrency |
~3-4 bits | Número de núcleos (falsificable mediante JS) |
4.3 Ventajas del Atacante
- Bloqueado al hardware: Las características de CPU no cambian
- Wasm es rápido: Detección binaria de características en <1ms
- No puede falsificarse a nivel de proxy: Wasm se ejecuta localmente
4.4 Debilidades
- Precisión de
performance.now()reducida en navegadores (1ms → 100μs → 5μs → vaivén) - La detección de características Wasm depende de que el navegador lo exponga
hardwareConcurrencyes falsificable mediante JS — ya listado como controlable- El fingerprint matemático tiene muy baja entropía — solo útil en combinación
4.5 Mitigaciones Propuestas
| Mitigación | Efectividad | Impacto |
|---|---|---|
Reducir precisión de performance.now() mediante JS |
Baja | Los atacantes usan temporización Wasm |
| Bloquear Wasm por completo | Alta | Rompe muchos sitios |
Anular hardwareConcurrency |
Alta | Trivial mediante inyección JS |
| Aceptar fingerprint matemático FPU | Ninguna | Entropía demasiado baja por sí sola |
Lo mejor que Obscura puede hacer: Aceptar — o bloquear Wasm (drástico).
5. Características Inherentes del Navegador y Rarezas de Implementación
Documento completo: browser-features-quirks.md
5.1 Por Qué Funciona
Cada motor de navegador (Blink, Gecko, WebKit) tiene un conjunto único de:
- APIs web soportadas (100+ características binarias)
- Soporte de propiedades CSS
- Bugs y rarezas de implementación
- Configuraciones por defecto (tamaño de fuente, ancho de scrollbar, estilo de formularios)
- Comportamiento de renderizado Unicode
- Versión de soporte de emojis
5.2 Vectores
| Vector | Entropía | Notas |
|---|---|---|
| Vector de soporte de características (~100 características) | ~10-15 bits | Altamente correlacionado |
| Rarezas de renderizado CSS | ~5-8 bits | Específico del motor |
| Renderizado Unicode/emoji | ~3-5 bits | Dependiente de SO+navegador |
| Ancho de scrollbar | ~2-3 bits | Dependiente del SO |
| Métricas de fuente por defecto | ~4-6 bits | Dependiente de SO+navegador |
5.3 Ventajas del Atacante
- No puede cambiarse: Son inherentes al navegador/SO
- Sin permiso necesario: No se requiere consentimiento del usuario
- Difícil de bloquear: Bloquear características cambia el vector de características en sí mismo
5.4 Debilidades
- Principalmente identifica familia de navegador + versión, no usuarios individuales
- Baja entropía dentro de la misma versión del navegador (todos los usuarios de Chrome 120 se ven similares)
- Los scripts de detección de características pueden bloquearse por DNS antes de que se carguen
5.5 Mitigaciones Propuestas
| Mitigación | Efectividad | Impacto |
|---|---|---|
| Bloqueo DNS de dominios de scripts de fingerprinting | Alta | Detiene la enumeración de características por completo |
| Aceptar — baja entropía individual | Pasivo | Puede aún correlacionarse con otras señales |
| Parchear el navegador (no a nivel de proxy) | Muy Alta | Requiere compilación de navegador personalizada |
Lo mejor que Obscura puede hacer: Bloqueo DNS de dominios de fingerprinting conocidos.
6. Biometría del Comportamiento
Documento completo: behavioral-biometrics.md
6.1 Por Qué Funciona
Los patrones de comportamiento del usuario son altamente individuales:
- Trayectorias de movimiento del ratón (velocidad, aceleración, vibración)
- Dinámica de teclado (tiempo de pulsación, intervalos entre teclas, patrones de error)
- Patrones de desplazamiento (velocidad, aceleración, comportamiento de pausa)
- Gestos táctiles (en móvil: ángulo de deslizamiento, presión, velocidad)
- Patrones de lectura (ritmo de desplazamiento-y-pausa)
- Tiempo y preferencias de ubicación de clic/toque
6.2 Vectores
| Vector | Entropía | Notas |
|---|---|---|
| Dinámica de teclado | ~15-25 bits | Altamente individual |
| Movimiento del ratón | ~10-20 bits | Menos estable en el tiempo |
| Comportamiento de desplazamiento | ~8-12 bits | Dependiente del contenido |
| Gestos táctiles | ~12-18 bits | Específico de móvil |
6.3 Ventajas del Atacante
- Autenticación continua: No es una instantánea, sino continua
- Difícil de falsear: Imitar el comportamiento de otro usuario es extremadamente difícil
- Sin restricción de API JS: Todo legible desde event listeners JS
6.4 Debilidades
- Requiere interacción significativa del usuario: No puede tomar fingerprint pasivamente
- Alta varianza: El comportamiento cambia con el estado de ánimo, fatiga, contexto
- Largo tiempo de recolección: Necesita minutos de interacción
- Requiere aprendizaje automático: El hash simple no funciona
- Fácilmente interrumpido: Cualquier script que interfiera con la temporización lo rompe
6.5 Mitigaciones Propuestas
| Mitigación | Efectividad | Impacto |
|---|---|---|
| Bloquear event listeners de ratón/táctil mediante anulación JS | Media | Rompe sitios interactivos |
| Inyectar ruido de temporización sintético | Baja | Puede filtrarse |
| Usar Tor Browser para sesiones de alta sensibilidad | Muy Alta | La solución más práctica |
| Aceptar — el comportamiento es de contexto limitado | Pasivo | Solo funciona en sesiones iniciadas |
Lo mejor que Obscura puede hacer: Muy limitado. Tor Browser es la solución práctica.
7. Fingerprints Residuales a Nivel de Red
Documento completo: residual-network.md
7.1 Por Qué Funciona
Incluso con falsificación TLS y HTTP, señales de red residuales permanecen:
- Parámetros de pila TCP/IP (heredados del SO del contenedor)
- Tiempo de ida y vuelta de red (RTT) y su varianza
- Descubrimiento de MTU de ruta
- TTL de paquetes (revela número aproximado de saltos)
- Desviación de reloj entre cliente y servidor
- Parámetros de transporte QUIC HTTP/3 (si no está bloqueado)
7.2 Vectores
| Vector | Entropía | Notas |
|---|---|---|
| Tamaño de ventana TCP | ~2-4 bits | Específico del SO del contenedor |
| TTL inicial | ~1-2 bits | 64 vs 128 |
| RTT + varianza | ~5-8 bits | Dependiente de la ruta de red |
| Clock skew | ~4-8 bits | Deriva del reloj hardware |
| SETTINGS HTTP/2 (si no se falsifica) | ~6-10 bits | Específico de la librería del proxy |
7.3 Ventajas del Atacante
- Siempre presente: Las señales de red son inevitables
- Pueden combinarse: La referencia cruzada de múltiples señales débiles aumenta la entropía
- Estable: La ruta de red cambia con poca frecuencia
7.4 Debilidades
- Baja entropía individual: TCP/IP solo rara vez identifica
- Entorno de contenedor compartido: Múltiples usuarios detrás del mismo contenedor se ven similares
- La falsificación TLS elimina la señal más identificadora
7.5 Mitigaciones Propuestas
| Mitigación | Efectividad | Impacto |
|---|---|---|
| Falsificación de fingerprint TLS (JA3/JA4 mediante utls) | Muy Alta | Crítico para Obscura |
| Reflejo de SETTINGS HTTP/2 | Alta | Implementación compleja |
| Normalizar parámetros TCP | Ninguna | El contenedor hereda del host |
| Enrutar mediante VPN/Tor upstream | Alta | Cambia las características de red |
Lo mejor que Obscura puede hacer: Falsificación TLS + HTTP/2. TCP/IP se acepta.
8. Detección de Proxy e Inconsistencias de Falsificación
Documento completo: proxy-detection.md
8.1 Por Qué Funciona
El acto de falsificar crea patrones detectables:
- Inconsistencia de perfil: User-Agent Chrome + pila TLS Go + plataforma Win32 + fuentes no Windows
- Señales faltantes: APIs bloqueadas (WebGL devuelve null) crean un fingerprint único de "bloqueado"
- Anomalías de temporización: MITM añade latencia medible
- Fingerprints de certificados: Los certificados CA autofirmados son detectables
- Normalización de headers: Headers demasiado limpios/consistentes (los navegadores reales tienen variación)
- Detección de anulación JavaScript:
Object.getOwnPropertyDescriptor()puede detectar anulaciones deObject.defineProperty
8.2 Técnicas de Detección
| Técnica | Qué Detecta | Fiabilidad |
|---|---|---|
| Desajuste de fingerprint TLS | Software proxy vs navegador declarado | Muy Alta |
| Bloqueo de características | Uso de herramientas de privacidad | Alta |
| Detección de anulación JS | Scripts inyectados | Media |
| Inspección de certificados | Proxy MITM | Alta |
| Análisis de temporización | Latencia del proxy | Media |
| Correlación entre señales | Inconsistencia de perfil | Muy Alta |
8.3 Ventajas del Atacante
- La falsificación aumenta la superficie detectable: Cuanto más cambias, más hay para detectar
- Análisis estadístico: Comparar contra grandes conjuntos de datos revela anomalías
- Aprendizaje automático: Puede encontrar patrones que los humanos pasan por alto
8.4 Debilidades
- La detección es probabilística, no determinista
- Falsos positivos: Las actualizaciones legítimas de navegador parecen falsificación
- Millones de personas usan herramientas de privacidad: Ser detectado como "usuario de privacidad" no es único
- Gato y ratón: La detección de anulación puede contrarrestarse con anulaciones más profundas
8.5 Mitigaciones Propuestas
| Mitigación | Efectividad | Impacto |
|---|---|---|
| Consistencia perfecta de perfil | Muy Alta | Requiere actualizaciones continuas de perfil |
| Filtrar algunas señales reales | Contra intuitivo | Hace que el perfil parezca más natural |
| Usar certificado CA real | Media | Evita la detección de CA autofirmado |
| Redondear temporización en lugar de eliminar | Media | Menos sospechoso que latencia cero |
| No bloquear — falsificar en su lugar | Alta | Más difícil de detectar que bloquear |
Lo mejor que Obscura puede hacer: Pruebas rigurosas de consistencia de perfil y actualizaciones continuas.
9. El Problema de la Agregación
9.1 Entropía Individual vs Combinada
Una visión crucial: los vectores incontrolables individuales tienen baja entropía por sí solos, pero combinados se vuelven identificadores.
Donde es la entropía individual y representa las dependencias entre vectores.
Para vectores incontrolables solos (GPU + Audio + CPU + Características + Red + Comportamiento):
Esto es suficiente para identificar de forma única a un usuario entre ~.
9.2 Implicaciones
- Incluso la falsificación perfecta por proxy de vectores controlables es insuficiente si los incontrolables permanecen
- El bloqueo DNS es crítico: Evita que la librería de fingerprinting vea los vectores incontrolables
- Defensa en profundidad: Cada vector bloqueado reduce la entropía agregada
10. Direcciones de Investigación Propuestas
10.1 Corto plazo (Obscura v1)
- Consistencia perfecta de perfil: Herramientas de validación automatizadas
- Mantenimiento de listas de bloqueo DNS: Fuente de dominios de fingerprinting
- Inyección de ruido en Canvas: Algoritmo de CanvasBlocker
- Bloqueo de información de depuración WebGL/WebGPU: Inyección JS
- Bloqueo de AudioContext: Inyección JS
10.2 Medio plazo
- Aprendizaje automático para detección de anomalías: Detectar cuándo las modificaciones de Obscura crean patrones detectables
- Selección adaptativa de perfiles: Elegir el perfil que mejor coincida con el hardware real del usuario (no declarar Safari en Windows)
- Degradación elegante: Retroceder a falsificación menos agresiva si el riesgo de detección es alto
10.3 Largo plazo / Fuera de Alcance
- Modificación del navegador: Compilación de navegador personalizada que normalice fingerprints (enfoque Tor Browser)
- Normalización de GPU a nivel de hardware: Intercepción de renderizado a nivel de controlador
- Ofuscación del comportamiento: Patrones de ratón/teclado generados por IA
- Fingerprinting resistente a cuánticos: Preparación para el futuro contra nuevas técnicas
11. Conclusión
Los vectores incontrolables documentados aquí representan el límite fundamental del anti-fingerprinting a nivel de red. Ningún proxy puede eliminarlos por completo porque derivan de:
- Física: Renderizado GPU, procesamiento de audio, deriva de reloj
- Biología: Patrones de comportamiento del usuario
- Ingeniería: Decisiones de implementación del navegador
El enfoque de Obscura es pragmático:
- Controlar lo que se puede controlar (headers, TLS, DNS, APIs JS) — ~55% de la superficie
- Bloquear lo que no se puede falsificar (canvas, audio, WebGL) — previene la observación
- Aceptar el riesgo residual — documentar y monitorear
La alternativa — protección perfecta — requiere Tor Browser, que lo logra normalizando cada señal a costa de funcionalidad, rendimiento y conveniencia. Ambos enfoques tienen su lugar.
Referencias
- Acar, G. et al. (2014). "The Web Never Forgets: Persistent Tracking Mechanisms in the Wild." CCS 2014.
- Mowery, K. & Shacham, H. (2012). "Pixel Perfect: Fingerprinting Canvas in HTML5." WOOT 2012.
- Eckersley, P. (2010). "How Unique Is Your Web Browser?" PETS 2010.
- Englehardt, S. & Narayanan, A. (2016). "Online Tracking: A 1-million-site Measurement and Analysis." CCS 2016.
- Tor Browser Design Document (2024). "The Design and Implementation of the Tor Browser."
- FingerprintJS (2026). "Browser Fingerprinting Techniques." fingerprintjs.com.
- FoxIO (2024). "JA4: TLS Client Fingerprinting." GitHub.
- Laperdrix, P. et al. (2020). "Browser Fingerprinting: A Survey." ACM TOIT.