Как работают приложения-аутентификаторы
Шестизначный код, который меняется каждые полминуты, выглядит магией. На деле там простая арифметика, и понимание её помогает не потерять доступ к аккаунтам.
Когда вы включаете двухфакторную аутентификацию через приложение, сайт показывает QR-код. Внутри него — секретная строка. Приложение её запоминает, и с этого момента и сайт, и приложение знают один и тот же секрет.
Откуда берётся код
Приложение берёт две вещи: сохранённый секрет и текущее время, округлённое до тридцатисекундного интервала. Пропускает их через математическую функцию и получает шесть цифр. Сайт в этот же момент делает ровно то же самое со своей копией секрета — и ждёт от вас такое же число.
Отсюда несколько важных следствий.
Интернет не нужен. Приложение ничего не запрашивает и никуда не отправляет. Код посчитается в самолёте и в метро.
Время должно быть точным. Если часы телефона сбились на минуту, коды перестанут подходить. Лечится включением автоматической синхронизации времени.
Секрет нельзя подсмотреть по коду. Функция работает только в одну сторону: из секрета получаются цифры, из цифр секрет не восстановить.
Почему QR-код нельзя никому показывать
В QR-коде при настройке лежит сам секрет. Кто его сфотографировал, тот может завести себе точно такой же генератор и получать ваши коды бесконечно. Скриншот этого экрана не стоит хранить в галерее и тем более отправлять кому-либо — это равносильно второму ключу от квартиры.
Главная проблема: смена телефона
Секреты лежат в приложении на конкретном устройстве. Утонул телефон — пропали все коды. Сайты при этом работают исправно и исправно требуют код, которого у вас больше нет.
Есть два способа подстраховаться, и лучше использовать оба.
Резервные коды. При включении второго фактора сайт показывает список одноразовых кодов. Каждый срабатывает один раз и выручает ровно в такой ситуации. Их надо сохранить сразу — потом эта страница не вернётся.
Приложение с синхронизацией. Многие аутентификаторы умеют хранить зашифрованную копию секретов в облаке. Это немного снижает безопасность (появляется ещё одно место, где лежит секрет) и сильно повышает шансы не потерять доступ. Для большинства людей обмен выгодный.
Если телефон всё-таки потерян
- Используйте резервные коды, если сохранили.
- Если нет — у большинства сервисов есть процедура восстановления через почту или поддержку. Она долгая и может занять дни.
- Войдя, сразу отключите старый второй фактор и настройте новый на новом телефоне.
- Заодно проверьте список активных сессий и завершите незнакомые.
Один совет напоследок
Не держите аутентификатор и менеджер паролей за одним и тем же разблокированным экраном без необходимости. Смысл второго фактора в том, что он отдельный; если и пароль, и код достаются из одного приложения на одном устройстве, факторов фактически остаётся полтора.