Как Google Authenticator работает без интернета?
Как Google Authenticator работает без интернета?
Google Authenticator показывает правильный код даже в авиарежиме. Но как это возможно, если код постоянно обновляется? В статье раскрываем магию такой технологии.
Кто присылает коды, если связи нет?
Отключите Wi-Fi, выньте SIM-карту — Google Authenticator продолжит показывать новые коды. Причём сайт их примет. На первый взгляд странно: приложение не может связаться с сервером, но каким-то образом знает правильный ответ.
Секрет в том, что никто не присылает эти коды на телефон. Приложение вычисляет их самостоятельно. Сервер в этот момент делает ровно то же самое.
Получаются два независимых калькулятора. Они находятся в разных местах, не общаются друг с другом, но имеют одинаковые исходные данные. Поэтому и результат у них совпадает.
Всё начинается с QR-кода
Когда сайт предлагает подключить двухфакторную аутентификацию, он показывает QR-код. Внутри спрятано не очередное одноразовое число, а постоянный секретный ключ — длинная случайная последовательность.
После сканирования копия ключа появляется в приложении. Другая копия остаётся у сервера. Дальше этот секрет не нужно передавать при каждом входе: обе стороны уже его знают.
Поэтому QR-код нельзя считать безобидной картинкой из настроек. Если его сфотографирует посторонний человек, он сможет добавить тот же аккаунт в свой аутентификатор и получать такие же коды.
Второй ингредиент — точное время
Одного секретного ключа недостаточно, иначе приложение всегда показывало бы одно и то же число. Чтобы код менялся, в расчёт добавляется текущее время.
Обычно оно делится на интервалы по 30 секунд. Для каждого интервала из секретного ключа и номера временного отрезка вычисляется новое значение. Упрощённо логику можно представить так:
const timeWindow = Math.floor(Date.now() / 1000 / 30); const code = generateCode(secretKey, timeWindow);
Это не готовая реализация, а схема. Внутри используется криптографическая функция HMAC, после которой результат сокращается до удобного шестизначного кода. Алгоритм называется TOTP — Time-based One-Time Password.
Сервер знает тот же ключ и текущее время. Когда пользователь вводит код, сервер вычисляет собственный вариант и сравнивает числа. Интернет нужен сайту, чтобы принять запрос, но аутентификатору для расчёта ничего загружать не требуется.
Почему код иногда не принимается?
У этой красивой схемы есть слабое место: часы телефона и сервера должны показывать примерно одинаковое время. Если смартфон заметно спешит или отстаёт, стороны попадут в разные 30-секундные интервалы и получат разные коды.
Серверы обычно допускают небольшой разброс и могут проверить соседний временной интервал. Но превращать минутную погрешность в часовую никто не станет — слишком широкое окно облегчило бы подбор кода.

Поэтому при неожиданной ошибке Authenticator первым делом стоит проверить автоматическую настройку даты и времени. Часовой пояс сам по себе не так важен: расчёт опирается на Unix-время. Важны именно правильно идущие системные часы.
А как же синхронизация через аккаунт Google?
Современный Google Authenticator умеет синхронизировать сохранённые записи между устройствами. Для этого интернет, конечно, нужен. Но синхронизация и генерация кодов — разные процессы.
Связь помогает перенести секретные ключи на другой телефон. Когда они уже находятся на устройстве, новые TOTP-коды снова вычисляются локально. Поэтому приложение продолжает работать в метро, самолёте и за границей без мобильной сети.
Одноразовый код не всегда одноразовый
Название немного обманывает. В пределах одного 30-секундного интервала приложение будет показывать одинаковое число, сколько бы раз мы его ни открывали. Одноразовым код становится благодаря серверу: после успешного входа тот может запретить повторное использование.
И всё же TOTP не защищает от любой атаки. Поддельный сайт способен попросить пароль и актуальный код, а затем немедленно передать их настоящему сервису. Поэтому для особо важных аккаунтов аппаратные ключи и passkeys обычно надёжнее.
Но сам механизм Google Authenticator мне нравится именно своей простотой. Никакого скрытого канала связи и постоянных запросов к Google. Есть общий секрет, часы и понятная математика. Иногда технология выглядит почти магической лишь потому, что обе стороны умеют молча договориться заранее.
Похожие записи
Оцените материал:
Похожие записи
Консультативная группа по математике и искусственному интеллекту | OpenAI
22.09.2026
«Ростелеком Контакт-центр» внедрил ITFB EasyDoc для автоматизации массового найма
22.09.2026
Компания Apheris объявила результаты своей инициативы по совместному обучению в рамках программы федеративного верстки — теперь четыре крупные фармацевтические компании делают ставку на более крупные проекты.
22.09.2026Присоединяйтесь и подпишитесь на рассылку самых свежих новостей по Email
Получайте свежие новости и идеи на почту. Без спама — только самое интересное.
Нажимая «Подписаться», вы соглашаетесь с политикой конфиденциальности.
