TOTP -- это система одноразовых кодов для второго фактора. Как код из СМС, только без СМС. Коды показывает специальное приложение. Приложений много, и все плохие. А если фирма, поставляющая приложение, закроется? А если она меня забанит по любой причине? А если я утеряю устройство? Вариантов провафлиться масса, особенно если не понимаешь, как эта штука работает.
Я прочитал целую 1 (одну) статью, где всё это рассказывается, вот она: www.hendrik-erz.de/post/understanding-totp-two-...
Далее краткая выжимка:
1. На самом деле TOTP работает строго локально. Никакие онлайн-аккаунты, конкретные устройства, номера телефонов, сервера -- всё это не нужно.
2. Стоимость генерации одного кода для разработчиков равна нулю, а для пользователя -- меньше копейки. Поэтому расценки типа "2 доллара в месяц" -- это просто от наглости.
3. Что происходит на самом деле: из куэр-кода на сайте извлекается секретный ключ, он хэшируется вместе с текущим временем и превращается в 6 цифр. Генерация происходит каждые 30 секунд. Всё это делается при помощи известного заранее алгоритма с обоих сторон. Если пользователь ввёл то же самое, что вычислил сервер -- то проверка пройдена.
4. Таким образом, ключ в куэр-коде является главной (и единственной) точкой входа в систему. Сделаете с него скриншот -- и сможете добавлять вход в любое TOTP-приложение. Даже если другое приложение приказало долго жить или удалило все ваши ключи.
5. То есть, приложению требуется либо ключ хранить в открытом виде, либо расшифровывать перед применением. Это приводит к парадоксу: если ключ защищён слишком слабо, то его могут украсть. Если ключ защищён слишком сильно, то есть риски потерять к нему доступ. Ну и ключ всегда можно перехватить в момент показа куэр-кода. Он находится там в открытом виде.
В общем, вход я настроил, но пока не знаю, какой методологии надо придерживаться, чтобы использование TOTP было безопасным и в смысле сохранения доступа мне, и в смысле отсутствия доступа посторонним.