Google Authenticator: как работают его коды 2FA
Примерно каждые 30 секунд короткий код на вашем телефоне меняется, а сайт, которому вы никогда не показывали этот телефон, каким-то образом знает, каким должен быть новый код. Это похоже на магию, но на деле всё объясняется простым принципом общего секрета.
Так работают Google Authenticator и похожие приложения. Разберёмся, как генерируются коды, почему они работают без подключения к интернету, как приложение связано с собственной функцией Google «Двухэтапная аутентификация» и от чего оно может и не может защитить.
Как генерируются коды
Когда вы добавляете аккаунт в приложение-аутентификатор, сервис выдаёт вам секрет — обычно в виде QR-кода или ключа настройки, — а приложение сохраняет его. С этого момента и сервис, и ваш телефон хранят один и тот же секрет. Чтобы получить код, приложение объединяет секрет с текущим временем, а сервис выполняет такой же расчёт на своей стороне. Если результаты совпадают, код принимается.
Этот метод — опубликованный стандарт TOTP (сокращение от time-based one-time password, то есть одноразовый пароль на основе времени), определённый в документе IETF RFC 6238. Он основан на более старом методе со счётчиком, но вместо счётчика использует значение, полученное из времени. Согласно стандарту, приложение и сервис должны использовать одинаковый временной интервал; стандарт рекомендует значение по умолчанию в 30 секунд. Поэтому код обычно обновляется примерно дважды в минуту.
Почему коды работают без подключения к интернету
Код рассчитывается на телефоне на основе сохранённого секрета и часов устройства, поэтому отправлять что-либо на телефон не нужно. В описании собственного приложения Google сказано, что коды можно генерировать даже без подключения к сети или сотовой связи. Сервису нужно лишь выполнить такой же расчёт, когда вы вводите код.
Это означает, что точность часов имеет значение. Если время на телефоне сильно отличается от реального, результаты расчётов не совпадут и код будет отклонён, хотя приложение работает как задумано.
Как приложение связано с собственной функцией Google «Двухэтапная аутентификация»
Эти две вещи легко перепутать. «Двухэтапная аутентификация» — это функция аккаунта Google, которая запрашивает второй этап при входе. Google Authenticator — приложение, которое может обеспечить этот этап и, согласно Google, также генерировать коды для других сайтов и приложений, поддерживающих проверку через приложение-аутентификатор. Несколько других приложений-аутентификаторов используют тот же стандарт, поэтому сами коды не привязаны к одной компании.
Вы можете пользоваться приложением как с аккаунтом Google, так и без него. Вход в аккаунт позволяет синхронизировать коды на разных устройствах, а Google сообщает, что без аккаунта их всё равно можно вручную перенести на новое устройство. Синхронизированные коды зависят от этого аккаунта Google, поэтому его защита особенно важна. Google также рекомендует настроить дополнительные способы «Двухэтапной аутентификации», чтобы не потерять доступ к аккаунту.
От чего приложение защищает, а от чего — нет
По данным CISA, коды из приложения-аутентификатора надёжнее текстовых сообщений, но всё ещё уязвимы к фишингу. Убедительная поддельная страница входа может перехватить код, когда вы его вводите, и сразу же использовать его. От этого защищают только методы на основе FIDO, например аппаратные ключи безопасности и ключи доступа. Проверка адреса сайта перед вводом кода — часть защиты.
Секрет, на котором основаны ваши коды, тоже нужно хранить в тайне. Любой, у кого есть QR-код или ключ настройки, сможет генерировать такие же коды, поэтому к снимку экрана с ними нужно относиться как к паролю. Кроме того, приложение-аутентификатор защищает аккаунты, в которые входят через сервис. Оно не может защитить сид-фразу или приватный ключ кошелька.
Напоминание WEEX: относитесь к ключу настройки как к паролю
WEEX напоминает пользователям: никому не сообщайте одноразовый код, QR-код или ключ настройки, в том числе людям, которые представляются службой поддержки, поскольку настоящему сервису они никогда не нужны. Проверяйте адрес сайта перед вводом кода, а резервный ключ или резервные коды храните в безопасном месте без подключения к интернету — не в виде снимка экрана или заметки в облаке. Эта информация не является финансовой рекомендацией.
Заключение
Google Authenticator генерирует кратковременный код на основе секрета, общего с сервисом, и текущего времени. Поэтому приложение работает офлайн, а точность часов имеет значение. Это одно из нескольких приложений, использующих один и тот же стандарт. Его коды надёжнее текстовых сообщений, но всё ещё уязвимы к фишингу, а секрет настройки требует такой же защиты, как пароль. В сочетании с надёжными паролями и осторожным поведением приложение помогает лучше защитить аккаунт от захвата.
FAQ
1. Что такое Google Authenticator?
Это приложение, которое генерирует одноразовые коды для второго этапа входа в аккаунты Google, а также на другие сайты и в приложения, поддерживающие проверку через приложение-аутентификатор.
2. Как Google Authenticator генерирует коды без интернета?
Приложение рассчитывает их на телефоне на основе сохранённого секрета и текущего времени. Сервис выполняет такой же расчёт, чтобы проверить код, поэтому отправлять что-либо на телефон не нужно.
3. Нужен ли аккаунт Google, чтобы пользоваться Google Authenticator?
Нет. Google сообщает, что приложением можно пользоваться без аккаунта. Вход в аккаунт позволяет синхронизировать коды на разных устройствах, а без аккаунта их можно вручную перенести на новое устройство.
4. Google Authenticator и «Двухэтапная аутентификация» Google — это одно и то же?
Нет. «Двухэтапная аутентификация» — это функция аккаунта Google, а приложение — один из способов пройти второй этап. Оно также работает с другими сайтами, поддерживающими коды из приложений-аутентификаторов.
5. Google Authenticator безопаснее кодов из SMS?
По данным CISA, коды из приложений-аутентификаторов надёжнее текстовых сообщений, но их всё ещё можно перехватить с помощью фишинга. Ключи безопасности и ключи доступа обеспечивают более сильную защиту от фишинга.