Saltar al contenido

root / tags / determinisme

#déterminisme

2 fiches

Calidad y Seguridad Traducción verificada automáticamente

Your Browser Does Math Differently on Every OS, and Anti-Bot Systems Read the Bits

Artículo de ingeniería publicado el **12 de julio de 2026** por **Scrapfly Engineering**, sobre un canal de *fingerprinting* de navegador poco conocido: **los últimos bits de un número de coma flotante delatan el sistema operativo**. **El mecanismo**: IEEE 754 define cómo se almacena un `double`, pero **no exige** que `sin`, `cos`, `tanh` o `exp` estén correctamente redondeados; cada sistema distribuye por tanto una **libm** que sacrifica una fracción de ULP a cambio de velocidad, con sus propios coeficientes minimax, tablas y constantes de reducción. En consecuencia, `Math.tanh(0.8)` devuelve **tres valores distintos** según glibc (Linux), libsystem_m (macOS) y UCRT (Windows) — *« una sola llamada a tanh sobre la entrada correcta es una firma por sistema operativo. Afirma ser macOS, devuelve bits matemáticos de Linux, y te has contradicho con tu propio User-Agent. »* **El indicio es reciente y está fechado con precisión**: hasta **Chrome 147**, V8 calculaba `tanh` con un port de **fdlibm** embebido, idéntico en todas partes y sin fugas; el commit de V8 `c1486295ae5` lo sustituyó por `std::tanh`, publicado en V8 14.8.57, es decir **Chrome 148** — 148, 149 y 150 tienen fuga, 147 y anteriores no. **Tres superficies concentran las fugas**: `Math.tanh` (la **única** función `Math.*` afectada, ya que V8 embebe y enlaza estáticamente el resto), **todas las funciones trigonométricas de CSS** (Blink llama directamente a la libm del sistema anfitrión, tras una reducción de ángulo basada en grados que no comparte código con `Math.sin`), y **Web Audio** (donde el compresor permanece en libsystem_m escalar mientras que las etapas de FFT y vectoriales pasan por **Accelerate**). **Cuatro trampas** dificultan la contramedida: solo algunas funciones tienen fuga — de modo que **falsificar las demás crea una incoherencia detectable**; JavaScript y CSS son rutas de código distintas; **macOS embebe dos bibliotecas matemáticas que divergen entre sí** (escalar frente a Accelerate, del 10 al 89% de las entradas según la función: `cos(0)` devuelve `1.0` por un lado, `0.9999999999999999` por el otro); y **la arquitectura también deja fuga** (FMA y la propagación del signo de NaN difieren entre ARM y x86). **La contramedida rechazada y la elegida**: añadir ruido falla dos veces — el valor no coincide con **ningún** sistema operativo real, y la no determinación entre llamadas es en sí misma un indicio. El único camino es la **reproducción bit a bit**: extraer los coeficientes de la libm objetivo, transcribirlos **en hexadecimal** (una transcripción decimal redondearía de forma distinta), escribir cada multiplicación-suma fusionada explícitamente como `fma()`, y compilar con `-ffp-contract=off` para que el compilador no invente ni elimine ninguna. **Divulgación a señalar**: el editor declara de entrada que *« las publicaciones aquí se redactan con IA, »* mientras que los mecanismos, las cifras y el código siguen siendo propios.

#fingerprinting#huella digital del navegador#anti-bot

**Scrapfly Engineering** — équipe d'ingénierie de **Scrapfly** · fournisseur d'infrastructure de collecte web. Le texte annonce sa position d'intérêt sans détour : *« Scrapfly ships a browser that has to match a real one across hundreds of signals · and math is one of the harder ones. »* On lit donc un **attaquant du problème de détection** · qui documente le canal parce qu'il doit le neutraliser.

Transformación y Adopción Traducción verificada automáticamente

IFTTD #351 - AWS Summit : Rester aux commandes des agents de code (avec Julien Lépine)

Episodio #351 del podcast en francés **If This Then Dev** (Bruno) con **Julien Lépine**, Chief Technology Officer de **AWS France** (13 años en Amazon), grabado al margen del **AWS Summit Paris** (1 de abril de 2026, ~10.000 asistentes). Tesis central: en la era agéntica, escribir código pasa a un segundo plano, y el valor se desplaza hacia **comprender el contexto, los compromisos arquitectónicos (trade-offs) y la responsabilidad humana**. Prueba central: el **rediseño de Amazon Bedrock** — una plataforma crítica que gestiona miles de miles de millones de solicitudes — por un equipo de **6 personas en 72 días** (frente a una estimación de 30 personas / 18 meses), **código generado íntegramente por IA**, sin vibe coding. AWS está **estandarizando internamente en Kiro** (IDE + CLI, ejecutado sobre Claude Sonnet/Opus) para ~30.000 desarrolladores (anunciado por Matt Garman en re:Invent). Hilo conductor: **mantener el control** sin revisarlo todo — mediante **modelado formal (TLA+)** y **Raisonnement automatisé** para demostrar invariantes y acotar a los agentes, **post-mortem sin culpabilización (blameless)**, y el principio de que «la responsabilidad de la acción de un agente recae en la persona que lo opera». Surgimiento del **AI DLC** (sprints → múltiples **Bolts** diarios) y el riesgo de **sobrecarga cognitiva / burn-out**.

#AWS Summit Paris#Amazon Web Services#agentes de código

**Julien Lépine** — Directeur de la technologie (CTO) d'Amazon Web Services France · 13+ ans chez Amazon ; ses équipes accompagnent les clients AWS sur le cloud · la data et l'IA. **Hôte** : Bruno (créateur et animateur du podcast *If This Then Dev*).