Научите пользоваться аутентификаторами
Есть такая штука — программы-аутентификаторы. Я не понимаю, как они работают.
Пару раз я настраивал вход куча-то через Гугль-аутентификатор, это работало. Но потом спустя год я вдруг обнаруживал, что в Гугль-аутентификаторе пусто, он ничего не знает о сайтах, на которые я через него входил.
С некоторых пор Вконтактик начал в каких-то случаях спрашивать код из аутентификатора, которого у меня, разумеется, нет. Он даже не объясняет, откуда у меня такое могло бы взяться, как будто это что-то само собой разумеющееся. Теперь вот Гитхаб говорит, что я должен настроить двухфакторную аутентификацию, используя аутентификатор в качестве второго фактора. Настроить-то дело нехитрое, но что я буду делать, когда через год аутентификатор забудет про меня и про Гитхаб?
Объясните, как правильно делать!
Менеджеры паролей (1Password, BitWarden) сейчас это поддерживают, и отдельное приложение не нужно. Когда включаешь двухфакторную аутентификацию в Гитхабе, он создает дополнительный пароль, и отдает его твоему аутентификатору или менеджеру паролей, где он хранится в скрытом виде. На основе этого пароля и текущего времени аутентификатор создает временный числовой код для логина. Исходный пароль никуда не передается. Плохой аутентификатор не позволит тебе увидеть и экспортировать исходный пароль, а хороший позволит.
Также Гитхаб при включении двухфакторной аутентификации дает список запасных кодов, которые не истекают. Зачем-то их дается штук 20. Рекомендуется сохранить их на бумажку на случай, если потеряешь доступ ко всему. Но я не понимаю, как это должно помочь; если я потеряю доступ к менеджеру паролей, то пароль от Гитхаба я разумеется не вспомню, а запасные коды его не заменят. Получается, что записывать на бумажку нужно и обычный пароль.
Если коды для 2FA хранятся в менеджере паролей, то возникает вопрос какая же это двухфакторная аутентификация. Вот тут это рассматривается: https://blog.1password.com/1password-2fa-passwords-codes-together/
Я храню в 1Password или в Authy. И там и там нужно научиться добавлять ключи. Это делается либо через специальный куаркод, либо спец-инициализационную строку (но обычно куаркод). Как показать куаркод устройству, на котором он воспроизводится — бывает не совсем понятно, но скриншотами и изобретательностью получается решить.
После добавления в программах появляется строчка «текущий код», которая состоит из 6 цифр и пересоздаётся раз в минуту. 1Password сам умеет ее вставлять, из Authy нужно копировать. Или запомнить/вписать, что проще.
И тот и другой не должен потерять ничего, всё хранится зашифрованное и в аккаунте.
Authy скурвился поэтому пользуюсь Ente Auth — можно переносить с устройства на устройство.
Работают они по алгоритму TOTP RFC 6238. Это такая функция, которая на основе секретного ключа и времени выдаёт этот самый пинкод. На самом деле параметров чуть больше, но у них есть дефолтные значения, например например длина пинкода, которая по умолчанию 6 цифр, или время действия этого пинкода (30 сек). И все эти параметры и заданы в QR коде.
Смысл второго фактора, как следует из его названия, в том, что он _второй_, то есть другой, ещё один, хранящийся в другом месте. Совет сохранить его в парольном менеджере вместе с основным паролем это тоже самое, что написать пинкод на кредитке.
Обычно восстановить или сбросить второй фактор нельзя, иначе это сведёт на нет тот уровень безопасности, который он добавляет.
Способ ничего не потерять: сохранить в надёжном месте информацию из QR кода. Ещё бывают коды восстановления: список одноразовых паролей которые также нужно сохранить в надёжном месте.
Гугль-аутентификатор кал, что тут сказать. Надо поискать что-нибудь другое, по слову TOTP.
У меня похожий опыт с приложениями-аутентификаторами. На Гитхабе использую Passkey, который бережно храниться в Keychain (теперь это Passwords). Вот Гитхаб предлагает Passkey в качестве альтернативы 2FA:
Много, много лет пользуюсь аутентификатором Гугла и хотел бы узнать, от чего он «кал». Функции выполняет, с устройства на устройство переносится. Или есть какие-то дополнительные запахи, делающие именно его так вонючим?
Вообще Аутентикаторная функция очень проста.
Если известный алгоритм, который из некого изначального секретного слова и текущего времени генерит числа.
Когда ты хочешь подключить второй фактор в виде таких кодов тебе дают на самом деле длинный вебадрес, в который интегрирован и твою юзернейм и секретное слово и сайт/сервис где это будет использовано. Если украсть это секретное слово то вор сможет тоже генерить эти временные коды. Но защита эта хорошо работает, не настолько удобно и хорошо как Passkeys но надёжнее чем волшебные ссылки, волшебные имейлы и смски.
Всё что Гугл Аутентикатор или любая подобная программа, вчлючая все главные менеджеры паролей делает это интепретирует этот выданный тебе URL (который иногда могут давать в виде QR кода, но суть одна).
Отделять это в отдельную программу от менеджера паролей нет большого смысла, надо просто хорошо позаботиться о защите самого менеджера паролей. Сейчас Эппловская программа Passwords тоже это может, хотя она и не совсем мультиплатформенная, но зато встроенная в систему. Я лично пользуюсь EnPass, который позволяет выбрать любой удобное место чтобы там было хранилище самих паролей, ну и купить без подписки и весь стандарнтый функционал, включая автоматическое копирование временного когда в буфер когда он нужен, синхронизацию с часами итп, но любая из главных программ подойдёт.
Рекомендую KeePassXC, на айфоне — Keepassium. Кстати, встроенный менеджер паролей в macOS тоже умеет запоминать TOTP.