OPSEC52 / Semana 6 — Huella de idioma y zona horaria
Puedes salir por un nodo de Tor impecable y aun así quedar ubicado en una región por tu reloj. Zona horaria, idioma, orden de la fecha y formato numérico son una huella regional que casi nadie piensa en ocultar — y lo peor no es filtrarla, sino filtrar una que contradice tu IP. Una salida limpia con un reloj de Shanghái grita más que no usar VPN.
Modelo de amenaza: señales de idioma del navegador y del sistema (zona horaria, idioma, formato de fecha/número, moneda) que te geolocalizan sin importar la IP; marcas de tiempo en archivos, commits y correos que llevan tu desfase UTC real; una discrepancia entre tu ubicación de red y el idioma de tu máquina que te marca como evasivo; y plataformas que se apoyan silenciosamente en tu zona horaria para identificarte o segmentarte sin avisar.
La semana pasada tratamos el navegador como un motor de correlación y lo dividimos en perfiles. Uno de los cuatro mecanismos que vuelven a fusionar tus compartimentos era la toma de huellas — y sus entradas más silenciosas no son el canvas ni las fuentes. Son tu reloj y tu configuración de idioma. Gastas en una VPN, levantas Tor, consigues una salida limpia en otro país — y entonces tu máquina anuncia alegremente Asia/Shanghai, zh-CN y un formato de fecha 2026/07/01 a cada página que cargas. La red dice una cosa; el idioma dice otra. Esa contradicción es la señal.
Por qué tu reloj y tu idioma son una huella regional
Cuatro señales de idioma filtran tu región sin una sola cookie:
- Zona horaria.
Intl.DateTimeFormat().resolvedOptions().timeZonedevuelve tu zona IANA exacta (Asia/Shanghai,Europe/Moscow), ynew Date().getTimezoneOffset()da el desfase en bruto. Sin permiso, sin IP. - Idioma.
navigator.language, la lista completanavigator.languagesy la cabeceraAccept-Languageenviada en cada petición ordenan tus idiomas preferidos — a menudo hasta la variante regional. - Formato de fecha y número.
2026-07-01frente a01/07/2026frente a2026/07/01, coma decimal frente a punto, reloj de 24h frente a 12h, primer día de la semana — cada uno estrecha el campo. - Moneda y unidades. Moneda por defecto, métrico frente a imperial y tamaño de papel (
A4frente aLetter) codifican en silencio dónde te configuraron.
Por separado son débiles. Combinadas con una ubicación de red que las contradice, son fuertes — porque ya no eres “alguien de la región X”, sino “alguien que oculta activamente la región Y”, un conjunto mucho más pequeño y mucho más interesante.
Las marcas de tiempo que todos olvidan
El navegador es la superficie obvia. La traicionera es todo lo que produces sin conexión, que estampa tu desfase UTC real en archivos que luego entregas a desconocidos:
- Commits de Git. Cada commit registra la fecha del autor con tu desfase horario (
+0800). Un repositorio seudónimo con un+0800constante en 400 commits ya ha revelado dónde duerme el autor. - Fotos (EXIF). Marca de tiempo de la cámara, desfase y a menudo GPS. Límpialo antes de que algo salga de tu máquina.
- Documentos Office y PDF. La hora de creación/modificación y la zona horaria del autor van incrustadas en los metadatos.
- Cabeceras
Date:del correo. Tu cliente escribe tu desfase en cada mensaje. - Horas de modificación de archivos en cualquier archivo comprimido (
.zip,.tar) que compartas. - Capturas de pantalla — el reloj de la barra de estado, el formato de fecha en la esquina.
Compartimentaste tu identidad, tu correo y tu navegador — y luego filtraste la zona horaria en el pie de un commit.
La discrepancia es la delación
El modelo mental a corregir: tu objetivo no es ocultar tu zona horaria, sino hacer que coincida con tu tapadera. Un usuario de Tor cuyo navegador reporta UTC se ve como cualquier otro usuario de Tor. Una configuración “privada” que sale por Suecia pero reporta Asia/Shanghai y zh-CN ha fabricado una contradicción que existe por una sola razón. La coherencia gana a la ocultación.
Esto no es hipotético: la zona horaria como clave de segmentación
Si quieres pruebas de que las plataformas se apoyan activamente en esto, ya se están enviando. El CLI actual de Claude Code (claude.exe, v2.1.159) contiene — verificable en el binario instalado — una pequeña rutina que se ejecuta cuando una sesión conecta a través de un endpoint de terceros (ANTHROPIC_BASE_URL definido). Lee tu zona horaria del sistema, activa un flag interno cnTZ si es Asia/Shanghai o Asia/Urumqi, clasifica tu nombre de host proxy contra una lista ofuscada (XOR + base64) de dominios corporativos chinos y espejos revendedores de Claude conocidos, y luego codifica esos bits de forma esteganográfica en el apóstrofo de la línea Today's date is … que se inyecta en el prompt del sistema — eligiendo entre cuatro glifos visualmente idénticos (', ', ʼ, ʹ). Para sesiones en zona horaria china también reescribe la fecha de 2026-07-01 a 2026/07/01.
Interpreta el motivo con generosidad — los dominios revendedores sugieren detección de abuso dirigida a proxies no autorizados de Claude, no vigilancia de usuarios comunes. No importa para lo nuestro. El mecanismo es la lección: tu zona horaria fue el disparador. Un único ajuste anodino que casi nadie oculta bastó para segmentarte, de forma invisible y sin ningún aviso. Esa es toda la tesis de esta semana, demostrada por un producto en producción.
La solución
- Pon el reloj del sistema en UTC en las máquinas de trabajo anónimo, y deja que el navegador lo herede. Tor Browser ya reporta
UTC; no lo deshagas. - Usa un navegador de idioma estandarizado. Tor Browser y Mullvad Browser normalizan
navigator.languageaen-USy falsean la zona horaria para que miles de usuarios se vean idénticos. No lo “arregles” poniendo tu idioma real. - Haz que red e idioma concuerden. Si tu tapadera es una salida por Suecia, tu zona horaria e idioma no deberían gritar Shanghái. Coincide con la tapadera o vuélvete neutro del todo (
UTC/en-US). - Arregla git antes de commitear.
git config user.emailya lo conoces; neutraliza también la hora: commitea conTZ=UTC git commit, o usa hooks degit config --globalpara normalizar las fechas de autor/committer. Revisa repos existentes congit log --format='%ai'. - Limpia los metadatos antes de compartir.
exiftool -all= file.jpg,mat2para documentos, y vuelve a comprimir los archivos creados bajo un reloj en UTC. - Vigila la cabecera
Accept-Language, no solo el JS. Se envía en cada petición; los navegadores estandarizados la manejan, un Chrome “endurecido” no.
Ejercicios de la semana
- Pon el reloj del sistema en UTC en tu máquina de nivel anónimo (o verifica que Tor/Mullvad Browser reporta
UTCen una página de test de huella). - Audita
navigator.language/Accept-Languageen tu perfil anónimo — debería leeren-US, no tu idioma regional. - Ejecuta
git log --format='%ai'en cualquier repo seudónimo y revisa el desfase horario que has estado difundiendo; pásate aTZ=UTCpara futuros commits. - Añade limpieza de metadatos (
exiftool,mat2) a tu rutina para cualquier archivo — imagen, documento, comprimido — que salga de tu máquina. - Comprueba la discrepancia: ¿tu región de salida VPN/Tor contradice tu reloj, idioma y formato de fecha? Que concuerden o que sean neutros.
La próxima semana entramos en la capa de cuentas y contraseñas, donde un gestor de contraseñas convierte toda esta compartimentación en algo con lo que puedes vivir. Hasta entonces: pon el reloj en UTC, y deja de que tu idioma narre tu ubicación.
Curado por Cyber Satoshi