Немного о 2fa с помощью одноразовых паролей
TOTP (time-based one time password) — система для двухфакторной аутентификации на основе времени.
И этот счетчик времени в приложении для TOTP для меня всегда создавал стресс! (см. картинку) Если на нем оставалось меньше 10 секунд, то я дожидался следующего кода 🤓🤓
Сегодня я узнал, что это не всегда обязательно. Разберемся подробнее, как это работает, и вам станет понятно, почему это так.
1. При изначальной активации 2fa на каком-нибудь сайте мы сканируем некоторый QR-код, в котором зашифрован «секрет», фраза, известная и сайту, и нам.
2. С этого момента наше 2fa приложение будет уметь считать коды для авторизации для времени Т нашего захода на сайт:
* оно считает, сколько 30 секундных интервалов прошло между определенным моментом времени (Unix время = 01.01.1970) и Т
* берет «секрет» и число из предыдущего пункта и на их основе определенным образом (хеш функция) генерирует шестизначное число (TOTP код)
3. В момент авторизации сайт (сервер) посчитает с помощью такого же «секрета» набор чисел для Т-30, Т, Т+30.
4. Мы введем число из 2fa приложения и сайт (сервер) проверит, что число валидное
Заметки:
- чтобы система работала успешно, обязательна синхронизация часов между сайтом (сервером) и нашим телефоном, на котором есть 2fa приложение
- чтобы сделать поправку на возможную разницу во времени, сайт (сервер) считает коды не только для времени Т, но и для набора времён рядом. Это может быть как +-5 минут, так и полное отсутствие такого допуска. Поэтому можно не стрессовать!
- системы с смс авторизацией, по сути, работают на похожем же механизме, только код отправляют в смс.
Для любителей почитать детали: гуглите RFC-6238
Post #83
1.13K

- 👍 9
- 👏 1