Не забывайте про WebAuthn. TOTP тоже не очень безопасен.
Одноразовые пароли. Когда у вас есть программа или устройство, которое генерирует разные коды. Перехватив код нельзя понять какие коды будут идти дальше.
Такая штука защищает не только от перехвата, но и от плохих привычек пользователей с паролями
Каждый фактор требует разной атаки (цифровой взлом, кража) и сложно найти специалиста сразу в обоих областях.
TOTP будет 2FA только если секрет находится на отдельном ключе
Например, они делают скриншот с секретом для генерации кодов и сохраняют его в обычную папку (а-ля пароль на бумажке возле компьютера).
Круто, что они задумываются об этом. Но правильное решение — записать одноразовые пароли и сохранить их куда-то надёжно дома.
Уже есть приложения под Андроид, которые воруют 2FA
zdnet.com/article/androi…
Всякий раз когда вы вызываете sudo npm install -g — любая npm-зависимость может перехватить ваш доступ к 1Password, где у многих лежат TOTP
Ваш сайт вызывает API браузера, браузер показывает всплывающее окно, вы вставляете ключ и USB и сайт ваш впускает.
1. Он сделан с рассчётом, чтобы пользователи не использовали его неправильно
2. Он может гарантировать, что это имено 2FA (то есть для взлома нельзя будет ваш хакнуть, нужно будет именно красть ключ)
3. UX проще — не надо вводить ключ.
YubiKey может хранить и TOTP-коды. С помощью спецмального приложения для Линукса/Андроида я могу считать коды, но нельзя скопировать секрет.
Так же на ключе GPG-ключ цифровой подписи (но это не всем нужно).
Если у вас есть критические данные — добавьте опцию TOTP-кодов и WebAuthn. Это реально очень сильно увеличивает безопасность.
Если вы тимлид — купите всем ключи и перейдите на WebAuthn в почте/гитхабе.