Как стать автором
Обновить

За пределами номера телефона: Использование TOTP для усиления безопасности

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров4.8K
Всего голосов 8: ↑3 и ↓50
Комментарии24

Комментарии 24

Ключ-секрет - это просто последовательность символов, ее можно банально записать в блокнот, и тогда утеря гаджета не повлияет на возможность доступа. Есть и Windows/Linux-десктопные приложения, работающие с этими ключами, и к тому же не пытающиеся отправить их в облако ;-)

Спасибо - не надо.

Нет желания из-за посещения какого-то сайта, бежать за телефоном.

Если гуляешь по разным сайтам, это прям в ненависть.

Есть приложения для ПК (WinAuth, KeePass).

Если оно запущено на том же компе, где смотришь сайт - оно немного не соответствует самой идее второго фактора.

Посмотрел на предложение TOTP при входе на Госуслуги и решил, что не надо оно мне. Я на ГУ и с компа, и с тела вхожу. И куда мне генератор ставить прикажете?

Кстати, TOTP при входе на Госуслуги кажется неплохой идеей, особенно если получение СМС на свой номер связано с дополнительными финансовыми затратами. Но дьявол скрывается в мелочах... Если что-то пойдет не так, придется лично посетить МФЦ для восстановления доступа. Казалось бы, что тут может пойти не так... Но у моего знакомого есть опыт. Активация ТОПТ прошла успешно, а вот одноразовый пароль просто не принимался. После активации ТОПТ дистанционно её отключить невозможно (ещё бы!), войти в Госуслуги также было невозможно. Так что имейте в виду.

Т.е. не удалось восстановить ничего без личного визита ? Звучит хорошо. Потому как я очень подозреваю, что в 3 случаях из 4 можно восстановить все "по смс".

На отдельное устройство. Старый телефон к примеру.

Идея второго фактора не в том, что устройства разные, а в том, что один фактор - знание, другой - обладание. Пароль можно, скажем, перехватить / подсмотреть и использовать повторно, а TOTP-код - нельзя. А ключ, на основании которого генерится этот код, не передаётся по сети и не вводится пользователем, даже если он и хранится на том же устройстве / в том же менеджере паролей. Так что с идеей 2FA всё в порядке, а делать так или нет - тут уже каждый с учётом своей модели угроз для себя решает.

Что-то я не уверен в такой логике.

Компрометации компьютера достаточно, чтобы потом вместо пользователя куда-то логинится. (Базы данных менеджеров копируются, пароли к ним перехватываются).

Когда же генератор на другом устройстве, то как-то нужно получать доступ еще и к нему.

Факторы, тем не менее, всё-таки разные. А в целом надо строить свою модель угроз и защищаться от предполагаемых сценариев атаки, а не формально подходить.

TOTP даже на одном устройстве с паролем как минимум спасает от ряда очень популярных сценариев - пароль на стикере на мониторе :), подсмотренный, в т.ч. камерой, ввод пароля, фишинг, кейлоггер и т.п.

При этом получение физического контроля над компьютером / телефоном само по себе не даёт доступа ни к паролю, ни к TOTP, если устройства зашифрованы (а это база куда важнее 2FA) и при этом физическое насилие не применено к их пользователю (а если применено - то тут хоть два устройства, хоть одно...) А сценарии удалённого взлома с получением полного доступа, IMHO, гораздо реже встречаются в реальной жизни.

Опять же, реальность такова, что пользователи в среднем как минимум не реже пользуются интернет-ресурсами со смартфона, чем с компа, и если не параноить настолько, что заводить для TOTP отдельное устройство, на что мало кто готов, - то так или иначе мы имеем эту же проблему.

При этом получение физического контроля над компьютером / телефоном

Я не про физический доступ, а именно про контроль.

А сценарии удалённого взлома с получением полного доступа, IMHO, гораздо реже встречаются в реальной жизни.

Это - возможно. Но поскольку защититься довольно дешево (смотри ниже) - то почему бы и не защититься. К тому же выше кейлоггер упоминался. Если он есть - то я не думаю, что можно считать, что файлы баз менеджеров остались в безопасности.

что заводить для TOTP отдельное устройство, на что мало кто готов

Что вполне легко, вроде бы, уже должно быть. Сколько старых телефонов по тумбочкам валяется и задешево продается? Ставим на такой генератор и отправляем его в вечный оффлайн - и готово.

Вопрос ведь не в цене, а в удобстве. Вот выше комментатор обоснованно возмущается необходимостью каждый раз для ввода TOTP телефон доставать. А Вы предлагаете не просто доставать один телефон, а ещё и таскать с собой везде / не забывать заряжать второй :) Тогда уж аппаратный токен-флэшку лучше завести под это дело.

Если он есть - то я не думаю, что можно считать, что файлы баз менеджеров остались в безопасности.

А вот тут, кстати, есть варианты. У меня менеджер паролей на своём сервере, вход защищён мастер-паролем со своим TOTP (тут код уже не формируется в самом менеджере, естественно, а именно что на отдельном устройстве, которое нужно очень редко, только когда я новый девайс настраиваю). Кейлоггер, даже если считает мастер-пароль менеджера, не даст атакующему к нему доступа с другого устройства (ну там ещё и доступ к серверу только через VPN тоже с TOTP и сертификатом, но это к обсуждаемой теме не относится :)

Если исходить именно из удобства, то, я думаю, правильно сделанные аппаратные токены были бы удобнее.

Зашел на сайт, прикоснулся кольцом (или любым форм-фактором, который ты решил купить и тебя не ломает его таскать ) - готово.

Но как-то не взлетает такое.

Нет, кольцо плохой вариант. Касаясь ты должен точно знать пароль для чего ты набираешь. Монитор нужен хоть какой-то.

С точки зрения секьюрности в схеме с обычными паролями есть прекрасный mooltipass. Он спрашивает набирать ли пароль для такого-то ресурса, и требует подтверждения физической кнопкой на нем же.

Для ТОТР, к сожалению, я ничего такого не знаю. И то что есть "под мобилу" выглядит "немного стрёмно", в частности я так и не смог понять что будет после потери этой мобилы с каким-нибудь гугл-аутентификатором. Ну т.е. этот очевидный сценарий как-то слабо документацией покрыт... И в целом к приложениям доверия гораздо меньше, чем к аппаратным устройствам.

Если на вашем устройстве с генератором кодов кейлогер и всякий разный удаленный доступ, то о какой безопасности речь ? Заберут базу, дождутся когда ты сам ведёшь для нее пароль и всё. Если ты там же набираешь и пароль из первого фактора - возьмут и его.

Для нормальной 2фа у тебя не должно у 1фа и 2фа общих путей никаких быть, общих девайсов итп. Кроме тебя. Т.е. ты должен вводить что-то "в два поля" взяв это что-то из двух совершенно разных мест.

Хороший менеджер паролей (Bitwarden/Vaultwarden рекомендую, ибо ещё и self-hosted при этом) автоматически копирует TOTP-код в буфер обмена сразу после автозаполнения пароля, остаётся нажать Crtl+V. Это, правда, несколько снижает степень защиты, но тут каждый сам в комплексе оценивает, как и что ему хранить и где тот баланс между защитой и удобством.

Для большинства собственный хостинг с Bitwarden это как-то перебор (не говоря уже о ещё одном потенциальном векторе атаки) и не очень понятно преимущество перед обычным KeePass.

Ну базу KeePass между устройствами всё равно через что-то надо синхронизировать и лучше не через публичное облако. А когда виртуалок так или иначе крутится для личных и деловых нужд два десятка, - одной больше, одной меньше... А тут и бекап централизованный, и доступ при необходимости просто через веб, и мониторинг - всё уже готовое. Но да, кто по селф-хостингу всего, чего можно, не так упоролся, тем будет сложнее :)

Я вот что-то ни в мобильном аппе, ни в расширении для хрома bitwarden, ни в self-hosted vaultwarden не нашел TOTP.

В последние годы часто наблюдаем кучу утечек, включающих пароли

Какова вероятность, что секрет для OTP разработчиками как-либо шифруется?

Имхо в топку, что пароли, что OTP , ибо оба они страдают при утечках или фишинге

Необходима реализация WebAuthN, а не вот это вот всё

Всё же 24-й год уже

Я тут прикупил себе юбик, чтобы пощупать этот webauthn. Эксперименты показали, что нормальную безпарольную авторизацию умеет только Майкрософт. У остальных сайтов в лучшем случае юбик можно использовать как второй фактор (вместо тотр).

Я ожидал большего...

А ещё гугл, который более того – именно навязывает использование без паролей

Глянуть поддерживающих можно тут https://passkeys.directory/ и в каком режиме

Но хочу заметить, что WebAuthN (FIDO2/Passkey) это же не только про юбикей, хранилищем приватного ключа может быть телефон, ваш ноутбук, менеджер паролей или ваш облачный профиль, а юбикей в обычном режиме – это лишь второй фактор, его для авторизации можно использовать только, если ресурс явно требует доп. авторизации на устройстве (в данном кейсе – пинкод или отпечаток)

Больше деталей, например тут https://webauthn.io/?regUserVerification=required&attestation=none&attachment=all&algES256=true&algRS256=true&discoverableCredential=preferred&regHints=

Да уж.... :-)
Пользователи вашего сервиса не умеют использовать пароли, а ваш сервис с паролями не умеет работать нормально? Ваш выбор - 2FA, 3FA, ....
"один фактор - знание, другой - обладание" - SMS ваш выбор! Ведь в договоре с сотовым оператором четко написано, что номер сотового телефона вами куплен и вам принадлежит на праве собственности....
Пароли говорите кейлоггером перехватывают - а динамические не пробовали использовать для вашего сервиса, или это что-то из области недоступных вашему уму алгоритмов?
Лучший аппаратный TOTP девайс что я держал в руках - это ридер смарт карты с дисплеем и кнопками (размерами со стандартную смарт карту). В нем самом нет ключей, все ключи и крипто-операции на вставляемой смарт карте, а он только результат TOTP на дисплее отображает...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий