Как приложение для кодов входа работает без интернета
Подтверждено: объяснение основано на установленных данных.
При настройке аутентификатора сайт передает приложению секретный ключ, обычно через QR-код. Затем приложение и сервер независимо вычисляют одноразовые коды из этого ключа и текущего времени. В распространенной схеме код состоит из шести цифр и меняется каждые 30 секунд. Для самого вычисления телефону не нужен интернет.
Коротко
Шесть цифр вычисляются на вашем телефоне из времени, а не присылаются на него.
Самое интересное
Часы телефона и сервера могут немного расходиться. Поэтому сервер обычно допускает небольшое отклонение, например принимает код из предыдущего 30-секундного интервала. Алгоритм TOTP стандартизировали в 2011 году.
Ещё одна деталь
30-секундное окно — сознательный компромисс. Более короткое было бы надёжнее, но людям нужно время, чтобы прочесть код и ввести его до смены.
Подробнее
- Шаги времени отсчитываются от эпохи Unix — полуночи UTC 1 января 1970 года.
- Если часы телефона сильно сбиты, коды перестают работать.
- QR-код, который вы сканируете при настройке, содержит сам секретный ключ.
Источник: IETF RFC 6238: TOTP, Time-Based One-Time Password Algorithm