Архив рубрики ~Лента новостей~

Как Google Authenticator работает без интернета?

Как Google Authenticator работает без интернета?
Как 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-секундные интервалы и получат разные коды.

Серверы обычно допускают небольшой разброс и могут проверить соседний временной интервал. Но превращать минутную погрешность в часовую никто не станет — слишком широкое окно облегчило бы подбор кода.

Как Google Authenticator работает без интернета?

Поэтому при неожиданной ошибке Authenticator первым делом стоит проверить автоматическую настройку даты и времени. Часовой пояс сам по себе не так важен: расчёт опирается на Unix-время. Важны именно правильно идущие системные часы.

А как же синхронизация через аккаунт Google?

Современный Google Authenticator умеет синхронизировать сохранённые записи между устройствами. Для этого интернет, конечно, нужен. Но синхронизация и генерация кодов — разные процессы.

Связь помогает перенести секретные ключи на другой телефон. Когда они уже находятся на устройстве, новые TOTP-коды снова вычисляются локально. Поэтому приложение продолжает работать в метро, самолёте и за границей без мобильной сети.

Одноразовый код не всегда одноразовый

Название немного обманывает. В пределах одного 30-секундного интервала приложение будет показывать одинаковое число, сколько бы раз мы его ни открывали. Одноразовым код становится благодаря серверу: после успешного входа тот может запретить повторное использование.

И всё же TOTP не защищает от любой атаки. Поддельный сайт способен попросить пароль и актуальный код, а затем немедленно передать их настоящему сервису. Поэтому для особо важных аккаунтов аппаратные ключи и passkeys обычно надёжнее.

Но сам механизм Google Authenticator мне нравится именно своей простотой. Никакого скрытого канала связи и постоянных запросов к Google. Есть общий секрет, часы и понятная математика. Иногда технология выглядит почти магической лишь потому, что обе стороны умеют молча договориться заранее.

Источник

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники «Старлинк не нужен» – враг использует Авито, ВК и Мах для ударов по России Новости робототехники Новая стратегия расширения Waymo: подростки Новости робототехники Компания Gartner выделяет четыре уровня искусственного интеллекта в автоматизации складских операций. Архив рубрики ~Коротко из Telegram~ IPO Anthropic: Сколько просят? Когда на биржу выходит компания из… Архив рубрики ~Коротко из Telegram~ Яндекс возвращается в гонку за суверенность (спойлер: никуда и не… Архив рубрики ~Коротко из Telegram~ Атлант подрезал гранты  Все десятые нам продавали идею предпринимателя с… Архив рубрики ~Коротко из Telegram~ GPT-6 Astra Max обошла Claude Fable 5.1 Max в Code… Архив рубрики ~Коротко из Telegram~ Парень собрал живые обои с аквариумом при помощи GPT-6 Astra… Архив рубрики ~Коротко из Telegram~ Google показала, как собирать красивые интерфейсы через AI Studio Google… Архив рубрики ~Полезное~ На GitHub завирусился гайд по жизни — почти 500 советов… Архив рубрики ~Полезное~ Pika перезапустилась: теперь это не просто генератор видео, а AI-студия… Архив рубрики ~Полезное~ Qwen выпустила Qwen-Image 2.1 Новая версия построена на архитектуре с… Архив рубрики ~Полезное~ Cloudflare выложили скилл для аудита безопасности, на котором построили… Архив рубрики ~Коротко из Telegram~ Файл «обо мне» — и нейросети перестают отвечать так, будто… Новости робототехники «Старлинк не нужен» – враг использует Авито, ВК и Мах для ударов по России Новости робототехники Новая стратегия расширения Waymo: подростки Новости робототехники Компания Gartner выделяет четыре уровня искусственного интеллекта в автоматизации складских операций. Архив рубрики ~Коротко из Telegram~ IPO Anthropic: Сколько просят? Когда на биржу выходит компания из… Архив рубрики ~Коротко из Telegram~ Яндекс возвращается в гонку за суверенность (спойлер: никуда и не… Архив рубрики ~Коротко из Telegram~ Атлант подрезал гранты  Все десятые нам продавали идею предпринимателя с… Архив рубрики ~Коротко из Telegram~ GPT-6 Astra Max обошла Claude Fable 5.1 Max в Code… Архив рубрики ~Коротко из Telegram~ Парень собрал живые обои с аквариумом при помощи GPT-6 Astra… Архив рубрики ~Коротко из Telegram~ Google показала, как собирать красивые интерфейсы через AI Studio Google… Архив рубрики ~Полезное~ На GitHub завирусился гайд по жизни — почти 500 советов… Архив рубрики ~Полезное~ Pika перезапустилась: теперь это не просто генератор видео, а AI-студия… Архив рубрики ~Полезное~ Qwen выпустила Qwen-Image 2.1 Новая версия построена на архитектуре с… Архив рубрики ~Полезное~ Cloudflare выложили скилл для аудита безопасности, на котором построили… Архив рубрики ~Коротко из Telegram~ Файл «обо мне» — и нейросети перестают отвечать так, будто…

Оставить комментарий