TL;DR: OTP коды (то что в google auth) можно бэкапить и копировать всюду за 0 рублей. Делайте это по мере возможности.
Клубчане здравствуйте!
В милом моему средцу клубном чате Бенилюкса пероидически в обсуждении двухфакторной авторизации я слышу подобный аргумент против TOTP:
- Вот у тебя код в приложении на мобилке, мобилка сдохла, вот и конец твоему второму фактору!
В какой-то момент после очередного такого ответа, я ощутил не чувство дежавю, а уже раздражение в формате "да сколько можно-то?". Я чуть раздражённо рассказал в очередной раз что OTP коды можно бэкапить. В ответ же мне предложили написать пост.
Так что вот вам пост. Он супер короткий, не очень глубокий, но я надеюсь просто будет кому-то полезен.
Чё такое этот ваш OTP?
OTP расшифровывается как one time password, это такой подход к авторизации который в основном используется как второй фактор (но не всегда). Есть несколько подвидов этой техологии, например:
- TOTP или time based. В этом подходе принимается за данность что на сервер и у вас время примерно одинаковое (округляется до какого-то шага в N секунд) и на основании времени и секретного хэша который вам даёт сервис генерируется код.
- HOTP или hardware based. Например Ybikey или другой девайс который генерирует уникальные коды. Нет девайса - нет авторизации.
- SMS. ага, это тоже one time password. Самый слабый и не любимый всеми специалистами, но всё ещё лучше чем просто пароль.
- Список одноразовых кодов. Раньше это было популрянее ( за отсутствием других вариантов), но и сейчас некоторые сервисы могут дать список одноразовых паролей которые вы можете записать на бумажку.
Сегодня я хочу отметить только TOTP. На мой субъективный взгляд (который разделяют многие сесурити эксперты) это отличный способ двухфакторной авторизации обладающий наилучшим соотношением безопасность/удобство.
Его достоинства:
- Не заканчивается как список одноразовых кодов.
- Невозможно перехватить в отличии от SMS.
- Не нужно подключения к интернету или мобильной связи, нужно только примерно верное время на девайсе.
- Ничего не стоит в отличии от HOTP.
- Можно бэкапить и копировать всюду за 0 рублей.
Вот ради последнего пункта весь пост и пишется =)
Каждый раз когда вас просят воспользоваться Google Auth™©Ⓡ, вы можете воспользоваться ЛЮБЫМ другим приложением. А приложений которые обладают данным функционалом множество, в основном для мобильных устройств, но и на десктоп есть. И во многих таких приложениях есть кнопка backup которой я вам рекомендую пользоваться)
Для 2FA с помощью TOTP кодов вам подойдут следующие приложения:
- Почти любой современный менеджер паролей типа 1Password или Bitwarden, они не только в обычные пароли умеют. От себя порекомендую Bitrwarden, он хороший.
- Aegis для Android. Потрясающее приложение. Читает много форматов бэкапа, может само делать шифрованные бэкапы, успешно проходило аудиты кода, полностью open-source и доступно из F-Droid.
- Authy для iOs. На самом деле я ничего про него не знаю, это просто первый комент из треда на реддите) Встроенный менеджер паролей тоже может в TOTP и наверное даже бэкапит это всё в эпл-облако.
- cotp для Linux. Маленькая консольная штучка которая хранит мои OTP ключи.
- Что-нибудь другое по запросу "TOTP app for %platform_name%" в гугле.
Важно отметить: когда вы храните пароль и TOTP код в одном менеджере паролей (1Password, Bitwarden), вы всецело полагаетесь на него. Это ломает саму идею двухфакторной авторизации, потому что доступ к вашим данным можно получить через 1 фактор — ваш менеджер паролей. Не то чтобы это много кого реально волнует, менеджеры паролей неплохо защищены, но если вам действительно важна безопасность, не стоит класть все яйца в одну корзину.
Разберём TOTP код
Зайдём на например на Github.
Надо отдать им должное, эти ребята не принуждают вас к Google Auth, а напротив дают кучу альтернатив. Хочется их похвалить, но сдаётся мне просто Microsoft хочется немного подвинуть гугл)
Давайте теперь глянем внутрь QR кода. Вот такую строчку можно получить если прочитать QR любой читалкой (secret изменён)
otpauth://totp/GitHub:GRbit?secret=PLT14N8BQAOPOLXF&issuer=GitHub
Вот собственно и всё. Даже если вы пользуетесь олдскульным KeePass2, вы можете забэкапить эту строку и этого будет достаточно. Можно этот код сканировать бесконечным количеством приложений, копировать в менеджеры паролей, записывать на бумажке и лепить на монитор.
Иногда чтобы ваше приложение прочитало подобный код оно должно быть в каком-то особом формате, но в целом вы можете это конвертнуть обратно в QR-code даже из командной строки линукса.
Даже если вам все эти варианты не подходят, можете этот QR код просто сфотографировать. Учитывая что фотки сейчас почти у всех мгновенно грузятся во всякие облака где анализируются AI, наверное это всё не очень секурно, но я просто хочу отметить все возможные варианты.
Ну... кажется это всё. Такая вот коротенькая просвет статья про секурити, надеюсь кому-то было полезно.
Спасибо большое @Magistr за идею и что вычитал текст)
достать из гугла https://github.com/scito/extract_otp_secrets
храню в keeps xc + topt
Добавлю немного про macos. В экосистеме apple есть встроенный TOTP, который синхронизируется на все девайсы. Вытащить secret оттуда можно через десктопный safari (file>export>passwords). В сохраненном csv будут все пароли в plaintext, secret'ы для TOTP в том числе.
Пользуюсь им много лет и могу кратко рассказать. Бэкапит и синхронизует через своё онлайн хранилище. Авторизация по телефону+паролю (как в телеге). Недавно перестали поддерживать десктопное приложение для макоси.
Твилио, разработчик, кажется, не очень чисты в плане репутации. Но в целом приложение пока норм и относительно удобное. Сравнивать с гугловым аутентификатором не могу, ибо он за годы сильно развился, а мне лень перевыпускать секреты. Так что вот скрин: i.vas3k.club/9503d3d00eee2b62eb9474141e6151e278b8343d9452b39e210741af5cb75e91.jpg
(сорян, я не разобрался, как его сделать поменьше или не картинкой, ссылка всё равно конвертится в img)
Тоже можно вытянуть секреты: https://gist.github.com/gboudreau/94bb0c11a6209c82418d01a59d958c93
KeePassXC плачет от того, что его не упомянули в списке менеджеров паролей. А ведь он хороший, бесплатный, открытый и локальный, а не как эти ваши вечно утекающие хипстерские менеджеры.
Да, тоже часто сталкиваюсь с этим заблуждением.
Правда, в статье больше про то, когда ты только включаешь второй фактор.
А если уже добавлен, то для получения qr большинство сайтов требуют сбросить и добавить заново.
Google Authenticator, например, позволяет экспортировать код для переноса на другое устройство.
Можно ли забекапить коды, уже загруженные в Google Authenticator? Рецепт из https://github.com/replydev/cotp?tab=readme-ov-file#migration-from-other-apps не работает, на моем телефоне нет такой папки.