OPSEC52 / Неделя 6 — Отпечаток локали и часового пояса
Ты можешь выходить через безупречный узел Tor и всё равно быть привязанным к региону своими часами. Часовой пояс, язык, порядок даты и формат чисел — это тихий региональный отпечаток, который почти никто не догадывается скрывать, и худшее не в том, что ты его выдаёшь, а в том, что выдаёшь тот, который противоречит твоему IP. Чистый выход с шанхайскими часами кричит громче, чем полное отсутствие VPN.
Модель угроз: языковые сигналы браузера и ОС (часовой пояс, язык, формат даты/чисел, валюта), которые геолоцируют тебя независимо от IP; метки времени в файлах, коммитах и письмах, несущие твоё реальное смещение UTC; несоответствие между сетевым местоположением и локалью машины, помечающее тебя как уклоняющегося; и платформы, которые молча используют твой часовой пояс для идентификации или сегментации без всякого уведомления.
На прошлой неделе мы рассматривали браузер как движок корреляции и разделили его на профили. Одним из четырёх механизмов, снова склеивающих твои отсеки, была снятие отпечатка — и его самые тихие входные данные это не canvas и не шрифты. Это твои часы и языковые настройки. Ты тратишься на VPN, поднимаешь Tor, получаешь чистый выход в другой стране — а потом твоя машина радостно объявляет Asia/Shanghai, zh-CN и формат даты 2026/07/01 каждой загружаемой странице. Сеть говорит одно; локаль говорит другое. Это противоречие и есть сигнал.
Почему твои часы и язык — региональный отпечаток
Четыре языковых сигнала выдают твой регион без единой cookie:
- Часовой пояс.
Intl.DateTimeFormat().resolvedOptions().timeZoneвозвращает твою точную зону IANA (Asia/Shanghai,Europe/Moscow), аnew Date().getTimezoneOffset()даёт сырое смещение. Без запроса разрешения, без IP. - Язык.
navigator.language, полный списокnavigator.languagesи заголовокAccept-Language, отправляемый с каждым запросом, ранжируют твои предпочитаемые локали — часто вплоть до регионального варианта. - Формат даты и чисел.
2026-07-01против01/07/2026против2026/07/01, десятичная запятая против точки, 24-часовой формат против 12-часового, первый день недели — каждое сужает круг. - Валюта и единицы. Валюта по умолчанию, метрическая система против имперской, размер бумаги (
A4противLetter) тихо кодируют, где тебя настраивали.
По отдельности они слабы. В сочетании с сетевым местоположением, которое им противоречит, они сильны — потому что теперь ты не просто «кто-то из региона X», а «кто-то, активно скрывающий регион Y», а это куда меньшее и куда более интересное множество.
Метки времени, о которых все забывают
Браузер — очевидная поверхность. Коварная — это всё, что ты создаёшь офлайн, что впечатывает твоё реальное смещение UTC в файлы, которые ты потом отдаёшь незнакомцам:
- Коммиты Git. Каждый коммит записывает дату автора вместе с твоим смещением часового пояса (
+0800). Псевдонимный репозиторий с постоянным+0800на 400 коммитах уже рассказал, где автор спит. - Фото (EXIF). Метка времени камеры, смещение и часто GPS. Вычищай до того, как что-либо покинет твою машину.
- Документы Office и PDF. Время создания/изменения и часовой пояс автора встроены в метаданные файла.
- Заголовки
Date:в письмах. Твой почтовый клиент пишет твоё смещение в каждое сообщение. - Времена изменения файлов в любом архиве (
.zip,.tar), которым ты делишься. - Скриншоты — часы в строке состояния, формат даты в углу.
Ты разделил на отсеки свою личность, почту и браузер — а потом слил часовой пояс в подписи коммита.
Несоответствие и есть улика
Ментальную модель нужно исправить так: твоя цель не спрятать часовой пояс, а сделать так, чтобы он совпадал с твоей легендой. Пользователь Tor, чей браузер сообщает UTC, выглядит как любой другой пользователь Tor. «Приватная» конфигурация, выходящая через Швецию, но сообщающая Asia/Shanghai и zh-CN, создала противоречие, существующее ровно по одной причине. Согласованность побеждает сокрытие.
Это не гипотетика: часовой пояс как ключ таргетинга
Если хочешь доказательство, что платформы активно на это опираются, оно уже поставляется. Текущий CLI Claude Code (claude.exe, v2.1.159) содержит — проверяемо в установленном бинарнике — небольшую процедуру, которая запускается, когда сессия подключается через сторонний эндпоинт (задан ANTHROPIC_BASE_URL). Она читает часовой пояс твоей системы, ставит внутренний флаг cnTZ, если это Asia/Shanghai или Asia/Urumqi, сверяет имя хоста твоего прокси со скрытым (XOR + base64) списком китайских корпоративных доменов и известных зеркал-реселлеров Claude, а затем стеганографически кодирует эти биты в символ апострофа строки Today's date is …, внедряемой в системный промпт — выбирая между четырьмя визуально одинаковыми глифами (', ', ʼ, ʹ). Для сессий в китайском часовом поясе она ещё и переписывает дату с 2026-07-01 на 2026/07/01.
Истолкуй мотив великодушно — домены-реселлеры намекают на детект злоупотреблений, нацеленный на несанкционированные прокси Claude, а не на слежку за обычными пользователями. Для нас это неважно. Механизм — вот урок: твой часовой пояс был триггером. Одной невзрачной настройки, которую почти никто не скрывает, хватило, чтобы сегментировать тебя незаметно и без всякого уведомления. Это и есть весь тезис недели, продемонстрированный поставляемым продуктом.
Решение
- Поставь системные часы на UTC на машинах для анонимной работы и дай браузеру их унаследовать. Tor Browser уже сообщает
UTC; не откатывай это. - Используй браузер со стандартизированной локалью. Tor Browser и Mullvad Browser нормализуют
navigator.languageдоen-USи подменяют часовой пояс, чтобы тысячи пользователей выглядели одинаково. Не «чини» это, выставляя свою реальную локаль. - Пусть сеть и локаль совпадают. Если твоя легенда — выход через Швецию, твой часовой пояс и язык не должны кричать «Шанхай». Совпадай с легендой или уйди в полный нейтралитет (
UTC/en-US). - Почини git до коммита.
git config user.emailты уже знаешь; нейтрализуй и время: коммить черезTZ=UTC git commitили настрой хукиgit config --globalдля нормализации дат автора/коммитера. Проверь существующие репозитории черезgit log --format='%ai'. - Вычищай метаданные перед отправкой.
exiftool -all= file.jpg,mat2для документов и переупаковывай архивы, созданные под часами в UTC. - Следи за заголовком
Accept-Language, а не только за JS. Он уходит с каждым запросом; стандартизированные браузеры его обрабатывают, «усиленный» Chrome — нет.
Упражнения недели
- Поставь системные часы на UTC на своей машине анонимного уровня (или проверь, что Tor/Mullvad Browser сообщает
UTCна странице теста отпечатка). - Проверь
navigator.language/Accept-Languageв своём анонимном профиле — там должно бытьen-US, а не твоя региональная локаль. - Запусти
git log --format='%ai'в любом псевдонимном репозитории и посмотри, какое смещение часового пояса ты транслировал; перейди наTZ=UTCдля будущих коммитов. - Добавь очистку метаданных (
exiftool,mat2) в свою рутину для любого файла — изображения, документа, архива — покидающего твою машину. - Проверь на несоответствие: противоречит ли регион твоего VPN/Tor-выхода твоим часам, языку и формату даты? Пусть совпадают или будут нейтральны.
На следующей неделе мы переходим к слою учётных записей и паролей, где менеджер паролей превращает всю эту разбивку на отсеки в то, с чем реально можно жить. А пока: поставь часы на UTC и перестань позволять своей локали озвучивать твоё местоположение.
Курировано Cyber Satoshi