Откажитесь от Google Authenticator

Google Authenticator — приложение в Вашем телефоне, генерирующее 6-значные коды ( TOTP) для входа в сервисы, поддерживающие двухфакторную аутентификацию (например, Google). Если Вы его используете, Вам следует знать о его недостатках. Вот что, по моему мнению, Google Authenticator делает не так.

Хранит секреты в открытом виде

Ключи просто хранятся в SQLite. На сами ключи, ни весь SQLite при этом не шифруются. Читать эти данные может только сам Google Authenticator, не считая случаев когда есть root-доступ (root может прочитать эти файлы).

Привязывает пользователя к одному устройству

Сделать резервную копию, не получая root-доступ к телефону, невозможно. С одной стороны, это неплохо: злоумышленник не сможет легко завладеть ключами, с другой — хозяин ключей не может легко сделать резервную копию и восстановиться из нее, то есть если телефон украден, потерян, перестал подавать признаки жизни — ничего не поделаешь, ключи потеряны, нужно идти по сервисам, вторым фактором которых служил Google Authenticator, и восстанавливать доступ для каждого в отдельности.

Что делать?

  • Обращать пристальное внимание на альтернативные варианты аутентификации
  • Cохранить ключи для генерирования TOTP в своем менеджере паролей. Я использую KeePass с KeePassXC для Linux и OSX и Keepass2Android для Android (и их горячо рекомендую!); 1Password тоже умеет работать с TOTP.
    • Сами авторы KeePassXC говорят, что лучше держать пароли и OTP в разных базах, тем не менее, если не брать в расчет утечку сразу всей базы менеджера паролей в открытом виде или шифрованной базы вместе с ключами к ней, достаточно хранения ключей OTP вместе с паролем.

Зерно сомнения

Конечно, говоря, что Google Authenticator сделан плохо, начинаешь невольно сомневаться в своих словах: вряд ли бы гугл позволил себе сделать откровенно плохо настолько важный кусок своей инфраструктуры. Возможно, в этом и была затея: держать ключи в единственном экземпляре и доступными только для одного приложения; потерял — используй коды для восстановления (backup codes). Тем не менее, на эти сомнения тоже есть косвенные контраргументы: во-первых, держать ключи в открытом виде крайне непредусмотрительно; во-вторых, два конкурента Google Authenticator, Microsoft Authenticator и Authy, предлагают резервное копирование ( первый и второй) и возможность использования на нескольких устройствах ( второй).

Что ж, я в итоге отказался от Google Authenticator. Решение это достаточно неоднозначное, поэтому навязывать его не стану. По крайней мере, теперь вы знаете достаточно, чтобы сделать свой выбор; желательно, до потери контроля над своим смартфоном.

Оставьте комментарий, если Вам есть что сказать на эту тему!

P.S.: нашел отличную статью (на английском) о том, как правильно организовать двухфакторную аутентификацию, и ее обсуждение на Hacker News

Александр Курило
Системный архитектор
comments powered by Disqus